gnip_api 0.0.1 → 0.0.2

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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile.lock +6 -1
  6. data/README.md +43 -4
  7. data/gnip_api.gemspec +1 -0
  8. data/lib/gnip_api/adapter.rb +44 -22
  9. data/lib/gnip_api/adapters/base_adapter.rb +59 -0
  10. data/lib/gnip_api/adapters/httparty_adapter.rb +33 -1
  11. data/lib/gnip_api/apis/power_track/buffer.rb +4 -0
  12. data/lib/gnip_api/apis/power_track/rule.rb +31 -0
  13. data/lib/gnip_api/apis/power_track/rules.rb +69 -2
  14. data/lib/gnip_api/apis/power_track/stream.rb +41 -22
  15. data/lib/gnip_api/apis/search/count.rb +0 -0
  16. data/lib/gnip_api/apis/search/query.rb +36 -0
  17. data/lib/gnip_api/apis/search/result.rb +17 -0
  18. data/lib/gnip_api/apis/search/stream.rb +26 -0
  19. data/lib/gnip_api/configuration.rb +4 -1
  20. data/lib/gnip_api/endpoints.rb +15 -2
  21. data/lib/gnip_api/errors.rb +39 -0
  22. data/lib/gnip_api/gnip/activity.rb +72 -0
  23. data/lib/gnip_api/gnip/actor.rb +42 -11
  24. data/lib/gnip_api/gnip/gnip_data.rb +23 -0
  25. data/lib/gnip_api/gnip/message.rb +24 -51
  26. data/lib/gnip_api/gnip/system_message.rb +30 -0
  27. data/lib/gnip_api/gnip/url.rb +35 -0
  28. data/lib/gnip_api/limiters/rules.rb +56 -0
  29. data/lib/gnip_api/rate_limiter.rb +14 -0
  30. data/lib/gnip_api/request.rb +26 -0
  31. data/lib/gnip_api/response.rb +35 -0
  32. data/lib/gnip_api/version.rb +1 -1
  33. data/lib/gnip_api.rb +31 -0
  34. data/spec/fixtures/activities/full_activity.json +227 -0
  35. data/spec/fixtures/activities/nil_urls.json +1 -0
  36. data/spec/fixtures/activities/real_activity.json +127 -0
  37. data/spec/fixtures/activities/real_activity_long_rules.json +126 -0
  38. data/spec/fixtures/system_messages/error.json +1 -0
  39. data/spec/fixtures/system_messages/info.json +1 -0
  40. data/spec/fixtures/system_messages/warn.json +1 -0
  41. data/spec/fixtures/twitter_messages/quote.json +219 -0
  42. data/spec/fixtures/twitter_messages/retweet.json +418 -0
  43. data/spec/fixtures/twitter_messages/retweet_long_rules.json +417 -0
  44. data/spec/fixtures/twitter_messages/scrub_geo.json +11 -0
  45. data/spec/fixtures/twitter_messages/status_delete.json +11 -0
  46. data/spec/fixtures/twitter_messages/status_withheld.json +11 -0
  47. data/spec/fixtures/twitter_messages/tweet.json +233 -0
  48. data/spec/fixtures/twitter_messages/tweet_long_rules.json +232 -0
  49. data/spec/fixtures/twitter_messages/user_delete.json +7 -0
  50. data/spec/fixtures/twitter_messages/user_protect.json +7 -0
  51. data/spec/fixtures/twitter_messages/user_suspend.json +7 -0
  52. data/spec/fixtures/twitter_messages/user_undelete.json +7 -0
  53. data/spec/fixtures/twitter_messages/user_unprotect.json +7 -0
  54. data/spec/fixtures/twitter_messages/user_unsuspend.json +7 -0
  55. data/spec/fixtures/twitter_messages/user_withheld.json +10 -0
  56. data/spec/gnip_api/adapter_spec.rb +78 -0
  57. data/spec/gnip_api/adapters/base_adapter_spec.rb +0 -0
  58. data/spec/gnip_api/adapters/httparty_adapter_spec.rb +0 -0
  59. data/spec/gnip_api/apis/power_track/rule_spec.rb +62 -0
  60. data/spec/gnip_api/apis/power_track/rules_spec.rb +70 -0
  61. data/spec/gnip_api/apis/power_track/stream_spec.rb +50 -0
  62. data/spec/gnip_api/gnip/activity_spec.rb +123 -0
  63. data/spec/gnip_api/gnip/gnip_data_spec.rb +108 -0
  64. data/spec/gnip_api/gnip/message_spec.rb +48 -0
  65. data/spec/gnip_api/limiters/rules_spec.rb +74 -0
  66. data/spec/gnip_api/request_spec.rb +33 -0
  67. data/spec/gnip_api/response_spec.rb +32 -0
  68. data/spec/lib/test_adapter.rb +16 -0
  69. data/spec/spec_helper.rb +8 -0
  70. metadata +103 -2
@@ -0,0 +1,417 @@
1
+ {
2
+ "id": "tag:search.twitter.com,2005:595648617588912128",
3
+ "objectType": "activity",
4
+ "actor": {
5
+ "objectType": "person",
6
+ "id": "id:twitter.com:2993982541",
7
+ "link": "http://www.twitter.com/jondee_test",
8
+ "displayName": "Test Demo",
9
+ "postedTime": "2015-01-24T00:12:53.000Z",
10
+ "image": "https://pbs.twimg.com/profile_images/593893018911907840/YM9oLru3_normal.png",
11
+ "summary": "this is a test account.",
12
+ "links": [
13
+ {
14
+ "href": null,
15
+ "rel": "me"
16
+ }
17
+ ],
18
+ "friendsCount": 43,
19
+ "followersCount": 2,
20
+ "listedCount": 0,
21
+ "statusesCount": 35,
22
+ "twitterTimeZone": "Mountain Time (US & Canada)",
23
+ "verified": false,
24
+ "utcOffset": "-21600",
25
+ "preferredUsername": "jondee_test",
26
+ "languages": [
27
+ "en"
28
+ ],
29
+ "location": {
30
+ "objectType": "place",
31
+ "displayName": "Denver, CO"
32
+ },
33
+ "favoritesCount": 0
34
+ },
35
+ "verb": "share",
36
+ "postedTime": "2015-05-05T17:57:51.000Z",
37
+ "generator": {
38
+ "displayName": "Twitter Web Client",
39
+ "link": "http://twitter.com"
40
+ },
41
+ "provider": {
42
+ "objectType": "service",
43
+ "displayName": "Twitter",
44
+ "link": "http://www.twitter.com"
45
+ },
46
+ "link": "http://twitter.com/jondee_test/statuses/595648617588912128",
47
+ "body": "RT @stevedz: More geo testing. Dinner with my son and a Petrus 50/50 http://t.co/NtoHc3cOY4 from @BrouwerijDB is just a bonus! http://t.c…",
48
+ "object": {
49
+ "id": "tag:search.twitter.com,2005:593935592573898753",
50
+ "objectType": "activity",
51
+ "actor": {
52
+ "objectType": "person",
53
+ "id": "id:twitter.com:88777459",
54
+ "link": "http://www.twitter.com/stevedz",
55
+ "displayName": "Steven Dzilvelis",
56
+ "postedTime": "2009-11-09T22:17:48.000Z",
57
+ "image": "https://pbs.twimg.com/profile_images/3495413548/59af29182894424a4c977e981dbd55da_normal.jpeg",
58
+ "summary": "Sales Engineer @TwitterBoulder aka @Gnip, Dad/Husband, Coder, devops geek & baker. Almost all of tweets are my own.",
59
+ "links": [
60
+ {
61
+ "href": "http://about.me/SteveDz",
62
+ "rel": "me"
63
+ }
64
+ ],
65
+ "friendsCount": 344,
66
+ "followersCount": 228,
67
+ "listedCount": 12,
68
+ "statusesCount": 268,
69
+ "twitterTimeZone": "Mountain Time (US & Canada)",
70
+ "verified": false,
71
+ "utcOffset": "-21600",
72
+ "preferredUsername": "stevedz",
73
+ "languages": [
74
+ "en"
75
+ ],
76
+ "location": {
77
+ "objectType": "place",
78
+ "displayName": "Boulder, Colorado"
79
+ },
80
+ "favoritesCount": 24
81
+ },
82
+ "verb": "post",
83
+ "postedTime": "2015-05-01T00:30:54.000Z",
84
+ "generator": {
85
+ "displayName": "Twitter for Android",
86
+ "link": "http://twitter.com/download/android"
87
+ },
88
+ "provider": {
89
+ "objectType": "service",
90
+ "displayName": "Twitter",
91
+ "link": "http://www.twitter.com"
92
+ },
93
+ "link": "http://twitter.com/stevedz/statuses/593935592573898753",
94
+ "body": "More geo testing. Dinner with my son and a Petrus 50/50 http://t.co/NtoHc3cOY4 from @BrouwerijDB is just a bonus! http://t.co/nHPh4YMdhN",
95
+ "object": {
96
+ "objectType": "note",
97
+ "id": "object:search.twitter.com,2005:593935592573898753",
98
+ "summary": "More geo testing. Dinner with my son and a Petrus 50/50 http://t.co/NtoHc3cOY4 from @BrouwerijDB is just a bonus! http://t.co/nHPh4YMdhN",
99
+ "link": "http://twitter.com/stevedz/statuses/593935592573898753",
100
+ "postedTime": "2015-05-01T00:30:54.000Z"
101
+ },
102
+ "favoritesCount": 1,
103
+ "location": {
104
+ "objectType": "place",
105
+ "displayName": "Fate Brewing Company",
106
+ "name": "Fate Brewing Company",
107
+ "country_code": "United States",
108
+ "twitter_country_code": "US",
109
+ "link": "https://api.twitter.com/1.1/geo/id/07d9e920af882000.json",
110
+ "geo": {
111
+ "type": "Polygon",
112
+ "coordinates": [
113
+ [
114
+ [
115
+ -105.24541854858398,
116
+ 40.01499435375046
117
+ ],
118
+ [
119
+ -105.24541854858398,
120
+ 40.01499435375046
121
+ ],
122
+ [
123
+ -105.24541854858398,
124
+ 40.01499435375046
125
+ ],
126
+ [
127
+ -105.24541854858398,
128
+ 40.01499435375046
129
+ ]
130
+ ]
131
+ ]
132
+ },
133
+ "twitter_place_type": "poi"
134
+ },
135
+ "geo": {
136
+ "type": "Point",
137
+ "coordinates": [
138
+ 40.013423,
139
+ -105.235281
140
+ ]
141
+ },
142
+ "twitter_entities": {
143
+ "hashtags": [],
144
+ "trends": [],
145
+ "urls": [
146
+ {
147
+ "url": "http://t.co/NtoHc3cOY4",
148
+ "expanded_url": "http://www.brouwerijdebrabandere.be/en/merken/petrus",
149
+ "display_url": "brouwerijdebrabandere.be/en/merken/petr…",
150
+ "indices": [
151
+ 58,
152
+ 80
153
+ ]
154
+ }
155
+ ],
156
+ "user_mentions": [
157
+ {
158
+ "screen_name": "BrouwerijDB",
159
+ "name": "De Brabandere",
160
+ "id": 322774299,
161
+ "id_str": "322774299",
162
+ "indices": [
163
+ 86,
164
+ 98
165
+ ]
166
+ }
167
+ ],
168
+ "symbols": [],
169
+ "media": [
170
+ {
171
+ "id": 593935482129518600,
172
+ "id_str": "593935482129518593",
173
+ "indices": [
174
+ 116,
175
+ 138
176
+ ],
177
+ "media_url": "http://pbs.twimg.com/media/CD4VLJfUkAEI4px.jpg",
178
+ "media_url_https": "https://pbs.twimg.com/media/CD4VLJfUkAEI4px.jpg",
179
+ "url": "http://t.co/nHPh4YMdhN",
180
+ "display_url": "pic.twitter.com/nHPh4YMdhN",
181
+ "expanded_url": "http://twitter.com/stevedz/status/593935592573898753/photo/1",
182
+ "type": "photo",
183
+ "sizes": {
184
+ "small": {
185
+ "w": 340,
186
+ "h": 453,
187
+ "resize": "fit"
188
+ },
189
+ "medium": {
190
+ "w": 600,
191
+ "h": 800,
192
+ "resize": "fit"
193
+ },
194
+ "thumb": {
195
+ "w": 150,
196
+ "h": 150,
197
+ "resize": "crop"
198
+ },
199
+ "large": {
200
+ "w": 768,
201
+ "h": 1024,
202
+ "resize": "fit"
203
+ }
204
+ }
205
+ }
206
+ ]
207
+ },
208
+ "twitter_extended_entities": {
209
+ "media": [
210
+ {
211
+ "id": 593935482129518600,
212
+ "id_str": "593935482129518593",
213
+ "indices": [
214
+ 116,
215
+ 138
216
+ ],
217
+ "media_url": "http://pbs.twimg.com/media/CD4VLJfUkAEI4px.jpg",
218
+ "media_url_https": "https://pbs.twimg.com/media/CD4VLJfUkAEI4px.jpg",
219
+ "url": "http://t.co/nHPh4YMdhN",
220
+ "display_url": "pic.twitter.com/nHPh4YMdhN",
221
+ "expanded_url": "http://twitter.com/stevedz/status/593935592573898753/photo/1",
222
+ "type": "photo",
223
+ "sizes": {
224
+ "small": {
225
+ "w": 340,
226
+ "h": 453,
227
+ "resize": "fit"
228
+ },
229
+ "medium": {
230
+ "w": 600,
231
+ "h": 800,
232
+ "resize": "fit"
233
+ },
234
+ "thumb": {
235
+ "w": 150,
236
+ "h": 150,
237
+ "resize": "crop"
238
+ },
239
+ "large": {
240
+ "w": 768,
241
+ "h": 1024,
242
+ "resize": "fit"
243
+ }
244
+ }
245
+ }
246
+ ]
247
+ },
248
+ "twitter_filter_level": "low",
249
+ "twitter_lang": "en"
250
+ },
251
+ "favoritesCount": 0,
252
+ "twitter_entities": {
253
+ "hashtags": [],
254
+ "trends": [],
255
+ "urls": [
256
+ {
257
+ "url": "http://t.co/NtoHc3cOY4",
258
+ "expanded_url": "http://www.brouwerijdebrabandere.be/en/merken/petrus",
259
+ "display_url": "brouwerijdebrabandere.be/en/merken/petr…",
260
+ "indices": [
261
+ 71,
262
+ 93
263
+ ]
264
+ }
265
+ ],
266
+ "user_mentions": [
267
+ {
268
+ "screen_name": "stevedz",
269
+ "name": "Steven Dzilvelis",
270
+ "id": 88777459,
271
+ "id_str": "88777459",
272
+ "indices": [
273
+ 3,
274
+ 11
275
+ ]
276
+ },
277
+ {
278
+ "screen_name": "BrouwerijDB",
279
+ "name": "De Brabandere",
280
+ "id": 322774299,
281
+ "id_str": "322774299",
282
+ "indices": [
283
+ 99,
284
+ 111
285
+ ]
286
+ }
287
+ ],
288
+ "symbols": [],
289
+ "media": [
290
+ {
291
+ "id": 593935482129518600,
292
+ "id_str": "593935482129518593",
293
+ "indices": [
294
+ 139,
295
+ 140
296
+ ],
297
+ "media_url": "http://pbs.twimg.com/media/CD4VLJfUkAEI4px.jpg",
298
+ "media_url_https": "https://pbs.twimg.com/media/CD4VLJfUkAEI4px.jpg",
299
+ "url": "http://t.co/nHPh4YMdhN",
300
+ "display_url": "pic.twitter.com/nHPh4YMdhN",
301
+ "expanded_url": "http://twitter.com/stevedz/status/593935592573898753/photo/1",
302
+ "type": "photo",
303
+ "sizes": {
304
+ "small": {
305
+ "w": 340,
306
+ "h": 453,
307
+ "resize": "fit"
308
+ },
309
+ "medium": {
310
+ "w": 600,
311
+ "h": 800,
312
+ "resize": "fit"
313
+ },
314
+ "thumb": {
315
+ "w": 150,
316
+ "h": 150,
317
+ "resize": "crop"
318
+ },
319
+ "large": {
320
+ "w": 768,
321
+ "h": 1024,
322
+ "resize": "fit"
323
+ }
324
+ },
325
+ "source_status_id": 593935592573898800,
326
+ "source_status_id_str": "593935592573898753"
327
+ }
328
+ ]
329
+ },
330
+ "twitter_extended_entities": {
331
+ "media": [
332
+ {
333
+ "id": 593935482129518600,
334
+ "id_str": "593935482129518593",
335
+ "indices": [
336
+ 139,
337
+ 140
338
+ ],
339
+ "media_url": "http://pbs.twimg.com/media/CD4VLJfUkAEI4px.jpg",
340
+ "media_url_https": "https://pbs.twimg.com/media/CD4VLJfUkAEI4px.jpg",
341
+ "url": "http://t.co/nHPh4YMdhN",
342
+ "display_url": "pic.twitter.com/nHPh4YMdhN",
343
+ "expanded_url": "http://twitter.com/stevedz/status/593935592573898753/photo/1",
344
+ "type": "photo",
345
+ "sizes": {
346
+ "small": {
347
+ "w": 340,
348
+ "h": 453,
349
+ "resize": "fit"
350
+ },
351
+ "medium": {
352
+ "w": 600,
353
+ "h": 800,
354
+ "resize": "fit"
355
+ },
356
+ "thumb": {
357
+ "w": 150,
358
+ "h": 150,
359
+ "resize": "crop"
360
+ },
361
+ "large": {
362
+ "w": 768,
363
+ "h": 1024,
364
+ "resize": "fit"
365
+ }
366
+ },
367
+ "source_status_id": 593935592573898800,
368
+ "source_status_id_str": "593935592573898753"
369
+ }
370
+ ]
371
+ },
372
+ "twitter_filter_level": "low",
373
+ "twitter_lang": "en",
374
+ "retweetCount": 1,
375
+ "gnip": {
376
+ "matching_rules": [
377
+ {
378
+ "tag": "something"
379
+ }
380
+ ],
381
+ "urls": [
382
+ {
383
+ "url": "http://t.co/NtoHc3cOY4",
384
+ "expanded_url": "http://www.brouwerijdebrabandere.be/en/merken/petrus",
385
+ "expanded_status": 200
386
+ },
387
+ {
388
+ "url": "http://t.co/nHPh4YMdhN",
389
+ "expanded_url": "http://twitter.com/stevedz/status/593935592573898753/photo/1",
390
+ "expanded_status": 200
391
+ }
392
+ ],
393
+ "language": {
394
+ "value": "en"
395
+ },
396
+ "profileLocations": [
397
+ {
398
+ "objectType": "place",
399
+ "geo": {
400
+ "type": "point",
401
+ "coordinates": [
402
+ -104.9847,
403
+ 39.73915
404
+ ]
405
+ },
406
+ "address": {
407
+ "country": "United States",
408
+ "countryCode": "US",
409
+ "locality": "Denver",
410
+ "region": "Colorado",
411
+ "subRegion": "Denver County"
412
+ },
413
+ "displayName": "Denver, Colorado, United States"
414
+ }
415
+ ]
416
+ }
417
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "objectType": "activity",
3
+ "verb": "scrub_geo",
4
+ "actor": {
5
+ "id": "id:twitter.com:598851423"
6
+ },
7
+ "target": {
8
+ "up_to_id": "tag:search.twitter.com,2005:503024492839727104"
9
+ },
10
+ "timestampMs": "2014-08-27T23:51:13.651+00:00"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "objectType": "activity",
3
+ "verb": "delete",
4
+ "object": {
5
+ "id": "tag:search.twitter.com,2005:601140908713738240"
6
+ },
7
+ "actor": {
8
+ "id": "id:twitter.com:3130171131"
9
+ },
10
+ "timestampMs": "2015-05-20T21:42:18.944+00:00"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "verb": "status_withheld",
3
+ "object": {
4
+ "id": "tag:search.twitter.com,2005:425794620677554176",
5
+ "user_id": "tag:search.twitter.com,2012:user\/1375036644",
6
+ "withheld_in_countries": [
7
+ "XY"
8
+ ]
9
+ },
10
+ "timestampMs": "2014-08-27T23:49:41.839+00:00"
11
+ }
@@ -0,0 +1,233 @@
1
+ {
2
+ "id": "tag:search.twitter.com,2005:593895901623496704",
3
+ "objectType": "activity",
4
+ "actor": {
5
+ "objectType": "person",
6
+ "id": "id:twitter.com:2993982541",
7
+ "link": "http://www.twitter.com/jondee_test",
8
+ "displayName": "Test Demo",
9
+ "postedTime": "2015-01-24T00:12:53.000Z",
10
+ "image": "https://pbs.twimg.com/profile_images/593893018911907840/YM9oLru3_normal.png",
11
+ "summary": "this is a test account.",
12
+ "links": [
13
+ {
14
+ "href": null,
15
+ "rel": "me"
16
+ }
17
+ ],
18
+ "friendsCount": 43,
19
+ "followersCount": 2,
20
+ "listedCount": 0,
21
+ "statusesCount": 30,
22
+ "twitterTimeZone": "Mountain Time (US & Canada)",
23
+ "verified": false,
24
+ "utcOffset": "-21600",
25
+ "preferredUsername": "jondee_test",
26
+ "languages": [
27
+ "en"
28
+ ],
29
+ "location": {
30
+ "objectType": "place",
31
+ "displayName": "Denver, CO"
32
+ },
33
+ "favoritesCount": 0
34
+ },
35
+ "verb": "post",
36
+ "postedTime": "2015-04-30T21:53:11.000Z",
37
+ "generator": {
38
+ "displayName": "Twitter Web Client",
39
+ "link": "http://twitter.com"
40
+ },
41
+ "provider": {
42
+ "objectType": "service",
43
+ "displayName": "Twitter",
44
+ "link": "http://www.twitter.com"
45
+ },
46
+ "link": "http://twitter.com/jondee_test/statuses/593895901623496704",
47
+ "body": "This is a #test tweet @LoveforTestingT with an image. http://t.co/ZvgHovKZq4",
48
+ "object": {
49
+ "objectType": "note",
50
+ "id": "object:search.twitter.com,2005:593895901623496704",
51
+ "summary": "This is a #test tweet @LoveforTestingT with an image. http://t.co/ZvgHovKZq4",
52
+ "link": "http://twitter.com/jondee_test/statuses/593895901623496704",
53
+ "postedTime": "2015-04-30T21:53:11.000Z"
54
+ },
55
+ "favoritesCount": 0,
56
+ "location": {
57
+ "objectType": "place",
58
+ "displayName": "Boulder, CO",
59
+ "name": "Boulder",
60
+ "country_code": "United States",
61
+ "twitter_country_code": "US",
62
+ "link": "https://api.twitter.com/1.1/geo/id/fd70c22040963ac7.json",
63
+ "geo": {
64
+ "type": "Polygon",
65
+ "coordinates": [
66
+ [
67
+ [
68
+ -105.3017759,
69
+ 39.953552
70
+ ],
71
+ [
72
+ -105.3017759,
73
+ 40.094411
74
+ ],
75
+ [
76
+ -105.183597,
77
+ 40.094411
78
+ ],
79
+ [
80
+ -105.183597,
81
+ 39.953552
82
+ ]
83
+ ]
84
+ ]
85
+ },
86
+ "twitter_place_type": "city"
87
+ },
88
+ "twitter_entities": {
89
+ "hashtags": [
90
+ {
91
+ "text": "test",
92
+ "indices": [
93
+ 10,
94
+ 15
95
+ ]
96
+ }
97
+ ],
98
+ "trends": [],
99
+ "urls": [],
100
+ "user_mentions": [
101
+ {
102
+ "screen_name": "LoveforTestingT",
103
+ "name": "Leah ",
104
+ "id": 2432909010,
105
+ "id_str": "2432909010",
106
+ "indices": [
107
+ 22,
108
+ 38
109
+ ]
110
+ }
111
+ ],
112
+ "symbols": [],
113
+ "media": [
114
+ {
115
+ "id": 593895901145346000,
116
+ "id_str": "593895901145346048",
117
+ "indices": [
118
+ 54,
119
+ 76
120
+ ],
121
+ "media_url": "http://pbs.twimg.com/media/CD3xLO1UMAAvBgO.png",
122
+ "media_url_https": "https://pbs.twimg.com/media/CD3xLO1UMAAvBgO.png",
123
+ "url": "http://t.co/ZvgHovKZq4",
124
+ "display_url": "pic.twitter.com/ZvgHovKZq4",
125
+ "expanded_url": "http://twitter.com/johnd_test/status/593895901623496704/photo/1",
126
+ "type": "photo",
127
+ "sizes": {
128
+ "small": {
129
+ "w": 340,
130
+ "h": 340,
131
+ "resize": "fit"
132
+ },
133
+ "thumb": {
134
+ "w": 150,
135
+ "h": 150,
136
+ "resize": "crop"
137
+ },
138
+ "large": {
139
+ "w": 512,
140
+ "h": 512,
141
+ "resize": "fit"
142
+ },
143
+ "medium": {
144
+ "w": 512,
145
+ "h": 512,
146
+ "resize": "fit"
147
+ }
148
+ }
149
+ }
150
+ ]
151
+ },
152
+ "twitter_extended_entities": {
153
+ "media": [
154
+ {
155
+ "id": 593895901145346000,
156
+ "id_str": "593895901145346048",
157
+ "indices": [
158
+ 54,
159
+ 76
160
+ ],
161
+ "media_url": "http://pbs.twimg.com/media/CD3xLO1UMAAvBgO.png",
162
+ "media_url_https": "https://pbs.twimg.com/media/CD3xLO1UMAAvBgO.png",
163
+ "url": "http://t.co/ZvgHovKZq4",
164
+ "display_url": "pic.twitter.com/ZvgHovKZq4",
165
+ "expanded_url": "http://twitter.com/johnd_test/status/593895901623496704/photo/1",
166
+ "type": "photo",
167
+ "sizes": {
168
+ "small": {
169
+ "w": 340,
170
+ "h": 340,
171
+ "resize": "fit"
172
+ },
173
+ "thumb": {
174
+ "w": 150,
175
+ "h": 150,
176
+ "resize": "crop"
177
+ },
178
+ "large": {
179
+ "w": 512,
180
+ "h": 512,
181
+ "resize": "fit"
182
+ },
183
+ "medium": {
184
+ "w": 512,
185
+ "h": 512,
186
+ "resize": "fit"
187
+ }
188
+ }
189
+ }
190
+ ]
191
+ },
192
+ "twitter_filter_level": "low",
193
+ "twitter_lang": "en",
194
+ "retweetCount": 0,
195
+ "gnip": {
196
+ "matching_rules": [
197
+ {
198
+ "value": "(\"@GooglePlay\" OR \"@YouTube\" OR \"Google Music\" OR \"YouTube\")(\"watching\" OR \"watched\" OR saw it on OR heard OR look at OR listen to OR heard OR read OR got it from OR play OR recording OR DVR OR going to see OR just saw OR checking)-\"itunes store\" -store -#apps -#download -#free -#games -#giveaway -#iphone -#iphonegames -#ipad -contest -win -\"deals\" -\"#deals\" -offers -#offers -rules lang:en followers_count:300 -url_contains:buy -is:retweet -bio_contains:followback -url_contains:itunes.apple.com",
199
+ "tag": "something"
200
+ }
201
+ ],
202
+ "urls": [
203
+ {
204
+ "url": "http://t.co/ZvgHovKZq4",
205
+ "expanded_url": "http://twitter.com/johnd_test/status/593895901623496704/photo/1",
206
+ "expanded_status": 200
207
+ }
208
+ ],
209
+ "language": {
210
+ "value": "en"
211
+ },
212
+ "profileLocations": [
213
+ {
214
+ "objectType": "place",
215
+ "geo": {
216
+ "type": "point",
217
+ "coordinates": [
218
+ -104.9847,
219
+ 39.73915
220
+ ]
221
+ },
222
+ "address": {
223
+ "country": "United States",
224
+ "countryCode": "US",
225
+ "locality": "Denver",
226
+ "region": "Colorado",
227
+ "subRegion": "Denver County"
228
+ },
229
+ "displayName": "Denver, Colorado, United States"
230
+ }
231
+ ]
232
+ }
233
+ }