lib/bobot/graph_facebook.rb in bobot-3.0.3 vs lib/bobot/graph_facebook.rb in bobot-3.0.5
- old
+ new
@@ -1,72 +1,63 @@
+require "Typhoeus"
+require "uri"
+
module Bobot
module GraphFacebook
- GRAPH_FB_URL = 'https://graph.facebook.com'.freeze
- GRAPH_FB_VERSION = 'v2.11'.freeze
+ GRAPH_FB_URL = 'https://graph.facebook.com/v2.11/'.freeze
+ GRAPH_HEADERS = { Accept: "application/json", "Content-Type" => "application/json; charset=utf-8" }.freeze
module ClassMethods
def graph_get(path, query: {})
- uri = URI.parse(File.join(GRAPH_FB_URL, GRAPH_FB_VERSION, path))
- uri.query = URI.encode_www_form(query)
- req = Net::HTTP::Get.new(uri.request_uri)
- req['Content-Type'] = 'application/json; charset=utf-8'
- req['Accept'] = 'application/json'
- req['User-Agent'] = nil
- req['Accept-Encoding'] = nil
- https = Net::HTTP.new(uri.host, uri.port).tap do |http|
- http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- http.read_timeout = 300
- end
- res = https.request(req)
- json = ActiveSupport::JSON.decode(res.send(:body) || '{}')
- Rails.logger.debug "[GET] >> #{uri.request_uri}"
+ url = "#{GRAPH_FB_URL}#{path}".freeze
+ req = Typhoeus::Request.new(
+ url,
+ method: :get,
+ params: URI.encode_www_form(query.reverse_merge(include_headers: false)),
+ headers: GRAPH_HEADERS,
+ ssl_verifypeer: false,
+ ).run
+ response = req.run
+ json = ActiveSupport::JSON.decode(response.send(:body) || '{}')
+ Rails.logger.debug "[GET] >> #{url}"
Rails.logger.debug "[GET] << #{json}"
Bobot::ErrorParser.raise_errors_from(json)
json
end
module_function :graph_get
def graph_post(path, query: {}, body: {})
- uri = URI.parse(File.join(GRAPH_FB_URL, GRAPH_FB_VERSION, path))
- uri.query = URI.encode_www_form(query)
- req = Net::HTTP::Post.new(uri.request_uri)
- req['Content-Type'] = 'application/json; charset=utf-8'
- req['Accept'] = 'application/json'
- req['User-Agent'] = nil
- req['Accept-Encoding'] = nil
- req.body = ActiveSupport::JSON.encode(body)
- https = Net::HTTP.new(uri.host, uri.port).tap do |http|
- http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- http.read_timeout = 300
- end
- res = https.request(req)
- json = ActiveSupport::JSON.decode(res.send(:body) || '{}')
- Rails.logger.debug "[POST] >> #{uri.request_uri}"
+ url = "#{GRAPH_FB_URL}#{path}".freeze
+ req = Typhoeus::Request.new(
+ url,
+ method: :post,
+ params: URI.encode_www_form(query.reverse_merge(include_headers: false)),
+ body: ActiveSupport::JSON.encode(body),
+ headers: GRAPH_HEADERS,
+ ssl_verifypeer: false,
+ )
+ response = req.run
+ json = ActiveSupport::JSON.decode(response.send(:body) || '{}')
+ Rails.logger.debug "[POST] >> #{url}"
Rails.logger.debug "[POST] << #{json}"
Bobot::ErrorParser.raise_errors_from(json)
json
end
module_function :graph_post
def graph_delete(path, query: {}, body: {})
- uri = URI.parse(File.join(GRAPH_FB_URL, GRAPH_FB_VERSION, path))
- uri.query = URI.encode_www_form(query)
- req = Net::HTTP::Delete.new(uri.request_uri)
- req['Content-Type'] = 'application/json; charset=utf-8'
- req['Accept'] = 'application/json'
- req['User-Agent'] = nil
- req['Accept-Encoding'] = nil
- req.body = ActiveSupport::JSON.encode(body)
- https = Net::HTTP.new(uri.host, uri.port).tap do |http|
- http.use_ssl = true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- http.read_timeout = 300
- end
- res = https.request(req)
- json = ActiveSupport::JSON.decode(res.send(:body) || '{}')
- Rails.logger.debug "[DELETE] >> #{uri.request_uri}"
+ url = "#{GRAPH_FB_URL}#{path}".freeze
+ req = Typhoeus::Request.new(
+ url,
+ method: :delete,
+ params: URI.encode_www_form(query.reverse_merge(include_headers: false)),
+ body: ActiveSupport::JSON.encode(body),
+ headers: GRAPH_HEADERS,
+ ssl_verifypeer: false,
+ )
+ response = req.run
+ json = ActiveSupport::JSON.decode(response.send(:body) || '{}')
+ Rails.logger.debug "[DELETE] >> #{url}"
Rails.logger.debug "[DELETE] << #{json}"
Bobot::ErrorParser.raise_errors_from(json)
json
end
module_function :graph_delete