module GithubPivotalFlow::GitHubAPI::HttpMethods
Public Instance Methods
apply_authentication(req, url)
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 167 def apply_authentication req, url user = url.user ? CGI.unescape(url.user) : config.github_username(url.host) pass = config.github_password(url.host, user) req.basic_auth user, pass end
byte_size(str)
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 115 def byte_size str if str.respond_to? :bytesize then str.bytesize elsif str.respond_to? :length then str.length else 0 end end
configure_connection(req, url) { |url| ... }
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 156 def configure_connection req, url if ENV['HUB_TEST_HOST'] req['Host'] = url.host url = url.dup url.scheme = 'http' url.host, test_port = ENV['HUB_TEST_HOST'].split(':') url.port = test_port.to_i if test_port end yield url end
create_connection(url)
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 179 def create_connection url use_ssl = 'https' == url.scheme proxy_args = [] if proxy = config.proxy_uri(use_ssl) proxy_args << proxy.host << proxy.port if proxy.userinfo # proxy user + password proxy_args.concat proxy.userinfo.split(':', 2).map {|a| CGI.unescape a } end end http = Net::HTTP.new(url.host, url.port, *proxy_args) if http.use_ssl = use_ssl # FIXME: enable SSL peer verification! http.verify_mode = OpenSSL::SSL::VERIFY_NONE end return http end
finalize_request(req, url)
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 173 def finalize_request(req, url) if !req['Accept'] || req['Accept'] == '*/*' req['Accept'] = 'application/vnd.github.v3+json' end end
get(url, &block)
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 100 def get url, &block perform_request url, :Get, &block end
perform_request(url, type) { |req| ... }
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 126 def perform_request url, type url = URI.parse url unless url.respond_to? :host require 'net/https' req = Net::HTTP.const_get(type).new request_uri(url) # TODO: better naming? http = configure_connection(req, url) do |host_url| create_connection host_url end req['User-Agent'] = "Github-pivotal-flow #{GithubPivotalFlow::VERSION}" apply_authentication(req, url) yield req if block_given? finalize_request(req, url) begin res = http.start { http.request(req) } res.extend ResponseMethods return res rescue SocketError => err raise Context::FatalError, "error with #{type.to_s.upcase} #{url} (#{err.message})" end end
post(url, params = nil) { |req| ... }
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 104 def post url, params = nil perform_request url, :Post do |req| if params req.body = MultiJson.dump params req['Content-Type'] = 'application/json;charset=utf-8' end yield req if block_given? req['Content-Length'] = byte_size req.body end end
post_form(url, params)
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 122 def post_form url, params post(url) {|req| req.set_form_data params } end
request_uri(url)
click to toggle source
# File lib/github_pivotal_flow/github_api.rb, line 150 def request_uri url str = url.request_uri str = '/api/v3' << str if url.host != 'api.github.com' && url.host != 'gist.github.com' str end