adapi 0.0.4 → 0.0.5
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.
- data/.gitignore +3 -0
- data/GUIDELINES.markdown +61 -0
- data/README.markdown +79 -45
- data/Rakefile +31 -3
- data/adapi.gemspec +10 -3
- data/examples/add_ad_group.rb +1 -1
- data/examples/add_bare_ad_group.rb +1 -4
- data/examples/add_campaign.rb +1 -0
- data/examples/add_campaign_criteria.rb +27 -0
- data/examples/add_invalid_ad_group.rb +3 -1
- data/examples/add_invalid_text_ad.rb +1 -1
- data/examples/add_keywords.rb +1 -1
- data/examples/add_negative_campaign_criteria.rb +23 -0
- data/examples/add_text_ad.rb +1 -1
- data/examples/customize_configuration.rb +1 -2
- data/examples/delete_keyword.rb +1 -1
- data/examples/find_campaign.rb +5 -5
- data/examples/find_campaign_ad_groups.rb +1 -1
- data/examples/find_campaign_criteria.rb +103 -0
- data/examples/find_locations.rb +21 -0
- data/examples/rollback_campaign.rb +7 -6
- data/examples/update_campaign.rb +1 -1
- data/examples/update_campaign_status.rb +1 -1
- data/lib/adapi.rb +11 -9
- data/lib/adapi/ad/text_ad.rb +2 -1
- data/lib/adapi/ad_group.rb +13 -9
- data/lib/adapi/ad_param.rb +89 -0
- data/lib/adapi/api.rb +8 -0
- data/lib/adapi/campaign.rb +27 -18
- data/lib/adapi/campaign_criterion.rb +278 -0
- data/lib/adapi/campaign_target.rb +5 -123
- data/lib/adapi/config.rb +36 -31
- data/lib/adapi/constant_data.rb +13 -0
- data/lib/adapi/constant_data/language.rb +45 -0
- data/lib/adapi/keyword.rb +15 -5
- data/lib/adapi/location.rb +91 -0
- data/lib/adapi/version.rb +8 -1
- data/lib/httpi_request_monkeypatch.rb +4 -0
- data/test/config/adapi.yml.template +21 -0
- data/test/config/adwords_api.yml.template +10 -0
- data/test/integration/create_campaign_test.rb +54 -0
- data/test/test_helper.rb +2 -3
- data/test/unit/ad_group_test.rb +3 -4
- data/test/unit/ad_test.rb +1 -1
- data/test/unit/campaign_criterion_test.rb +23 -0
- data/test/unit/config_test.rb +52 -0
- metadata +48 -35
- data/examples/add_campaign_targets.rb +0 -26
- data/test/unit/campaign_target_test.rb +0 -51
data/test/unit/ad_test.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
module Adapi
|
6
|
+
class CampaignCriterionTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
context "language alias" do
|
9
|
+
|
10
|
+
should "be converted to language id " do
|
11
|
+
assert_equal CampaignCriterion.create_criterion(:language, 'en'),
|
12
|
+
{:xsi_type => 'Language', :id => 1000}
|
13
|
+
end
|
14
|
+
|
15
|
+
should "be automatically converted to lowercase" do
|
16
|
+
assert_equal CampaignCriterion.create_criterion(:language, 'CS'),
|
17
|
+
{:xsi_type => 'Language', :id => 1021}
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
module Adapi
|
5
|
+
class ConfigTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
# FIXME how come that tests work without custom configurations settings?
|
8
|
+
# Adapi::Config.dir = 'test/config'
|
9
|
+
# Adapi::Config.filename = 'adapi.yml.template'
|
10
|
+
|
11
|
+
context "Loading adapi.yml" do
|
12
|
+
should "load the configuration" do
|
13
|
+
# because it could have been set in another test
|
14
|
+
# set default values
|
15
|
+
Adapi::Config.dir = 'test/config'
|
16
|
+
Adapi::Config.filename = 'adapi.yml.template'
|
17
|
+
@settings = Adapi::Config.settings(true)
|
18
|
+
|
19
|
+
assert_equal '555-666-7777', @settings[:default][:authentication][:client_customer_id]
|
20
|
+
assert_equal 'adapi_yml@example.com', @settings[:default][:authentication][:email]
|
21
|
+
assert_equal 'sandbox_email@example.com', @settings[:sandbox][:authentication][:email]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "Loading adwords_api.yml" do
|
26
|
+
should "loads the configuration" do
|
27
|
+
# because it could have been set in another test
|
28
|
+
# set default values
|
29
|
+
Adapi::Config.dir = 'test/config'
|
30
|
+
Adapi::Config.filename = 'adwords_api.yml.template'
|
31
|
+
@settings = Adapi::Config.settings(true)
|
32
|
+
|
33
|
+
assert_equal '555-666-7777', @settings[:default][:authentication][:client_customer_id]
|
34
|
+
assert_equal 'adwords_api_yml@example.com', @settings[:default][:authentication][:email]
|
35
|
+
assert_nil @settings[:sandbox]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
context "Config params can be overwritten and " do
|
41
|
+
should "correctly set Adapi::Config.adapi_dir" do
|
42
|
+
Adapi::Config.dir = 'adapi_dir'
|
43
|
+
assert_equal 'adapi_dir', Adapi::Config.dir
|
44
|
+
end
|
45
|
+
|
46
|
+
should "correctly set Adapi::Config.adapi_filename" do
|
47
|
+
Adapi::Config.filename = 'adapi_filename'
|
48
|
+
assert_equal 'adapi_filename', Adapi::Config.filename
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,33 +9,33 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-02-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-ads-common
|
16
|
-
requirement: &
|
16
|
+
requirement: &10751680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - =
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.6.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *10751680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: google-adwords-api
|
27
|
-
requirement: &
|
27
|
+
requirement: &10749800 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
|
-
- -
|
30
|
+
- - =
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
32
|
+
version: 0.5.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *10749800
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activemodel
|
38
|
-
requirement: &
|
38
|
+
requirement: &10748340 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '3.1'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *10748340
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activesupport
|
49
|
-
requirement: &
|
49
|
+
requirement: &10747280 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '3.1'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *10747280
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &10743320 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.9.2
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *10743320
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: curb
|
71
|
-
requirement: &
|
71
|
+
requirement: &10742640 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0.7'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *10742640
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: yard
|
82
|
-
requirement: &
|
82
|
+
requirement: &10740660 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0.7'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *10740660
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rcov
|
93
|
-
requirement: &
|
93
|
+
requirement: &10739480 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0.9'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *10739480
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: turn
|
104
|
-
requirement: &
|
104
|
+
requirement: &10738540 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - =
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: 0.8.2
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *10738540
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: shoulda
|
115
|
-
requirement: &
|
115
|
+
requirement: &10737680 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *10737680
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: fakeweb
|
126
|
-
requirement: &
|
126
|
+
requirement: &10732740 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *10732740
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: factory_girl
|
137
|
-
requirement: &
|
137
|
+
requirement: &10729600 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *10729600
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: minitest
|
148
|
-
requirement: &
|
148
|
+
requirement: &10726800 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ! '>='
|
@@ -153,7 +153,7 @@ dependencies:
|
|
153
153
|
version: '0'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *10726800
|
157
157
|
description: This gem provides user-friendly interface to Google Adwords API.
|
158
158
|
email:
|
159
159
|
- lucastej@gmail.com
|
@@ -162,6 +162,7 @@ extensions: []
|
|
162
162
|
extra_rdoc_files: []
|
163
163
|
files:
|
164
164
|
- .gitignore
|
165
|
+
- GUIDELINES.markdown
|
165
166
|
- Gemfile
|
166
167
|
- LICENSE
|
167
168
|
- README.markdown
|
@@ -171,10 +172,11 @@ files:
|
|
171
172
|
- examples/add_bare_ad_group.rb
|
172
173
|
- examples/add_bare_campaign.rb
|
173
174
|
- examples/add_campaign.rb
|
174
|
-
- examples/
|
175
|
+
- examples/add_campaign_criteria.rb
|
175
176
|
- examples/add_invalid_ad_group.rb
|
176
177
|
- examples/add_invalid_text_ad.rb
|
177
178
|
- examples/add_keywords.rb
|
179
|
+
- examples/add_negative_campaign_criteria.rb
|
178
180
|
- examples/add_text_ad.rb
|
179
181
|
- examples/custom_settings.yml
|
180
182
|
- examples/customize_configuration.rb
|
@@ -182,6 +184,8 @@ files:
|
|
182
184
|
- examples/find_all_campaigns.rb
|
183
185
|
- examples/find_campaign.rb
|
184
186
|
- examples/find_campaign_ad_groups.rb
|
187
|
+
- examples/find_campaign_criteria.rb
|
188
|
+
- examples/find_locations.rb
|
185
189
|
- examples/log_to_specific_account.rb
|
186
190
|
- examples/rollback_campaign.rb
|
187
191
|
- examples/update_campaign.rb
|
@@ -191,23 +195,32 @@ files:
|
|
191
195
|
- lib/adapi/ad/text_ad.rb
|
192
196
|
- lib/adapi/ad_group.rb
|
193
197
|
- lib/adapi/ad_group_criterion.rb
|
198
|
+
- lib/adapi/ad_param.rb
|
194
199
|
- lib/adapi/api.rb
|
195
200
|
- lib/adapi/campaign.rb
|
201
|
+
- lib/adapi/campaign_criterion.rb
|
196
202
|
- lib/adapi/campaign_target.rb
|
197
203
|
- lib/adapi/config.rb
|
204
|
+
- lib/adapi/constant_data.rb
|
205
|
+
- lib/adapi/constant_data/language.rb
|
198
206
|
- lib/adapi/keyword.rb
|
207
|
+
- lib/adapi/location.rb
|
199
208
|
- lib/adapi/version.rb
|
200
209
|
- lib/httpi_request_monkeypatch.rb
|
210
|
+
- test/config/adapi.yml.template
|
211
|
+
- test/config/adwords_api.yml.template
|
201
212
|
- test/factories/.gitignore
|
202
213
|
- test/factories/ad_group_factory.rb
|
203
214
|
- test/factories/ad_text_factory.rb
|
215
|
+
- test/integration/create_campaign_test.rb
|
204
216
|
- test/test_helper.rb
|
205
217
|
- test/unit/.gitignore
|
206
218
|
- test/unit/ad/ad_text_test.rb
|
207
219
|
- test/unit/ad_group_test.rb
|
208
220
|
- test/unit/ad_test.rb
|
209
|
-
- test/unit/
|
210
|
-
|
221
|
+
- test/unit/campaign_criterion_test.rb
|
222
|
+
- test/unit/config_test.rb
|
223
|
+
homepage: https://github.com/lstejskal/adapi
|
211
224
|
licenses: []
|
212
225
|
post_install_message:
|
213
226
|
rdoc_options: []
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'adapi'
|
4
|
-
|
5
|
-
# create campaign
|
6
|
-
require File.join(File.dirname(__FILE__), 'add_bare_campaign')
|
7
|
-
|
8
|
-
# TODO we should be able call it from campaign instance, for example:
|
9
|
-
# $campaign.set_targets(:language => [ 'en' ], ...)
|
10
|
-
|
11
|
-
$campaign_target = Adapi::CampaignTarget.new(
|
12
|
-
:campaign_id => $campaign[:id],
|
13
|
-
:targets => {
|
14
|
-
:language => [ 'en' ],
|
15
|
-
:geo => {
|
16
|
-
# :country => 'CZ'
|
17
|
-
# :province => 'CZ-PR'
|
18
|
-
# :city => { :city_name => 'Prague', :province_code => 'CZ-PR', :country_code => 'CZ' }
|
19
|
-
:proximity => { :geo_point => '50.083333,14.366667', :radius => '50 km' }
|
20
|
-
}
|
21
|
-
}
|
22
|
-
)
|
23
|
-
|
24
|
-
$campaign_target.create
|
25
|
-
|
26
|
-
p $campaign_target.attributes
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'test_helper'
|
4
|
-
|
5
|
-
module Adapi
|
6
|
-
class CampaignTargetTest < Test::Unit::TestCase
|
7
|
-
|
8
|
-
context "self.create_targets" do
|
9
|
-
|
10
|
-
should "parse :language targets" do
|
11
|
-
assert_equal CampaignTarget.create_targets(:language, ['en', 'cs']),
|
12
|
-
[{:language_code => 'en'}, {:language_code => 'cs'}]
|
13
|
-
end
|
14
|
-
|
15
|
-
should "automatically convert :language targets to lowercase" do
|
16
|
-
assert_equal CampaignTarget.create_targets(:language, ['EN', 'CS']),
|
17
|
-
[{:language_code => 'en'}, {:language_code => 'cs'}]
|
18
|
-
end
|
19
|
-
|
20
|
-
should "parse :geo / :country and :province targets" do
|
21
|
-
assert_equal CampaignTarget.create_targets(:geo, {:country => 'CZ', :province => 'CZ-PR'}),
|
22
|
-
[
|
23
|
-
{:xsi_type => 'CountryTarget', :excluded => false, :country_code => 'CZ'},
|
24
|
-
{:xsi_type => 'ProvinceTarget', :excluded => false, :province_code => 'CZ-PR'}
|
25
|
-
]
|
26
|
-
end
|
27
|
-
|
28
|
-
should "automatically convert :geo / :country and :province targets to uppercase" do
|
29
|
-
assert_equal CampaignTarget.create_targets(:geo, {:country => 'cz', :province => 'cz-pr'}),
|
30
|
-
[
|
31
|
-
{:xsi_type => 'CountryTarget', :excluded => false, :country_code => 'CZ'},
|
32
|
-
{:xsi_type => 'ProvinceTarget', :excluded => false, :province_code => 'CZ-PR'}
|
33
|
-
]
|
34
|
-
end
|
35
|
-
|
36
|
-
should "parse :geo / :proximity targets" do
|
37
|
-
assert_equal CampaignTarget.create_targets(:geo,
|
38
|
-
{:proximity => {:geo_point => '38.89859,-77.035971', :radius => '10 km'}}),
|
39
|
-
[{ :xsi_type => 'ProximityTarget', :excluded => false,
|
40
|
-
:radius_in_units => 10, :radius_distance_units => 'KILOMETERS',
|
41
|
-
:geo_point => {
|
42
|
-
:longitude_in_micro_degrees => 38898590,
|
43
|
-
:latitude_in_micro_degrees => -77035971
|
44
|
-
}
|
45
|
-
}]
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|