ya-api-direct 0.2.5 → 0.2.6

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: dc5086aa88e50438f6a110d4c2cffdc090a5b3d6
4
- data.tar.gz: b97cce9be358c5936070625f8a3c0662b0ecd42f
3
+ metadata.gz: 8f3c62a4147b06184b0d5bab7cc3fa342b8a89eb
4
+ data.tar.gz: 27f6fc767137703e4845175105a6a05aba8bfa57
5
5
  SHA512:
6
- metadata.gz: 933afe225577e340ef49b21e6d47f94b3b6965c799bb3932c48196b1683407488e4fc11bedb967cb9c6a3bd12be90ad216150f252514b886e6d7952c721552bf
7
- data.tar.gz: 2a7e97c13b7b0f046ba061b8dced54eec9c7539904f88a285d0e276ab75c102c1300c45146df2439eccd4dd8d06c371ca9bfc8896a217537c99d3778a35f5ec8
6
+ metadata.gz: 7484bd472a1cddb7ec2b6e949b53fab93626dd228a42c668f26201ad803455e7d9bb4096c5032e0a0800cd9fee9f4748cb304f3533b051bc9c7035eb95bb6ef1
7
+ data.tar.gz: 9233ece009e06fc3ce269f35d1b2369517f4e10ab32a1c68d3ab3e99104042024f1ee596b49caa3f67ebf726725d262e57b474ed89d3940d8fba8cb543c05a13
data/Gemfile CHANGED
@@ -3,6 +3,7 @@ source 'https://rubygems.org'
3
3
  gem 'jruby-openssl', platforms: :jruby
4
4
  gem 'rake'
5
5
  gem 'yard'
6
+ #gem 'tsv'
6
7
 
7
8
  group :development do
8
9
  # reserved
@@ -2,11 +2,8 @@ module Ya
2
2
  module API
3
3
  module Direct
4
4
  API_V5 = {
5
- "Campaigns" => [
6
- "add", "update", "delete", "suspend", "resume", "archive", "unarchive", "get"
7
- ],
8
5
  "AdGroups" => [
9
- "add", "update", "delete", "get"
6
+ "add", "update", "delete", "get"
10
7
  ],
11
8
  "Ads" => [
12
9
  "add", "update", "delete", "suspend", "resume", "archive", "unarchive", "moderate", "get"
@@ -32,14 +29,18 @@ module Ya
32
29
  "Keywords" => [
33
30
  "add", "update", "delete", "suspend", "resume", "get"
34
31
  ],
32
+ "KeywordsResearch" => [
33
+ "hasSearchVolume"
34
+ ],
35
35
  "Sitelinks" => [
36
36
  "add", "get", "delete"
37
37
  ],
38
38
  "VCards" => [
39
39
  "add", "get", "delete"
40
- ]
40
+ ],
41
+ "Reports" => ["get"]
41
42
  }
42
-
43
+
43
44
  API_V4 = [
44
45
  "GetBalance",
45
46
  "GetSummaryStat",
@@ -68,7 +69,7 @@ module Ya
68
69
  "GetSubClients",
69
70
  "GetClientInfo",
70
71
  "UpdateClientInfo",
71
-
72
+
72
73
  "CreateNewSubclient",
73
74
  "GetClientsList",
74
75
 
@@ -86,6 +87,7 @@ module Ya
86
87
  API_V4_LIVE = [
87
88
  "CreateOrUpdateCampaign",
88
89
  "GetCampaignsList",
90
+ "GetSummaryStat",
89
91
  "GetCampaignsListFilter",
90
92
  "GetCampaignsParams",
91
93
  "DeleteCampaign",
@@ -133,4 +135,4 @@ module Ya
133
135
  ]
134
136
  end
135
137
  end
136
- end
138
+ end
@@ -43,9 +43,10 @@ module Ya::API::Direct
43
43
  end
44
44
 
45
45
  def generate_body(method, params, ver)
46
+ params_key = [:v4, :v4live].include?(ver) ? 'param' : 'params'
46
47
  body = {
47
- "method" => method,
48
- "params" => params
48
+ 'method' => method,
49
+ params_key => params
49
50
  }
50
51
  if [:v4, :v4live].include? ver
51
52
  body.merge!({
@@ -2,6 +2,7 @@ require "json"
2
2
 
3
3
  require "ya/api/direct/exception"
4
4
 
5
+
5
6
  module Ya::API::Direct
6
7
  RegExUnits = Regexp.new /(\d+)\/(\d+)\/(\d+)/
7
8
  # Static class with helping functions for url formatting.
@@ -45,6 +46,7 @@ module Ya::API::Direct
45
46
  site: site,
46
47
  service: service
47
48
  }
49
+
48
50
  end
49
51
 
50
52
  # Extract Yandex Direct API units values from responce HTTP header
@@ -64,13 +66,17 @@ module Ya::API::Direct
64
66
  private
65
67
 
66
68
  def self.parse_data(response, ver)
67
- response_body = JSON.parse(response.body)
68
- validate_response! response_body
69
- result = { data: response_body }
70
- if [:v5].include? ver
71
- result.merge!({ units_data: self.extract_response_units(response) })
69
+ if response["Content-Type"] == "application/json; charset=utf-8"
70
+ response_body = JSON.parse(response.body)
71
+ validate_response! response_body
72
+ result = { data: response_body }
73
+ if [:v5].include? ver
74
+ result.merge!({ units_data: self.extract_response_units(response) })
75
+ end
76
+ result
77
+ else
78
+ {data: from_tsv_to_json(response.body)}
72
79
  end
73
- result
74
80
  end
75
81
 
76
82
  def self.validate_response!(response_body)
@@ -79,5 +85,20 @@ module Ya::API::Direct
79
85
  raise Exception.new(response_error['error_detail'], response_error['error_string'], response_error['error_code'])
80
86
  end
81
87
  end
88
+
89
+ def self.from_tsv_to_json(response_body)
90
+ report_name = response_body.slice!(/^(.+?)\n/)
91
+ keys = response_body.slice!(/^(.+?)\n/).split("\t")
92
+ rows = response_body.match(/rows:(.+?)\n/)[1].to_i - 1
93
+ values = []
94
+ rows.times do |row|
95
+ hash_values = {}
96
+ response_body.slice!(/^(.+?)\n/).split("\t").each_with_index do |value, index|
97
+ hash_values[keys[index].gsub("\n", "")] = value.gsub("\n", "")
98
+ end
99
+ values.push(hash_values)
100
+ end
101
+ values
102
+ end
82
103
  end
83
104
  end
@@ -1,7 +1,7 @@
1
1
  module Ya
2
2
  module Api
3
3
  module Direct
4
- VERSION = "0.2.5"
4
+ VERSION = "0.2.6"
5
5
  end
6
6
  end
7
7
  end
@@ -6,7 +6,7 @@ require 'ya/api/direct/version'
6
6
  Gem::Specification.new do |s|
7
7
  s.name = 'ya-api-direct'
8
8
  s.version = Ya::Api::Direct::VERSION
9
- s.date = '2016-10-02'
9
+ s.date = '2018-04-19'
10
10
  s.summary = "Yandex Direct API v5, v4 and v4 Live"
11
11
  s.description = "Ruby implementation for Yandex Direct API of versions 5, 4 and 4 Live"
12
12
  s.authors = "Rikki Mongoose"
@@ -22,4 +22,4 @@ Gem::Specification.new do |s|
22
22
  s.add_development_dependency "bundler", "~> 1.12"
23
23
  s.add_development_dependency "rake", "~> 10.0"
24
24
  s.add_development_dependency "minitest", "~> 5.0"
25
- end
25
+ end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ya-api-direct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rikki Mongoose
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-02 00:00:00.000000000 Z
11
+ date: 2018-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.12'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.12'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '5.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
55
  description: Ruby implementation for Yandex Direct API of versions 5, 4 and 4 Live
@@ -58,9 +58,9 @@ executables: []
58
58
  extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
- - .gitignore
62
- - .rspec
63
- - .travis.yml
61
+ - ".gitignore"
62
+ - ".rspec"
63
+ - ".travis.yml"
64
64
  - CODE_OF_CONDUCT.md
65
65
  - Gemfile
66
66
  - LICENSE
@@ -89,17 +89,17 @@ require_paths:
89
89
  - lib
90
90
  required_ruby_version: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - '>='
92
+ - - ">="
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - '>='
97
+ - - ">="
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
100
  requirements: []
101
101
  rubyforge_project:
102
- rubygems_version: 2.0.14.1
102
+ rubygems_version: 2.5.1
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: Yandex Direct API v5, v4 and v4 Live