purdie 0.0.12 → 0.0.13

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -13
  3. data/Rakefile +6 -2
  4. data/features/comments.feature +2 -13
  5. data/features/duff-credentials.feature +2 -3
  6. data/features/flickr-album.feature +5 -0
  7. data/features/flickr-different-size.feature +1 -0
  8. data/features/flickr-with-lookups.feature +1 -0
  9. data/features/rfm.feature +5 -0
  10. data/features/select-file.feature +26 -24
  11. data/features/soundcloud-set.feature +2 -2
  12. data/features/support/fixtures/vcr.nope/A_URL_we_don_t_understand/Handle_a_URL_we_don_t_recognise.yml +125 -0
  13. data/features/support/fixtures/vcr.nope/First_contact_with_the_Real_World/Generate_YAML_for_the_Raw_Funk_Maharishi.yml +536 -0
  14. data/features/support/fixtures/vcr.nope/Flickr/Generate_Flickr_YAML.yml +131 -0
  15. data/features/support/fixtures/vcr.nope/Flickr/Generate_Flickr_YAML_with_lookups.yml +129 -0
  16. data/features/support/fixtures/vcr.nope/Flickr_album/Generate_Flickr_YAML_for_an_album.yml +2280 -0
  17. data/features/support/fixtures/vcr.nope/Handle_comments/Handle_comments_in_a_source_file.yml +131 -0
  18. data/features/support/fixtures/vcr.nope/Missing_or_bad_credentials/Bad_credentials_for_multiple_services.yml +156 -0
  19. data/features/support/fixtures/{vcr → vcr.nope}/Purdie/Generate_several_YAML.yml +0 -0
  20. data/features/support/fixtures/vcr.nope/Select_a_file_to_process/Choose_file_to_process.yml +220 -0
  21. data/features/support/fixtures/vcr.nope/Set_Flickr_picturesize/Generate_Flickr_YAML.yml +131 -0
  22. data/features/support/fixtures/{vcr/Select_a_file_to_process/Choose_file_to_process.yml → vcr.nope/Soundcloud/Generate_SoundCloud_YAML.yml} +4 -4
  23. data/features/support/fixtures/vcr.nope/Soundcloud/Generate_SoundCloud_YAML_for_multiple_tracks.yml +181 -0
  24. data/features/support/fixtures/vcr.nope/Soundcloud_set/Generate_YAML_for_a_SoundCloud_set.yml +461 -0
  25. data/features/support/fixtures/vcr.nope/Vimeo/Generate_Vimeo_YAML.yml +53 -0
  26. data/features/support/fixtures/vcr.nope/Vimeo_albums/Generate_YAML_for_a_Vimeo_album.yml +210 -0
  27. data/features/support/fixtures/vcr.nope/YouTube/Generate_YouTube_YAML.yml +970 -0
  28. data/features/support/fixtures/vcr.nope/YouTube_playlists/Generate_YAML_for_a_YouTube_playlist.yml +9688 -0
  29. data/features/support/fixtures/vcr/A_URL_we_don_t_understand/Handle_a_URL_we_don_t_recognise.yml +23 -17
  30. data/features/support/fixtures/vcr/First_contact_with_the_Real_World/Generate_YAML_for_the_Raw_Funk_Maharishi.yml +134 -57
  31. data/features/support/fixtures/vcr/Flickr/Generate_Flickr_YAML.yml +24 -18
  32. data/features/support/fixtures/vcr/Flickr/Generate_Flickr_YAML_with_lookups.yml +25 -19
  33. data/features/support/fixtures/vcr/Flickr_album/Generate_Flickr_YAML_for_an_album.yml +1438 -193
  34. data/features/support/fixtures/vcr/Handle_comments/Handle_comments_in_a_source_file.yml +23 -100
  35. data/features/support/fixtures/vcr/Missing_or_bad_credentials/Bad_credentials_for_multiple_services.yml +15 -15
  36. data/features/support/fixtures/vcr/Set_Flickr_picturesize/Generate_Flickr_YAML.yml +24 -18
  37. data/features/support/fixtures/vcr/Soundcloud/Generate_SoundCloud_YAML.yml +9 -8
  38. data/features/support/fixtures/vcr/Soundcloud/Generate_SoundCloud_YAML_for_multiple_tracks.yml +14 -14
  39. data/features/support/fixtures/vcr/Soundcloud_set/Generate_YAML_for_a_SoundCloud_set.yml +41 -40
  40. data/features/support/fixtures/vcr/Vimeo/Generate_Vimeo_YAML.yml +8 -8
  41. data/features/support/fixtures/vcr/Vimeo_albums/Generate_YAML_for_a_Vimeo_album.yml +38 -38
  42. data/features/support/fixtures/vcr/YouTube/Generate_YouTube_YAML.yml +873 -873
  43. data/features/support/fixtures/vcr/YouTube_playlists/Generate_YAML_for_a_YouTube_playlist.yml +9108 -1923
  44. data/features/support/hooks.rb +8 -0
  45. data/features/youtube-playlist.feature +0 -2
  46. data/lib/purdie.rb +2 -8
  47. data/lib/purdie/bernard.rb +7 -60
  48. data/lib/purdie/cli.rb +1 -1
  49. data/lib/purdie/config.rb +17 -8
  50. data/lib/purdie/helpers.rb +8 -0
  51. data/lib/purdie/ingester.rb +16 -16
  52. data/lib/purdie/item.rb +36 -0
  53. data/lib/purdie/resolver.rb +15 -0
  54. data/lib/purdie/services/soundcloud.rb +1 -1
  55. data/lib/purdie/source_list.rb +54 -16
  56. data/lib/purdie/version.rb +1 -1
  57. data/purdie.gemspec +19 -19
  58. data/spec/bernard_spec.rb +30 -0
  59. data/spec/config_spec.rb +4 -4
  60. data/spec/item_spec.rb +46 -0
  61. data/spec/resolver_spec.rb +40 -0
  62. data/spec/services/youtube_spec.rb +1 -1
  63. data/spec/source_list_spec.rb +59 -34
  64. data/spec/spec_helper.rb +1 -1
  65. data/spec/support/fixtures/output-generator +2 -0
  66. data/spec/support/fixtures/youtube.tubes +1 -0
  67. data/spec/vcr/Purdie_Bernard/deals_with_YouTube.yml +9686 -0
  68. data/spec/vcr/Purdie_Bernard/processes_files.yml +570 -0
  69. data/spec/vcr/Purdie_Item/populates_itself.yml +182 -0
  70. data/spec/vcr/Purdie_Resolver/resolves_a_Flickr_set.yml +772 -0
  71. data/spec/vcr/Purdie_Resolver/resolves_a_SoundCloud_set.yml +103 -0
  72. data/spec/vcr/Purdie_Resolver/resolves_a_YouTube_playlist.yml +970 -0
  73. data/spec/vcr/Purdie_SourceList/constructs_a_list_from_a_set_URL.yml +772 -0
  74. data/spec/vcr/Purdie_SourceList/make_output/actually_makes_output.yml +526 -0
  75. data/spec/vcr/Purdie_SourceList/process_its_items/processes_items.yml +210 -0
  76. data/spec/vcr/Purdie_SourceList/resolve_sets/constructs_a_list_from_a_set_URL.yml +95 -77
  77. metadata +78 -22
  78. data/features/flickr-alternative-outfile.feature +0 -29
  79. data/features/purdie.feature +0 -48
@@ -0,0 +1,131 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.flickr.com/services/rest/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: photo_id=15631479625&method=flickr.photos.getInfo&format=json&nojsoncallback=1
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - FlickRaw/0.9.8
16
+ Authorization:
17
+ - OAuth realm="https://api.flickr.com/services/rest/", oauth_consumer_key="<FLICKR_API_KEY>",
18
+ oauth_nonce="C8F7RhYnRuC6Gnx3fd0faxe%2BdjhaVjyB10SNP0I%2BEPg%3D", oauth_signature="<FLICKR_SECRET>%26",
19
+ oauth_signature_method="PLAINTEXT", oauth_timestamp="1427832530", oauth_token="",
20
+ oauth_version="1.0"
21
+ Content-Type:
22
+ - application/x-www-form-urlencoded
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Date:
29
+ - Tue, 31 Mar 2015 20:08:50 GMT
30
+ Content-Type:
31
+ - application/json
32
+ Content-Length:
33
+ - '665'
34
+ P3p:
35
+ - policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV
36
+ TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY
37
+ ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
38
+ Cache-Control:
39
+ - private
40
+ X-Served-By:
41
+ - www41.flickr.bf1.yahoo.com
42
+ Vary:
43
+ - Accept-Encoding
44
+ Age:
45
+ - '0'
46
+ Via:
47
+ - http/1.1 fts110.flickr.bf1.yahoo.com (ApacheTrafficServer/4.0.2 [cMsSf ]),
48
+ http/1.1 r17.ycpi.ir2.yahoo.net (ApacheTrafficServer [cMsSf ])
49
+ Server:
50
+ - ATS
51
+ Strict-Transport-Security:
52
+ - max-age=259200
53
+ Connection:
54
+ - keep-alive
55
+ body:
56
+ encoding: ASCII-8BIT
57
+ string: '{"photo":{"id":"15631479625","secret":"b6168ee903","server":"3933","farm":4,"dateuploaded":"1414326010","isfavorite":0,"license":"1","safety_level":"0","rotation":0,"originalsecret":"3191340cdb","originalformat":"jpg","owner":{"nsid":"128943844@N06","username":"rawfunkmaharishi","realname":"Raw
58
+ Funk Maharishi","location":"","iconserver":"3933","iconfarm":4,"path_alias":"rawfunkmaharishi"},"title":{"_content":"The
59
+ Comedy, October 2014"},"description":{"_content":""},"visibility":{"ispublic":1,"isfriend":0,"isfamily":0},"dates":{"posted":"1414326010","taken":"2014-10-22
60
+ 15:54:24","takengranularity":"0","takenunknown":"0","lastupdate":"1416111853"},"views":"96","editability":{"cancomment":0,"canaddmeta":0},"publiceditability":{"cancomment":1,"canaddmeta":0},"usage":{"candownload":1,"canblog":0,"canprint":0,"canshare":1},"comments":{"_content":"0"},"notes":{"note":[]},"people":{"haspeople":0},"tags":{"tag":[{"id":"128898522-15631479625-1422028","author":"128943844@N06","authorname":"rawfunkmaharishi","raw":"the
61
+ comedy","_content":"thecomedy","machine_tag":0},{"id":"128898522-15631479625-17975","author":"128943844@N06","authorname":"rawfunkmaharishi","raw":"gigs","_content":"gigs","machine_tag":0},{"id":"128898522-15631479625-228989594","author":"128943844@N06","authorname":"rawfunkmaharishi","raw":"photographer:kim","_content":"photographerkim","machine_tag":0}]},"urls":{"url":[{"type":"photopage","_content":"https:\/\/www.flickr.com\/photos\/rawfunkmaharishi\/15631479625\/"}]},"media":"photo"},"stat":"ok"}'
62
+ http_version:
63
+ recorded_at: Tue, 31 Mar 2015 20:08:50 GMT
64
+ - request:
65
+ method: post
66
+ uri: https://api.flickr.com/services/rest/
67
+ body:
68
+ encoding: US-ASCII
69
+ string: method=flickr.photos.licenses.getInfo&format=json&nojsoncallback=1
70
+ headers:
71
+ Accept-Encoding:
72
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
73
+ Accept:
74
+ - "*/*"
75
+ User-Agent:
76
+ - FlickRaw/0.9.8
77
+ Authorization:
78
+ - OAuth realm="https://api.flickr.com/services/rest/", oauth_consumer_key="<FLICKR_API_KEY>",
79
+ oauth_nonce="Ff%2FT38AX4yoRHIZOF6XE9MgE4BZqLlN9s9BBAPs5Zv8%3D", oauth_signature="<FLICKR_SECRET>%26",
80
+ oauth_signature_method="PLAINTEXT", oauth_timestamp="1427832530", oauth_token="",
81
+ oauth_version="1.0"
82
+ Content-Type:
83
+ - application/x-www-form-urlencoded
84
+ response:
85
+ status:
86
+ code: 200
87
+ message: OK
88
+ headers:
89
+ Date:
90
+ - Tue, 31 Mar 2015 20:08:51 GMT
91
+ Content-Type:
92
+ - application/json
93
+ Content-Length:
94
+ - '371'
95
+ P3p:
96
+ - policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV
97
+ TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY
98
+ ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
99
+ Cache-Control:
100
+ - private
101
+ X-Served-By:
102
+ - www255.flickr.bf1.yahoo.com
103
+ Vary:
104
+ - Accept-Encoding
105
+ Age:
106
+ - '2'
107
+ Via:
108
+ - http/1.1 fts105.flickr.bf1.yahoo.com (ApacheTrafficServer/4.0.2 [cMsSf ]),
109
+ http/1.1 r11.ycpi.ams.yahoo.net (ApacheTrafficServer [cMsSf ])
110
+ Server:
111
+ - ATS
112
+ Strict-Transport-Security:
113
+ - max-age=259200
114
+ Connection:
115
+ - keep-alive
116
+ body:
117
+ encoding: ASCII-8BIT
118
+ string: '{"licenses":{"license":[{"id":"0","name":"All Rights Reserved","url":""},{"id":"4","name":"Attribution
119
+ License","url":"https:\/\/creativecommons.org\/licenses\/by\/2.0\/"},{"id":"6","name":"Attribution-NoDerivs
120
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-nd\/2.0\/"},{"id":"3","name":"Attribution-NonCommercial-NoDerivs
121
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/"},{"id":"2","name":"Attribution-NonCommercial
122
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-nc\/2.0\/"},{"id":"1","name":"Attribution-NonCommercial-ShareAlike
123
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-nc-sa\/2.0\/"},{"id":"5","name":"Attribution-ShareAlike
124
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/"},{"id":"7","name":"No
125
+ known copyright restrictions","url":"https:\/\/www.flickr.com\/commons\/usage\/"},{"id":"8","name":"United
126
+ States Government Work","url":"http:\/\/www.usa.gov\/copyright.shtml"},{"id":"9","name":"Public
127
+ Domain Dedication (CC0)","url":"https:\/\/creativecommons.org\/publicdomain\/zero\/1.0\/"},{"id":"10","name":"Public
128
+ Domain Mark","url":"https:\/\/creativecommons.org\/publicdomain\/mark\/1.0\/"}]},"stat":"ok"}'
129
+ http_version:
130
+ recorded_at: Tue, 31 Mar 2015 20:08:51 GMT
131
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,156 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.vimeo.com/videos/110132671
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Authorization:
11
+ - bearer
12
+ Accept:
13
+ - application/json
14
+ response:
15
+ status:
16
+ code: 401
17
+ message: Authorization Required
18
+ headers:
19
+ Date:
20
+ - Tue, 17 Mar 2015 18:47:28 GMT
21
+ Server:
22
+ - nginx
23
+ Content-Type:
24
+ - application/vnd.vimeo.error+json
25
+ Cache-Control:
26
+ - no-cache, max-age=315360000
27
+ Www-Authenticate:
28
+ - Bearer error="invalid_token"
29
+ Expires:
30
+ - Fri, 14 Mar 2025 18:47:28 GMT
31
+ Content-Length:
32
+ - '46'
33
+ Accept-Ranges:
34
+ - bytes
35
+ Via:
36
+ - 1.1 varnish
37
+ X-Served-By:
38
+ - cache-lcy1123-LCY
39
+ X-Cache:
40
+ - MISS
41
+ X-Cache-Hits:
42
+ - '0'
43
+ X-Timer:
44
+ - S1426618048.579298,VS0,VE90
45
+ Vary:
46
+ - Accept,Vimeo-Client-Id,Accept-Encoding
47
+ body:
48
+ encoding: UTF-8
49
+ string: '{"error":"A valid user token must be passed."}'
50
+ http_version:
51
+ recorded_at: Tue, 17 Mar 2015 18:47:28 GMT
52
+ - request:
53
+ method: get
54
+ uri: https://api.vimeo.com/videos/110133117
55
+ body:
56
+ encoding: US-ASCII
57
+ string: ''
58
+ headers:
59
+ Authorization:
60
+ - bearer
61
+ Accept:
62
+ - application/json
63
+ response:
64
+ status:
65
+ code: 401
66
+ message: Authorization Required
67
+ headers:
68
+ Date:
69
+ - Tue, 17 Mar 2015 18:47:28 GMT
70
+ Server:
71
+ - nginx
72
+ Content-Type:
73
+ - application/vnd.vimeo.error+json
74
+ Cache-Control:
75
+ - no-cache, max-age=315360000
76
+ Www-Authenticate:
77
+ - Bearer error="invalid_token"
78
+ Expires:
79
+ - Fri, 14 Mar 2025 18:47:28 GMT
80
+ Content-Length:
81
+ - '46'
82
+ Accept-Ranges:
83
+ - bytes
84
+ Via:
85
+ - 1.1 varnish
86
+ X-Served-By:
87
+ - cache-lcy1123-LCY
88
+ X-Cache:
89
+ - MISS
90
+ X-Cache-Hits:
91
+ - '0'
92
+ X-Timer:
93
+ - S1426618048.778660,VS0,VE84
94
+ Vary:
95
+ - Accept,Vimeo-Client-Id,Accept-Encoding
96
+ body:
97
+ encoding: UTF-8
98
+ string: '{"error":"A valid user token must be passed."}'
99
+ http_version:
100
+ recorded_at: Tue, 17 Mar 2015 18:47:28 GMT
101
+ - request:
102
+ method: get
103
+ uri: https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest?key=fji423cj234
104
+ body:
105
+ encoding: UTF-8
106
+ string: ''
107
+ headers:
108
+ User-Agent:
109
+ - |-
110
+ Purdie/0.0.12 google-api-ruby-client/0.8.2 Mac OS X/10.10.2
111
+ (gzip)
112
+ Accept-Encoding:
113
+ - gzip
114
+ Content-Type:
115
+ - ''
116
+ Accept:
117
+ - "*/*"
118
+ response:
119
+ status:
120
+ code: 400
121
+ message: Bad Request
122
+ headers:
123
+ Vary:
124
+ - Origin
125
+ - X-Origin
126
+ Content-Type:
127
+ - application/json; charset=UTF-8
128
+ Content-Encoding:
129
+ - gzip
130
+ Date:
131
+ - Tue, 17 Mar 2015 18:47:28 GMT
132
+ Expires:
133
+ - Tue, 17 Mar 2015 18:47:28 GMT
134
+ Cache-Control:
135
+ - private, max-age=0
136
+ X-Content-Type-Options:
137
+ - nosniff
138
+ X-Frame-Options:
139
+ - SAMEORIGIN
140
+ X-Xss-Protection:
141
+ - 1; mode=block
142
+ Server:
143
+ - GSE
144
+ Alternate-Protocol:
145
+ - 443:quic,p=0.5
146
+ Transfer-Encoding:
147
+ - chunked
148
+ body:
149
+ encoding: ASCII-8BIT
150
+ string: !binary |-
151
+ H4sIAAAAAAAAAKvmUlBKLSrKL1KyUqjmUoByioG8aCAPLAQUTMnPTczMAwoq
152
+ lRYnpqf6ZOZmlhQr6UAki1ITi/PBktmplZ55ZYk5mSkwudzUYpAGkKRTYopC
153
+ UGphaWpxiRJIshZIxIKUKSXnp4BUmBgYgLk49dRy1XIBAHbQcHGwAAAA
154
+ http_version:
155
+ recorded_at: Tue, 17 Mar 2015 18:47:28 GMT
156
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,220 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.flickr.com/services/rest/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: photo_id=15631479625&method=flickr.photos.getInfo&format=json&nojsoncallback=1
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - FlickRaw/0.9.8
16
+ Authorization:
17
+ - OAuth realm="https://api.flickr.com/services/rest/", oauth_consumer_key="<FLICKR_API_KEY>",
18
+ oauth_nonce="oeHmJ%2BoOCDTZn%2BmAvtdp31h9J0mG%2FOY%2BUOMfyee%2Bf58%3D", oauth_signature="<FLICKR_SECRET>%26",
19
+ oauth_signature_method="PLAINTEXT", oauth_timestamp="1427832873", oauth_token="",
20
+ oauth_version="1.0"
21
+ Content-Type:
22
+ - application/x-www-form-urlencoded
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ Date:
29
+ - Tue, 31 Mar 2015 20:14:33 GMT
30
+ Content-Type:
31
+ - application/json
32
+ Content-Length:
33
+ - '665'
34
+ P3p:
35
+ - policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV
36
+ TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY
37
+ ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
38
+ Cache-Control:
39
+ - private
40
+ X-Served-By:
41
+ - www301.flickr.bf1.yahoo.com
42
+ Vary:
43
+ - Accept-Encoding
44
+ Age:
45
+ - '0'
46
+ Via:
47
+ - http/1.1 fts119.flickr.bf1.yahoo.com (ApacheTrafficServer/4.0.2 [cMsSf ]),
48
+ http/1.1 r24.ycpi.ir2.yahoo.net (ApacheTrafficServer [cMsSf ])
49
+ Server:
50
+ - ATS
51
+ Strict-Transport-Security:
52
+ - max-age=259200
53
+ Connection:
54
+ - keep-alive
55
+ body:
56
+ encoding: ASCII-8BIT
57
+ string: '{"photo":{"id":"15631479625","secret":"b6168ee903","server":"3933","farm":4,"dateuploaded":"1414326010","isfavorite":0,"license":"1","safety_level":"0","rotation":0,"originalsecret":"3191340cdb","originalformat":"jpg","owner":{"nsid":"128943844@N06","username":"rawfunkmaharishi","realname":"Raw
58
+ Funk Maharishi","location":"","iconserver":"3933","iconfarm":4,"path_alias":"rawfunkmaharishi"},"title":{"_content":"The
59
+ Comedy, October 2014"},"description":{"_content":""},"visibility":{"ispublic":1,"isfriend":0,"isfamily":0},"dates":{"posted":"1414326010","taken":"2014-10-22
60
+ 15:54:24","takengranularity":"0","takenunknown":"0","lastupdate":"1416111853"},"views":"96","editability":{"cancomment":0,"canaddmeta":0},"publiceditability":{"cancomment":1,"canaddmeta":0},"usage":{"candownload":1,"canblog":0,"canprint":0,"canshare":1},"comments":{"_content":"0"},"notes":{"note":[]},"people":{"haspeople":0},"tags":{"tag":[{"id":"128898522-15631479625-1422028","author":"128943844@N06","authorname":"rawfunkmaharishi","raw":"the
61
+ comedy","_content":"thecomedy","machine_tag":0},{"id":"128898522-15631479625-17975","author":"128943844@N06","authorname":"rawfunkmaharishi","raw":"gigs","_content":"gigs","machine_tag":0},{"id":"128898522-15631479625-228989594","author":"128943844@N06","authorname":"rawfunkmaharishi","raw":"photographer:kim","_content":"photographerkim","machine_tag":0}]},"urls":{"url":[{"type":"photopage","_content":"https:\/\/www.flickr.com\/photos\/rawfunkmaharishi\/15631479625\/"}]},"media":"photo"},"stat":"ok"}'
62
+ http_version:
63
+ recorded_at: Tue, 31 Mar 2015 20:14:33 GMT
64
+ - request:
65
+ method: post
66
+ uri: https://api.flickr.com/services/rest/
67
+ body:
68
+ encoding: US-ASCII
69
+ string: method=flickr.photos.licenses.getInfo&format=json&nojsoncallback=1
70
+ headers:
71
+ Accept-Encoding:
72
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
73
+ Accept:
74
+ - "*/*"
75
+ User-Agent:
76
+ - FlickRaw/0.9.8
77
+ Authorization:
78
+ - OAuth realm="https://api.flickr.com/services/rest/", oauth_consumer_key="<FLICKR_API_KEY>",
79
+ oauth_nonce="UAW2picTqRVCz8UbLAfroJ%2FxyhUONtw0NZqEQeA2qFo%3D", oauth_signature="<FLICKR_SECRET>%26",
80
+ oauth_signature_method="PLAINTEXT", oauth_timestamp="1427832873", oauth_token="",
81
+ oauth_version="1.0"
82
+ Content-Type:
83
+ - application/x-www-form-urlencoded
84
+ response:
85
+ status:
86
+ code: 200
87
+ message: OK
88
+ headers:
89
+ Date:
90
+ - Tue, 31 Mar 2015 20:14:34 GMT
91
+ Content-Type:
92
+ - application/json
93
+ Content-Length:
94
+ - '371'
95
+ P3p:
96
+ - policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV
97
+ TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY
98
+ ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
99
+ Cache-Control:
100
+ - private
101
+ X-Served-By:
102
+ - www263.flickr.bf1.yahoo.com
103
+ Vary:
104
+ - Accept-Encoding
105
+ Age:
106
+ - '2'
107
+ Via:
108
+ - http/1.1 fts114.flickr.bf1.yahoo.com (ApacheTrafficServer/4.0.2 [cMsSf ]),
109
+ http/1.1 r11.ycpi.ams.yahoo.net (ApacheTrafficServer [cMsSf ])
110
+ Server:
111
+ - ATS
112
+ Strict-Transport-Security:
113
+ - max-age=259200
114
+ Connection:
115
+ - keep-alive
116
+ body:
117
+ encoding: ASCII-8BIT
118
+ string: '{"licenses":{"license":[{"id":"0","name":"All Rights Reserved","url":""},{"id":"4","name":"Attribution
119
+ License","url":"https:\/\/creativecommons.org\/licenses\/by\/2.0\/"},{"id":"6","name":"Attribution-NoDerivs
120
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-nd\/2.0\/"},{"id":"3","name":"Attribution-NonCommercial-NoDerivs
121
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/"},{"id":"2","name":"Attribution-NonCommercial
122
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-nc\/2.0\/"},{"id":"1","name":"Attribution-NonCommercial-ShareAlike
123
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-nc-sa\/2.0\/"},{"id":"5","name":"Attribution-ShareAlike
124
+ License","url":"https:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/"},{"id":"7","name":"No
125
+ known copyright restrictions","url":"https:\/\/www.flickr.com\/commons\/usage\/"},{"id":"8","name":"United
126
+ States Government Work","url":"http:\/\/www.usa.gov\/copyright.shtml"},{"id":"9","name":"Public
127
+ Domain Dedication (CC0)","url":"https:\/\/creativecommons.org\/publicdomain\/zero\/1.0\/"},{"id":"10","name":"Public
128
+ Domain Mark","url":"https:\/\/creativecommons.org\/publicdomain\/mark\/1.0\/"}]},"stat":"ok"}'
129
+ http_version:
130
+ recorded_at: Tue, 31 Mar 2015 20:14:34 GMT
131
+ - request:
132
+ method: get
133
+ uri: http://api.soundcloud.com/resolve?client_id=<SOUNDCLOUD_CLIENT_ID>&format=json&url=https://soundcloud.com/rawfunkmaharishi/hexaflexagon-1
134
+ body:
135
+ encoding: US-ASCII
136
+ string: ''
137
+ headers:
138
+ User-Agent:
139
+ - SoundCloud Ruby Wrapper 0.13.3
140
+ response:
141
+ status:
142
+ code: 302
143
+ message: Found
144
+ headers:
145
+ Access-Control-Allow-Headers:
146
+ - Accept, Authorization, Content-Type, Origin
147
+ Access-Control-Allow-Methods:
148
+ - GET, PUT, POST, DELETE
149
+ Access-Control-Allow-Origin:
150
+ - "*"
151
+ Access-Control-Expose-Headers:
152
+ - Date
153
+ Cache-Control:
154
+ - no-cache
155
+ Content-Type:
156
+ - application/json; charset=utf-8
157
+ Date:
158
+ - Tue, 31 Mar 2015 20:14:34 GMT
159
+ Location:
160
+ - https://api.soundcloud.com/tracks/193008299.json?client_id=<SOUNDCLOUD_CLIENT_ID>
161
+ Server:
162
+ - am/2
163
+ Content-Length:
164
+ - '129'
165
+ body:
166
+ encoding: UTF-8
167
+ string: '{"status":"302 - Found","location":"https://api.soundcloud.com/tracks/193008299.json?client_id=<SOUNDCLOUD_CLIENT_ID>"}'
168
+ http_version:
169
+ recorded_at: Tue, 31 Mar 2015 20:14:34 GMT
170
+ - request:
171
+ method: get
172
+ uri: https://api.soundcloud.com/tracks/193008299.json?client_id=<SOUNDCLOUD_CLIENT_ID>
173
+ body:
174
+ encoding: US-ASCII
175
+ string: ''
176
+ headers:
177
+ User-Agent:
178
+ - SoundCloud Ruby Wrapper 0.13.3
179
+ response:
180
+ status:
181
+ code: 200
182
+ message: OK
183
+ headers:
184
+ Accept-Ranges:
185
+ - bytes
186
+ Access-Control-Allow-Headers:
187
+ - Accept, Authorization, Content-Type, Origin
188
+ Access-Control-Allow-Methods:
189
+ - GET, PUT, POST, DELETE
190
+ Access-Control-Allow-Origin:
191
+ - "*"
192
+ Access-Control-Expose-Headers:
193
+ - Date
194
+ Cache-Control:
195
+ - max-age=600, public
196
+ Content-Type:
197
+ - application/json; charset=utf-8
198
+ Date:
199
+ - Tue, 31 Mar 2015 20:14:34 GMT
200
+ Etag:
201
+ - '"22a8481cd85e1e7be64128c639cc21b0"'
202
+ Last-Modified:
203
+ - Tue, 31 Mar 2015 16:20:04 GMT
204
+ Server:
205
+ - ECS (lhr/4BCD)
206
+ Vary:
207
+ - Accept-Encoding
208
+ X-Cache:
209
+ - HIT
210
+ Content-Length:
211
+ - '1555'
212
+ body:
213
+ encoding: UTF-8
214
+ string: '{"kind":"track","id":193008299,"created_at":"2015/02/25 19:24:51 +0000","user_id":56479293,"duration":209626,"commentable":true,"state":"finished","original_content_size":8436471,"last_modified":"2015/02/27
215
+ 17:08:45 +0000","sharing":"public","tag_list":"\"islington academy sessions\"","permalink":"hexaflexagon-1","streamable":true,"embeddable_by":"all","downloadable":true,"purchase_url":null,"label_id":null,"purchase_title":null,"genre":"funk","title":"Hexaflexagon","description":"Islington
216
+ Academy","label_name":null,"release":null,"track_type":null,"key_signature":null,"isrc":null,"video_url":null,"bpm":null,"release_year":2015,"release_month":2,"release_day":18,"original_format":"mp3","license":"cc-by-nc-sa","uri":"https://api.soundcloud.com/tracks/193008299","user":{"id":56479293,"kind":"user","permalink":"rawfunkmaharishi","username":"Raw
217
+ Funk Maharishi","last_modified":"2015/03/23 09:26:53 +0000","uri":"https://api.soundcloud.com/users/56479293","permalink_url":"http://soundcloud.com/rawfunkmaharishi","avatar_url":"https://i1.sndcdn.com/avatars-000110957821-ac80gy-large.jpg"},"permalink_url":"http://soundcloud.com/rawfunkmaharishi/hexaflexagon-1","artwork_url":null,"waveform_url":"https://w1.sndcdn.com/CxyZz6RUbqZN_m.png","stream_url":"https://api.soundcloud.com/tracks/193008299/stream","download_url":"https://api.soundcloud.com/tracks/193008299/download","playback_count":59,"download_count":3,"favoritings_count":0,"comment_count":0,"attachments_uri":"https://api.soundcloud.com/tracks/193008299/attachments","policy":"ALLOW"}'
218
+ http_version:
219
+ recorded_at: Tue, 31 Mar 2015 20:14:34 GMT
220
+ recorded_with: VCR 2.9.3