class Saru::Connection::Base

Constants

ENDPOINT_BASE
ENDPOINT_HOST
WanikaniConnectionError

Attributes

levels[R]

Public Class Methods

new(levels) click to toggle source
# File lib/saru/connection/base.rb, line 15
def initialize levels
  @levels = levels
end

Public Instance Methods

call() click to toggle source
# File lib/saru/connection/base.rb, line 19
def call
  response.status == 200 ? content : raise_error
end

Private Instance Methods

base_path() click to toggle source
# File lib/saru/connection/base.rb, line 41
def base_path
  "#{ENDPOINT_BASE}/#{Saru.api_key}"
end
connection() click to toggle source
# File lib/saru/connection/base.rb, line 34
def connection
  @connection ||= Faraday.new ENDPOINT_HOST do |connection|
    connection.headers[ 'Content-Type' ] = 'application/json'
    connection.adapter :net_http
  end
end
content() click to toggle source
# File lib/saru/connection/base.rb, line 30
def content
  @content ||= JSON.parse(response.body)
end
levels_request() click to toggle source
# File lib/saru/connection/base.rb, line 45
def levels_request
  Array(levels).join(',')
end
raise_error() click to toggle source
# File lib/saru/connection/base.rb, line 49
def raise_error
  raise WanikaniConnectionError, %Q{
    Wanikani responded with #{response.status} (expecting 200)

    request: GET #{path}

    response:
      #{response.inspect}
  }
end
response() click to toggle source
# File lib/saru/connection/base.rb, line 25
def response
  raise ArgumentError, 'Missing API key' unless Saru.valid?
  @response ||= connection.get path
end