yandex_direct_api 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/yandex_direct/api.rb +65 -0
  2. metadata +61 -0
@@ -0,0 +1,65 @@
1
+ require "json"
2
+ require "net/http"
3
+ require "active_support/core_ext"
4
+
5
+ module Yandex
6
+ module Direct
7
+ class ApiException < StandardError
8
+ attr_reader :message, :code, :details
9
+
10
+ def initialize(message, code, details)
11
+ @message, @code, @details = message, code, details
12
+ end
13
+
14
+ def to_s
15
+ "#{code}: #{message}"
16
+ end
17
+ end
18
+
19
+ class Api
20
+ attr_reader :token, :login, :app_id, :locale
21
+
22
+ def initialize(token, login, app_id, locale = :en)
23
+ @token, @login, @app_id, @locale = token, login, app_id, locale
24
+ end
25
+
26
+ def method_missing(method, param = nil)
27
+ request method.to_s.camelize, param
28
+ end
29
+
30
+
31
+ private
32
+
33
+ def request_params(method, param)
34
+ {
35
+ application_id: app_id,
36
+ login: login,
37
+ token: token,
38
+ locale: locale,
39
+ method: method,
40
+ param: param
41
+ }
42
+ end
43
+
44
+ def request(method, param)
45
+ request = Net::HTTP::Post.new "/json-api/v4/"
46
+ request.body = request_params(method, param).to_json
47
+
48
+ response = Net::HTTP.start("api.direct.yandex.ru", 443, use_ssl: true) do |http|
49
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
50
+ http.request request
51
+ end
52
+
53
+ check_error JSON.parse response.body
54
+ end
55
+
56
+ def check_error(response)
57
+ if response.try(:[], "error_str")
58
+ raise ApiException.new(response["error_str"], response["error_code"], response["error_detail"])
59
+ end
60
+
61
+ response["data"]
62
+ end
63
+ end
64
+ end
65
+ end
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yandex_direct_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eugeniy Belyaev
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.0
30
+ description: Yandex.Direct api wrapper
31
+ email: eugeniy.b@garin-studio.ru
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - lib/yandex_direct/api.rb
37
+ homepage: https://github.com/zhekanax/yandex_direct_api
38
+ licenses: []
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 1.8.23
58
+ signing_key:
59
+ specification_version: 3
60
+ summary: Yandex.Direct api wrapper
61
+ test_files: []