purdie 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/config/defaults.yaml +15 -6
- data/features/purdie.feature +11 -1
- data/features/support/env.rb +2 -0
- data/features/support/fixtures/config/purdie.yaml +2 -2
- data/features/support/fixtures/vcr/Purdie/Generate_several_YAML.yml +80 -41
- data/features/support/fixtures/vcr/Soundcloud/Generate_SoundCloud_YAML.yml +25 -25
- data/features/support/fixtures/vcr/Soundcloud/Generate_SoundCloud_YAML_for_multiple_tracks.yml +25 -25
- data/features/support/fixtures/vcr/Vimeo/Generate_Vimeo_YAML.yml +41 -0
- data/features/support/hooks.rb +4 -0
- data/features/vimeo.feature +17 -0
- data/lib/purdie/bernard.rb +14 -3
- data/lib/purdie/config.rb +2 -2
- data/lib/purdie/services/flickr.rb +3 -3
- data/lib/purdie/services/soundcloud.rb +1 -1
- data/lib/purdie/services/vimeo.rb +40 -0
- data/lib/purdie/version.rb +1 -1
- data/lib/purdie.rb +1 -0
- data/spec/config_spec.rb +0 -5
- data/spec/services/flickr_spec.rb +4 -9
- data/spec/services/vimeo_spec.rb +24 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/vcr/Purdie_Services_Flickr/falls_back_to_the_default_photographer_name.yml +122 -0
- data/spec/vcr/Purdie_Services_SoundCloud/connects_to_SoundCloud.yml +29 -28
- data/spec/vcr/Purdie_Services_Vimeo/gets_a_video.yml +41 -0
- data/spec/vcr/Purdie_Services_Vimeo/refines_a_video.yml +41 -0
- metadata +15 -2
@@ -0,0 +1,41 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.vimeo.com/videos/117102891
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Authorization:
|
11
|
+
- bearer d101f5c2b664609057de84a099964b09
|
12
|
+
Accept:
|
13
|
+
- application/json
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: OK
|
18
|
+
headers:
|
19
|
+
Date:
|
20
|
+
- Tue, 03 Mar 2015 17:44:01 GMT
|
21
|
+
Server:
|
22
|
+
- Apache
|
23
|
+
Vary:
|
24
|
+
- Accept,Vimeo-Client-Id,Accept-Encoding
|
25
|
+
Cache-Control:
|
26
|
+
- no-cache, max-age=315360000
|
27
|
+
Expires:
|
28
|
+
- Fri, 28 Feb 2025 17:44:01 GMT
|
29
|
+
Content-Length:
|
30
|
+
- '3688'
|
31
|
+
Content-Type:
|
32
|
+
- application/vnd.vimeo.video+json
|
33
|
+
Via:
|
34
|
+
- 1.1 fra1-10
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: '{"uri":"/videos/117102891","name":"Bernard","description":null,"link":"https://vimeo.com/117102891","duration":239,"width":1280,"language":null,"height":720,"created_time":"2015-01-18T17:26:10+00:00","modified_time":"2015-02-25T21:11:06+00:00","content_rating":["unrated"],"license":"by-nc-sa","privacy":{"view":"anybody","embed":"public","download":true,"add":true,"comments":"anybody"},"pictures":{"uri":"/videos/117102891/pictures/503683214","active":true,"sizes":[{"width":100,"height":75,"link":"https://i.vimeocdn.com/video/503683214_100x75.jpg"},{"width":200,"height":150,"link":"https://i.vimeocdn.com/video/503683214_200x150.jpg"},{"width":295,"height":166,"link":"https://i.vimeocdn.com/video/503683214_295x166.jpg"},{"width":640,"height":360,"link":"https://i.vimeocdn.com/video/503683214_640x360.jpg"},{"width":960,"height":540,"link":"https://i.vimeocdn.com/video/503683214_960x540.jpg"},{"width":1280,"height":720,"link":"https://i.vimeocdn.com/video/503683214_1280x720.jpg"}]},"tags":[],"stats":{"plays":18},"embed":{"buttons":{"like":true,"watchlater":true,"share":true,"embed":true,"hd":false,"fullscreen":true,"scaling":true},"logos":{"vimeo":true,"custom":{"active":false,"link":null,"sticky":false}},"title":{"name":"user","owner":"user","portrait":"user"},"playbar":true,"volume":true,"color":"00adef"},"metadata":{"connections":{"comments":{"uri":"/videos/117102891/comments","options":["GET","POST"],"total":0},"credits":{"uri":"/videos/117102891/credits","options":["GET","POST"],"total":1},"likes":{"uri":"/videos/117102891/likes","options":["GET"],"total":0},"pictures":{"uri":"/videos/117102891/pictures","options":["GET","POST"],"total":1},"texttracks":{"uri":"/videos/117102891/texttracks","options":["GET","POST"],"total":0}},"interactions":{"watchlater":{"added":false,"added_time":null,"uri":"/users/33772623/watchlater/117102891"}}},"embed_presets":null,"user":{"uri":"/users/33772623","name":"Raw
|
38
|
+
Funk Maharishi","link":"https://vimeo.com/rawfunkmaharishi","location":null,"bio":null,"created_time":"2014-10-27T12:06:25+00:00","account":"basic","pictures":{"uri":"/users/33772623/pictures/8588995","active":true,"sizes":[{"width":30,"height":30,"link":"https://i.vimeocdn.com/portrait/8588995_30x30.jpg"},{"width":75,"height":75,"link":"https://i.vimeocdn.com/portrait/8588995_75x75.jpg"},{"width":100,"height":100,"link":"https://i.vimeocdn.com/portrait/8588995_100x100.jpg"},{"width":300,"height":300,"link":"https://i.vimeocdn.com/portrait/8588995_300x300.jpg"}]},"websites":[{"name":"http://rawfunkmaharishi.uk/","link":"http://rawfunkmaharishi.uk/","description":null}],"metadata":{"connections":{"activities":{"uri":"/users/33772623/activities","options":["GET"]},"albums":{"uri":"/users/33772623/albums","options":["GET"],"total":0},"channels":{"uri":"/users/33772623/channels","options":["GET"],"total":0},"feed":{"uri":"/users/33772623/feed","options":["GET"]},"followers":{"uri":"/users/33772623/followers","options":["GET"],"total":0},"following":{"uri":"/users/33772623/following","options":["GET"],"total":0},"groups":{"uri":"/users/33772623/groups","options":["GET"],"total":0},"likes":{"uri":"/users/33772623/likes","options":["GET"],"total":0},"portfolios":{"uri":"/users/33772623/portfolios","options":["GET"],"total":0},"videos":{"uri":"/users/33772623/videos","options":["GET"],"total":4},"watchlater":{"uri":"/users/33772623/watchlater","options":["GET"],"total":0},"shared":{"uri":"/users/33772623/shared/videos","options":["GET"],"total":0},"pictures":{"uri":"/users/33772623/pictures","options":["GET","POST"],"total":1}}},"content_filter":["language","drugs","violence","nudity","safe","unrated"]},"app":null,"status":"available"}'
|
39
|
+
http_version:
|
40
|
+
recorded_at: Tue, 03 Mar 2015 17:44:01 GMT
|
41
|
+
recorded_with: VCR 2.9.3
|
data/features/support/hooks.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
@vcr
|
2
|
+
Feature: Vimeo
|
3
|
+
|
4
|
+
Scenario: Generate Vimeo YAML
|
5
|
+
Given a file named "_sources/vimeo" with:
|
6
|
+
"""
|
7
|
+
https://vimeo.com/117102891
|
8
|
+
"""
|
9
|
+
When I successfully run `purdie fetch`
|
10
|
+
Then a file named "_data/vimeo.yaml" should exist
|
11
|
+
And the file "_data/vimeo.yaml" should contain:
|
12
|
+
"""
|
13
|
+
- title: Bernard
|
14
|
+
id: 117102891
|
15
|
+
license: Attribution-NonCommercial-ShareAlike
|
16
|
+
license_url: http://creativecommons.org/licenses/by-nc-sa/3.0/
|
17
|
+
"""
|
data/lib/purdie/bernard.rb
CHANGED
@@ -15,6 +15,9 @@ module Purdie
|
|
15
15
|
f = Purdie::Services::Flickr.new @config
|
16
16
|
flickrs = []
|
17
17
|
|
18
|
+
v = Purdie::Services::Vimeo.new @config
|
19
|
+
vimeos = []
|
20
|
+
|
18
21
|
sources = Dir.entries(@config['source-dir']).select { |e| e !~ /^\./ }
|
19
22
|
sources.each do |source|
|
20
23
|
lines = File.readlines "#{@config['source-dir']}/#{source}"
|
@@ -25,18 +28,26 @@ module Purdie
|
|
25
28
|
|
26
29
|
when /flickr/
|
27
30
|
flickrs.push f.refine line
|
31
|
+
|
32
|
+
when /vimeo/
|
33
|
+
vimeos.push v.refine line
|
28
34
|
end
|
29
35
|
end
|
30
36
|
end
|
31
37
|
|
32
|
-
FileUtils.
|
33
|
-
|
38
|
+
FileUtils.mkdir_p @config['output-dir']
|
39
|
+
|
40
|
+
sf = File.open "#{@config['output-dir']}/#{@config['services']['SoundCloud']['output-file']}", 'w'
|
34
41
|
sf.write sounds.to_yaml
|
35
42
|
sf.close
|
36
43
|
|
37
|
-
ff = File.open '
|
44
|
+
ff = File.open "#{@config['output-dir']}/#{@config['services']['Flickr']['output-file']}", 'w'
|
38
45
|
ff.write flickrs.to_yaml
|
39
46
|
ff.close
|
47
|
+
|
48
|
+
vf = File.open "#{@config['output-dir']}/#{@config['services']['Vimeo']['output-file']}", 'w'
|
49
|
+
vf.write vimeos.to_yaml
|
50
|
+
vf.close
|
40
51
|
end
|
41
52
|
end
|
42
53
|
end
|
data/lib/purdie/config.rb
CHANGED
@@ -5,8 +5,8 @@ module Purdie
|
|
5
5
|
def initialize
|
6
6
|
@conf = YAML.load File.read File.join(File.dirname(__FILE__), '..', '..', 'config/defaults.yaml')
|
7
7
|
|
8
|
-
if File.exists?
|
9
|
-
y = YAML.load File.read
|
8
|
+
if File.exists? 'config/purdie.yaml'
|
9
|
+
y = YAML.load File.read 'config/purdie.yaml'
|
10
10
|
@conf.deep_merge! y
|
11
11
|
end
|
12
12
|
end
|
@@ -18,9 +18,6 @@ module Purdie
|
|
18
18
|
url = url[0..-2] if url[-1] == '/'
|
19
19
|
id = url.split('/')[-1].to_i
|
20
20
|
|
21
|
-
# require 'pry'
|
22
|
-
# binding.pry
|
23
|
-
# flickr = FlickRaw::Flickr.new
|
24
21
|
flickr.photos.getInfo(photo_id: id)
|
25
22
|
end
|
26
23
|
|
@@ -44,6 +41,9 @@ module Purdie
|
|
44
41
|
results['photographer'] = snapper['raw'].split(':')[1]
|
45
42
|
rescue NoMethodError
|
46
43
|
results['photographer'] = @config['photographer-lookups'][photo['owner']['username']]
|
44
|
+
unless results['photographer']
|
45
|
+
results['photographer'] = photo['owner']['username']
|
46
|
+
end
|
47
47
|
end
|
48
48
|
|
49
49
|
results
|
@@ -11,7 +11,7 @@ module Purdie
|
|
11
11
|
|
12
12
|
def all_tracks
|
13
13
|
@all_tracks ||= begin
|
14
|
-
url = "#{@config['
|
14
|
+
url = "#{@config['services']['SoundCloud']['host']}/users/#{ENV['SOUNDCLOUD_USER_ID']}/tracks?client_id=#{ENV['SOUNDCLOUD_CLIENT_ID']}"
|
15
15
|
response = HTTParty.get url
|
16
16
|
JSON.parse response.body
|
17
17
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'purdie'
|
2
|
+
|
3
|
+
Dotenv.load
|
4
|
+
|
5
|
+
module Purdie
|
6
|
+
module Services
|
7
|
+
class Vimeo
|
8
|
+
def initialize config
|
9
|
+
@config = config
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_video url
|
13
|
+
url.strip!
|
14
|
+
url = url[0..-2] if url[-1] == '/'
|
15
|
+
@id = url.split('/')[-1].to_i
|
16
|
+
|
17
|
+
target = "#{@config['services']['Vimeo']['host']}/videos/#{@id}"
|
18
|
+
headers = {
|
19
|
+
'Authorization' => "bearer #{ENV['VIMEO_BEARER_TOKEN']}",
|
20
|
+
'Accept' => 'application/json'
|
21
|
+
}
|
22
|
+
response = HTTParty.get target, headers: headers
|
23
|
+
|
24
|
+
JSON.parse response.body
|
25
|
+
end
|
26
|
+
|
27
|
+
def refine url
|
28
|
+
video = get_video url
|
29
|
+
results = {}
|
30
|
+
|
31
|
+
results['title'] = video['name']
|
32
|
+
results['id'] = @id
|
33
|
+
results['license'] = @config['license-lookups'][video['license']]['full-name']
|
34
|
+
results['license_url'] = @config['license-lookups'][video['license']]['url']
|
35
|
+
|
36
|
+
results
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/purdie/version.rb
CHANGED
data/lib/purdie.rb
CHANGED
data/spec/config_spec.rb
CHANGED
@@ -8,13 +8,8 @@ module Purdie
|
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'reads a local config file' do
|
11
|
-
FileUtils.cp File.join(File.dirname(__FILE__), '..', 'features/support/fixtures/config/purdie.yaml'),
|
12
|
-
File.join(File.dirname(__FILE__), '..', 'config/purdie.yaml')
|
13
|
-
|
14
11
|
c = Config.new
|
15
12
|
expect(c['default-title']).to eq 'Raw Funk Maharishi'
|
16
|
-
|
17
|
-
FileUtils.rm File.join(File.dirname(__FILE__), '..', 'config/purdie.yaml')
|
18
13
|
end
|
19
14
|
end
|
20
15
|
end
|
@@ -3,19 +3,10 @@ require 'spec_helper'
|
|
3
3
|
module Purdie
|
4
4
|
module Services
|
5
5
|
describe Flickr do
|
6
|
-
before :all do
|
7
|
-
FileUtils.cp File.join(File.dirname(__FILE__), '..', '..', 'features/support/fixtures/config/purdie.yaml'),
|
8
|
-
File.join(File.dirname(__FILE__), '..', '..', 'config/purdie.yaml')
|
9
|
-
end
|
10
|
-
|
11
6
|
before :each do
|
12
7
|
@f = Flickr.new Config.new
|
13
8
|
end
|
14
9
|
|
15
|
-
after :all do
|
16
|
-
FileUtils.rm File.join(File.dirname(__FILE__), '..', '..', 'config/purdie.yaml')
|
17
|
-
end
|
18
|
-
|
19
10
|
it 'refines data for a regular photo', :vcr do
|
20
11
|
expect(@f.refine 'https://www.flickr.com/photos/rawfunkmaharishi/15631479625/').to eq({
|
21
12
|
"title"=>"The Comedy, October 2014",
|
@@ -39,6 +30,10 @@ module Purdie
|
|
39
30
|
"photographer"=>"jane"
|
40
31
|
})
|
41
32
|
end
|
33
|
+
|
34
|
+
it 'falls back to the default photographer name', :vcr do
|
35
|
+
expect(@f.refine('https://www.flickr.com/photos/pikesley/16649739916/')['photographer']).to eq 'pikesley'
|
36
|
+
end
|
42
37
|
end
|
43
38
|
end
|
44
39
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Purdie
|
4
|
+
module Services
|
5
|
+
describe Vimeo do
|
6
|
+
before :each do
|
7
|
+
@v = Vimeo.new Config.new
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'gets a video', :vcr do
|
11
|
+
expect(@v.get_video 'https://vimeo.com/117102891').to be_a Hash
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'refines a video', :vcr do
|
15
|
+
expect(@v.refine 'https://vimeo.com/117102891').to eq({
|
16
|
+
"title"=>"Bernard",
|
17
|
+
"id"=>117102891,
|
18
|
+
"license"=>"Attribution-NonCommercial-ShareAlike",
|
19
|
+
"license_url"=>"http://creativecommons.org/licenses/by-nc-sa/3.0/"
|
20
|
+
})
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -14,4 +14,13 @@ RSpec.configure do |config|
|
|
14
14
|
config.filter_run :focus
|
15
15
|
config.run_all_when_everything_filtered = true
|
16
16
|
config.order = :random
|
17
|
+
|
18
|
+
config.before :each do
|
19
|
+
FileUtils.cp File.join(File.dirname(__FILE__), '..', 'features/support/fixtures/config/purdie.yaml'),
|
20
|
+
File.join(File.dirname(__FILE__), '..', 'config/purdie.yaml')
|
21
|
+
end
|
22
|
+
|
23
|
+
config.after :each do
|
24
|
+
FileUtils.rm File.join(File.dirname(__FILE__), '..', 'config/purdie.yaml')
|
25
|
+
end
|
17
26
|
end
|
@@ -0,0 +1,122 @@
|
|
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=16649739916&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="6Myoiw%2BiAA7g2sP4Z5tnoU7%2B9hR%2FdqtMPx6eFQLK%2F1I%3D", oauth_signature="<FLICKR_SECRET>%26",
|
19
|
+
oauth_signature_method="PLAINTEXT", oauth_timestamp="1425307190", 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
|
+
- Mon, 02 Mar 2015 14:39:59 GMT
|
30
|
+
Content-Type:
|
31
|
+
- application/json
|
32
|
+
Content-Length:
|
33
|
+
- '543'
|
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
|
+
- www30.flickr.bf1.yahoo.com
|
42
|
+
Vary:
|
43
|
+
- Accept-Encoding
|
44
|
+
Age:
|
45
|
+
- '0'
|
46
|
+
Via:
|
47
|
+
- http/1.1 fts113.flickr.bf1.yahoo.com (ApacheTrafficServer/4.0.2 [cMsSf ]),
|
48
|
+
http/1.1 r15.ycpi.dea.yahoo.net (ApacheTrafficServer [cMsSf ])
|
49
|
+
Server:
|
50
|
+
- ATS
|
51
|
+
Connection:
|
52
|
+
- keep-alive
|
53
|
+
body:
|
54
|
+
encoding: ASCII-8BIT
|
55
|
+
string: '{"photo":{"id":"16649739916","secret":"a575f69e94","server":"8661","farm":9,"dateuploaded":"1425159508","isfavorite":0,"license":"1","safety_level":"0","rotation":0,"originalsecret":"e33e9d3d4a","originalformat":"jpg","owner":{"nsid":"73135567@N00","username":"pikesley","realname":"Sam","location":"London","iconserver":"5072","iconfarm":6,"path_alias":"pikesley"},"title":{"_content":"Catface"},"description":{"_content":""},"visibility":{"ispublic":1,"isfriend":0,"isfamily":0},"dates":{"posted":"1425159508","taken":"2015-02-28
|
56
|
+
22:36:25","takengranularity":"0","takenunknown":"0","lastupdate":"1425159602"},"views":"19","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":[]},"urls":{"url":[{"type":"photopage","_content":"https:\/\/www.flickr.com\/photos\/pikesley\/16649739916\/"}]},"media":"photo"},"stat":"ok"}'
|
57
|
+
http_version:
|
58
|
+
recorded_at: Mon, 02 Mar 2015 14:39:59 GMT
|
59
|
+
- request:
|
60
|
+
method: post
|
61
|
+
uri: https://api.flickr.com/services/rest/
|
62
|
+
body:
|
63
|
+
encoding: US-ASCII
|
64
|
+
string: method=flickr.photos.licenses.getInfo&format=json&nojsoncallback=1
|
65
|
+
headers:
|
66
|
+
Accept-Encoding:
|
67
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
68
|
+
Accept:
|
69
|
+
- "*/*"
|
70
|
+
User-Agent:
|
71
|
+
- FlickRaw/0.9.8
|
72
|
+
Authorization:
|
73
|
+
- OAuth realm="https://api.flickr.com/services/rest/", oauth_consumer_key="<FLICKR_API_KEY>",
|
74
|
+
oauth_nonce="2T5dLPn6PimygG664wjU5l7XkhPrU0ceUD3z53FpGZs%3D", oauth_signature="<FLICKR_SECRET>%26",
|
75
|
+
oauth_signature_method="PLAINTEXT", oauth_timestamp="1425307199", oauth_token="",
|
76
|
+
oauth_version="1.0"
|
77
|
+
Content-Type:
|
78
|
+
- application/x-www-form-urlencoded
|
79
|
+
response:
|
80
|
+
status:
|
81
|
+
code: 200
|
82
|
+
message: OK
|
83
|
+
headers:
|
84
|
+
Date:
|
85
|
+
- Mon, 02 Mar 2015 14:39:59 GMT
|
86
|
+
Content-Type:
|
87
|
+
- application/json
|
88
|
+
Content-Length:
|
89
|
+
- '314'
|
90
|
+
P3p:
|
91
|
+
- policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV
|
92
|
+
TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY
|
93
|
+
ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
|
94
|
+
Cache-Control:
|
95
|
+
- private
|
96
|
+
X-Served-By:
|
97
|
+
- www304.flickr.bf1.yahoo.com
|
98
|
+
Vary:
|
99
|
+
- Accept-Encoding
|
100
|
+
Age:
|
101
|
+
- '0'
|
102
|
+
Via:
|
103
|
+
- http/1.1 fts117.flickr.bf1.yahoo.com (ApacheTrafficServer/4.0.2 [cMsSf ]),
|
104
|
+
http/1.1 r12.ycpi.dea.yahoo.net (ApacheTrafficServer [cMsSf ])
|
105
|
+
Server:
|
106
|
+
- ATS
|
107
|
+
Connection:
|
108
|
+
- keep-alive
|
109
|
+
body:
|
110
|
+
encoding: ASCII-8BIT
|
111
|
+
string: '{"licenses":{"license":[{"id":"0","name":"All Rights Reserved","url":""},{"id":"4","name":"Attribution
|
112
|
+
License","url":"https:\/\/creativecommons.org\/licenses\/by\/2.0\/"},{"id":"6","name":"Attribution-NoDerivs
|
113
|
+
License","url":"https:\/\/creativecommons.org\/licenses\/by-nd\/2.0\/"},{"id":"3","name":"Attribution-NonCommercial-NoDerivs
|
114
|
+
License","url":"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/"},{"id":"2","name":"Attribution-NonCommercial
|
115
|
+
License","url":"https:\/\/creativecommons.org\/licenses\/by-nc\/2.0\/"},{"id":"1","name":"Attribution-NonCommercial-ShareAlike
|
116
|
+
License","url":"https:\/\/creativecommons.org\/licenses\/by-nc-sa\/2.0\/"},{"id":"5","name":"Attribution-ShareAlike
|
117
|
+
License","url":"https:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/"},{"id":"7","name":"No
|
118
|
+
known copyright restrictions","url":"https:\/\/www.flickr.com\/commons\/usage\/"},{"id":"8","name":"United
|
119
|
+
States Government Work","url":"http:\/\/www.usa.gov\/copyright.shtml"}]},"stat":"ok"}'
|
120
|
+
http_version:
|
121
|
+
recorded_at: Mon, 02 Mar 2015 14:39:59 GMT
|
122
|
+
recorded_with: VCR 2.9.3
|