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