class CircleCi::Request
Request
class to handle HTTP API interactions
Constants
- DEFAULT_HEADERS
- DEFAULT_OPTIONS
Public Class Methods
new(config, path, params = {})
click to toggle source
# File lib/circleci/request.rb, line 23 def initialize(config, path, params = {}) @config = config @uri = build_uri(path, params) @net = net_http setup_http(@net) end
Public Instance Methods
delete()
click to toggle source
# File lib/circleci/request.rb, line 38 def delete execute :delete end
get()
click to toggle source
# File lib/circleci/request.rb, line 30 def get execute :get end
post(body = {})
click to toggle source
# File lib/circleci/request.rb, line 34 def post(body = {}) execute :post, body end
Private Instance Methods
build_uri(path, params = {})
click to toggle source
# File lib/circleci/request.rb, line 64 def build_uri(path, params = {}) uri = @config.uri uri.path += path params['circle-token'] = @config.token uri.query = URI.encode_www_form(params) uri end
connection(verb, body = {})
click to toggle source
# File lib/circleci/request.rb, line 50 def connection(verb, body = {}) req = Net::HTTP.const_get(verb.to_s.capitalize, false).new(@uri, DEFAULT_HEADERS) req.body = JSON.dump(body) unless verb == :get req end
execute(verb, body = {})
click to toggle source
# File lib/circleci/request.rb, line 44 def execute(verb, body = {}) http = connection(verb, body) setup_http(http) transmit http end
net_http()
click to toggle source
# File lib/circleci/request.rb, line 72 def net_http proxy_uri = @config.proxy_uri if @config.proxy && proxy_uri Net::HTTP.new(@uri.hostname, @uri.port, proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password) else Net::HTTP.new(@uri.hostname, @uri.port, nil, nil, nil, nil) end end
setup_http(http)
click to toggle source
# File lib/circleci/request.rb, line 56 def setup_http(http) options = DEFAULT_OPTIONS.merge(@config.request_overrides) options.each do |option, value| setter = "#{option.to_sym}=" http.send(setter, value) if http.respond_to?(setter) end end
transmit(req)
click to toggle source
# File lib/circleci/request.rb, line 82 def transmit(req) response = nil @net.start do |http| response = http.request(req, nil, &:read_body) end Response.new response end