class SocialNet::Facebook::Api::Request
Public Class Methods
new(attrs = {})
click to toggle source
# File lib/social_net/facebook/api/request.rb, line 9 def initialize(attrs = {}) @host = 'graph.facebook.com' @query = attrs[:username] if attrs[:username] @access_token = attrs[:access_token] if attrs[:access_token] @path = attrs.fetch :path, "/v2.3/#{@query}" @method = attrs.fetch :method, :get end
Public Instance Methods
run()
click to toggle source
# File lib/social_net/facebook/api/request.rb, line 17 def run #print "#{as_curl}\n" case response = run_http_request when Net::HTTPOK JSON.parse(response.body) else raise Errors::ResponseError, response end end
Private Instance Methods
access_token()
click to toggle source
# File lib/social_net/facebook/api/request.rb, line 43 def access_token @access_token ? { access_token: @access_token }.to_param : fb_app_key_params end
as_curl()
click to toggle source
# File lib/social_net/facebook/api/request.rb, line 53 def as_curl 'curl'.tap do |curl| curl << " -X #{http_request.method}" http_request.each_header do |name, value| curl << %Q{ -H "#{name}: #{value}"} end curl << %Q{ -d '#{http_request.body}'} if http_request.body curl << %Q{ "#{@uri.to_s}"} end end
fb_app_key_params()
click to toggle source
# File lib/social_net/facebook/api/request.rb, line 47 def fb_app_key_params {}.tap do |keys| keys.merge! access_token: "#{SocialNet::Facebook.configuration.client_id}|#{SocialNet::Facebook.configuration.client_secret}" end.to_param end
http_request()
click to toggle source
# File lib/social_net/facebook/api/request.rb, line 34 def http_request http_class = "Net::HTTP::#{@method.capitalize}".constantize @http_request ||= http_class.new(uri.request_uri) end
run_http_request()
click to toggle source
# File lib/social_net/facebook/api/request.rb, line 28 def run_http_request Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| http.request http_request end end
uri()
click to toggle source
# File lib/social_net/facebook/api/request.rb, line 39 def uri @uri ||= URI::HTTPS.build host: @host, path: @path, query: access_token end