class GirlScout::Resource

Constants

METHODS

Attributes

url[RW]

Public Class Methods

new(url: '') click to toggle source
# File lib/girlscout/resource.rb, line 11
def initialize(url: '')
  @url = url
  @access_token = AccessToken.refresh
end

Public Instance Methods

[](path) click to toggle source
# File lib/girlscout/resource.rb, line 16
def [](path)
  Resource.new(url: "#{@url}#{path}")
end

Private Instance Methods

access_token() click to toggle source
# File lib/girlscout/resource.rb, line 36
def access_token
  @access_token = AccessToken.refresh if @access_token&.expired?
  @access_token
end
error_message(body) click to toggle source
# File lib/girlscout/resource.rb, line 53
def error_message(body)
  body = JSON.parse(body)
  body['message'] || body['error_description']
rescue JSON::ParserError
  body
end
request(options = {}) click to toggle source
# File lib/girlscout/resource.rb, line 41
def request(options = {})
  response = Excon.new(@url).request(options)
  case response.status
  when 200
    JSON.parse(response.body)
  when 201
    response.headers['Resource-ID']
  else
    raise GirlScout::Error, message: error_message(response.body), code: response.status
  end
end