class HabiticaCli::Api

responsible for communicating with habit at a low level

Public Class Methods

new(user_id, api_token) click to toggle source
# File lib/habitica_cli/api.rb, line 33
def initialize(user_id, api_token)
  @debug = ENV['DEBUG_HABITICA'] == 'true'
  @user_id = user_id
  @api_token = api_token
end

Public Instance Methods

get(url, query = nil) click to toggle source
# File lib/habitica_cli/api.rb, line 39
def get(url, query = nil)
  connection do |faraday|
    faraday.request :url_encoded
  end.get(url, query)
end
post(url, body = nil) click to toggle source
# File lib/habitica_cli/api.rb, line 45
def post(url, body = nil)
  connection.post(url, body)
end
put(url, body) click to toggle source
# File lib/habitica_cli/api.rb, line 49
def put(url, body)
  connection.put(url, body)
end

Private Instance Methods

configure_defaults(faraday) click to toggle source
# File lib/habitica_cli/api.rb, line 63
def configure_defaults(faraday)
  faraday.request :json

  faraday.use HabiticaResponseMiddleware
  faraday.response :json, content_type: /\bjson$/
  faraday.response :logger if @debug

  faraday.adapter Faraday.default_adapter
end
connection() { |faraday| ... } click to toggle source
# File lib/habitica_cli/api.rb, line 73
def connection
  Faraday.new(
    url: 'https://habitica.com/api/v3/',
    headers: default_headers(@user_id, @api_token)
  ) do |faraday|
    configure_defaults(faraday)
    yield faraday if block_given?
    faraday
  end
end
default_headers(user_id, api_token) click to toggle source
# File lib/habitica_cli/api.rb, line 55
def default_headers(user_id, api_token)
  {
    'x-api-key' => api_token,
    'x-api-user' => user_id,
    'Content-Type' => 'application/json'
  }
end