yandex-direct-api 0.0.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 072883fae96244529f902af53a53dcfb66d2dcce
4
- data.tar.gz: e8c862e4e3438b30525b7819ff6a36e927f53842
3
+ metadata.gz: b3179fac1ae6dd3d8e997c28e6f8358b6ffa5089
4
+ data.tar.gz: 3473b4882754ef0f0f8b3ce350514964599bf038
5
5
  SHA512:
6
- metadata.gz: 500f25dfe8db787220c3f89dcad7c4930c4cff7ec28a1ce46cd655849bde3c35f788200b372c54d99dacce6255646a0822667c1f55cacea9526b35ff37508188
7
- data.tar.gz: c4355cf4d434acadfcda23c70b0152ee720dfa2e654b9d8e2e4c7cc11e5bc542663f254a65538150afca7544d13bf3cb71bc999c95d21e3386fcce88ac3de849
6
+ metadata.gz: 236a6e20d5f018ed8d650d90892bf335f43ea18111b8bd6361967e737a6b8dc0c458a5dc9a4e467cf26c7f6743921d42ad6b99928b761b395d763e8ddc1fea36
7
+ data.tar.gz: 559ed3c881110c34bd0e9c207bea562206befaafe161c2b6805fcf3cbfed532481c6b44a5d6e4b7ccc7a7fd0f7d598f27eab572a0ede12328a201561d253d1ae
@@ -7,11 +7,9 @@ require 'uri'
7
7
  module YandexDirect
8
8
  class RuntimeError < RuntimeError
9
9
  end
10
- class NotFound < RuntimeError
11
- end
12
10
 
13
11
  def self.url
14
- configuration['sandbox'] ? 'https://api.direct.yandex.com/json/v5/' : 'https://api-sandbox.direct.yandex.com/json/v5/'
12
+ configuration['sandbox'] ? 'https://api-sandbox.direct.yandex.com/json/v5/' : 'https://api.direct.yandex.com/json/v5/'
15
13
  end
16
14
 
17
15
  def self.configuration
@@ -40,29 +38,53 @@ module YandexDirect
40
38
  def self.request(service, method, params = {})
41
39
  uri = URI(url + service)
42
40
  body = {
43
- locale: configuration['locale'],
44
- token: configuration['token'],
45
- method: method.
46
- param: params
41
+ method: method,
42
+ params: params
47
43
  }
48
44
  if configuration['verbose']
49
- puts "\t\033[32mYandex.Direct:\033[0m #{method}(#{body[:param]})"
45
+ puts "\t\033[32mYandexDirect:\033[0m #{service}.#{method}(#{body[:params]})"
50
46
  end
51
47
 
52
48
  http = Net::HTTP.new(uri.host, uri.port)
53
49
  http.use_ssl = true
54
50
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
55
- response = http.post(uri.path, JSON.generate(body))
51
+
52
+ request = Net::HTTP::Post.new(uri.path)
53
+ request['Authorization'] = "Bearer #{configuration['token']}"
54
+ request['Accept-Language'] = configuration['locale']
55
+ request['Client-Login'] = configuration['login'].downcase.gsub('.', '-')
56
+ request.body = JSON.generate(body)
57
+
58
+ response = http.start do |http|
59
+ http.request(request)
60
+ end
56
61
 
57
62
  raise Yandex::API::RuntimeError.new("#{response.code} - #{response.message}") unless response.code.to_i == 200
58
63
 
59
64
  json = parse_json(response.body)
60
-
61
- if json.has_key?('error_code') and json.has_key?('error_str')
62
- code = json['error_code'].to_i
63
- error = json['error_detail'].length > 0 ? json['error_detail'] : json['error_str']
64
- raise RuntimeError.new "#{code} - #{error}"
65
+ messages = []
66
+ if json.has_key?('error')
67
+ messages.push("#{json['error']['error_code'].to_i} - #{json['error']['error_string']}: #{json['error']['error_detail']}")
68
+ else
69
+ value = json['result'].present? ? (json['result'].values.first || json['result']) : json
70
+ value = value.values if value.kind_of?(Hash)
71
+ value.each do |item|
72
+ item['Errors'].each do |error|
73
+ messages.push("#{error['Code'].to_i} - #{error['Message']}: #{error['Details']}")
74
+ end if item.has_key?('Errors')
75
+ end if value.present?
65
76
  end
66
- return json['data']
77
+ raise RuntimeError.new(messages.join("\n")) if messages.any?
78
+ return json['result']
67
79
  end
68
80
  end
81
+
82
+ require 'services/campaign.rb'
83
+ require 'services/add.rb'
84
+ require 'services/ad_group.rb'
85
+ require 'services/keyword.rb'
86
+ require 'services/bid.rb'
87
+ require 'services/dictionaries.rb'
88
+ require 'services/sitelink.rb'
89
+ require 'services/vcard.rb'
90
+ require 'live/live.rb'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yandex-direct-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AliceO
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-19 00:00:00.000000000 Z
11
+ date: 2016-07-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Gem for interaction with Yandex Direct API version 5
14
14
  email: aliceo.jjm@gmail.com
@@ -17,7 +17,6 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - Rakefile
20
- - lib/services/campaign.rb
21
20
  - lib/yandex_direct_api.rb
22
21
  homepage: https://github.com/aliceojjm/yandex-direct-api
23
22
  licenses: []
@@ -1,20 +0,0 @@
1
- module YandexDirect
2
- class Campaign
3
- SERVICE = 'campaigns'
4
- attr_accessor :name, :start_date, :time_zone, :id
5
-
6
- def initialize(params)
7
- end
8
-
9
- def self.list
10
- YandexDirect.request(SERVICE, 'get', {
11
- "SelectionCriteria": {
12
- "Types": ["TEXT_CAMPAIGN"],
13
- "States": ["OFF", "ON"],
14
- "Statuses": ["ACCEPTED", "DRAFT", "MODERATION"]
15
- },
16
- "FieldNames": ['Id', 'Name', 'State', 'Status']
17
- })
18
- end
19
- end
20
- end