Sha256: 080e5d2cf7b6b67c7d4c97e649a419ba9508881cf45e986b58fc1b51eda0d4cb
Contents?: true
Size: 1.61 KB
Versions: 1
Compression:
Stored size: 1.61 KB
Contents
require "net/http" require "openssl" require "json" require "ya/api/direct/constants" require "ya/api/direct/url_helper" module Ya::API::Direct class Gateway attr_reader :config def initialize(config) @config = config end def request(method, params, service = "", version = nil) ver = version || (service.nil? ? :v4 : :v5) url = UrlHelper.direct_api_url @config[:mode], ver, service header = generate_header ver body = generate_body method, params, ver uri = URI.parse url request = Net::HTTP::Post.new(uri.path, initheader = header) request.body = body.to_json http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = @config[:ssl] ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE response = http.request(request) if response.kind_of? Net::HTTPSuccess UrlHelper.parse_data response, ver else raise response.inspect end end def generate_header(ver) header = {} if [:v5].include? ver header.merge!({ 'Client-Login' => @config[:login], 'Accept-Language' => @config[:locale], 'Authorization' => "Bearer %{token}" % @config }) end end def generate_body(method, params, ver) params_key = [:v4, :v4live].include?(ver) ? 'param' : 'params' body = { 'method' => method, params_key => params } if [:v4, :v4live].include? ver body.merge!({ "locale" => @config[:locale], "token" => @config[:token] }) end body end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ya-api-direct-0.2.6 | lib/ya/api/direct/gateway.rb |