class Clubhouse::Client
Constants
- API_VERSION
Public Class Methods
new(token)
click to toggle source
# File lib/clubhouse/client.rb, line 13 def initialize(token) @token = token end
Public Instance Methods
basepath()
click to toggle source
# File lib/clubhouse/client.rb, line 17 def basepath @basepath ||= "https://api.clubhouse.io/api/#{API_VERSION}" end
delete(resource)
click to toggle source
# File lib/clubhouse/client.rb, line 26 def delete(resource) req = Net::HTTP::Delete.new(build_uri(resource)) do_request(req) end
get(resource)
click to toggle source
# File lib/clubhouse/client.rb, line 21 def get(resource) req = Net::HTTP::Get.new(build_uri(resource)) do_request(req) end
post(resource, body = {})
click to toggle source
# File lib/clubhouse/client.rb, line 31 def post(resource, body = {}) req = Net::HTTP::Post.new(build_uri(resource)) req['Content-Type'] = 'application/json' req.body = body.to_json do_request(req) end
put(resource, body = {})
click to toggle source
# File lib/clubhouse/client.rb, line 39 def put(resource, body = {}) req = Net::HTTP::Put.new(build_uri(resource)) req['Content-Type'] = 'application/json' req.body = body.to_json do_request(req) end
raise_error_to_user(response)
click to toggle source
# File lib/clubhouse/client.rb, line 47 def raise_error_to_user(response) code = response.code.to_i err = case code when 400 then BadRequestError when 401, 403 then UnauthorizedError when 404 then ResourceNotFoundError when 422 then UnprocessableError else UnexpectedError end raise err, response.body end
Private Instance Methods
build_uri(resource)
click to toggle source
# File lib/clubhouse/client.rb, line 63 def build_uri(resource) uri = URI.parse("#{basepath}/#{resource}") uri.query = URI.encode_www_form(token: @token) uri end
do_request(request)
click to toggle source
# File lib/clubhouse/client.rb, line 69 def do_request(request) http = Net::HTTP.new(request.uri.host, request.uri.port) http.use_ssl = true response = http.request(request) if [200,201,204].include?(response.code.to_i) # Clubhouse API returns content type as application/json for DELETE request with no body :( return {} if response.body.nil? JSON.parse(response.body) else raise_error_to_user(response) end end