neuron-client 0.3.0 → 0.4.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.
@@ -68,17 +68,25 @@ module Neuron
68
68
 
69
69
  STATISTIC_TYPES = %w(selections undeliveries impressions redirects clicks)
70
70
 
71
- def recent(statistic, by=nil)
71
+ def recent(statistic, parameters={})
72
72
  connected_to_admin!
73
+ by = (parameters[:by] || parameters['by']).to_s
74
+ minutes = parameters[:minutes] || parameters['minutes']
75
+ parameters = {}
76
+ parameters['by'] = by unless by.blank?
77
+ parameters['minutes'] = minutes.to_i if minutes.to_i > 0
73
78
  if validate?
74
79
  unless STATISTIC_TYPES.include?(statistic.to_s)
75
80
  raise "Unsupported statistic: #{statistic}"
76
81
  end
77
- unless by.nil? || by.to_s == 'zone'
82
+ unless by.blank? || by == 'zone'
78
83
  raise "Unsupported by: #{by}"
79
84
  end
85
+ unless minutes.blank? || minutes.to_i > 0
86
+ raise "Unsupported minutes: #{minutes}"
87
+ end
80
88
  end
81
- parameters = by.nil? ? {} : {'by' => by.to_s}
89
+
82
90
  connection.get("ads/#{id}/recent/#{statistic}", parameters)
83
91
  end
84
92
 
@@ -95,7 +95,12 @@ module Neuron
95
95
  # data : the serializable object that should match the given schema
96
96
  def validate_against_schema!(schema_name, data)
97
97
  if validate? && data.present?
98
- JSON::Validator.validate!(schema.send(schema_name), data)
98
+ begin
99
+ JSON::Validator.validate!(schema.send(schema_name), data)
100
+ rescue Exception => e
101
+ e.message << "\nSchema: #{schema.class.name}::SCHEMA.#{schema_name}\nData: #{data.inspect}"
102
+ raise e
103
+ end
99
104
  end
100
105
  end
101
106
 
@@ -11,7 +11,14 @@ module Neuron
11
11
  VAST = "Vast"
12
12
  RESPONSE_TYPES = [REDIRECT, IRIS, VAST]
13
13
 
14
- TEMPLATE_SLUGS = ["300x250", "300x600"]
14
+ IRIS_2_0 = '2_0'
15
+ IRIS_2_5 = '2_5'
16
+ IRIS_VERSIONS = [IRIS_2_0, IRIS_2_5]
17
+ TEMPLATE_SLUGS = ['300x250']
18
+ PLAYLIST_MODES = ['MAXI', 'MINI']
19
+ PLAYBACK_MODE_OPTIONS = [['Auto Play', 'AUTO'], ['Click To Play','CTP'], ['Rollover To Play', 'RTP']]
20
+ PLAYBACK_MODES = Hash[PLAYBACK_MODE_OPTIONS].values
21
+ OVERLAY_PROVIDERS = ['NAMI', 'PREDICTV']
15
22
 
16
23
  ATTRIBUTES = [
17
24
  :id,
@@ -19,12 +26,20 @@ module Neuron
19
26
  :name,
20
27
  :response_type, # string in RESPONSE_TYPES
21
28
  :template_slug, # nil, or string in TEMPLATE_SLUGS
22
- :mute, # nil, or "Yes" or "No"
23
- :autoplay, # nil, or "Yes" or "No"
24
29
  :channel, # nil, or slug
25
30
  :expand, # nil, or "Yes" or "No"
26
- :text_overlay, # nil, or "Yes" or "No"
27
- :nami_feed_url, # nil, or string URL
31
+ :iris_version, # nil, or string in IRIS_VERSIONS
32
+ # Iris 2.0
33
+ :mute, # nil, or "Yes" or "No"
34
+ :autoplay, # nil, or "Yes" or "No"
35
+ # Iris 2.5
36
+ :playlist_mode, # nil, or string in PLAYLIST_MODES
37
+ :volume, # nil, or 1-100s
38
+ :color, # nil, or string (hex color - '333333')
39
+ :playback_mode, # nil, or string in PLAYBACK_MODES
40
+ :overlay_provider, # nil, or string in OVERLAY_PROVIDERS
41
+ :overlay_feed_url, # nil, or string URL
42
+
28
43
  :created_at, # string, datetime in UTC
29
44
  :updated_at, # string, datetime in UTC
30
45
  ]
@@ -13,7 +13,7 @@ module Neuron
13
13
  def validate!(schema_name, data)
14
14
  JSON::Validator.validate!(schema.send(schema_name), data)
15
15
  rescue Exception => e
16
- puts "Data: #{data}"
16
+ e.message << "\nSchema: #{schema.class.name}::SCHEMA.#{schema_name}\nData: #{data.inspect}"
17
17
  raise e
18
18
  end
19
19
  end
@@ -17,7 +17,8 @@ module Neuron
17
17
  @@create ||=
18
18
  one_of(
19
19
  create_redirect,
20
- create_iris,
20
+ create_iris_2_0,
21
+ create_iris_2_5,
21
22
  create_vast
22
23
  )
23
24
  end
@@ -26,7 +27,8 @@ module Neuron
26
27
  @@show ||=
27
28
  one_of(
28
29
  show_redirect,
29
- show_iris,
30
+ show_iris_2_0,
31
+ show_iris_2_5,
30
32
  show_vast
31
33
  )
32
34
  end
@@ -35,7 +37,8 @@ module Neuron
35
37
  @@update ||=
36
38
  one_of(
37
39
  update_redirect,
38
- update_iris,
40
+ update_iris_2_0,
41
+ update_iris_2_5,
39
42
  update_vast
40
43
  )
41
44
  end
@@ -49,17 +52,33 @@ module Neuron
49
52
  }))
50
53
  end
51
54
 
52
- def create_iris
53
- @@create_iris ||=
55
+ def create_iris_2_0
56
+ @@create_iris_2_0 ||=
54
57
  object_type("zone", merged(CREATE_PROPERTIES,{
55
58
  :response_type => SCHEMA.choice_of([Neuron::Client::Zone::IRIS]),
59
+ :iris_version => SCHEMA.choice_of([Neuron::Client::Zone::IRIS_2_0], :required => false),
56
60
  :template_slug => SCHEMA.choice_of(Neuron::Client::Zone::TEMPLATE_SLUGS),
57
- :mute => SCHEMA.yes_no,
58
- :autoplay => SCHEMA.yes_no,
59
61
  :channel => SCHEMA.channel,
60
62
  :expand => SCHEMA.yes_no,
61
- :text_overlay => SCHEMA.yes_no,
62
- :nami_feed_url => SCHEMA.url(:type => %w(string null), :required => false)
63
+ :mute => SCHEMA.yes_no,
64
+ :autoplay => SCHEMA.yes_no
65
+ }))
66
+ end
67
+
68
+ def create_iris_2_5
69
+ @@create_iris_2_5 ||=
70
+ object_type("zone", merged(CREATE_PROPERTIES,{
71
+ :response_type => SCHEMA.choice_of([Neuron::Client::Zone::IRIS]),
72
+ :iris_version => SCHEMA.choice_of([Neuron::Client::Zone::IRIS_2_5]),
73
+ :template_slug => SCHEMA.choice_of(Neuron::Client::Zone::TEMPLATE_SLUGS),
74
+ :channel => SCHEMA.channel,
75
+ :expand => SCHEMA.yes_no,
76
+ :playlist_mode => SCHEMA.playlist_mode,
77
+ :volume => SCHEMA.volume,
78
+ :color => SCHEMA.color(:required => false),
79
+ :playback_mode => SCHEMA.playback_mode,
80
+ :overlay_provider => SCHEMA.overlay_provider(:required => false),
81
+ :overlay_feed_url => SCHEMA.url(:type => %w(null string), :required => false)
63
82
  }))
64
83
  end
65
84
 
@@ -77,17 +96,33 @@ module Neuron
77
96
  }))
78
97
  end
79
98
 
80
- def show_iris
81
- @@show_iris ||=
99
+ def show_iris_2_0
100
+ @@show_iris_2_0 ||=
82
101
  object_type("zone", merged(SHOW_PROPERTIES,{
83
102
  :response_type => SCHEMA.choice_of([Neuron::Client::Zone::IRIS]),
103
+ :iris_version => SCHEMA.choice_of([Neuron::Client::Zone::IRIS_2_0], :required => false),
84
104
  :template_slug => SCHEMA.choice_of(Neuron::Client::Zone::TEMPLATE_SLUGS),
85
- :mute => SCHEMA.yes_no,
86
- :autoplay => SCHEMA.yes_no,
87
105
  :channel => SCHEMA.channel,
88
106
  :expand => SCHEMA.yes_no,
89
- :text_overlay => SCHEMA.yes_no,
90
- :nami_feed_url => SCHEMA.url(:type => %w(string null))
107
+ :mute => SCHEMA.yes_no,
108
+ :autoplay => SCHEMA.yes_no
109
+ }))
110
+ end
111
+
112
+ def show_iris_2_5
113
+ @@show_iris_2_5 ||=
114
+ object_type("zone", merged(SHOW_PROPERTIES,{
115
+ :response_type => SCHEMA.choice_of([Neuron::Client::Zone::IRIS]),
116
+ :iris_version => SCHEMA.choice_of([Neuron::Client::Zone::IRIS_2_5]),
117
+ :template_slug => SCHEMA.choice_of(Neuron::Client::Zone::TEMPLATE_SLUGS),
118
+ :channel => SCHEMA.channel,
119
+ :expand => SCHEMA.yes_no,
120
+ :playlist_mode => SCHEMA.playlist_mode,
121
+ :volume => SCHEMA.volume,
122
+ :color => SCHEMA.color,
123
+ :playback_mode => SCHEMA.playback_mode,
124
+ :overlay_provider => SCHEMA.overlay_provider,
125
+ :overlay_feed_url => SCHEMA.url(:type => %w(null string))
91
126
  }))
92
127
  end
93
128
 
@@ -105,17 +140,33 @@ module Neuron
105
140
  }))
106
141
  end
107
142
 
108
- def update_iris
109
- @@update_iris ||=
143
+ def update_iris_2_0
144
+ @@update_iris_2_0 ||=
110
145
  object_type("zone", merged(UPDATE_PROPERTIES,{
111
146
  :response_type => SCHEMA.choice_of([Neuron::Client::Zone::IRIS], :required => false),
147
+ :iris_version => SCHEMA.choice_of([Neuron::Client::Zone::IRIS_2_0], :required => false),
112
148
  :template_slug => SCHEMA.choice_of(Neuron::Client::Zone::TEMPLATE_SLUGS, :required => false),
113
- :mute => SCHEMA.yes_no(:required => false),
114
- :autoplay => SCHEMA.yes_no(:required => false),
115
149
  :channel => SCHEMA.channel(:required => false),
116
150
  :expand => SCHEMA.yes_no(:required => false),
117
- :text_overlay => SCHEMA.yes_no(:required => false),
118
- :nami_feed_url => SCHEMA.url(:type => %w(string null), :required => false)
151
+ :mute => SCHEMA.yes_no(:required => false),
152
+ :autoplay => SCHEMA.yes_no(:required => false)
153
+ }))
154
+ end
155
+
156
+ def update_iris_2_5
157
+ @@update_iris_2_5 ||=
158
+ object_type("zone", merged(UPDATE_PROPERTIES,{
159
+ :response_type => SCHEMA.choice_of([Neuron::Client::Zone::IRIS], :required => false),
160
+ :iris_version => SCHEMA.choice_of([Neuron::Client::Zone::IRIS_2_5], :required => false),
161
+ :template_slug => SCHEMA.choice_of(Neuron::Client::Zone::TEMPLATE_SLUGS, :required => false),
162
+ :channel => SCHEMA.channel(:required => false),
163
+ :expand => SCHEMA.yes_no(:required => false),
164
+ :playlist_mode => SCHEMA.playlist_mode(:required => false),
165
+ :volume => SCHEMA.volume(:required => false),
166
+ :color => SCHEMA.color(:required => false),
167
+ :playback_mode => SCHEMA.playback_mode(:required => false),
168
+ :overlay_provider => SCHEMA.overlay_provider(:required => false),
169
+ :overlay_feed_url => SCHEMA.url(:type => %w(null string), :required => false)
119
170
  }))
120
171
  end
121
172
 
@@ -157,23 +208,63 @@ module Neuron
157
208
  }, overrides)
158
209
  end
159
210
 
211
+ def color(overrides={})
212
+ merged({
213
+ :type => %w(string null),
214
+ :format => "color",
215
+ :required => true
216
+ }, overrides)
217
+ end
218
+
219
+ def overlay_provider(overrides={})
220
+ choice_of(Neuron::Client::Zone::OVERLAY_PROVIDERS, overrides)
221
+ end
222
+
223
+ def playback_mode(overrides={})
224
+ choice_of(Neuron::Client::Zone::PLAYBACK_MODES, overrides)
225
+ end
226
+
227
+ def playlist_mode(overrides={})
228
+ choice_of(Neuron::Client::Zone::PLAYLIST_MODES, overrides)
229
+ end
230
+
231
+ def volume(overrides={})
232
+ merged({
233
+ :type => %w(integer string null),
234
+ :required => true,
235
+ :minimum => 0,
236
+ :exclusiveMinimum => false,
237
+ :maximum => 100,
238
+ :exclusiveMaximum => false,
239
+ :pattern => "^[0-9]\\d+$",
240
+ :maxLength => 3
241
+ }, overrides)
242
+ end
243
+
160
244
  # --------------------
161
245
 
162
246
  private
163
247
 
164
-
165
248
  CREATE_PROPERTIES =
166
249
  {
167
250
  :name => SCHEMA.nullable_string(:required => false),
168
251
  :ad_links => SCHEMA.ad_links(:required => false),
169
252
  :response_type => SCHEMA.choice_of([], :required => true),
253
+ :iris_version => SCHEMA.missing_or_null,
170
254
  :template_slug => SCHEMA.missing_or_null,
171
- :mute => SCHEMA.missing_or_null,
172
- :autoplay => SCHEMA.missing_or_null,
173
255
  :channel => SCHEMA.missing_or_null,
174
256
  :expand => SCHEMA.missing_or_null,
175
- :text_overlay => SCHEMA.missing_or_null,
176
- :nami_feed_url => SCHEMA.missing_or_null,
257
+ # Iris 2.0
258
+ :mute => SCHEMA.missing_or_null,
259
+ :autoplay => SCHEMA.missing_or_null,
260
+ # Iris 2.5
261
+ :playlist_mode => SCHEMA.missing_or_null,
262
+ :volume => SCHEMA.missing_or_null,
263
+ :color => SCHEMA.missing_or_null,
264
+ :playback_mode => SCHEMA.missing_or_null,
265
+ :overlay_provider => SCHEMA.missing_or_null,
266
+ :overlay_feed_url => SCHEMA.missing_or_null,
267
+
177
268
  }
178
269
 
179
270
  SHOW_PROPERTIES =
@@ -185,13 +276,20 @@ module Neuron
185
276
  :name => SCHEMA.nullable_string(:required => true),
186
277
  :ad_links => SCHEMA.ad_links(:required => true),
187
278
  :response_type => SCHEMA.choice_of([], :required => true),
279
+ :iris_version => SCHEMA.missing_or_null,
188
280
  :template_slug => SCHEMA.missing_or_null,
189
- :mute => SCHEMA.missing_or_null,
190
- :autoplay => SCHEMA.missing_or_null,
191
281
  :channel => SCHEMA.missing_or_null,
192
282
  :expand => SCHEMA.missing_or_null,
193
- :text_overlay => SCHEMA.missing_or_null,
194
- :nami_feed_url => SCHEMA.missing_or_null,
283
+ # Iris 2.0
284
+ :mute => SCHEMA.missing_or_null,
285
+ :autoplay => SCHEMA.missing_or_null,
286
+ # Iris 2.5
287
+ :playlist_mode => SCHEMA.missing_or_null,
288
+ :volume => SCHEMA.missing_or_null,
289
+ :color => SCHEMA.missing_or_null,
290
+ :playback_mode => SCHEMA.missing_or_null,
291
+ :overlay_provider => SCHEMA.missing_or_null,
292
+ :overlay_feed_url => SCHEMA.missing_or_null,
195
293
  }
196
294
 
197
295
  UPDATE_PROPERTIES =
@@ -201,13 +299,20 @@ module Neuron
201
299
  :name => SCHEMA.nullable_string(:required => false),
202
300
  :ad_links => SCHEMA.ad_links(:required => false),
203
301
  :response_type => SCHEMA.choice_of([], :required => false),
302
+ :iris_version => SCHEMA.missing_or_null,
204
303
  :template_slug => SCHEMA.missing_or_null,
205
- :mute => SCHEMA.missing_or_null,
206
- :autoplay => SCHEMA.missing_or_null,
207
304
  :channel => SCHEMA.missing_or_null,
208
305
  :expand => SCHEMA.missing_or_null,
209
- :text_overlay => SCHEMA.missing_or_null,
210
- :nami_feed_url => SCHEMA.missing_or_null,
306
+ # Iris 2.0
307
+ :mute => SCHEMA.missing_or_null,
308
+ :autoplay => SCHEMA.missing_or_null,
309
+ # Iris 2.5
310
+ :playlist_mode => SCHEMA.missing_or_null,
311
+ :volume => SCHEMA.missing_or_null,
312
+ :color => SCHEMA.missing_or_null,
313
+ :playback_mode => SCHEMA.missing_or_null,
314
+ :overlay_provider => SCHEMA.missing_or_null,
315
+ :overlay_feed_url => SCHEMA.missing_or_null,
211
316
  }
212
317
  end
213
318
  end
@@ -1,5 +1,5 @@
1
1
  module Neuron
2
2
  module Client
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -178,7 +178,7 @@ module Neuron
178
178
  ad = Ad.new(@minimal_attributes.merge('id' => 7))
179
179
  @connection.should_receive(:get).with('ads/7/recent/impressions', {'by' => 'zone'}).and_return('return_value')
180
180
 
181
- ad.recent('impressions', 'zone').should == 'return_value'
181
+ ad.recent('impressions', :by => 'zone').should == 'return_value'
182
182
  end
183
183
  end
184
184
 
@@ -4,16 +4,21 @@ module Neuron
4
4
  before(:each) do
5
5
  @datetime = "2011-11-11T11:11:11Z"
6
6
  @minimal_attributes = {
7
- 'ad_links' => nil,
8
- 'name' => nil,
9
- 'response_type' => nil,
10
- 'template_slug' => nil,
11
- 'mute' => nil,
12
- 'autoplay' => nil,
13
- 'channel' => nil,
14
- 'expand' => nil,
15
- 'text_overlay' => nil,
16
- 'nami_feed_url' => nil,
7
+ 'ad_links' => nil,
8
+ 'name' => nil,
9
+ 'response_type' => nil,
10
+ 'iris_version' => nil,
11
+ 'template_slug' => nil,
12
+ 'mute' => nil,
13
+ 'autoplay' => nil,
14
+ 'channel' => nil,
15
+ 'expand' => nil,
16
+ 'playlist_mode' => nil,
17
+ 'volume' => nil,
18
+ 'color' => nil,
19
+ 'playback_mode' => nil,
20
+ 'overlay_provider' => nil,
21
+ 'overlay_feed_url' => nil,
17
22
  }
18
23
  end
19
24
  context "when connected to the admin server" do
@@ -58,7 +58,7 @@ module Neuron
58
58
  }}, :against => Zone::SCHEMA.create)
59
59
  end
60
60
 
61
- it "should approve an example iris zone" do
61
+ it "should approve an example iris 2.0 zone" do
62
62
  validate({"zone" => {
63
63
  "name" => "example_iris_zone",
64
64
  "response_type" => "Iris",
@@ -67,9 +67,23 @@ module Neuron
67
67
  "mute" => "No",
68
68
  "autoplay" => "Yes",
69
69
  "channel" => "drivel",
70
+ "template_slug" => "300x250"
71
+ }}, :against => Zone::SCHEMA.create)
72
+ end
73
+
74
+ it "should approve an example iris 2.5 zone" do
75
+ validate({"zone" => {
76
+ "name" => "example_iris_zone",
77
+ "response_type" => "Iris",
78
+ "ad_links" => {},
79
+ "expand" => "Yes",
80
+ "channel" => "drivel",
70
81
  "template_slug" => "300x250",
71
- "text_overlay" => "Yes",
72
- "nami_feed_url" => "http://example.com/"
82
+ "playlist_mode" => "MAXI",
83
+ "playback_mode" => "AUTO",
84
+ "volume" => "10",
85
+ "color" => "#FF0000",
86
+ "iris_version" => "2_5"
73
87
  }}, :against => Zone::SCHEMA.create)
74
88
  end
75
89
 
@@ -118,7 +132,7 @@ module Neuron
118
132
  }}, :against => Zone::SCHEMA.show)
119
133
  end
120
134
 
121
- it "should approve an example iris zone" do
135
+ it "should approve an example iris 2.0 zone" do
122
136
  validate({"zone" => {
123
137
  "name" => "example_iris_zone",
124
138
  "response_type" => "Iris",
@@ -128,8 +142,27 @@ module Neuron
128
142
  "autoplay" => "Yes",
129
143
  "channel" => "drivel",
130
144
  "template_slug" => "300x250",
131
- "text_overlay" => "No",
132
- "nami_feed_url" => nil,
145
+ "created_at" => @datetime,
146
+ "updated_at" => @datetime,
147
+ "id" => "abc123"
148
+ }}, :against => Zone::SCHEMA.show)
149
+ end
150
+
151
+ it "should approve an example iris 2.5 zone" do
152
+ validate({"zone" => {
153
+ "name" => "example_iris_zone",
154
+ "response_type" => "Iris",
155
+ "ad_links" => {},
156
+ "expand" => "Yes",
157
+ "channel" => "drivel",
158
+ "template_slug" => "300x250",
159
+ "playlist_mode" => "MAXI",
160
+ "playback_mode" => "AUTO",
161
+ "volume" => "10",
162
+ "color" => "#FF0000",
163
+ "overlay_provider" => "NAMI",
164
+ "overlay_feed_url" => "http://example.com/",
165
+ "iris_version" => "2_5",
133
166
  "created_at" => @datetime,
134
167
  "updated_at" => @datetime,
135
168
  "id" => "abc123"
@@ -188,7 +221,7 @@ module Neuron
188
221
  }}, :against => Zone::SCHEMA.update)
189
222
  end
190
223
 
191
- it "should approve an example iris zone" do
224
+ it "should approve an example iris 2.0 zone" do
192
225
  validate({"zone" => {
193
226
  "name" => "example_iris_zone",
194
227
  "response_type" => "Iris",
@@ -197,13 +230,30 @@ module Neuron
197
230
  "mute" => "No",
198
231
  "autoplay" => "Yes",
199
232
  "channel" => "drivel",
200
- "text_overlay" => "No",
201
- "nami_feed_url" => nil,
202
233
  "template_slug" => "300x250",
203
234
  "id" => "abc123"
204
235
  }}, :against => Zone::SCHEMA.update)
205
236
  end
206
237
 
238
+ it "should approve an example iris 2.5 zone" do
239
+ validate({"zone" => {
240
+ "name" => "example_iris_zone",
241
+ "response_type" => "Iris",
242
+ "ad_links" => {},
243
+ "expand" => "Yes",
244
+ "channel" => "drivel",
245
+ "template_slug" => "300x250",
246
+ "playlist_mode" => "MAXI",
247
+ "playback_mode" => "AUTO",
248
+ "volume" => "10",
249
+ "color" => "#FF0000",
250
+ "overlay_provider" => "NAMI",
251
+ "overlay_feed_url" => "http://example.com/",
252
+ "iris_version" => "2_5",
253
+ "id" => "abc123"
254
+ }}, :against => Zone::SCHEMA.update)
255
+ end
256
+
207
257
  it "should approve an example vast zone" do
208
258
  validate({"zone" => {
209
259
  "name" => "example vast zone",
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neuron-client
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 0.3.0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - RMM Online
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-11 00:00:00 Z
18
+ date: 2012-01-31 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rest-client