Sha256: e32ac527bd9863f77485df096789d0f95d291cc8e336e99d417178ce4d07ea85
Contents?: true
Size: 1.21 KB
Versions: 2
Compression:
Stored size: 1.21 KB
Contents
require 'faraday' require 'json' module Saru module Connection class Base ENDPOINT_HOST = "https://www.wanikani.com" ENDPOINT_BASE = "/api/user" WanikaniConnectionError = Class.new(StandardError) attr_reader :levels def initialize levels @levels = levels end def call response.status == 200 ? content : raise_error end private def response raise ArgumentError, 'Missing API key' unless Saru.valid? @response ||= connection.get path end def content @content ||= JSON.parse(response.body) end def connection @connection ||= Faraday.new ENDPOINT_HOST do |connection| connection.headers[ 'Content-Type' ] = 'application/json' connection.adapter :net_http end end def base_path "#{ENDPOINT_BASE}/#{Saru.api_key}" end def levels_request Array(levels).join(',') end def raise_error raise WanikaniConnectionError, %Q{ Wanikani responded with #{response.status} (expecting 200) request: GET #{path} response: #{response.inspect} } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
saru-0.2.0 | lib/saru/connection/base.rb |
saru-0.1.0 | lib/saru/connection/base.rb |