Class: Purdie::Services::SoundCloud
- Inherits:
-
Object
- Object
- Purdie::Services::SoundCloud
show all
- Includes:
- Purdie::Service
- Defined in:
- lib/purdie/services/soundcloud.rb
Class Method Summary
collapse
Instance Method Summary
collapse
#configure, included, #initialize
Class Method Details
.matcher ⇒ Object
50
51
52
|
# File 'lib/purdie/services/soundcloud.rb', line 50
def self.matcher
'soundcloud.com'
end
|
.resolve(url) ⇒ Object
42
43
44
45
46
47
48
|
# File 'lib/purdie/services/soundcloud.rb', line 42
def self.resolve url
return [url] unless url =~ /\/sets\//
client = ::SoundCloud.new client_id: ENV['SOUNDCLOUD_CLIENT_ID']
client.get('/resolve', url: url).tracks.
map { |track| track['permalink_url'] }
end
|
Instance Method Details
#client ⇒ Object
8
9
10
|
# File 'lib/purdie/services/soundcloud.rb', line 8
def client
@client ||= ::SoundCloud.new client_id: ENV['SOUNDCLOUD_CLIENT_ID']
end
|
#distill(url) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/purdie/services/soundcloud.rb', line 12
def distill url
begin
track = client.get '/resolve', url: url
rescue ArgumentError => ae
raise CredentialsException.new self, 'missing'
rescue ::SoundCloud::ResponseError => re
raise CredentialsException.new self, 'duff'
end
results = {}
results['title'] = track['title']
results['id'] = track['id']
results['url'] = track['permalink_url']
description = YAML.load track['description']
if description.class == Hash
description.keys.each do |k|
results[k] = description[k]
end
else
results['location'] = track['description']
end
results['date'] = "%4d-%02d-%02d" % [ track['release_year'], track['release_month'], track['release_day'] ]
results.attach_license self, track['license']
results
end
|