class Ghetto::Blaster::CLI
Public Instance Methods
play(username)
click to toggle source
# File lib/ghetto/blaster/cli.rb, line 10 def play(username) tracks_for(username).each do |track| stream_url = "#{track[:stream_url]}s/?client_id=#{client_id}" json = JSON.parse(client.get(stream_url).body, symbolize_names: true) say json[json.keys.first] end end
tracks(username)
click to toggle source
# File lib/ghetto/blaster/cli.rb, line 24 def tracks(username) say tracks_for(username, parse: false) end
user(username)
click to toggle source
# File lib/ghetto/blaster/cli.rb, line 19 def user(username) say client.get(resolve(username)[:location]).body end
version()
click to toggle source
# File lib/ghetto/blaster/cli.rb, line 29 def version say Ghetto::Blaster::VERSION end
Private Instance Methods
build_uri(path)
click to toggle source
# File lib/ghetto/blaster/cli.rb, line 49 def build_uri(path) URI.join("https://api.soundcloud.com", path) end
client()
click to toggle source
# File lib/ghetto/blaster/cli.rb, line 41 def client @client ||= Net::Hippie::Client.new end
client_id()
click to toggle source
# File lib/ghetto/blaster/cli.rb, line 45 def client_id options[:client_id] end
resolve(username)
click to toggle source
# File lib/ghetto/blaster/cli.rb, line 53 def resolve(username) JSON.parse(client.get(build_uri("/resolve?url=https://soundcloud.com/#{username}&client_id=#{client_id}")).body, symbolize_names: true) end
tracks_for(username, parse: true)
click to toggle source
# File lib/ghetto/blaster/cli.rb, line 35 def tracks_for(username, parse: true) user_id = resolve(username)[:location].split('?')[0].split('/').last body = client.get(build_uri("/users/#{user_id}/tracks?client_id=#{client_id}")).body parse ? JSON.parse(body, symbolize_names: true) : body end