Sha256: ff6eb4e7fa59f266a7be64d050706ada8ae1f5a48b07106c055eb7de8d7f98e5

Contents?: true

Size: 804 Bytes

Versions: 5

Compression:

Stored size: 804 Bytes

Contents

require 'uri'
require 'net/http'
require 'json'
require 'fb/error'

module Fb
  # @private
  class Request
    def initialize(options = {})
      @host = options.fetch :host, 'graph.facebook.com'
      @path = options[:path]
      @params = options.fetch :params, {}
      unless @params.include? :access_token
        @params.merge!(client_id: Fb.configuration.client_id)
      end
    end

    def url
      uri.to_s
    end

    def run
      res = Net::HTTP.get_response(uri)
      unless res.is_a?(Net::HTTPSuccess)
        message = JSON.parse(res.body)["error"]["message"]
        raise Fb::Error, message
      end
      JSON.parse(res.body)
    end

  private

    def uri
      query = URI.encode_www_form @params
      URI::HTTPS.build host: @host, path: @path, query: query
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
fb-auth-1.0.0.alpha1 lib/fb/request.rb
fb-auth-0.1.3 lib/fb/request.rb
fb-auth-0.1.2 lib/fb/request.rb
fb-auth-0.1.1 lib/fb/request.rb
fb-auth-0.1.0 lib/fb/request.rb