zanox 0.1.0 → 0.2.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.
- data/README.textile +6 -0
- data/Rakefile +72 -0
- data/lib/zanox.rb +261 -23
- data/spec/zanox_specs.rb +55 -0
- data/test/zanox_tests.rb +12 -0
- data/zanox.gemspec +35 -0
- metadata +83 -48
- data/License.txt +0 -20
- data/README.txt +0 -82
- data/lib/zanox/zanox_base.rb +0 -48
- data/lib/zanox/zanox_json.rb +0 -19
- data/lib/zanox/zanox_soap.rb +0 -581
- data/lib/zanox/zanox_xml.rb +0 -552
data/lib/zanox/zanox_xml.rb
DELETED
@@ -1,552 +0,0 @@
|
|
1
|
-
require "net/http"
|
2
|
-
require "uri"
|
3
|
-
|
4
|
-
module Zanox
|
5
|
-
|
6
|
-
class ZanoxXml < ZanoxBase
|
7
|
-
|
8
|
-
def initialize(version = false)
|
9
|
-
@version = version
|
10
|
-
@rest_action = 'GET'
|
11
|
-
@url = 'http://api.zanox.com/xml'
|
12
|
-
@content_type = 'application/xml'
|
13
|
-
@raw_data_disabled = true
|
14
|
-
end
|
15
|
-
|
16
|
-
def get_adspaces
|
17
|
-
resource = ['adspaces']
|
18
|
-
|
19
|
-
@rest_action = 'GET'
|
20
|
-
enable_api_security
|
21
|
-
|
22
|
-
if result = send_request(resource)
|
23
|
-
return result
|
24
|
-
end
|
25
|
-
|
26
|
-
return false
|
27
|
-
end
|
28
|
-
|
29
|
-
def get_adspace(adspace_id)
|
30
|
-
resource = ['adspaces', 'adspace', adspace_id.to_s]
|
31
|
-
|
32
|
-
@rest_action = 'GET'
|
33
|
-
enable_api_security
|
34
|
-
|
35
|
-
if result = send_request(resource)
|
36
|
-
return result
|
37
|
-
end
|
38
|
-
|
39
|
-
return false
|
40
|
-
end
|
41
|
-
|
42
|
-
# def create_adspace(adspace_item, lang = 'en')#TODO test
|
43
|
-
# resource = ['adspaces', 'adspace']
|
44
|
-
#
|
45
|
-
# @rest_action = 'POST'
|
46
|
-
# enable_api_security
|
47
|
-
#
|
48
|
-
# body = serialize('adspaceItem', adspace_item, lang);
|
49
|
-
#
|
50
|
-
# if send_request(resource, false, body)
|
51
|
-
# return true
|
52
|
-
# end
|
53
|
-
#
|
54
|
-
# return false
|
55
|
-
# end
|
56
|
-
|
57
|
-
# def update_adspace(adspace_id, adspace_item)#TODO test
|
58
|
-
# resource = ['adspaces', 'adspace', adspace_id.to_s]
|
59
|
-
#
|
60
|
-
# @rest_action = 'PUT'
|
61
|
-
# enable_api_security
|
62
|
-
#
|
63
|
-
# body = serialize('adspaceItem', adspace_item);
|
64
|
-
#
|
65
|
-
# if send_request(resource, false, body)
|
66
|
-
# return true
|
67
|
-
# end
|
68
|
-
#
|
69
|
-
# return false
|
70
|
-
# end
|
71
|
-
|
72
|
-
def delete_adspace(adspace_id)
|
73
|
-
resource = ['adspaces', 'adspace', adspace_id.to_s]
|
74
|
-
|
75
|
-
@rest_action = "DELETE"
|
76
|
-
enable_api_security
|
77
|
-
|
78
|
-
if send_request(resource)
|
79
|
-
return true
|
80
|
-
end
|
81
|
-
|
82
|
-
return false
|
83
|
-
end
|
84
|
-
|
85
|
-
def get_program(program_id)
|
86
|
-
resource = ['programs', 'program', program_id.to_s]
|
87
|
-
|
88
|
-
@rest_action = "GET"
|
89
|
-
disable_api_security
|
90
|
-
|
91
|
-
if result = send_request(resource)
|
92
|
-
return result
|
93
|
-
end
|
94
|
-
|
95
|
-
return false
|
96
|
-
end
|
97
|
-
|
98
|
-
def get_programs(category_id = false, page = 0, items = 10)
|
99
|
-
if category_id
|
100
|
-
resource = ['programs', 'category', category_id.to_s]
|
101
|
-
else
|
102
|
-
resource = ['programs']
|
103
|
-
end
|
104
|
-
|
105
|
-
query = {'page' => page, 'items' => items}
|
106
|
-
|
107
|
-
@rest_action = "GET"
|
108
|
-
disable_api_security
|
109
|
-
|
110
|
-
if result = send_request(resource, query)
|
111
|
-
return result
|
112
|
-
end
|
113
|
-
|
114
|
-
return false
|
115
|
-
end
|
116
|
-
|
117
|
-
def search_programs(q, page = 0, items = 10)
|
118
|
-
resource = ['programs']
|
119
|
-
query = {'q' => q, 'page' => page, 'items' => items}
|
120
|
-
|
121
|
-
@rest_action = 'GET'
|
122
|
-
disable_api_security
|
123
|
-
|
124
|
-
result = send_request(resource, query)
|
125
|
-
|
126
|
-
return result
|
127
|
-
end
|
128
|
-
|
129
|
-
def get_program_news
|
130
|
-
resource = ['programs', 'news']
|
131
|
-
|
132
|
-
@rest_action = 'GET'
|
133
|
-
disable_api_security
|
134
|
-
|
135
|
-
result = send_request(resource)
|
136
|
-
|
137
|
-
return result
|
138
|
-
end
|
139
|
-
|
140
|
-
def get_program_categories
|
141
|
-
resource = ['programs', 'categories']
|
142
|
-
|
143
|
-
@rest_action = 'GET'
|
144
|
-
disable_api_security
|
145
|
-
|
146
|
-
result = send_request(resource)
|
147
|
-
|
148
|
-
return result
|
149
|
-
end
|
150
|
-
|
151
|
-
def get_programs_by_adspace(adspace_id, page = 0, items = 10)
|
152
|
-
resource = ['programs', 'adspace', adspace_id.to_s]
|
153
|
-
query = {'page' => page, 'items' => items}
|
154
|
-
|
155
|
-
@rest_action = 'GET'
|
156
|
-
enable_api_security
|
157
|
-
|
158
|
-
result = send_request(resource, query)
|
159
|
-
|
160
|
-
return result
|
161
|
-
end
|
162
|
-
|
163
|
-
# def create_program_application(program_id, adspace_id)#TODO test
|
164
|
-
# resource = ['programs', 'program', program_id.to_s, 'adspace', adspace_id.to_s]
|
165
|
-
#
|
166
|
-
# @rest_action = 'POST'
|
167
|
-
# enable_api_security
|
168
|
-
#
|
169
|
-
# if send_request(resource, false, 'hallo')
|
170
|
-
# return true
|
171
|
-
# end
|
172
|
-
#
|
173
|
-
# return false
|
174
|
-
# end
|
175
|
-
|
176
|
-
def delete_program_application(program_id, adspace_id)#TODO test
|
177
|
-
resource = ['programs', 'program', program_id.to_s, 'adspace', adspace_id.to_s]
|
178
|
-
|
179
|
-
@rest_action = 'DELETE'
|
180
|
-
enable_api_security
|
181
|
-
|
182
|
-
if send_request(resource)
|
183
|
-
return true
|
184
|
-
end
|
185
|
-
|
186
|
-
return false
|
187
|
-
end
|
188
|
-
|
189
|
-
def get_product(zup_id)
|
190
|
-
resource = ['products', 'product', zup_id.to_s]
|
191
|
-
|
192
|
-
@rest_action = 'GET'
|
193
|
-
disable_api_security
|
194
|
-
|
195
|
-
if result = send_request(resource)
|
196
|
-
return result
|
197
|
-
end
|
198
|
-
|
199
|
-
return false
|
200
|
-
end
|
201
|
-
|
202
|
-
def get_products_by_program(program_id, filter = {}, page = 0, items = 10)
|
203
|
-
if !filter['adspace'].blank?
|
204
|
-
resource = ['products', 'program', program_id.to_s, 'adspace', filter['adspace']]
|
205
|
-
else
|
206
|
-
resource = ['products', 'program', program_id.to_s]
|
207
|
-
end
|
208
|
-
|
209
|
-
query = {'page' => page, 'items' => items}
|
210
|
-
|
211
|
-
if !filter['modified'].blank?
|
212
|
-
query['modified'] = filter['modified']
|
213
|
-
end
|
214
|
-
|
215
|
-
@rest_action = 'GET'
|
216
|
-
disable_api_security
|
217
|
-
|
218
|
-
if result = send_request(resource, query)
|
219
|
-
return result
|
220
|
-
end
|
221
|
-
|
222
|
-
return false
|
223
|
-
end
|
224
|
-
|
225
|
-
def search_products(q, filter = {}, page = 0, items = 10)
|
226
|
-
if !filter['adspace'].blank?
|
227
|
-
resource = ['products', 'adspace', filter['adspace']]
|
228
|
-
else
|
229
|
-
resource = ['products']
|
230
|
-
end
|
231
|
-
|
232
|
-
query = {'q' => q, 'page' => page, 'items' => items}
|
233
|
-
|
234
|
-
if !filter['region'].blank? && filter['region'].length == 2
|
235
|
-
query['region'] = filter['region']
|
236
|
-
end
|
237
|
-
|
238
|
-
if !filter['minprice'].blank?
|
239
|
-
query['minprice'] = filter['minprice']
|
240
|
-
end
|
241
|
-
|
242
|
-
if !filter['maxprice'].blank?
|
243
|
-
query['maxprice'] = filter['maxprice']
|
244
|
-
end
|
245
|
-
|
246
|
-
if !filter['ip'].blank?
|
247
|
-
query['ip'] = filter['ip']
|
248
|
-
end
|
249
|
-
|
250
|
-
@rest_action = 'GET'
|
251
|
-
disable_api_security
|
252
|
-
|
253
|
-
if result = send_request(resource, query)
|
254
|
-
return result
|
255
|
-
end
|
256
|
-
|
257
|
-
return false
|
258
|
-
end
|
259
|
-
|
260
|
-
def get_admedium(admedium_id)
|
261
|
-
resource = ['admedia', 'admedium', admedium_id.to_s]
|
262
|
-
|
263
|
-
@rest_action = 'GET'
|
264
|
-
disable_api_security
|
265
|
-
|
266
|
-
if result = send_request(resource)
|
267
|
-
return result
|
268
|
-
end
|
269
|
-
|
270
|
-
return false
|
271
|
-
end
|
272
|
-
|
273
|
-
def get_admedia_by_program(program_id, filter = {}, page = 0, items = 10)
|
274
|
-
if !filter['category'].blank?
|
275
|
-
resource = ['admedia', 'program', program_id.to_s, 'category', filter['category']]
|
276
|
-
elsif !filter['type'].blank?
|
277
|
-
resource = ['admedia', 'program', program_id.to_s, 'type', filter['type']]
|
278
|
-
else
|
279
|
-
resource = ['admedia', 'program', program_id.to_s]
|
280
|
-
end
|
281
|
-
|
282
|
-
query = {'page' => page, 'items' => items}
|
283
|
-
|
284
|
-
@rest_action = 'GET'
|
285
|
-
disable_api_security
|
286
|
-
|
287
|
-
if result = send_request(resource, query)
|
288
|
-
return result
|
289
|
-
end
|
290
|
-
|
291
|
-
return false
|
292
|
-
end
|
293
|
-
|
294
|
-
def get_admedia_categories_by_program(program_id)
|
295
|
-
resource = ['admedia', 'program', program_id.to_s, 'categories']
|
296
|
-
|
297
|
-
@rest_action = 'GET'
|
298
|
-
disable_api_security
|
299
|
-
|
300
|
-
if result = send_request(resource)
|
301
|
-
return result
|
302
|
-
end
|
303
|
-
|
304
|
-
return false
|
305
|
-
end
|
306
|
-
|
307
|
-
def get_sales(filter = {}, page = 0, items = 10)
|
308
|
-
resource = ['reports', 'sales']
|
309
|
-
|
310
|
-
query = {'page' => page, 'items' => items}
|
311
|
-
|
312
|
-
if !filter['date'].blank?
|
313
|
-
query['date'] = filter['date']
|
314
|
-
end
|
315
|
-
|
316
|
-
if !filter['modifieddate'].blank?
|
317
|
-
query['modifieddate'] = filter['modifieddate']
|
318
|
-
end
|
319
|
-
|
320
|
-
if !filter['clickdate'].blank?
|
321
|
-
query['clickdate'] = filter['clickdate']
|
322
|
-
end
|
323
|
-
|
324
|
-
@rest_action = 'GET'
|
325
|
-
enable_api_security
|
326
|
-
|
327
|
-
if result = send_request(resource, query)
|
328
|
-
return result
|
329
|
-
end
|
330
|
-
|
331
|
-
return false
|
332
|
-
end
|
333
|
-
|
334
|
-
def get_leads(filter = {}, page = 0, items = 10)
|
335
|
-
resource = ['reports', 'leads']
|
336
|
-
|
337
|
-
query = {'page' => page, 'items' => items}
|
338
|
-
|
339
|
-
if !filter['date'].blank?
|
340
|
-
query['date'] = filter['date'];
|
341
|
-
end
|
342
|
-
|
343
|
-
if !filter['modifieddate'].blank?
|
344
|
-
query['modifieddate'] = filter['modifieddate']
|
345
|
-
end
|
346
|
-
|
347
|
-
if !filter['clickdate'].blank?
|
348
|
-
query['clickdate'] = filter['clickdate']
|
349
|
-
end
|
350
|
-
|
351
|
-
@rest_action = 'GET'
|
352
|
-
enable_api_security
|
353
|
-
|
354
|
-
if result = send_request(resource, query)
|
355
|
-
return result
|
356
|
-
end
|
357
|
-
|
358
|
-
return false
|
359
|
-
end
|
360
|
-
|
361
|
-
def get_payments(page = 0, items = 10)
|
362
|
-
resource = ['payments']
|
363
|
-
|
364
|
-
query = {'page' => page, 'items' => items}
|
365
|
-
|
366
|
-
@rest_action = 'GET'
|
367
|
-
enable_api_security
|
368
|
-
|
369
|
-
if result = send_request(resource, query)
|
370
|
-
return result
|
371
|
-
end
|
372
|
-
|
373
|
-
return false
|
374
|
-
end
|
375
|
-
|
376
|
-
def get_payment(payment_id)
|
377
|
-
resource = ['payments', 'payment', payment_id]
|
378
|
-
|
379
|
-
@rest_action = 'GET'
|
380
|
-
enable_api_security
|
381
|
-
|
382
|
-
if result = send_request(resource)
|
383
|
-
return result
|
384
|
-
end
|
385
|
-
|
386
|
-
return false
|
387
|
-
end
|
388
|
-
|
389
|
-
def get_balances
|
390
|
-
resource = ['payments', 'balances']
|
391
|
-
|
392
|
-
@rest_action = 'GET'
|
393
|
-
enable_api_security
|
394
|
-
|
395
|
-
if result = send_request(resource)
|
396
|
-
return result
|
397
|
-
end
|
398
|
-
|
399
|
-
return false
|
400
|
-
end
|
401
|
-
|
402
|
-
def get_balance(currency_code)
|
403
|
-
resource = ['payments', 'balances', 'balance', currency_code]
|
404
|
-
|
405
|
-
@rest_action = 'GET'
|
406
|
-
enable_api_security
|
407
|
-
|
408
|
-
if result = send_request(resource)
|
409
|
-
return result
|
410
|
-
end
|
411
|
-
|
412
|
-
return false
|
413
|
-
end
|
414
|
-
|
415
|
-
def get_accounts
|
416
|
-
resource = ['payments', 'accounts']
|
417
|
-
|
418
|
-
@rest_action = 'GET'
|
419
|
-
enable_api_security
|
420
|
-
|
421
|
-
if result = send_request(resource)
|
422
|
-
return result
|
423
|
-
end
|
424
|
-
|
425
|
-
return false
|
426
|
-
end
|
427
|
-
|
428
|
-
def get_account(account_id)
|
429
|
-
resource = ['payments', 'accounts', 'account', account_id.to_s]
|
430
|
-
|
431
|
-
@rest_action = 'GET'
|
432
|
-
enable_api_security
|
433
|
-
|
434
|
-
if result = send_request(resource)
|
435
|
-
return result
|
436
|
-
end
|
437
|
-
|
438
|
-
return false
|
439
|
-
end
|
440
|
-
|
441
|
-
def get_profile
|
442
|
-
resource = ['profiles']
|
443
|
-
|
444
|
-
@rest_action = 'GET'
|
445
|
-
enable_api_security
|
446
|
-
|
447
|
-
result = send_request(resource, false)
|
448
|
-
|
449
|
-
return result
|
450
|
-
end
|
451
|
-
|
452
|
-
# def update_profile(profile_item)#TODO test
|
453
|
-
# resource = ['profiles']
|
454
|
-
#
|
455
|
-
# @rest_action = 'PUT'
|
456
|
-
# enable_api_security
|
457
|
-
#
|
458
|
-
# body = serialize('profileItem', profile_item)
|
459
|
-
#
|
460
|
-
# if send_request(resource, false, profile_item)
|
461
|
-
# return true
|
462
|
-
# end
|
463
|
-
#
|
464
|
-
# return false
|
465
|
-
# end
|
466
|
-
|
467
|
-
def get_timestamp
|
468
|
-
timestamp = Time.now.gmtime
|
469
|
-
timestamp = timestamp.strftime("%a, %d %b %Y %H:%M:%S GMT")
|
470
|
-
timestamp.to_s
|
471
|
-
end
|
472
|
-
|
473
|
-
def enable_raw_data
|
474
|
-
@raw_data_disabled = true
|
475
|
-
end
|
476
|
-
|
477
|
-
def disable_raw_data
|
478
|
-
@raw_data_disabled = false
|
479
|
-
end
|
480
|
-
|
481
|
-
private
|
482
|
-
|
483
|
-
def send_request(resource, query = {}, body = false)
|
484
|
-
version = false
|
485
|
-
uri_path = "/" + resource.join("/")
|
486
|
-
timestamp = get_timestamp
|
487
|
-
|
488
|
-
if @api_security
|
489
|
-
shash = build_signature(uri_path, timestamp)
|
490
|
-
authorization = "ZXWS " + @application_id + ":" + shash
|
491
|
-
else
|
492
|
-
authorization = "ZXWS " + @application_id
|
493
|
-
end
|
494
|
-
|
495
|
-
if @version
|
496
|
-
version = "/" + @version
|
497
|
-
else
|
498
|
-
version = ""
|
499
|
-
end
|
500
|
-
|
501
|
-
request_url = @url + version + uri_path
|
502
|
-
|
503
|
-
url = URI.parse(request_url)
|
504
|
-
path = url.path
|
505
|
-
path = path + '?' + query.to_query if query.is_a?(Hash) && !query.empty?
|
506
|
-
|
507
|
-
case @rest_action
|
508
|
-
when 'GET'
|
509
|
-
req = Net::HTTP::Get.new(path)
|
510
|
-
when 'PUT'
|
511
|
-
req = Net::HTTP::Put.new(path)
|
512
|
-
when 'POST'
|
513
|
-
req = Net::HTTP::Post.new(path)
|
514
|
-
when 'DELETE'
|
515
|
-
req = Net::HTTP::Delete.new(path)
|
516
|
-
end
|
517
|
-
|
518
|
-
req.add_field("authorization", authorization)
|
519
|
-
req.add_field("date", timestamp)
|
520
|
-
req.add_field("user-agent", "zanox PHP API Client")
|
521
|
-
req.add_field("content-type" , @content_type)
|
522
|
-
req.add_field("host" , "api.zanox.com")
|
523
|
-
|
524
|
-
res = Net::HTTP.new(url.host, url.port).start do |http|
|
525
|
-
http.request(req)
|
526
|
-
end
|
527
|
-
|
528
|
-
if res.code == '200'
|
529
|
-
return res.body
|
530
|
-
end
|
531
|
-
|
532
|
-
@last_error_msg = res.message
|
533
|
-
|
534
|
-
return false
|
535
|
-
end
|
536
|
-
|
537
|
-
def build_signature(uri, timestamp)
|
538
|
-
sign = @rest_action + uri + timestamp
|
539
|
-
if ( hmac = get_hmac_signature(sign) )
|
540
|
-
return hmac
|
541
|
-
end
|
542
|
-
|
543
|
-
return false
|
544
|
-
end
|
545
|
-
|
546
|
-
# def serialize#TODO implement
|
547
|
-
#
|
548
|
-
# end
|
549
|
-
|
550
|
-
end
|
551
|
-
|
552
|
-
end
|