Module: Pandoru

Defined in:
lib/pandoru/client.rb,
lib/pandoru.rb,
lib/pandoru/errors.rb,
lib/pandoru/models.rb,
lib/pandoru/version.rb,
lib/pandoru/transport.rb,
lib/pandoru/models/_base.rb,
lib/pandoru/models/search.rb,
lib/pandoru/client_builder.rb,
lib/pandoru/models/station.rb,
lib/pandoru/models/bookmark.rb,
lib/pandoru/models/playlist.rb,
lib/pandoru/models/track_explanation.rb

Overview

Pandora API Exceptions

Defined Under Namespace

Modules: Client, ClientBuilders, Errors, Models, Transport Classes: APIError, ClientBuilder, InvalidAuthToken, InvalidConfigError, InvalidPartnerLogin, InvalidRequestError, InvalidUserLogin, NetworkError, PandoruError, ParameterMissing

Constant Summary collapse

APIClient =

Class aliases for convenience

Client::APIClient
BaseAPIClient =
Client::BaseAPIClient
APITransport =
Transport::APITransport
InvalidAuthTokenError =

Error aliases

InvalidAuthToken
PandoraException =
PandoruError
API_ERRORS =

All Pandora API error codes from Python reference

{
  0 => "Internal Server Error",
  1 => "Maintenance Mode", 
  2 => "Missing API Method",
  3 => "Missing Auth Token",
  4 => "Missing Partner ID",
  5 => "Missing User ID",
  6 => "Secure Protocol Required",
  7 => "Certificate Required",
  8 => "Parameter Type Mismatch",
  9 => "Parameter Missing",
  10 => "Parameter Value Invalid",
  11 => "API Version Not Supported",
  12 => "Pandora not available in this country",
  13 => "Bad Sync Time",
  14 => "Unknown Method Name",
  15 => "Wrong Protocol - (http/https)",
  1000 => "Read Only Mode",
  1001 => "Invalid Auth Token",
  1002 => "Invalid Partner Login",
  1003 => "Listener Not Authorized - Subscription or Trial Expired",
  1004 => "User Not Authorized",
  1005 => "Station limit reached",
  1006 => "Station does not exist",
  1009 => "Device Not Found",
  1010 => "Partner Not Authorized",
  1011 => "Invalid Username",
  1012 => "Invalid Password",
  1023 => "Device Model Invalid",
  1039 => "Too many requests for a new playlist",
  9999 => "Authentication Required"
}.freeze
API_ERROR_MAP =

Error code mappings to exception classes

{
  0 => InvalidPartnerLogin,
  1 => InvalidAuthToken,
  2 => InvalidUserLogin,
  5 => InvalidRequestError,
  1001 => InvalidAuthToken,
  1002 => InvalidPartnerLogin,
  1012 => InvalidUserLogin
}
VERSION =
"0.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.loggerObject (readonly)

Returns the value of attribute logger.



12
13
14
# File 'lib/pandoru.rb', line 12

def logger
  @logger
end

Class Method Details

.api_error_for_code(code) ⇒ Object

Factory method to create appropriate error



109
110
111
# File 'lib/pandoru/errors.rb', line 109

def self.api_error_for_code(code)
  API_ERROR_MAP[code] || APIError
end

.create_api_error(message, code = nil) ⇒ Object



113
114
115
116
# File 'lib/pandoru/errors.rb', line 113

def self.create_api_error(message, code = nil)
  error_class = api_error_for_code(code)
  error_class.new(message, code)
end

.create_loggerObject



22
23
24
# File 'lib/pandoru.rb', line 22

def create_logger
  set_logger
end

.root(*args) ⇒ Object



14
15
16
# File 'lib/pandoru.rb', line 14

def root(*args)
  (@root ||= Pathname.new(File.expand_path('../', __dir__))).join(*args)
end

.set_logger(logdev: $stdout, level: ::Logger::INFO) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/pandoru.rb', line 26

def set_logger(logdev: $stdout, level: ::Logger::INFO)
  @logger = ::Logger.new(logdev).tap do |log|
    log.progname = self.name
    log.level = level
    log.formatter = proc do |severity, datetime, progname, msg|
      color_code = color_for_severity(severity)
      formatted_severity = "#{color_code}#{severity[0]}#{reset_color}"
      "#{formatted_severity} - [#{datetime.strftime('%Y-%m-%d %H:%M:%S')}] #{progname}: #{msg}\n"
    end
  end
end