Module: YandexApiDirect::Call
- Included in:
- DirectService
- Defined in:
- lib/yandex_api_direct/call.rb
Instance Method Summary collapse
- #call(method_name, params = {}) ⇒ Object
- #headers ⇒ Object
- #http(method_name, params = {}) {|( Net::HTTP.start(uri.hostname, uri.port, use_ssl: true).request(req) )| ... } ⇒ Object
- #is_error?(parsed_json) ⇒ Boolean
- #method_url(method_name) ⇒ Object
Instance Method Details
#call(method_name, params = {}) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 |
# File 'lib/yandex_api_direct/call.rb', line 3 def call(method_name, params = {}) http(method_name, params) do |response| raise YandexApiDirect::MethodCallError, response.body unless response.is_a?(Net::HTTPSuccess) json = response.body raise YandexApiDirect::MethodCallError, 'Response could not be empty' if json.nil? || json.empty? parsed_json = JSON.parse(json, symbolize_names: true) raise YandexApiDirect::MethodCallError, json if is_error?(parsed_json) raise YandexApiDirect::MethodCallError, 'Response should include key named :result' unless parsed_json.has_key?(:result) parsed_json[:result] end end |
#headers ⇒ Object
35 36 37 38 39 40 |
# File 'lib/yandex_api_direct/call.rb', line 35 def headers { 'Authorization' => "Bearer #{access_token}", 'Content-Type' => 'application/json; charset=utf-8' } end |
#http(method_name, params = {}) {|( Net::HTTP.start(uri.hostname, uri.port, use_ssl: true).request(req) )| ... } ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/yandex_api_direct/call.rb', line 15 def http(method_name, params = {}) uri = URI(method_url(method_name)) req = Net::HTTP::Post.new(uri, headers) req.body = params.to_json yield ( Net::HTTP.start(uri.hostname, uri.port, use_ssl: true).request(req) ) end |
#is_error?(parsed_json) ⇒ Boolean
31 32 33 |
# File 'lib/yandex_api_direct/call.rb', line 31 def is_error?(parsed_json) parsed_json.has_key?(:error) end |
#method_url(method_name) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/yandex_api_direct/call.rb', line 24 def method_url(method_name) if method_name.nil? || method_name.empty? raise ArgumentError, 'Method name could not be empty' end "#{base_url}/#{method_name}" end |