module GitWand::GitHub::API::Request
Constants
- ALLOWED_HTTP_METHODS
- API_DOMAIN
Public Instance Methods
build_resource_uri(resource)
click to toggle source
# File lib/git_wand/github/api/request.rb, line 40 def build_resource_uri(resource) URI("#{API_DOMAIN}/#{resource}") end
http_request(resource:, method: :get, client:, parameters: {}, query_parameters: nil)
click to toggle source
# File lib/git_wand/github/api/request.rb, line 17 def http_request(resource:, method: :get, client:, parameters: {}, query_parameters: nil) if ALLOWED_HTTP_METHODS.include?(method) net_http_class = Net::HTTP.const_get(method.to_s.capitalize.to_sym) else # TODO: raise a proper error raise "#{method} is not a valid HTTP method" end uri = build_resource_uri(resource) if query_parameters uri.query = URI.encode_www_form(query_parameters) end response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http| request = net_http_class.new(uri) request["Accept"] = "application/vnd.github.v3+json" request["Content-Type"] = "application/json" request.basic_auth(client.username, client.token) request.body = JSON.generate(parameters) http.request(request) end Response.parse(response) end