require 'rsa' require 'openssl' require 'httparty' module PlataformaSocial class Request def self.post url, params = {} request url, params, 'post' end def self.get url, params = {} request url, params, 'get' end def self.request url, params = {}, method = "get" secret = params[:secret].present? ? params[:secret] : PlataformaSocial.secret platform_api_key = params[:platform_api_key].present? ? params[:platform_api_key] : PlataformaSocial.api_key secret_key = OpenSSL::PKey::RSA.new(File.read("#{Rails.root}/plataforma_social/keys/public.pem")).public_encrypt secret params_name = method == 'get' ? :query : :body params = { :network_name => "fb", :platform_api_key => platform_api_key, :signature => secret_key }.merge(params) begin response = HTTParty.send(method.to_sym, url, params_name => params) rescue => e return e.to_s end return nil if response.nil? if response.parsed_response["data"] response = response.parsed_response["data"] begin response = JSON.parse(response) if response.present? && response.is_a?(String) rescue JSON::ParserError => e response = response end elsif response.parsed_response["error"] response = { "error" => response.parsed_response["error"] } end return response end end end