class HookTheory::Client
Constants
- BASE_URI
- InvalidRequest
- InvalidUsernameOrPassword
Public Class Methods
new(username:, password:)
click to toggle source
# File lib/hooktheory/client.rb, line 10 def initialize(username:, password:) @username = username @password = password @headers = { "Accept" => "application/json", "Content-Type" => "application/json" } grab_auth end
Public Instance Methods
nodes(progression: [])
click to toggle source
# File lib/hooktheory/client.rb, line 28 def nodes(progression: []) response = http_get( endpoint: "trends/nodes", request_params: { cp: progression.join(","), }) response.map { |node| HookTheory::Node.new(node) } end
songs(progression: [], page: 1)
click to toggle source
# File lib/hooktheory/client.rb, line 17 def songs(progression: [], page: 1) response = http_get( endpoint: "trends/songs", request_params: { cp: progression.join(","), page: page }) response.map { |song| HookTheory::Song.new(song) } end
Private Instance Methods
grab_auth()
click to toggle source
# File lib/hooktheory/client.rb, line 40 def grab_auth auth = http_post(endpoint: "users/auth", body: { username: @username, password: @password }) raise InvalidUsernameOrPassword.new("Must provide valid credentials") if auth["activkey"].nil? @headers.merge!("Authorization" => "Bearer #{auth["activkey"]}") end
http_get(endpoint:, request_params: {})
click to toggle source
# File lib/hooktheory/client.rb, line 50 def http_get(endpoint:, request_params: {}) begin self.class.get(BASE_URI + endpoint, headers: @headers, query: request_params ).parsed_response rescue Exception => e [] end end
http_post(endpoint:, request_params: {}, body: {})
click to toggle source
# File lib/hooktheory/client.rb, line 61 def http_post(endpoint:, request_params: {}, body: {}) begin self.class.post(BASE_URI + endpoint, headers: @headers, query: request_params, body: body.to_json ).parsed_response rescue Exception => e [] end end