require 'rest_client' module GembankClient class Resource def initialize(key, file, url) @key, @file, @url = key, file, url end def release RestClient.post(url, :gem => File.new(@file)) do |response, request, result, &block| handle(response, request, result, &block) end end private def url "#{@url}/push/#{@key}" end def handle(response, request, result, &block) case response.code when 200, 202 puts(response.body) when 403, 404, 412 puts("Server responded with status code #{response.code}") puts(response.body) if response.body and response.body.size > 0 exit response.code else response.return!(request, result, &block) end end end end