brainzz 0.0.15 → 0.0.16

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cfca768023db96bcf04d099f4298073dcfa40b54
4
- data.tar.gz: b0c14ae5ecfd6e20ee7dffa84fe1529811753cb2
3
+ metadata.gz: 436f5cc534dd86373de4739578b7f8558dda4557
4
+ data.tar.gz: 0ef21c5db8d8583d7310c1ef555dd23f45c6ea4f
5
5
  SHA512:
6
- metadata.gz: 7dad56f65140844c15f40ca1cca3b006fbcb0fb844c75769fe3061c5ed3ef3c636b4df849babb5f0b183db60bb590f21632e4e3d9619fd137bb9c56242551f8c
7
- data.tar.gz: 02c4a242776826bf517457abfc3b4c0702623c9aa6e85d3116f9e7269f972b614a0a158750c81672ce0e9f5d3a9baf08e5f18c1790c0867fbbc509fe24bee398
6
+ metadata.gz: 71fdb722ac1e459218af3a18cc085279698ab3b049df951aee6ae7a1af56fb9d97bc25245d1ed0c349fbebbdd8a740e1122f4d8269668c8b4cb057bc356fde66
7
+ data.tar.gz: 8eff3e9d78f0204c646108d48d980f4358882d9286897ba8dd174c30557702e8fe52ddf1af7d4fcdc154ba49d1100dd721debe393bfbee87a7e5d4aa260d372f
data/README.md CHANGED
@@ -28,34 +28,53 @@ when consuming this gem.
28
28
 
29
29
  Environment Variables
30
30
  ---------------------
31
+
32
+ ### Single Content Owner
33
+
31
34
  Brainzz requires the use of multiple environment variables:
32
- - BRAINZZ_GOOGLE_API_KEY
33
- - BRAINZZ_CLIENT_ID
34
- - BRAINZZ_CLIENT_SECRET
35
- - BRAINZZ_REFRESH_TOKEN
36
- - BRAINZZ_CONTENT_OWNER:
37
- - the Google account for the CMS that owns the YouTube channel data being sought
35
+ - `BRAINZZ_GOOGLE_API_KEY`
36
+ - `BRAINZZ_CLIENT_ID`
37
+ - `BRAINZZ_CLIENT_SECRET`
38
+ - `BRAINZZ_REFRESH_TOKEN`
39
+ - `BRAINZZ_CONTENT_OWNER`:
40
+ - the Google account for the CMS that owns the YouTube channel data.
38
41
 
39
42
  Place values in `config/dotenv/integration.env`.
40
43
 
41
44
 
42
- ### Attaining BRAINZZ_GOOGLE_API_KEY
45
+ ### Multiple Content Owners
46
+
47
+ The content owner must be passed in to the Brainzz method.
48
+
49
+ Use the environment variables above with the content owner
50
+ added to it in upper case.
51
+ Dashes also need to be remvoed.
52
+
53
+ For instance, if the content owner is `abc-1234-DEF`,
54
+ you would use the following variables:
55
+
56
+ - `BRAINZZ_CLIENT_ID_ABC1234DEF`
57
+ - `BRAINZZ_CLIENT_SECRET_ABC1234DEF`
58
+ - `BRAINZZ_REFRESH_TOKEN_ABC1234DEF`
59
+
60
+
61
+ ### Attaining `BRAINZZ_GOOGLE_API_KEY`
43
62
 
44
63
  Follow the instructions [here][atv-wiki-google-api-key]
45
64
  to find the required values.
46
65
 
47
66
 
48
- ### Attaining BRAINZZ_REFRESH_TOKEN
67
+ ### Attaining `BRAINZZ_REFRESH_TOKEN`
49
68
 
50
- An OAUTH refresh token for the BRAINZZ_CONTENT_OWNER Google account
51
- uses BRAINZZ_CLIENT_SECRET and BRAINZZ_CLIENT_SECRET
69
+ An OAUTH refresh token for the `BRAINZZ_CONTENT_OWNER` Google account
70
+ uses `BRAINZZ_CLIENT_SECRET` and `BRAINZZ_CLIENT_SECRET`
52
71
 
53
72
  `BRAINZZ_CLIENT_ID` and `BRAINZZ_CLIENT_SECRET`.
54
73
  - Go to the [Google OAuth Playground][google-oauth-playground]
55
- - Log in with the Google account for BRAINZZ_CONTENT_OWNER
74
+ - Log in with the Google account for `BRAINZZ_CONTENT_OWNER`
56
75
  - Click on the gear (upper-right)
57
76
  - Click check box to "Use your own OAuth credentials"
58
- - Fill in BRAINZZ_CLIENT_ID and BRAINZZ_CLIENT_SECRET
77
+ - Fill in `BRAINZZ_CLIENT_ID` and `BRAINZZ_CLIENT_SECRET`
59
78
  - In Step 1 (Select & Authorize APIs) scroll down to YouTube Analytics API v1
60
79
  - Click the last item "yt-analytics.readonly"
61
80
  - Click blue 'Authorize APIs' button
@@ -72,7 +91,7 @@ Every response from the public API is wrapped in a `Response` object
72
91
  that will always have the same interface regardless of request.
73
92
  The `Response#data` attribute will be an object specific to the data requested.
74
93
 
75
- ### channel_details_for
94
+ ### `channel_details_for`
76
95
 
77
96
  Accepts an array of channel ids.
78
97
  The maximum length of the array is determined by YouTube.
@@ -82,23 +101,23 @@ and channel objects as the values.
82
101
 
83
102
  #### Channel Attributes Accessible
84
103
 
85
- * id
86
- * title
87
- * published_at
88
- * description
89
- * uploads_playlist
90
- * likes_playlist
91
- * google_plus_id
92
- * view_count
93
- * comment_count
94
- * subscriber_count
95
- * video_count
104
+ * `id`
105
+ * `title`
106
+ * `published_at`
107
+ * `description`
108
+ * `uploads_playlist`
109
+ * `likes_playlist`
110
+ * `google_plus_id`
111
+ * `view_count`
112
+ * `comment_count`
113
+ * `subscriber_count`
114
+ * `video_count`
96
115
 
97
116
  #### Parameters
98
117
 
99
118
  * channel ids (Array[String])
100
119
 
101
- ### playlist_items_for
120
+ ### `playlist_items_for`
102
121
 
103
122
  On first invocation, only a playlist id is required:
104
123
 
@@ -121,7 +140,7 @@ end
121
140
  ```
122
141
 
123
142
 
124
- ### video_details_for
143
+ ### `video_details_for`
125
144
 
126
145
  Accepts an array of video ids.
127
146
  The maximum length of the array is determined by YouTube.
@@ -131,7 +150,7 @@ This endpoint returns a hash with video ids as keys
131
150
  and video objects as the values.
132
151
 
133
152
 
134
- ### views_by_day_for
153
+ ### `views_by_day_for`
135
154
 
136
155
  #### Parameters
137
156
 
@@ -163,27 +182,28 @@ corresponding to the following YouTube referrals:
163
182
  The constants are defined in `Brainzz::ViewCountEnum`.
164
183
 
165
184
 
166
- ### view_totals_for
185
+ ### `view_totals_for`
167
186
 
168
187
  #### Parameters
169
188
 
170
- Same as views_by_day_for.
189
+ Same as `views_by_day_for`.
171
190
 
172
191
 
173
192
  #### Result
174
193
 
175
- Same as views_by_day_for except date values are nil.
194
+ Same as `views_by_day_for` except date values are nil.
176
195
 
177
196
  Views for date range are aggregated per source type.
178
197
 
179
198
 
180
- ### likes_by_day_for
199
+ ### `likes_by_day_for`
181
200
 
182
201
  #### Parameters
183
202
 
184
- * video ids (Array[String])
185
- * start date (DateTime)
186
- * end date (DateTime)
203
+ * video ids (Array[String])
204
+ * start date (DateTime)
205
+ * end date (DateTime)
206
+ * content owner id (String)
187
207
 
188
208
 
189
209
  #### Result
@@ -191,27 +211,28 @@ Views for date range are aggregated per source type.
191
211
  An array of `Brainzz::LikeCount` objects ordered by date in ascending order.
192
212
 
193
213
 
194
- ### like_totals_for
214
+ ### `like_totals_for`
195
215
 
196
216
  #### Parameters
197
217
 
198
- Same as likes_by_day_for.
218
+ Same as `likes_by_day_for`.
199
219
 
200
220
 
201
221
  #### Result
202
222
 
203
- Same as likes_by_day_for except date values are nil.
223
+ Same as `likes_by_day_for` except date values are nil.
204
224
 
205
225
  Likes for date range are aggregated.
206
226
 
207
227
 
208
- ### shares_by_day_for
228
+ ### `shares_by_day_for`
209
229
 
210
230
  #### Parameters
211
231
 
212
- * video ids (Array[String])
213
- * start date (DateTime)
214
- * end date (DateTime)
232
+ * video ids (Array[String])
233
+ * start date (DateTime)
234
+ * end date (DateTime)
235
+ * content owner id (String)
215
236
 
216
237
 
217
238
  #### Result
@@ -219,26 +240,28 @@ Likes for date range are aggregated.
219
240
  An array of `Brainzz::ShareCount` objects ordered by date in ascending order.
220
241
 
221
242
 
222
- ### share_totals_for
243
+ ### `share_totals_for`
223
244
 
224
245
  #### Parameters
225
246
 
226
- Same as shares_by_day_for.
247
+ Same as `shares_by_day_for`.
248
+
227
249
 
228
250
  #### Result
229
251
 
230
- Same as shares_by_day_for except date values are nil.
252
+ Same as `shares_by_day_for` except date values are nil.
231
253
 
232
254
  Shares for date range are aggregated.
233
255
 
234
256
 
235
- ### dislikes_by_day_for
257
+ ### `dislikes_by_day_for`
236
258
 
237
259
  #### Parameters
238
260
 
239
- * video ids (Array[String])
240
- * start date (DateTime)
241
- * end date (DateTime)
261
+ * video ids (Array[String])
262
+ * start date (DateTime)
263
+ * end date (DateTime)
264
+ * content owner id (String)
242
265
 
243
266
 
244
267
  #### Result
@@ -246,27 +269,28 @@ Shares for date range are aggregated.
246
269
  An array of `Brainzz::DislikeCount` objects ordered by date in ascending order.
247
270
 
248
271
 
249
- ### dislike_totals_for
272
+ ### `dislike_totals_for`
250
273
 
251
274
  #### Parameters
252
275
 
253
- Same as dislikes_by_day_for.
276
+ Same as `dislikes_by_day_for`.
254
277
 
255
278
 
256
279
  #### Result
257
280
 
258
- Same as dislikes_by_day_for except date values are nil.
281
+ Same as `dislikes_by_day_for` except date values are nil.
259
282
 
260
283
  Dislikes for date range are aggregated.
261
284
 
262
285
 
263
- ### comments_by_day_for
286
+ ### `comments_by_day_for`
264
287
 
265
288
  #### Parameters
266
289
 
267
- * video ids (Array[String])
268
- * start date (DateTime)
269
- * end date (DateTime)
290
+ * video ids (Array[String])
291
+ * start date (DateTime)
292
+ * end date (DateTime)
293
+ * content owner id (String)
270
294
 
271
295
 
272
296
  #### Result
@@ -274,167 +298,178 @@ Dislikes for date range are aggregated.
274
298
  An array of `Brainzz::CommentCount` objects ordered by date in ascending order.
275
299
 
276
300
 
277
- ### comment_totals_for
301
+ ### `comment_totals_for`
278
302
 
279
303
  #### Parameters
280
304
 
281
- Same as comments_by_day_for.
305
+ Same as `comments_by_day_for`.
282
306
 
283
307
 
284
308
  #### Result
285
309
 
286
- Same as comments_by_day_for except date values are nil.
310
+ Same as `comments_by_day_for` except date values are nil.
287
311
 
288
312
  Comments for date range are aggregated.
289
313
 
290
314
 
291
- ### subscribers_gained_by_day_for
315
+ ### `subscribers_gained_by_day_for`
292
316
 
293
317
  #### Parameters
294
318
 
295
- * video ids (Array[String])
296
- * start date (DateTime)
297
- * end date (DateTime)
319
+ * video ids (Array[String])
320
+ * start date (DateTime)
321
+ * end date (DateTime)
322
+ * content owner id (String)
298
323
 
299
324
 
300
325
  #### Result
301
326
 
302
- An array of `Brainzz::SubscribersGainedCount` objects ordered by date in ascending order.
327
+ An array of `Brainzz::SubscribersGainedCount` objects
328
+ ordered by date in ascending order.
303
329
 
304
330
 
305
- ### subscribers_gained_totals_for
331
+ ### `subscribers_gained_totals_for`
306
332
 
307
333
  #### Parameters
308
334
 
309
- Same as subscribers_gained_by_day_for.
335
+ Same as `subscribers_gained_by_day_for`.
310
336
 
311
337
 
312
338
  #### Result
313
339
 
314
- Same as subscribers_gained_by_day_for except date values are nil.
340
+ Same as `subscribers_gained_by_day_for` except date values are nil.
315
341
 
316
342
  SubscribersGained for date range are aggregated.
317
343
 
318
344
 
319
- ### subscribers_lost_by_day_for
345
+ ### `subscribers_lost_by_day_for`
320
346
 
321
347
  #### Parameters
322
348
 
323
- * video ids (Array[String])
324
- * start date (DateTime)
325
- * end date (DateTime)
349
+ * video ids (Array[String])
350
+ * start date (DateTime)
351
+ * end date (DateTime)
352
+ * content owner id (String)
326
353
 
327
354
 
328
355
  #### Result
329
356
 
330
- An array of `Brainzz::SubscribersLostCount` objects ordered by date in ascending order.
357
+ An array of `Brainzz::SubscribersLostCount` objects
358
+ ordered by date in ascending order.
331
359
 
332
360
 
333
- ### subscribers_lost_totals_for
361
+ ### `subscribers_lost_totals_for`
334
362
 
335
363
  #### Parameters
336
364
 
337
- Same as subscribers_lost_by_day_for.
365
+ Same as `subscribers_lost_by_day_for`.
338
366
 
339
367
 
340
368
  #### Result
341
369
 
342
- Same as subscribers_lost_by_day_for except date values are nil.
370
+ Same as `subscribers_lost_by_day_for` except date values are nil.
343
371
 
344
372
  SubscribersLost for date range are aggregated.
345
373
 
346
374
 
347
- ### annotations_clickable_by_day_for
375
+ ### `annotations_clickable_by_day_for`
348
376
 
349
377
  #### Parameters
350
378
 
351
- * video ids (Array[String])
352
- * start date (DateTime)
353
- * end date (DateTime)
379
+ * video ids (Array[String])
380
+ * start date (DateTime)
381
+ * end date (DateTime)
382
+ * content owner id (String)
354
383
 
355
384
 
356
385
  #### Result
357
386
 
358
- An array of `Brainzz::AnnotationsClickableCount` objects ordered by date in ascending order.
387
+ An array of `Brainzz::AnnotationsClickableCount` objects
388
+ ordered by date in ascending order.
359
389
 
360
390
 
361
- ### annotations_clickable_totals_for
391
+ ### `annotations_clickable_totals_for`
362
392
 
363
393
  #### Parameters
364
394
 
365
- Same as annotations_clickable_by_day_for.
395
+ Same as `annotations_clickable_by_day_for`.
366
396
 
367
397
 
368
398
  #### Result
369
399
 
370
- Same as annotations_clickable_by_day_for except date values are nil.
400
+ Same as `annotations_clickable_by_day_for` except date values are nil.
371
401
 
372
402
  AnnotationsClickable for date range are aggregated.
373
403
 
374
404
 
375
- ### annotations_clicked_by_day_for
405
+ ### `annotations_clicked_by_day_for`
376
406
 
377
407
  #### Parameters
378
408
 
379
- * video ids (Array[String])
380
- * start date (DateTime)
381
- * end date (DateTime)
409
+ * video ids (Array[String])
410
+ * start date (DateTime)
411
+ * end date (DateTime)
412
+ * content owner id (String)
382
413
 
383
414
 
384
415
  #### Result
385
416
 
386
- An array of `Brainzz::AnnotationsClickedCount` objects ordered by date in ascending order.
417
+ An array of `Brainzz::AnnotationsClickedCount` objects
418
+ ordered by date in ascending order.
387
419
 
388
420
 
389
- ### annotations_clicked_totals_for
421
+ ### `annotations_clicked_totals_for`
390
422
 
391
423
  #### Parameters
392
424
 
393
- Same as annotations_clicked_by_day_for.
425
+ Same as `annotations_clicked_by_day_for`.
394
426
 
395
427
 
396
428
  #### Result
397
429
 
398
- Same as annotations_clicked_by_day_for except date values are nil.
430
+ Same as `annotations_clicked_by_day_for` except date values are nil.
399
431
 
400
432
  AnnotationsClicked for date range are aggregated.
401
433
 
402
434
 
403
- ### view_percentages_by_day_for
435
+ ### `view_percentages_by_day_for`
404
436
 
405
437
  #### Parameters
406
438
 
407
- * video ids (Array[String])
408
- * start date (DateTime)
409
- * end date (DateTime)
439
+ * video ids (Array[String])
440
+ * start date (DateTime)
441
+ * end date (DateTime)
442
+ * content owner id (String)
410
443
 
411
444
 
412
445
  #### Result
413
446
 
414
- An array of `Brainzz::ViewPercentage` objects ordered by date in ascending order.
447
+ An array of `Brainzz::ViewPercentage` objects
448
+ ordered by date in ascending order.
415
449
 
416
450
 
417
- ### view_percentage_totals_for
451
+ ### `view_percentage_totals_for`
418
452
 
419
453
  #### Parameters
420
454
 
421
- Same as view_percentages_by_day_for.
455
+ Same as `view_percentages_by_day_for`.
422
456
 
423
457
 
424
458
  #### Result
425
459
 
426
- Same as view_percentages_by_day_for except date values are nil.
460
+ Same as `view_percentages_by_day_for` except date values are nil.
427
461
 
428
462
  ViewPercentages for date range are aggregated.
429
463
 
430
464
 
431
- ### view_durations_by_day_for
465
+ ### `view_durations_by_day_for`
432
466
 
433
467
  #### Parameters
434
468
 
435
- * video ids (Array[String])
436
- * start date (DateTime)
437
- * end date (DateTime)
469
+ * video ids (Array[String])
470
+ * start date (DateTime)
471
+ * end date (DateTime)
472
+ * content owner id (String)
438
473
 
439
474
 
440
475
  #### Result
@@ -442,16 +477,16 @@ ViewPercentages for date range are aggregated.
442
477
  An array of `Brainzz::ViewDuration` objects ordered by date in ascending order.
443
478
 
444
479
 
445
- ### view_duration_totals_for
480
+ ### `view_duration_totals_for`
446
481
 
447
482
  #### Parameters
448
483
 
449
- Same as view_durations_by_day_for.
484
+ Same as `view_durations_by_day_for`.
450
485
 
451
486
 
452
487
  #### Result
453
488
 
454
- Same as view_durations_by_day_for except date values are nil.
489
+ Same as `view_durations_by_day_for` except date values are nil.
455
490
 
456
491
  ViewDurations for date range are aggregated.
457
492
 
@@ -1,13 +1,6 @@
1
1
  module Brainzz
2
2
  class AnalyticsCommand < BaseCommand
3
3
  class << self
4
- def execute(*args)
5
- local_token = access_token
6
- response = super
7
- response.scrub local_token, 'ACCESS_TOKEN'
8
- response
9
- end
10
-
11
4
  private
12
5
 
13
6
  def base_url
@@ -18,17 +11,21 @@ module Brainzz
18
11
  'reports'
19
12
  end
20
13
 
21
- def headers
14
+ def headers(parameters)
15
+ access_token = access_token_for(parameters.content_owner)
16
+
22
17
  super.merge({
23
18
  'Authorization' => "Bearer #{access_token}",
24
19
  })
25
20
  end
26
21
 
27
- def access_token
28
- AccessTokenService.retrieve_token
22
+ def access_token_for(content_owner)
23
+ AccessTokenService.retrieve_token_for content_owner
29
24
  end
30
25
 
31
26
  def params(analytics_params)
27
+ content_owner = content_owner_for(analytics_params.content_owner)
28
+
32
29
  super.merge({
33
30
  'ids' => "contentOwner==#{content_owner}",
34
31
  'start-date' => analytics_params.start_date,
@@ -36,13 +33,11 @@ module Brainzz
36
33
  })
37
34
  end
38
35
 
39
- def content_owner
40
- ENV['BRAINZZ_CONTENT_OWNER']
36
+ def content_owner_for(content_owner)
37
+ content_owner || ENV['BRAINZZ_CONTENT_OWNER']
41
38
  end
42
39
 
43
40
  def scrub(response)
44
- response.scrub access_token, 'ACCESS_TOKEN'
45
- response.scrub content_owner, 'CONTENT_OWNER'
46
41
  end
47
42
  end
48
43
  end
@@ -10,7 +10,7 @@ module Brainzz
10
10
  private
11
11
 
12
12
  def get(parameters)
13
- connection.get endpoint, params(parameters), headers
13
+ connection.get endpoint, params(parameters), headers(parameters)
14
14
  end
15
15
 
16
16
  def connection
@@ -23,7 +23,7 @@ module Brainzz
23
23
  params
24
24
  end
25
25
 
26
- def headers
26
+ def headers(parameters)
27
27
  {
28
28
  'Content-Type' => 'application/json',
29
29
  }
@@ -3,12 +3,11 @@ module Brainzz
3
3
  class << self
4
4
  private
5
5
 
6
- def on_execute(channel_ids, start_date, end_date)
7
- channel_stats_params = ChannelStatsParams.new({
8
- :channel_ids => channel_ids,
9
- :start_date => start_date,
10
- :end_date => end_date,
11
- })
6
+ def on_execute(channel_ids, start_date, end_date, content_owner)
7
+ channel_stats_params = ChannelStatsParams.new(
8
+ params_hash_for(
9
+ :channel_ids, channel_ids, start_date, end_date, content_owner)
10
+ )
12
11
 
13
12
  make_request_with_params(channel_stats_params)
14
13
  end
@@ -3,6 +3,15 @@ module Brainzz
3
3
  class << self
4
4
  private
5
5
 
6
+ def params_hash_for(key, ids, start_date, end_date, content_owner_id)
7
+ {
8
+ key => ids,
9
+ :start_date => start_date,
10
+ :end_date => end_date,
11
+ :content_owner => content_owner_id,
12
+ }
13
+ end
14
+
6
15
  def make_request_with_params(params)
7
16
  if params.valid?
8
17
  @response_class.new get(params)
@@ -3,14 +3,13 @@ module Brainzz
3
3
  class << self
4
4
  private
5
5
 
6
- def on_execute(video_ids, start_date, end_date)
7
- video_stats_params = VideoStatsParams.new({
8
- :video_ids => video_ids,
9
- :start_date => start_date,
10
- :end_date => end_date,
11
- })
6
+ def on_execute(video_ids, start_date, end_date, content_owner)
7
+ video_stats_params = VideoStatsParams.new(
8
+ params_hash_for(
9
+ :video_ids, video_ids, start_date, end_date, content_owner)
10
+ )
12
11
 
13
- make_request_with_params(video_stats_params)
12
+ make_request_with_params video_stats_params
14
13
  end
15
14
 
16
15
  def dimensions
@@ -14,152 +14,207 @@ module Brainzz
14
14
  VideoDetailsCommand.execute video_ids, options
15
15
  end
16
16
 
17
- def views_by_day_for(video_ids, start_date, end_date)
18
- ViewCountByDayCommand.execute video_ids, start_date, end_date
17
+ def views_by_day_for(
18
+ video_ids, start_date, end_date, content_owner_id = nil)
19
+ ViewCountByDayCommand
20
+ .execute video_ids, start_date, end_date, content_owner_id
19
21
  end
20
22
 
21
- def view_totals_for(video_ids, start_date, end_date)
22
- ViewTotalsCommand.execute video_ids, start_date, end_date
23
+ def view_totals_for(
24
+ video_ids, start_date, end_date, content_owner_id = nil)
25
+ ViewTotalsCommand
26
+ .execute video_ids, start_date, end_date, content_owner_id
23
27
  end
24
28
 
25
- def likes_by_day_for(video_ids, start_date, end_date)
26
- LikeCountByDayCommand.execute video_ids, start_date, end_date
29
+ def likes_by_day_for(
30
+ video_ids, start_date, end_date, content_owner_id = nil)
31
+ LikeCountByDayCommand.execute video_ids,
32
+ start_date, end_date, content_owner_id
27
33
  end
28
34
 
29
- def like_totals_for(video_ids, start_date, end_date)
30
- LikeTotalsCommand.execute video_ids, start_date, end_date
35
+ def like_totals_for(video_ids, start_date, end_date, content_owner_id = nil)
36
+ LikeTotalsCommand.execute video_ids,
37
+ start_date, end_date, content_owner_id
31
38
  end
32
39
 
33
- def shares_by_day_for(video_ids, start_date, end_date)
34
- ShareCountByDayCommand.execute video_ids, start_date, end_date
40
+ def shares_by_day_for(
41
+ video_ids, start_date, end_date, content_owner_id = nil)
42
+ ShareCountByDayCommand
43
+ .execute video_ids, start_date, end_date, content_owner_id
35
44
  end
36
45
 
37
- def share_totals_for(video_ids, start_date, end_date)
38
- ShareTotalsCommand.execute video_ids, start_date, end_date
46
+ def share_totals_for(
47
+ video_ids, start_date, end_date, content_owner_id = nil)
48
+ ShareTotalsCommand
49
+ .execute video_ids, start_date, end_date, content_owner_id
39
50
  end
40
51
 
41
- def dislikes_by_day_for(video_ids, start_date, end_date)
42
- DislikeCountByDayCommand.execute video_ids, start_date, end_date
52
+ def dislikes_by_day_for(
53
+ video_ids, start_date, end_date, content_owner_id = nil)
54
+ DislikeCountByDayCommand
55
+ .execute video_ids, start_date, end_date, content_owner_id
43
56
  end
44
57
 
45
- def dislike_totals_for(video_ids, start_date, end_date)
46
- DislikeTotalsCommand.execute video_ids, start_date, end_date
58
+ def dislike_totals_for(
59
+ video_ids, start_date, end_date, content_owner_id = nil)
60
+ DislikeTotalsCommand
61
+ .execute video_ids, start_date, end_date, content_owner_id
47
62
  end
48
63
 
49
- def comments_by_day_for(video_ids, start_date, end_date)
50
- CommentCountByDayCommand.execute video_ids, start_date, end_date
64
+ def comments_by_day_for(
65
+ video_ids, start_date, end_date, content_owner_id = nil)
66
+ CommentCountByDayCommand
67
+ .execute video_ids, start_date, end_date, content_owner_id
51
68
  end
52
69
 
53
- def comment_totals_for(video_ids, start_date, end_date)
54
- CommentTotalsCommand.execute video_ids, start_date, end_date
70
+ def comment_totals_for(
71
+ video_ids, start_date, end_date, content_owner_id = nil)
72
+ CommentTotalsCommand
73
+ .execute video_ids, start_date, end_date, content_owner_id
55
74
  end
56
75
 
57
- def subscribers_gained_by_day_for(video_ids, start_date, end_date)
58
- SubscribersGainedByDayCommand.execute video_ids, start_date, end_date
76
+ def subscribers_gained_by_day_for(
77
+ video_ids, start_date, end_date, content_owner_id = nil)
78
+ SubscribersGainedByDayCommand
79
+ .execute video_ids, start_date, end_date, content_owner_id
59
80
  end
60
81
 
61
- def subscribers_gained_totals_for(video_ids, start_date, end_date)
62
- SubscribersGainedTotalsCommand.execute video_ids, start_date, end_date
82
+ def subscribers_gained_totals_for(
83
+ video_ids, start_date, end_date, content_owner_id = nil)
84
+ SubscribersGainedTotalsCommand
85
+ .execute video_ids, start_date, end_date, content_owner_id
63
86
  end
64
87
 
65
- def subscribers_lost_by_day_for(video_ids, start_date, end_date)
66
- SubscribersLostByDayCommand.execute video_ids, start_date, end_date
88
+ def subscribers_lost_by_day_for(
89
+ video_ids, start_date, end_date, content_owner_id = nil)
90
+ SubscribersLostByDayCommand
91
+ .execute video_ids, start_date, end_date, content_owner_id
67
92
  end
68
93
 
69
- def subscribers_lost_totals_for(video_ids, start_date, end_date)
70
- SubscribersLostTotalsCommand.execute video_ids, start_date, end_date
94
+ def subscribers_lost_totals_for(
95
+ video_ids, start_date, end_date, content_owner_id = nil)
96
+ SubscribersLostTotalsCommand
97
+ .execute video_ids, start_date, end_date, content_owner_id
71
98
  end
72
99
 
73
- def annotations_clickable_by_day_for(video_ids, start_date, end_date)
74
- AnnotationsClickableByDayCommand.execute video_ids, start_date, end_date
100
+ def annotations_clickable_by_day_for(
101
+ video_ids, start_date, end_date, content_owner_id = nil)
102
+ AnnotationsClickableByDayCommand
103
+ .execute video_ids, start_date, end_date, content_owner_id
75
104
  end
76
105
 
77
- def annotations_clickable_totals_for(video_ids, start_date, end_date)
78
- AnnotationsClickableTotalsCommand.execute video_ids, start_date, end_date
106
+ def annotations_clickable_totals_for(
107
+ video_ids, start_date, end_date, content_owner_id = nil)
108
+ AnnotationsClickableTotalsCommand
109
+ .execute video_ids, start_date, end_date, content_owner_id
79
110
  end
80
111
 
81
- def annotations_clicked_by_day_for(video_ids, start_date, end_date)
82
- AnnotationsClickedByDayCommand.execute video_ids, start_date, end_date
112
+ def annotations_clicked_by_day_for(
113
+ video_ids, start_date, end_date, content_owner_id = nil)
114
+ AnnotationsClickedByDayCommand
115
+ .execute video_ids, start_date, end_date, content_owner_id
83
116
  end
84
117
 
85
- def annotations_clicked_totals_for(video_ids, start_date, end_date)
86
- AnnotationsClickedTotalsCommand.execute video_ids, start_date, end_date
118
+ def annotations_clicked_totals_for(
119
+ video_ids, start_date, end_date, content_owner_id = nil)
120
+ AnnotationsClickedTotalsCommand
121
+ .execute video_ids, start_date, end_date, content_owner_id
87
122
  end
88
123
 
89
- def view_percentages_by_day_for(video_ids, start_date, end_date)
90
- ViewPercentagesByDayCommand.execute video_ids, start_date, end_date
124
+ def view_percentages_by_day_for(
125
+ video_ids, start_date, end_date, content_owner_id = nil)
126
+ ViewPercentagesByDayCommand
127
+ .execute video_ids, start_date, end_date, content_owner_id
91
128
  end
92
129
 
93
- def view_percentage_totals_for(video_ids, start_date, end_date)
94
- ViewPercentageTotalsCommand.execute video_ids, start_date, end_date
130
+ def view_percentage_totals_for(
131
+ video_ids, start_date, end_date, content_owner_id = nil)
132
+ ViewPercentageTotalsCommand
133
+ .execute video_ids, start_date, end_date, content_owner_id
95
134
  end
96
135
 
97
- def view_durations_by_day_for(video_ids, start_date, end_date)
98
- ViewDurationsByDayCommand.execute video_ids, start_date, end_date
136
+ def view_durations_by_day_for(
137
+ video_ids, start_date, end_date, content_owner_id = nil)
138
+ ViewDurationsByDayCommand
139
+ .execute video_ids, start_date, end_date, content_owner_id
99
140
  end
100
141
 
101
- def view_duration_totals_for(video_ids, start_date, end_date)
102
- ViewDurationTotalsCommand.execute video_ids, start_date, end_date
142
+ def view_duration_totals_for(
143
+ video_ids, start_date, end_date, content_owner_id = nil)
144
+ ViewDurationTotalsCommand
145
+ .execute video_ids, start_date, end_date, content_owner_id
103
146
  end
104
147
 
105
- def channel_subscribers_lost_by_day_for(channel_ids, start_date, end_date)
148
+ def channel_subscribers_lost_by_day_for(
149
+ channel_ids, start_date, end_date, content_owner_id = nil)
106
150
  ChannelSubscribersLostByDayCommand
107
- .execute channel_ids, start_date, end_date
151
+ .execute channel_ids, start_date, end_date, content_owner_id
108
152
  end
109
153
 
110
- def channel_subscribers_lost_totals_for(channel_ids, start_date, end_date)
154
+ def channel_subscribers_lost_totals_for(
155
+ channel_ids, start_date, end_date, content_owner_id = nil)
111
156
  ChannelSubscribersLostTotalsCommand
112
- .execute channel_ids, start_date, end_date
157
+ .execute channel_ids, start_date, end_date, content_owner_id
113
158
  end
114
159
 
115
- def channel_subscribers_gained_by_day_for(channel_ids, start_date, end_date)
160
+ def channel_subscribers_gained_by_day_for(
161
+ channel_ids, start_date, end_date, content_owner_id = nil)
116
162
  ChannelSubscribersGainedByDayCommand
117
- .execute channel_ids, start_date, end_date
163
+ .execute channel_ids, start_date, end_date, content_owner_id
118
164
  end
119
165
 
120
- def channel_subscribers_gained_totals_for(channel_ids, start_date, end_date)
166
+ def channel_subscribers_gained_totals_for(
167
+ channel_ids, start_date, end_date, content_owner_id = nil)
121
168
  ChannelSubscribersGainedTotalsCommand
122
- .execute channel_ids, start_date, end_date
169
+ .execute channel_ids, start_date, end_date, content_owner_id
123
170
  end
124
171
 
125
- def channel_view_by_day_for(channel_ids, start_date, end_date)
172
+ def channel_view_by_day_for(
173
+ channel_ids, start_date, end_date, content_owner_id = nil)
126
174
  ChannelViewCountByDayCommand
127
- .execute channel_ids, start_date, end_date
175
+ .execute channel_ids, start_date, end_date, content_owner_id
128
176
  end
129
177
 
130
- def channel_view_totals_for(channel_ids, start_date, end_date)
178
+ def channel_view_totals_for(
179
+ channel_ids, start_date, end_date, content_owner_id = nil)
131
180
  ChannelViewCountTotalsCommand
132
- .execute channel_ids, start_date, end_date
181
+ .execute channel_ids, start_date, end_date, content_owner_id
133
182
  end
134
183
 
135
- def channel_like_by_day_for(channel_ids, start_date, end_date)
184
+ def channel_like_by_day_for(
185
+ channel_ids, start_date, end_date, content_owner_id = nil)
136
186
  ChannelLikeCountByDayCommand
137
- .execute channel_ids, start_date, end_date
187
+ .execute channel_ids, start_date, end_date, content_owner_id
138
188
  end
139
189
 
140
- def channel_like_totals_for(channel_ids, start_date, end_date)
190
+ def channel_like_totals_for(
191
+ channel_ids, start_date, end_date, content_owner_id = nil)
141
192
  ChannelLikeCountTotalsCommand
142
- .execute channel_ids, start_date, end_date
193
+ .execute channel_ids, start_date, end_date, content_owner_id
143
194
  end
144
195
 
145
- def channel_dislike_by_day_for(channel_ids, start_date, end_date)
196
+ def channel_dislike_by_day_for(
197
+ channel_ids, start_date, end_date, content_owner_id = nil)
146
198
  ChannelDislikeCountByDayCommand
147
- .execute channel_ids, start_date, end_date
199
+ .execute channel_ids, start_date, end_date, content_owner_id
148
200
  end
149
201
 
150
- def channel_dislike_totals_for(channel_ids, start_date, end_date)
202
+ def channel_dislike_totals_for(
203
+ channel_ids, start_date, end_date, content_owner_id = nil)
151
204
  ChannelDislikeCountTotalsCommand
152
- .execute channel_ids, start_date, end_date
205
+ .execute channel_ids, start_date, end_date, content_owner_id
153
206
  end
154
207
 
155
- def channel_comment_by_day_for(channel_ids, start_date, end_date)
208
+ def channel_comment_by_day_for(
209
+ channel_ids, start_date, end_date, content_owner_id = nil)
156
210
  ChannelCommentCountByDayCommand
157
- .execute channel_ids, start_date, end_date
211
+ .execute channel_ids, start_date, end_date, content_owner_id
158
212
  end
159
213
 
160
- def channel_comment_totals_for(channel_ids, start_date, end_date)
214
+ def channel_comment_totals_for(
215
+ channel_ids, start_date, end_date, content_owner_id = nil)
161
216
  ChannelCommentCountTotalsCommand
162
- .execute channel_ids, start_date, end_date
217
+ .execute channel_ids, start_date, end_date, content_owner_id
163
218
  end
164
219
  end
165
220
  end
@@ -2,10 +2,12 @@ module Brainzz
2
2
  class AnalyticsParams < BaseParams
3
3
  attr_reader :start_date
4
4
  attr_reader :end_date
5
+ attr_reader :content_owner
5
6
 
6
7
  def initialize(params)
7
- @start_date = normalize_date(params[:start_date])
8
- @end_date = normalize_date(params[:end_date])
8
+ @start_date = normalize_date(params[:start_date])
9
+ @end_date = normalize_date(params[:end_date])
10
+ @content_owner = params[:content_owner]
9
11
  end
10
12
 
11
13
  def valid?
@@ -4,24 +4,37 @@ module Brainzz
4
4
 
5
5
  @@mutex = Mutex.new
6
6
 
7
- def retrieve_token
7
+ def retrieve_token_for(content_owner)
8
8
  @@mutex.synchronize do
9
- if !defined?(@token) or @token.expired?
10
- response = Toke.retrieve_token(params)
11
- @token = response.data if response.success?
12
- end
9
+ @tokens ||= {}
13
10
 
14
- @token.token if defined?(@token)
11
+ params = params_for(content_owner)
12
+
13
+ key = params[:refresh_token]
14
+
15
+ get_token_for key, params
16
+
17
+ @tokens[key].token if @tokens[key]
15
18
  end
16
19
  end
17
20
 
18
21
  private
19
22
 
20
- def params
23
+ def get_token_for(key, params)
24
+ if @tokens[key].nil? or @tokens[key].expired?
25
+ response = Toke.retrieve_token(params)
26
+ @tokens[key] = response.data if response.success?
27
+ end
28
+ end
29
+
30
+ def params_for(content_owner)
31
+ suffix = ''
32
+ suffix = "_#{content_owner.upcase.gsub(/-/, '')}" if content_owner
33
+
21
34
  {
22
- :refresh_token => ENV['BRAINZZ_REFRESH_TOKEN'],
23
- :client_id => ENV['BRAINZZ_CLIENT_ID'],
24
- :client_secret => ENV['BRAINZZ_CLIENT_SECRET'],
35
+ :refresh_token => ENV["BRAINZZ_REFRESH_TOKEN#{suffix}"],
36
+ :client_id => ENV["BRAINZZ_CLIENT_ID#{suffix}"],
37
+ :client_secret => ENV["BRAINZZ_CLIENT_SECRET#{suffix}"],
25
38
  }
26
39
  end
27
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brainzz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Herrick
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-07-23 00:00:00.000000000 Z
13
+ date: 2015-11-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday