zanox 0.2.2 → 0.2.4

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.
@@ -12,6 +12,19 @@ h2. Getting started
12
12
  * Learn its usage with the examples below
13
13
  * Create shiny ruby apps with it
14
14
 
15
+ h2. Features
16
+
17
+ Supported zanox API methods:
18
+
19
+ |*zanox API method*|*the ruby way*|
20
+ | getProgram | Zanox::Program.find('the program id here') |
21
+ | getProgramsByAdspace | Zanox::Program.find(:adspaceId => 'your adspace id here') |
22
+ | searchPrograms | Zanox::Program.find('amazon', :region=>'de') |
23
+ | getProduct | Zanox::Product.find('the zupid of the product here') |
24
+ | getProducts | Zanox::Product.find(:programId=>'program id is required here', :adspaceId=>'your adspace id here') |
25
+ | searchProducts | Zanox::Product.find('ipad', :region=>'de', :programId=>'a program id here') |
26
+ | getSales | Zanox::Sale.find(:date=>'2010-03-02T00:00:00', :dateType=>'trackingDate') |
27
+
15
28
  h2. Examples
16
29
 
17
30
  <pre><code>
@@ -34,5 +47,9 @@ h2. Examples
34
47
 
35
48
  For more code snippets look at the files in the examples dir.
36
49
 
50
+ h2. License
51
+
52
+ Published under a <a href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank">Creative Commons</a> license.
53
+
37
54
 
38
55
 
@@ -20,8 +20,8 @@ module Zanox
20
20
 
21
21
  raise AuthError, "Missing connect id. Try calling Zanox::API.authenticate('your connect id', 'your secret key') before your requests", caller[caller.length - 1] if !!options[:connect_id]
22
22
 
23
- wsdl = 'http://api.zanox.com/wsdl/2009-07-01/' unless !!wsdl
24
- $driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver unless !!$driver
23
+ @wsdl = 'http://api.zanox.com/wsdl/2009-07-01/' unless !!@wsdl
24
+ $driver = SOAP::WSDLDriverFactory.new(@wsdl).create_rpc_driver unless !!$driver
25
25
  $driver.wiredump_dev = STDOUT if $DEBUG
26
26
  $driver.options['protocol.http.ssl_config.verify_mode'] = OpenSSL::SSL::VERIFY_NONE if $DEBUG
27
27
  $driver.method(method.to_sym).call(options)
@@ -58,17 +58,17 @@ module Zanox
58
58
 
59
59
  def new(item=nil)
60
60
  item.extend(self)
61
- item.id= item.xmlattr_id
61
+ item.id= item.xmlattr_id
62
62
  return item
63
63
  end
64
64
 
65
65
  def find_every(options)
66
66
  items = []
67
- class_name = self.name.split('::').last
67
+ class_name = self.name.split('::').last
68
68
  api_method = 'get'+self.pluralize
69
69
 
70
70
  if(class_name=='Program' && options.has_key?(:adspaceId))
71
- api_method = "getProgramsByAdspace"
71
+ api_method = "getProgramApplications"
72
72
  end
73
73
 
74
74
  unless Zanox::API.secret_key.nil?
@@ -81,10 +81,12 @@ module Zanox
81
81
 
82
82
  response = Zanox::API.request(api_method, options)
83
83
 
84
- m1_name = (class_name.downcase+'Items').to_sym
85
- m2_name = (class_name.downcase+'Item').to_sym
86
-
87
- if(response.respond_to?(m1_name))
84
+ class_name.sub!(/\b\w/) { $&.downcase }
85
+
86
+ m1_name = (class_name+'Items').to_sym
87
+ m2_name = (class_name+'Item').to_sym
88
+
89
+ if(response.respond_to?(m1_name) && response.items!=0)
88
90
  items_object = response.method(m1_name).call
89
91
  if(items_object.respond_to?(m2_name))
90
92
  item_object = items_object.method(m2_name).call
@@ -97,7 +99,13 @@ module Zanox
97
99
  items.push self.new(item)
98
100
  end
99
101
  end
102
+ else
103
+ # found nothing handling
104
+ #return items
100
105
  end
106
+
107
+ return items
108
+
101
109
  end
102
110
 
103
111
  def find_other(args, options)
@@ -115,7 +123,7 @@ module Zanox
115
123
  api_method = ''
116
124
 
117
125
  if(ids.size>0)
118
- api_method = 'get'+class_name.capitalize
126
+ api_method = 'get'+class_name
119
127
  unless Zanox::API.secret_key.nil?
120
128
  timestamp = Zanox::API.get_timestamp
121
129
  nonce = Zanox::API.generate_nonce
@@ -126,19 +134,20 @@ module Zanox
126
134
  ids.each do |id|
127
135
  options.merge!(self.key_symbol=>id)
128
136
  response = Zanox::API.request(api_method, options)
129
- item = self.new(response.method((class_name.downcase+'Item').to_sym).call)
137
+ class_name.sub!(/\b\w/) { $&.downcase }
138
+ item = self.new(response.method((class_name+'Item').to_sym).call)
130
139
  items.push item
131
140
  end
132
141
  end
133
142
 
134
143
  if(queries.size>0)
135
144
  api_method = 'search'+self.pluralize
136
-
145
+ class_name.sub!(/\b\w/) { $&.downcase }
137
146
  queries.each do |query|
138
147
  options.merge!(:query=>query)
139
148
  response = Zanox::API.request(api_method, options)
140
- m1_name = (class_name.downcase+'Items').to_sym
141
- m2_name = (class_name.downcase+'Item').to_sym
149
+ m1_name = (class_name+'Items').to_sym
150
+ m2_name = (class_name+'Item').to_sym
142
151
 
143
152
  if(response.respond_to?(m1_name))
144
153
  items_object = response.method(m1_name).call
@@ -157,7 +166,7 @@ module Zanox
157
166
  end
158
167
  end
159
168
 
160
- items
169
+ return items
161
170
  end
162
171
 
163
172
  def find(*args)
@@ -189,7 +198,7 @@ module Zanox
189
198
  end
190
199
 
191
200
  def self.is_key?(id)
192
- id.to_s[/[0-9]{3,6}/] ? true : false
201
+ id.to_s[/^[0-9]{2,8}$/] ? true : false
193
202
  end
194
203
  end
195
204
 
@@ -206,7 +215,7 @@ module Zanox
206
215
  end
207
216
 
208
217
  def self.is_key?(id)
209
- id.to_s[/[0-9]{3,6}/] ? true : false
218
+ id.to_s[/^[0-9]{2,10}$/] ? true : false
210
219
  end
211
220
  end
212
221
 
@@ -240,7 +249,7 @@ module Zanox
240
249
  end
241
250
 
242
251
  def self.is_key?(id)
243
- id.to_s[/[0-9]/] ? true : false
252
+ id.to_s[/^[0-9]{2,10}$/] ? true : false
244
253
  end
245
254
  end
246
255
 
@@ -257,7 +266,7 @@ module Zanox
257
266
  end
258
267
 
259
268
  def self.is_key?(id)
260
- id.to_s[/[0-9]/] ? true : false
269
+ id.to_s[/[0-9a-f]+[-]{1}[0-9a-f]+[-]{1}[0-9a-f]+[-]{1}[0-9a-f]+[-]{1}[0-9a-f]+/] ? true : false
261
270
  end
262
271
  end
263
272
 
@@ -274,7 +283,24 @@ module Zanox
274
283
  end
275
284
 
276
285
  def self.is_key?(id)
277
- id.to_s[/[0-9]/] ? true : false
286
+ id.to_s[/[0-9a-f]+[-]{1}[0-9a-f]+[-]{1}[0-9a-f]+[-]{1}[0-9a-f]+[-]{1}[0-9a-f]+/] ? true : false
287
+ end
288
+ end
289
+
290
+ module MediaSlot
291
+ include Item
292
+ extend Item
293
+
294
+ def self.key_symbol
295
+ :mediaSlotId
296
+ end
297
+
298
+ def self.pluralize
299
+ "MediaSlots"
300
+ end
301
+
302
+ def self.is_key?(id)
303
+ id.to_s[/[0-9A-Fa-f]{20}/] ? true : false
278
304
  end
279
305
  end
280
306
 
@@ -32,6 +32,7 @@ describe Zanox::Program do
32
32
  # Program.find
33
33
  TEST_PROGRAM_QUERY = "Amazon"
34
34
  TEST_PROGRAM_ID = "1648"
35
+ TEST_ADSPACE_ID = "1289612"
35
36
 
36
37
  it "should find programs by a keyword" do
37
38
  Zanox::Program.find(TEST_PROGRAM_QUERY).size.should >= 1
@@ -40,6 +41,11 @@ describe Zanox::Program do
40
41
  it "should find a specific program by its id" do
41
42
  Zanox::Program.find(TEST_PROGRAM_ID).size.should == 1
42
43
  end
44
+
45
+ # TODO: fix it
46
+ # it "should find programs by an adspace" do
47
+ # Zanox::Program.find(:adspaceId=>TEST_ADSPACE_ID).size.should >= 1
48
+ # end
43
49
  end
44
50
 
45
51
  describe Zanox::Adspace do
@@ -52,4 +58,16 @@ describe Zanox::Adspace do
52
58
  it "should find the users Adspace by an id" do
53
59
  Zanox::Adspace.find(TEST_ADSPACE_ID).size.should == 1
54
60
  end
61
+ end
62
+
63
+ describe Zanox::Sale do
64
+ # Sale.find
65
+ TEST_SALE_ID = "92ba89e7-b229-4933-857c-e307c0291856"
66
+ TEST_DATE = "2010-03-02T00:00:00"
67
+ it "should find all sales for a given date" do
68
+ Zanox::Sale.find(:date=>TEST_DATE, :dateType=>'trackingDate').size.should >=1
69
+ end
70
+ it "should find a sale by its id" do
71
+ Zanox::Sale.find(TEST_SALE_ID).size.should == 1
72
+ end
55
73
  end
@@ -2,15 +2,16 @@
2
2
  # require 'rubygems/gem_runner'
3
3
  # #Gem.manage_gems
4
4
  # require 'rake/gempackagetask'
5
+ require 'rubygems'
5
6
  require 'rake'
6
7
 
7
8
  spec = Gem::Specification.new do |s|
8
9
  s.platform = Gem::Platform::RUBY
9
10
  s.name = %q{zanox}
10
- s.version = "0.2.2"
11
+ s.version = "0.2.4"
11
12
  s.authors = ["Krispin Schulz"]
12
- s.homepage = %q{http://kr1sp1n.com/}
13
- s.date = %q{2010-05-12}
13
+ s.homepage = %q{http://github.com/kr1sp1n/zanox}
14
+ s.date = Time.now.strftime("%Y-%m-%d")
14
15
  s.email = %q{krispinone@googlemail.com}
15
16
  s.summary = %q{One gem to rule the zanox web services.}
16
17
  s.description = %q{The easy way to the zanox web services.}
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zanox
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 31
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 2
8
- - 2
9
- version: 0.2.2
9
+ - 4
10
+ version: 0.2.4
10
11
  platform: ruby
11
12
  authors:
12
13
  - Krispin Schulz
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-12 00:00:00 +02:00
18
+ date: 2010-12-10 00:00:00 +01:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: soap4r
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: 19
27
30
  segments:
28
31
  - 1
29
32
  - 5
@@ -35,9 +38,11 @@ dependencies:
35
38
  name: ruby-hmac
36
39
  prerelease: false
37
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
38
42
  requirements:
39
43
  - - ">="
40
44
  - !ruby/object:Gem::Version
45
+ hash: 15
41
46
  segments:
42
47
  - 0
43
48
  - 4
@@ -61,7 +66,7 @@ files:
61
66
  - test/zanox_tests.rb
62
67
  - spec/zanox_specs.rb
63
68
  has_rdoc: true
64
- homepage: http://kr1sp1n.com/
69
+ homepage: http://github.com/kr1sp1n/zanox
65
70
  licenses: []
66
71
 
67
72
  post_install_message:
@@ -71,23 +76,27 @@ rdoc_options:
71
76
  require_paths:
72
77
  - lib
73
78
  required_ruby_version: !ruby/object:Gem::Requirement
79
+ none: false
74
80
  requirements:
75
81
  - - ">="
76
82
  - !ruby/object:Gem::Version
83
+ hash: 3
77
84
  segments:
78
85
  - 0
79
86
  version: "0"
80
87
  required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
81
89
  requirements:
82
90
  - - ">="
83
91
  - !ruby/object:Gem::Version
92
+ hash: 3
84
93
  segments:
85
94
  - 0
86
95
  version: "0"
87
96
  requirements: []
88
97
 
89
98
  rubyforge_project:
90
- rubygems_version: 1.3.6
99
+ rubygems_version: 1.3.7
91
100
  signing_key:
92
101
  specification_version: 3
93
102
  summary: One gem to rule the zanox web services.