ya-api-direct 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
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