class Sakenote::Client

Public Class Methods

new(token) click to toggle source
# File lib/sakenote/client.rb, line 12
def initialize(token)
  if token.is_a?(String) && token.strip.length > 0
    @token = token
    @conn  = connection
  else
    raise Sakenote::Error::ConfigurationError
  end
end

Public Instance Methods

connection() click to toggle source
# File lib/sakenote/client.rb, line 73
def connection
  faraday = Faraday.new 'https://www.sakenote.com' do |conn|
    conn.request  :json
    conn.response :json, :content_type => /\bjson$/
    conn.adapter  Faraday.default_adapter
  end

  faraday.headers[:user_agent] = "Sakenote/#{Sakenote::VERSION} (sakenote-rubygems/#{Sakenote::VERSION})"
  faraday
end
makers(prefecture_code: nil, maker_name: nil, page: 1) click to toggle source

www.sakenote.com/api/v1/makers

# File lib/sakenote/client.rb, line 51
def makers(prefecture_code: nil, maker_name: nil, page: 1)
  options = {
    token:           @token,
    prefecture_code: prefecture_code,
    maker_name:      maker_name,
    page:            page
  }.select{ |k, v| !v.nil? }

  response = @conn.get '/api/v1/makers', options

  num_pages = response.body['num_pages'].to_i
  list      = response.body['makers'].map { |s|
    Maker.new(s['maker_name'],
      postcode: s['maker_postcode'],
      address:  s['maker_address'],
      url:      s['maker_url']
    )
  }

  SearchResult.new(list, num_pages)
end
sakes(prefecture_code: nil, sake_name: nil, maker_name: nil, page: 1) click to toggle source

www.sakenote.com/api/v1/sakes

# File lib/sakenote/client.rb, line 22
def sakes(prefecture_code: nil, sake_name: nil, maker_name: nil, page: 1)
  options = {
    token:           @token,
    prefecture_code: prefecture_code,
    sake_name:       sake_name,
    maker_name:      maker_name,
    page:            page
  }.select{ |k, v| !v.nil? }

  response = @conn.get '/api/v1/sakes', options

  num_pages = response.body['num_pages'].to_i
  list      = response.body['sakes'].map { |s|
    Sake.new(s['sake_name'],
      identify_code: s['sake_identify_code'],
      furigana:      s['sake_furigana'],
      alphabet:      s['sake_alphabet'],
      maker:         Maker.new(s['maker_name'],
        postcode: s['maker_postcode'],
        address:  s['maker_address'],
        url:      s['maker_url']
      )
    )
  }

  SearchResult.new(list, num_pages)
end