2Performant 0.0.2 → 0.0.3
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/2Performant.gemspec +4 -4
- data/VERSION +1 -1
- data/lib/two_performant.rb +257 -154
- metadata +13 -4
data/2Performant.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{2Performant}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["2Performant"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-06-17}
|
13
13
|
s.description = %q{Library for the 2Performant API}
|
14
14
|
s.email = %q{andrei@2performant.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.homepage = %q{http://github.com/2performant/2Performant}
|
33
33
|
s.rdoc_options = ["--charset=UTF-8"]
|
34
34
|
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = %q{1.3.
|
35
|
+
s.rubygems_version = %q{1.3.7}
|
36
36
|
s.summary = %q{Library for the 2Performant API}
|
37
37
|
s.test_files = [
|
38
38
|
"test/helper.rb",
|
@@ -43,7 +43,7 @@ Gem::Specification.new do |s|
|
|
43
43
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
44
|
s.specification_version = 3
|
45
45
|
|
46
|
-
if Gem::Version.new(Gem::
|
46
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
47
|
s.add_runtime_dependency(%q<httparty>, [">= 0"])
|
48
48
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
49
49
|
else
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/lib/two_performant.rb
CHANGED
@@ -7,13 +7,13 @@ class TwoPerformant
|
|
7
7
|
headers 'Content-Type' => 'text/xml'
|
8
8
|
|
9
9
|
attr_accessor :user, :pass, :host, :version, :auth_type, :oauth, :oauth_request
|
10
|
-
|
11
|
-
|
12
|
-
if auth_type == :simple
|
10
|
+
|
11
|
+
def initialize(auth_type, auth_obj, host)
|
12
|
+
if auth_type == :simple
|
13
13
|
self.class.basic_auth auth_obj[:user], auth_obj[:pass]
|
14
|
-
elsif auth_type == :oauth
|
14
|
+
elsif auth_type == :oauth
|
15
15
|
self.oauth = TwoPerformant::OAuth.new(auth_obj, host)
|
16
|
-
else
|
16
|
+
else
|
17
17
|
return false
|
18
18
|
end
|
19
19
|
|
@@ -21,81 +21,81 @@ class TwoPerformant
|
|
21
21
|
self.auth_type = auth_type
|
22
22
|
self.host = host
|
23
23
|
self.class.base_uri host
|
24
|
-
|
24
|
+
end
|
25
25
|
|
26
26
|
# =======
|
27
|
-
# Users
|
27
|
+
# Users
|
28
28
|
# =======
|
29
29
|
def user_show(user_id)
|
30
30
|
self.hook("/users/#{user_id}.xml", "user");
|
31
31
|
end
|
32
32
|
|
33
33
|
|
34
|
-
# Display public information about the logged in user
|
35
|
-
def user_loggedin
|
34
|
+
# Display public information about the logged in user
|
35
|
+
def user_loggedin
|
36
36
|
self.hook("/users/loggedin.xml", "user");
|
37
37
|
end
|
38
38
|
|
39
39
|
# ===========
|
40
|
-
# Campaigns
|
40
|
+
# Campaigns
|
41
41
|
# ===========
|
42
42
|
|
43
|
-
# List campaigns. Displays the first 6 entries by default.
|
44
|
-
def campaigns_list(category_id=nil, page=1, perpage=6)
|
43
|
+
# List campaigns. Displays the first 6 entries by default.
|
44
|
+
def campaigns_list(category_id=nil, page=1, perpage=6)
|
45
45
|
request = {
|
46
46
|
'category_id' => category_id,
|
47
47
|
'page' => page,
|
48
48
|
'perpage' => perpage
|
49
49
|
}
|
50
|
-
|
50
|
+
|
51
51
|
self.hook("/campaigns.xml", "campaign", request, 'GET')
|
52
52
|
end
|
53
53
|
|
54
|
-
# Search for campaigns
|
55
|
-
def campaigns_search(search, page = 1, perpage = 6)
|
54
|
+
# Search for campaigns
|
55
|
+
def campaigns_search(search, page = 1, perpage = 6)
|
56
56
|
request = {
|
57
57
|
'page' => page,
|
58
58
|
'perpage' => perpage,
|
59
59
|
'search' => search
|
60
60
|
}
|
61
|
-
|
61
|
+
|
62
62
|
self.hook("/campaigns/search.xml", "campaign", request, 'GET')
|
63
63
|
end
|
64
64
|
|
65
|
-
# Display public information about a campaign
|
66
|
-
def campaign_show(campaign_id)
|
65
|
+
# Display public information about a campaign
|
66
|
+
def campaign_show(campaign_id)
|
67
67
|
self.hook("/campaigns/#{campaign_id}.xml", "campaign")
|
68
68
|
end
|
69
69
|
|
70
|
-
# Affiliates: List campaigns which have the logged in user accepted
|
71
|
-
def campaigns_listforaffiliate
|
70
|
+
# Affiliates: List campaigns which have the logged in user accepted
|
71
|
+
def campaigns_listforaffiliate
|
72
72
|
self.hook("/campaigns/listforaffiliate.xml", "campaign")
|
73
73
|
end
|
74
74
|
|
75
|
-
# Merchants: List all campaigns created by the logged in user
|
76
|
-
def campaigns_listforowner
|
75
|
+
# Merchants: List all campaigns created by the logged in user
|
76
|
+
def campaigns_listforowner
|
77
77
|
self.hook("/campaigns/listforowner.xml", "campaign")
|
78
78
|
end
|
79
79
|
|
80
|
-
# Merchants: Display complete information about a campaign (only available to owner)
|
81
|
-
def campaign_showforowner(campaign_id)
|
80
|
+
# Merchants: Display complete information about a campaign (only available to owner)
|
81
|
+
def campaign_showforowner(campaign_id)
|
82
82
|
self.hook("/campaigns/#{campaign_id}/showforowner.xml", "campaign")
|
83
83
|
end
|
84
|
-
|
85
|
-
# Merchants: Update a campaign
|
86
|
-
def campaign_update(campaign_id, campaign)
|
84
|
+
|
85
|
+
# Merchants: Update a campaign
|
86
|
+
def campaign_update(campaign_id, campaign)
|
87
87
|
request = {
|
88
88
|
'campaign' => campaign
|
89
89
|
}
|
90
90
|
self.hook("/campaigns/#{campaign_id}.xml", "campaign", request, 'PUT')
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
93
|
# Create a Deep Link. This method was created so it wouldn't make a request for every Quick Link.
|
94
|
-
# You may need to get some data before using it.
|
95
|
-
def campaign_quicklink(campaign_id, aff_code, redirect)
|
94
|
+
# You may need to get some data before using it.
|
95
|
+
def campaign_quicklink(campaign_id, aff_code, redirect)
|
96
96
|
url = "#{self.host}/events/click?ad_type=quicklink&aff_code=#{aff_code}&unique=#{campaign_id}&redirect_to=#{redirect}"
|
97
97
|
|
98
|
-
if (self.auth_type == :oauth)
|
98
|
+
if (self.auth_type == :oauth)
|
99
99
|
url << "&app=#{self.oauth}"
|
100
100
|
end
|
101
101
|
|
@@ -103,11 +103,35 @@ class TwoPerformant
|
|
103
103
|
end
|
104
104
|
|
105
105
|
# ============
|
106
|
-
#
|
106
|
+
# Sales
|
107
|
+
# ============
|
108
|
+
|
109
|
+
def sale_create(campaign_id, sale)
|
110
|
+
request = {
|
111
|
+
'sale' => sale
|
112
|
+
}
|
113
|
+
|
114
|
+
self.hook("/campaigns/#{campaign_id}/sales.xml", "sale", request, "POST")
|
115
|
+
end
|
116
|
+
|
117
|
+
# ============
|
118
|
+
# Leads
|
119
|
+
# ============
|
120
|
+
|
121
|
+
def lead_create(campaign_id, sale)
|
122
|
+
request = {
|
123
|
+
'lead' => lead
|
124
|
+
}
|
125
|
+
|
126
|
+
self.hook("/campaigns/#{campaign_id}/leads.xml", "lead", request, "POST")
|
127
|
+
end
|
128
|
+
|
129
|
+
# ============
|
130
|
+
# Affiliates
|
107
131
|
# ============
|
108
132
|
|
109
|
-
# Search for affiliates
|
110
|
-
def affiliates_search(search, page=1, perpage=6)
|
133
|
+
# Search for affiliates
|
134
|
+
def affiliates_search(search, page=1, perpage=6)
|
111
135
|
request = {
|
112
136
|
'page' => page,
|
113
137
|
'perpage' => perpage,
|
@@ -117,20 +141,20 @@ class TwoPerformant
|
|
117
141
|
self.hook("/affiliates/search", "user", request, 'GET')
|
118
142
|
end
|
119
143
|
|
120
|
-
# Merchants: List affiliates approved in campaigns
|
121
|
-
|
122
|
-
|
144
|
+
# Merchants: List affiliates approved in campaigns
|
145
|
+
def affiliates_listformerchant(campaign_id=nil)
|
146
|
+
request = {
|
123
147
|
'campaign_id' => campaign_id
|
124
148
|
}
|
125
149
|
self.hook("/affiliates/listformerchant", "user", request, 'GET')
|
126
150
|
end
|
127
|
-
|
151
|
+
|
128
152
|
# =============
|
129
|
-
# Commissions
|
153
|
+
# Commissions
|
130
154
|
# =============
|
131
|
-
|
155
|
+
|
132
156
|
# Search for commissions. Month: 01 to 12; Year: 20xx. Status: accepted, pending or rejected. nil if empty search.
|
133
|
-
def commissions_search(options, campaign_id=nil, month=nil, year=nil, page=1, perpage=6)
|
157
|
+
def commissions_search(options, campaign_id=nil, month=nil, year=nil, page=1, perpage=6)
|
134
158
|
request = {
|
135
159
|
'campaign_id' => campaign_id,
|
136
160
|
'month' => month,
|
@@ -144,8 +168,8 @@ class TwoPerformant
|
|
144
168
|
self.hook("/commissions/search.xml", "commission", request, 'GET')
|
145
169
|
end
|
146
170
|
|
147
|
-
# Merchants: List commissions on campaigns. Month: 01 to 12; Year: 20xx.
|
148
|
-
def commissions_listformerchant(campaign_id, month, year)
|
171
|
+
# Merchants: List commissions on campaigns. Month: 01 to 12; Year: 20xx.
|
172
|
+
def commissions_listformerchant(campaign_id, month, year)
|
149
173
|
request = {
|
150
174
|
'campaign_id' => campaign_id,
|
151
175
|
'month' => month,
|
@@ -155,8 +179,8 @@ class TwoPerformant
|
|
155
179
|
self.hook("/commissions/listformerchant.xml", "campaign", request, 'GET')
|
156
180
|
end
|
157
181
|
|
158
|
-
# Affiliates: List commissions on campaigns. Month: 01 to 12; Year: 20xx.
|
159
|
-
def commissions_listforaffiliate(campaign_id, month, year)
|
182
|
+
# Affiliates: List commissions on campaigns. Month: 01 to 12; Year: 20xx.
|
183
|
+
def commissions_listforaffiliate(campaign_id, month, year)
|
160
184
|
request = {
|
161
185
|
'campaign_id' => campaign_id,
|
162
186
|
'month' => month,
|
@@ -166,13 +190,13 @@ class TwoPerformant
|
|
166
190
|
self.hook("/commissions/listforaffiliate.xml", "commission", request, 'GET')
|
167
191
|
end
|
168
192
|
|
169
|
-
|
170
|
-
def commission_show(commission_id)
|
193
|
+
# Merchant Campaign Owner or Affiliate Commission Owner: Show information about a commission
|
194
|
+
def commission_show(commission_id)
|
171
195
|
self.hook("/commissions/#{commission_id}.xml", "commission")
|
172
196
|
end
|
173
197
|
|
174
|
-
# Merchant: Update a commission
|
175
|
-
def commission_update(commission_id, commission)
|
198
|
+
# Merchant: Update a commission
|
199
|
+
def commission_update(commission_id, commission)
|
176
200
|
request = {
|
177
201
|
'commission' => commission
|
178
202
|
}
|
@@ -180,11 +204,11 @@ class TwoPerformant
|
|
180
204
|
end
|
181
205
|
|
182
206
|
# =======
|
183
|
-
# Sites
|
207
|
+
# Sites
|
184
208
|
# =======
|
185
209
|
|
186
|
-
# List sites. Displays the first 6 entries by default.
|
187
|
-
def sites_list(category_id=nil, page=1, perpage=6)
|
210
|
+
# List sites. Displays the first 6 entries by default.
|
211
|
+
def sites_list(category_id=nil, page=1, perpage=6)
|
188
212
|
request = {
|
189
213
|
'category_id' => category_id,
|
190
214
|
'page' => page,
|
@@ -194,13 +218,13 @@ class TwoPerformant
|
|
194
218
|
self.hook("/sites.xml", "site", request)
|
195
219
|
end
|
196
220
|
|
197
|
-
# Display information about a site
|
198
|
-
def site_show(site_id)
|
221
|
+
# Display information about a site
|
222
|
+
def site_show(site_id)
|
199
223
|
self.hook("/sites/#{site_id}.xml", "site")
|
200
224
|
end
|
201
225
|
|
202
|
-
# Search for sites
|
203
|
-
def sites_search(search, page=1, perpage=6)
|
226
|
+
# Search for sites
|
227
|
+
def sites_search(search, page=1, perpage=6)
|
204
228
|
request = {
|
205
229
|
'page' => page,
|
206
230
|
'perpage' => perpage,
|
@@ -210,13 +234,13 @@ class TwoPerformant
|
|
210
234
|
self.hook("/sites/search.xml", "site", request, 'GET')
|
211
235
|
end
|
212
236
|
|
213
|
-
# Affiliates: List all sites created by the logged in user
|
214
|
-
def sites_listforowner
|
237
|
+
# Affiliates: List all sites created by the logged in user
|
238
|
+
def sites_listforowner
|
215
239
|
self.hook("/sites/listforowner.xml", "site")
|
216
240
|
end
|
217
241
|
|
218
|
-
# Affiliates: Update a site
|
219
|
-
def site_update(site_id, site)
|
242
|
+
# Affiliates: Update a site
|
243
|
+
def site_update(site_id, site)
|
220
244
|
request = {
|
221
245
|
'site' => site
|
222
246
|
}
|
@@ -224,17 +248,17 @@ class TwoPerformant
|
|
224
248
|
end
|
225
249
|
|
226
250
|
|
227
|
-
# Affiliates: Destroy a site
|
228
|
-
def site_destroy(site_id)
|
251
|
+
# Affiliates: Destroy a site
|
252
|
+
def site_destroy(site_id)
|
229
253
|
self.hook("/sites/#{site_id}.xml", "site", request, 'DELETE')
|
230
254
|
end
|
231
255
|
|
232
256
|
# ============
|
233
|
-
# Text Links
|
257
|
+
# Text Links
|
234
258
|
# ============
|
235
259
|
|
236
|
-
# List text links from a campaign. Displays the first 6 entries by default.
|
237
|
-
def txtlinks_list(campaign_id, page=1, perpage=6)
|
260
|
+
# List text links from a campaign. Displays the first 6 entries by default.
|
261
|
+
def txtlinks_list(campaign_id, page=1, perpage=6)
|
238
262
|
request = {
|
239
263
|
'page' => page,
|
240
264
|
'perpage' => perpage
|
@@ -243,13 +267,13 @@ class TwoPerformant
|
|
243
267
|
self.hook("/campaigns/#{campaign_id}/txtlinks.xml", "txtlink", request, 'GET')
|
244
268
|
end
|
245
269
|
|
246
|
-
# Display information about a text link
|
247
|
-
def txtlink_show(campaign_id, txtlink_id)
|
270
|
+
# Display information about a text link
|
271
|
+
def txtlink_show(campaign_id, txtlink_id)
|
248
272
|
self.hook("/campaigns/#{campaign_id}/txtlinks/#{txtlink_id}.xml", "txtlink")
|
249
273
|
end
|
250
274
|
|
251
|
-
# Search for text links in a campaign
|
252
|
-
def txtlinks_search(campaign_id, search, page=1, perpage=6, sort='date')
|
275
|
+
# Search for text links in a campaign
|
276
|
+
def txtlinks_search(campaign_id, search, page=1, perpage=6, sort='date')
|
253
277
|
request = {
|
254
278
|
'page' => page,
|
255
279
|
'perpage' => perpage,
|
@@ -260,16 +284,16 @@ class TwoPerformant
|
|
260
284
|
self.hook("/campaigns/#{campaign_id}/txtlinks/search.xml", "txtlink", request, 'GET')
|
261
285
|
end
|
262
286
|
|
263
|
-
#
|
264
|
-
# Merchants: Create Text Link.
|
287
|
+
#
|
288
|
+
# Merchants: Create Text Link.
|
265
289
|
#
|
266
290
|
# Txtlink must be a hash of:
|
267
291
|
# { "title" => "title",
|
268
292
|
# "url" => "url",
|
269
293
|
# "help" => "help"
|
270
294
|
# }, where "help" is optional
|
271
|
-
|
272
|
-
def txtlink_create(campaign_id, txtlink)
|
295
|
+
|
296
|
+
def txtlink_create(campaign_id, txtlink)
|
273
297
|
request = {
|
274
298
|
'txtlink' => txtlink
|
275
299
|
}
|
@@ -277,25 +301,25 @@ class TwoPerformant
|
|
277
301
|
self.hook("/campaigns/#{campaign_id}/txtlinks.xml", "txtlink", request, 'POST')
|
278
302
|
end
|
279
303
|
|
280
|
-
# Merchants: Update a text link
|
281
|
-
def txtlink_update(campaign_id, txtlink_id, txtlink)
|
304
|
+
# Merchants: Update a text link
|
305
|
+
def txtlink_update(campaign_id, txtlink_id, txtlink)
|
282
306
|
request = {
|
283
307
|
'txtlink' => txtlink
|
284
308
|
}
|
285
309
|
self.hook("/campaigns/#{campaign_id}/txtlinks/#{txtlink_id}.xml", "txtlink", request, 'PUT')
|
286
310
|
end
|
287
311
|
|
288
|
-
# Merchants: Destroy a text link
|
289
|
-
def txtlink_destroy(campaign_id, txtlink_id)
|
312
|
+
# Merchants: Destroy a text link
|
313
|
+
def txtlink_destroy(campaign_id, txtlink_id)
|
290
314
|
self.hook("/campaigns/#{campaign_id}/txtlinks/#{txtlink_id}.xml", "txtlink", nil, 'DELETE')
|
291
315
|
end
|
292
316
|
|
293
317
|
# ============
|
294
|
-
# Text Ads
|
318
|
+
# Text Ads
|
295
319
|
# ============
|
296
320
|
|
297
|
-
# List text ads from a campaign. Displays the first 6 entries by default.
|
298
|
-
def txtads_list(campaign_id, page=1, perpage=6)
|
321
|
+
# List text ads from a campaign. Displays the first 6 entries by default.
|
322
|
+
def txtads_list(campaign_id, page=1, perpage=6)
|
299
323
|
request = {
|
300
324
|
'page' => page,
|
301
325
|
'perpage' => perpage
|
@@ -304,13 +328,13 @@ class TwoPerformant
|
|
304
328
|
self.hook("/campaigns/#{campaign_id}/txtads.xml", "txtad", request, 'GET')
|
305
329
|
end
|
306
330
|
|
307
|
-
# Display information about a text ad
|
308
|
-
def txtad_show(campaign_id, txtad_id)
|
331
|
+
# Display information about a text ad
|
332
|
+
def txtad_show(campaign_id, txtad_id)
|
309
333
|
self.hook("/campaigns/#{campaign_id}/txtads/#{txtad_id}.xml", "txtad")
|
310
334
|
end
|
311
335
|
|
312
|
-
# Search for text ads in a campaign
|
313
|
-
def txtads_search(campaign_id, search, page=1, perpage=6, sort='date')
|
336
|
+
# Search for text ads in a campaign
|
337
|
+
def txtads_search(campaign_id, search, page=1, perpage=6, sort='date')
|
314
338
|
request = {
|
315
339
|
'page' => page,
|
316
340
|
'perpage' => perpage,
|
@@ -321,25 +345,25 @@ class TwoPerformant
|
|
321
345
|
self.hook("/campaigns/#{campaign_id}/txtads/search.xml", "txtad", request, 'GET')
|
322
346
|
end
|
323
347
|
|
324
|
-
#
|
325
|
-
# Merchants: Create Text Ad.
|
348
|
+
#
|
349
|
+
# Merchants: Create Text Ad.
|
326
350
|
# Txtad must be a hash of:
|
327
351
|
# { "title" => "title",
|
328
352
|
# "content" => "content",
|
329
353
|
# "url" => "url",
|
330
354
|
# "help" => "help"
|
331
355
|
# }, where "help" is optional
|
332
|
-
def txtad_create(campaign_id, txtad)
|
356
|
+
def txtad_create(campaign_id, txtad)
|
333
357
|
request = {
|
334
358
|
'txtad' => txtad
|
335
359
|
}
|
336
|
-
|
360
|
+
|
337
361
|
self.hook("/campaigns/#{campaign_id}/txtads.xml", "txtad", request, 'POST')
|
338
362
|
end
|
339
363
|
|
340
364
|
|
341
|
-
# Merchants: Update a text ad
|
342
|
-
def txtad_update(campaign_id, txtad_id, txtad)
|
365
|
+
# Merchants: Update a text ad
|
366
|
+
def txtad_update(campaign_id, txtad_id, txtad)
|
343
367
|
request = {
|
344
368
|
'txtad' => txtad
|
345
369
|
}
|
@@ -347,18 +371,18 @@ class TwoPerformant
|
|
347
371
|
self.hook("/campaigns/#{campaign_id}/txtads/#{txtad_id}.xml", "txtad", request, 'PUT')
|
348
372
|
end
|
349
373
|
|
350
|
-
# Merchants: Destroy a text ad
|
351
|
-
def txtad_destroy(campaign_id, txtad_id)
|
374
|
+
# Merchants: Destroy a text ad
|
375
|
+
def txtad_destroy(campaign_id, txtad_id)
|
352
376
|
self.hook("/campaigns/#{campaign_id}/txtads/#{txtad_id}.xml", "txtad", nil, 'DELETE')
|
353
377
|
end
|
354
378
|
|
355
379
|
# =========
|
356
|
-
# Banners
|
380
|
+
# Banners
|
357
381
|
# =========
|
358
382
|
|
359
|
-
# List banners from a campaign. Displays the first 6 entries by default.
|
360
|
-
def banners_list(campaign_id, page=1, perpage=6)
|
361
|
-
request = {
|
383
|
+
# List banners from a campaign. Displays the first 6 entries by default.
|
384
|
+
def banners_list(campaign_id, page=1, perpage=6)
|
385
|
+
request = {
|
362
386
|
'page' => page,
|
363
387
|
'perpage' => perpage
|
364
388
|
}
|
@@ -366,13 +390,13 @@ class TwoPerformant
|
|
366
390
|
self.hook("/campaigns/#{campaign_id}/banners.xml", "banner", request, 'GET')
|
367
391
|
end
|
368
392
|
|
369
|
-
# Display information about a banner
|
370
|
-
def banner_show(campaign_id, banner_id)
|
393
|
+
# Display information about a banner
|
394
|
+
def banner_show(campaign_id, banner_id)
|
371
395
|
self.hook("/campaigns/#{campaign_id}/banners/#{banner_id}.xml", "banner")
|
372
396
|
end
|
373
397
|
|
374
|
-
# Search for banners in a campaign
|
375
|
-
def banners_search(campaign_id, search, page=1, perpage=6, sort='date')
|
398
|
+
# Search for banners in a campaign
|
399
|
+
def banners_search(campaign_id, search, page=1, perpage=6, sort='date')
|
376
400
|
request = {
|
377
401
|
'page' => page,
|
378
402
|
'perpage' => perpage,
|
@@ -383,8 +407,18 @@ class TwoPerformant
|
|
383
407
|
self.hook("/campaigns/#{campaign_id}/banners/search.xml", "banner", request, 'GET')
|
384
408
|
end
|
385
409
|
|
386
|
-
#
|
387
|
-
def
|
410
|
+
# Merchants: Create a banner
|
411
|
+
def banner_create(campaign_id, banner, banner_picture)
|
412
|
+
request = {
|
413
|
+
'banner' => banner,
|
414
|
+
'banner_picture' => banner_picture
|
415
|
+
}
|
416
|
+
|
417
|
+
self.hook("/campaigns/#{campaign_id}/banners.xml", "banner", request, 'POST')
|
418
|
+
end
|
419
|
+
|
420
|
+
# Merchants: Update a banner
|
421
|
+
def banner_update(campaign_id, banner_id, banner)
|
388
422
|
request = {
|
389
423
|
'banner' => banner
|
390
424
|
}
|
@@ -392,31 +426,31 @@ class TwoPerformant
|
|
392
426
|
self.hook("/campaigns/#{campaign_id}/banners/#{banner_id}.xml", "banner", request, 'PUT')
|
393
427
|
end
|
394
428
|
|
395
|
-
# Merchants: Destroy a banner
|
396
|
-
def banner_destroy(campaign_id, banner_id)
|
429
|
+
# Merchants: Destroy a banner
|
430
|
+
def banner_destroy(campaign_id, banner_id)
|
397
431
|
self.hook("/campaigns/#{campaign_id}/banners/#{banner_id}.xml", "banner", nil, 'DELETE')
|
398
432
|
end
|
399
433
|
|
400
434
|
# ===============
|
401
|
-
#
|
435
|
+
# Product Stores
|
402
436
|
# ===============
|
403
437
|
|
404
|
-
# List
|
405
|
-
def product_stores_list(campaign_id)
|
406
|
-
request = {
|
438
|
+
# List Product Stores from a Campaign
|
439
|
+
def product_stores_list(campaign_id)
|
440
|
+
request = {
|
407
441
|
'campaign_id' => campaign_id
|
408
442
|
}
|
409
443
|
|
410
444
|
self.hook("/product_stores.xml", "product-store", request)
|
411
445
|
end
|
412
446
|
|
413
|
-
# Show a
|
414
|
-
def product_store_show(product_store_id)
|
447
|
+
# Show a Product Store
|
448
|
+
def product_store_show(product_store_id)
|
415
449
|
self.hook("/product_stores/#{product_store_id}.xml", "product-store")
|
416
450
|
end
|
417
451
|
|
418
|
-
# Show Products from a
|
419
|
-
def product_store_showitems(product_store_id, category=nil, page=1, perpage=6, uniq_products=nil)
|
452
|
+
# Show Products from a Product Store
|
453
|
+
def product_store_showitems(product_store_id, category=nil, page=1, perpage=6, uniq_products=nil)
|
420
454
|
request = {
|
421
455
|
'category' => category,
|
422
456
|
'page' => page,
|
@@ -428,8 +462,8 @@ class TwoPerformant
|
|
428
462
|
self.hook("/product_stores/#{product_store_id}/showitems.xml", "product-store-data", request)
|
429
463
|
end
|
430
464
|
|
431
|
-
# Show a Product from a
|
432
|
-
def product_store_showitem(product_store_id, product_id)
|
465
|
+
# Show a Product from a Product Store
|
466
|
+
def product_store_showitem(product_store_id, product_id)
|
433
467
|
request = {
|
434
468
|
'product_id' => product_id
|
435
469
|
}
|
@@ -438,8 +472,8 @@ class TwoPerformant
|
|
438
472
|
end
|
439
473
|
|
440
474
|
|
441
|
-
# Search for Products in a
|
442
|
-
def product_store_products_search(campaign_id, search, product_store_id='all', category=nil, page=1, perpage=6, sort='date', uniq_products=false)
|
475
|
+
# Search for Products in a Product Store
|
476
|
+
def product_store_products_search(campaign_id, search, product_store_id='all', category=nil, page=1, perpage=6, sort='date', uniq_products=false)
|
443
477
|
request = {
|
444
478
|
'page' => page,
|
445
479
|
'perpage' => perpage,
|
@@ -456,8 +490,8 @@ class TwoPerformant
|
|
456
490
|
self.hook("/product_stores/#{product_store_id}/searchpr.xml", "product-store-data", request, 'GET')
|
457
491
|
end
|
458
492
|
|
459
|
-
# Merchants: Update a
|
460
|
-
def product_store_update(product_store_id, product_store)
|
493
|
+
# Merchants: Update a Product Store
|
494
|
+
def product_store_update(product_store_id, product_store)
|
461
495
|
request = {
|
462
496
|
'product_store' => product_store
|
463
497
|
}
|
@@ -465,26 +499,26 @@ class TwoPerformant
|
|
465
499
|
self.hook("/product_stores/#{product_store_id}.xml", "product-store", request, 'PUT')
|
466
500
|
end
|
467
501
|
|
468
|
-
# Merchants: Destroy a
|
469
|
-
def product_store_destroy(product_store_id)
|
502
|
+
# Merchants: Destroy a Product Store
|
503
|
+
def product_store_destroy(product_store_id)
|
470
504
|
self.hook("/product_stores/#{product_store_id}.xml", "product-store", nil, 'DELETE')
|
471
505
|
end
|
472
506
|
|
473
|
-
#
|
474
|
-
# Merchants: Create a
|
475
|
-
#
|
507
|
+
#
|
508
|
+
# Merchants: Create a Product Store Product.
|
509
|
+
# Product Store Product must be a hash of:
|
476
510
|
# { "title" => "title",
|
477
511
|
# "description" => "desc",
|
478
512
|
# "caption" => "caption",
|
479
|
-
# "price" => "price(integer in RON)",
|
513
|
+
# "price" => "price(integer in RON)",
|
480
514
|
# "promoted" => "promoted (0 or 1)",
|
481
515
|
# "category" => "category",
|
482
|
-
# "subcategory" => "subcategory",
|
483
|
-
# "url" => "url",
|
516
|
+
# "subcategory" => "subcategory",
|
517
|
+
# "url" => "url",
|
484
518
|
# "image_url" => "url to image location",
|
485
519
|
# "prid" => "product id"
|
486
520
|
# }
|
487
|
-
def product_store_createitem(product_store_id, product)
|
521
|
+
def product_store_createitem(product_store_id, product)
|
488
522
|
request = {
|
489
523
|
'product' => product
|
490
524
|
}
|
@@ -492,8 +526,8 @@ class TwoPerformant
|
|
492
526
|
self.hook("/product_stores/#{product_store_id}/createitem.xml", "product-store-data", request, 'POST')
|
493
527
|
end
|
494
528
|
|
495
|
-
# Merchants: Update a product
|
496
|
-
def product_store_updateitem(product_store_id, product_id, product)
|
529
|
+
# Merchants: Update a product
|
530
|
+
def product_store_updateitem(product_store_id, product_id, product)
|
497
531
|
request = {
|
498
532
|
'product' => product,
|
499
533
|
'product_id' => product_id
|
@@ -502,8 +536,8 @@ class TwoPerformant
|
|
502
536
|
self.hook("/product_stores/#{product_store_id}/updateitem.xml", "product-store-data", request, 'PUT')
|
503
537
|
end
|
504
538
|
|
505
|
-
# Merchants: Destroy a product
|
506
|
-
def product_store_destroyitem(product_store_id, product_id)
|
539
|
+
# Merchants: Destroy a product
|
540
|
+
def product_store_destroyitem(product_store_id, product_id)
|
507
541
|
request = {
|
508
542
|
'pr_id' => product_id
|
509
543
|
}
|
@@ -512,26 +546,38 @@ class TwoPerformant
|
|
512
546
|
end
|
513
547
|
|
514
548
|
# =====================
|
515
|
-
# Affiliate Ad Groups
|
549
|
+
# Affiliate Ad Groups
|
516
550
|
# =====================
|
517
|
-
|
518
|
-
# Affiliates: List Ad Groups
|
519
|
-
def ad_groups_list
|
551
|
+
|
552
|
+
# Affiliates: List Ad Groups
|
553
|
+
def ad_groups_list
|
520
554
|
self.hook("/ad_groups.xml", "ad_group", nil, "GET")
|
521
555
|
end
|
522
556
|
|
523
|
-
# Affiliates: Display information about an Ad Group
|
524
|
-
def ad_group_show(ad_group_id)
|
557
|
+
# Affiliates: Display information about an Ad Group
|
558
|
+
def ad_group_show(ad_group_id)
|
525
559
|
self.hook("/ad_groups/#{ad_group_id}.xml", "ad_group", nil, "GET")
|
526
560
|
end
|
527
561
|
|
528
|
-
#
|
529
|
-
def
|
562
|
+
# Affiliates: Add item to an Ad Group / Crate new Ad Group
|
563
|
+
def ad_group_createitem(group_id, tool_type, tool_id, new_group = nil)
|
564
|
+
request = {
|
565
|
+
'group_id' => group_id,
|
566
|
+
'new_group' => new_group,
|
567
|
+
'tool_type' => tool_type,
|
568
|
+
'tool_id' => tool_id
|
569
|
+
}
|
570
|
+
|
571
|
+
self.hook("/ad_groups/createitem.xml", "ad_group", request, 'POST')
|
572
|
+
end
|
573
|
+
|
574
|
+
# Affiliates: Destroy an Ad Group
|
575
|
+
def ad_group_destroy(ad_group_id)
|
530
576
|
self.hook("/ad_groups/#{ad_group_id}.xml", "ad_group", nil, "DELETE")
|
531
577
|
end
|
532
578
|
|
533
|
-
|
534
|
-
def ad_group_destroyitem(ad_group_id, tool_type, tool_id)
|
579
|
+
# Affiliates: Delete an Tool from a Group. tooltype is one of 'txtlink', 'txtad' or 'banner'.
|
580
|
+
def ad_group_destroyitem(ad_group_id, tool_type, tool_id)
|
535
581
|
request = {
|
536
582
|
'tool_type' => tool_type,
|
537
583
|
'tool_id' => tool_id
|
@@ -540,12 +586,45 @@ class TwoPerformant
|
|
540
586
|
self.hook("/ad_groups/#{ad_group_id}/destroyitem.xml", "ad_group", request, "DELETE")
|
541
587
|
end
|
542
588
|
|
589
|
+
#=================
|
590
|
+
# Affiliate Feeds
|
591
|
+
#=================
|
592
|
+
|
593
|
+
# Affiliates: List Feeds
|
594
|
+
def feeds_list()
|
595
|
+
self.hook("/feeds.xml", "feed", nil, "GET")
|
596
|
+
end
|
597
|
+
|
598
|
+
# Affiliates: Create a Feed
|
599
|
+
def feed_create(feed)
|
600
|
+
request = {
|
601
|
+
'feed' => feed
|
602
|
+
}
|
603
|
+
|
604
|
+
self.hook("/feeds.xml", "feed", request, 'POST')
|
605
|
+
end
|
606
|
+
|
607
|
+
# Affiliates: Update a Feed
|
608
|
+
def feed_update(feed_id, feed)
|
609
|
+
request = {
|
610
|
+
'feed' => feed
|
611
|
+
}
|
612
|
+
|
613
|
+
self.hook("/feeds/#{feed_id}.xml", "feed", request, 'PUT')
|
614
|
+
end
|
615
|
+
|
616
|
+
|
617
|
+
# Affiliates: Destroy a Feed
|
618
|
+
def feed_destroy(feed_id)
|
619
|
+
self.hook("/feeds/#{feed_id}.xml", "feed", nil, "DELETE")
|
620
|
+
end
|
621
|
+
|
543
622
|
# ==========
|
544
|
-
# Messages
|
623
|
+
# Messages
|
545
624
|
# ==========
|
546
625
|
|
547
|
-
# List received messages. Displays the first 6 entries by default.
|
548
|
-
def received_messages_list(page=1, perpage=6)
|
626
|
+
# List received messages. Displays the first 6 entries by default.
|
627
|
+
def received_messages_list(page=1, perpage=6)
|
549
628
|
request = {
|
550
629
|
'page' => page,
|
551
630
|
'perpage' => perpage
|
@@ -554,8 +633,8 @@ class TwoPerformant
|
|
554
633
|
self.hook("/messages.xml", "message", nil, "GET")
|
555
634
|
end
|
556
635
|
|
557
|
-
# List sent messages. Displays the first 6 entries by default.
|
558
|
-
def sent_messages_list(page=1, perpage=6)
|
636
|
+
# List sent messages. Displays the first 6 entries by default.
|
637
|
+
def sent_messages_list(page=1, perpage=6)
|
559
638
|
request = {
|
560
639
|
'page' => page,
|
561
640
|
'perpage' => perpage
|
@@ -564,20 +643,44 @@ class TwoPerformant
|
|
564
643
|
self.hook("/messages/sent.xml", "message", nil, "GET")
|
565
644
|
end
|
566
645
|
|
567
|
-
# Display information about a message
|
568
|
-
def message_show(message_id)
|
646
|
+
# Display information about a message
|
647
|
+
def message_show(message_id)
|
569
648
|
self.hook("/messages/#{message_id}.xml", "message")
|
570
649
|
end
|
571
650
|
|
572
|
-
# Destroy a message
|
573
|
-
def message_destroy(message_id)
|
651
|
+
# Destroy a message
|
652
|
+
def message_destroy(message_id)
|
574
653
|
self.hook("/messages/#{message_id}.xml", "message", nil, 'DELETE')
|
575
654
|
end
|
576
655
|
|
577
656
|
|
578
|
-
|
657
|
+
#=======
|
658
|
+
# Hooks
|
659
|
+
#=======
|
660
|
+
|
661
|
+
# List Hooks
|
662
|
+
def hooks_list(oauth_token_key = 'current')
|
663
|
+
hook("/oauth_clients/{$oauth_token_key}/hooks.xml", "hook", nil, 'GET');
|
664
|
+
end
|
665
|
+
|
666
|
+
|
667
|
+
# Create a Hook
|
668
|
+
def hook_create(hook, oauth_token_key = 'current')
|
669
|
+
request = {
|
670
|
+
'hook' => hook
|
671
|
+
}
|
672
|
+
|
673
|
+
hook("/oauth_clients/#{oauth_token_key}/hooks.xml", "hook", request, 'POST');
|
674
|
+
end
|
675
|
+
|
676
|
+
# Destroy a Hook
|
677
|
+
def hook_destroy(hook_id, oauth_token_key = 'current')
|
678
|
+
hook("/oauth_clients/#{oauth_token_key}/hooks/#{hook_id}.xml", "hook", nil, 'DELETE');
|
679
|
+
end
|
680
|
+
|
681
|
+
def hook(path, expected, send = nil, method = 'GET') #:nodoc:
|
579
682
|
params = normalize_params(send, method)
|
580
|
-
|
683
|
+
|
581
684
|
if self.oauth
|
582
685
|
result = self.oauth.send(method.downcase, "/#{version}#{path}", send, params)
|
583
686
|
else
|
@@ -586,11 +689,11 @@ class TwoPerformant
|
|
586
689
|
|
587
690
|
# scrap the container
|
588
691
|
if result.respond_to? :values
|
589
|
-
result.values.first
|
692
|
+
result.values.first
|
590
693
|
else
|
591
694
|
result
|
592
695
|
end
|
593
|
-
|
696
|
+
end
|
594
697
|
|
595
698
|
def normalize_params(params, method)
|
596
699
|
hash_to_xml(:request => params).to_s
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: 2Performant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- 2Performant
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-06-17 00:00:00 +03:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: httparty
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
version: "0"
|
@@ -33,9 +36,11 @@ dependencies:
|
|
33
36
|
name: shoulda
|
34
37
|
prerelease: false
|
35
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
36
40
|
requirements:
|
37
41
|
- - ">="
|
38
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
39
44
|
segments:
|
40
45
|
- 0
|
41
46
|
version: "0"
|
@@ -72,23 +77,27 @@ rdoc_options:
|
|
72
77
|
require_paths:
|
73
78
|
- lib
|
74
79
|
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
75
81
|
requirements:
|
76
82
|
- - ">="
|
77
83
|
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
78
85
|
segments:
|
79
86
|
- 0
|
80
87
|
version: "0"
|
81
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
82
90
|
requirements:
|
83
91
|
- - ">="
|
84
92
|
- !ruby/object:Gem::Version
|
93
|
+
hash: 3
|
85
94
|
segments:
|
86
95
|
- 0
|
87
96
|
version: "0"
|
88
97
|
requirements: []
|
89
98
|
|
90
99
|
rubyforge_project:
|
91
|
-
rubygems_version: 1.3.
|
100
|
+
rubygems_version: 1.3.7
|
92
101
|
signing_key:
|
93
102
|
specification_version: 3
|
94
103
|
summary: Library for the 2Performant API
|