class GroupMe::Client

Constants

API_BASE_URL
API_DEFAULT_HEADER

Attributes

access_token[RW]

Public Class Methods

new(args = {}) click to toggle source
# File lib/groupme/client.rb, line 10
def initialize(args = {})
  @access_token = args[:access_token] || GroupMe.configuration.access_token
  @client = HTTPClient.new(base_url: API_BASE_URL, default_header: API_DEFAULT_HEADER)
end

Public Instance Methods

delete(path, query = {}) click to toggle source
# File lib/groupme/client.rb, line 23
def delete(path, query = {})
  request(:delete, path, query: query)
end
get(path, query = {}) click to toggle source
# File lib/groupme/client.rb, line 15
def get(path, query = {})
  request(:get, path, query: query)
end
post(path, body = {}) click to toggle source
# File lib/groupme/client.rb, line 19
def post(path, body = {})
  request(:post, path, body: body)
end
request(method, path, query: {}, body: nil) click to toggle source
# File lib/groupme/client.rb, line 27
def request(method, path, query: {}, body: nil)
  response = @client.request(method, path, { token: @access_token }.merge(query), body&.to_json)
  [parse_response_body(response), response.status]
end

Private Instance Methods

blank?(string) click to toggle source
# File lib/groupme/client.rb, line 41
def blank?(string)
  string =~ /\A[[:space:]]*\z/
end
parse_response_body(response) click to toggle source
# File lib/groupme/client.rb, line 34
def parse_response_body(response)
  return response.reason unless response.ok?
  return if blank?(response.body)

  JSON.parse(response.body, symbolize_names: true).fetch(:response)
end