class Spage::Client
HTTP client for making requests to statuspage.io
Public Class Methods
new()
click to toggle source
# File lib/spage/client.rb, line 12 def initialize @api_key = Spage.config.api_key @api_version = Spage.config.api_version end
Public Instance Methods
delete(resource, id)
click to toggle source
# File lib/spage/client.rb, line 29 def delete(resource, id) make_request(Net::HTTP::Delete, resource, id) end
get(resource, id = nil)
click to toggle source
# File lib/spage/client.rb, line 17 def get(resource, id = nil) make_request(Net::HTTP::Get, resource, id) end
make_request(http_method, resource, id, body = nil) { |res| ... }
click to toggle source
rubocop: disable Metrics/MethodLength, Metrics/AbcSize
# File lib/spage/client.rb, line 34 def make_request(http_method, resource, id, body = nil) path = [@api_version, resource, id].compact.join('/') uri = URI::HTTP.build(host: BASE_URL, path: "/#{path}") request = http_method.new(uri) request.add_field('Authorization', "OAuth #{@api_key}") request.add_field('Content-Type', 'application/json') request.body = body if request.request_body_permitted? res = Net::HTTP.start(uri.hostname, use_ssl: true) do |http| response = http.request(request) response.body = JSON.parse(response.body) if response.body response end yield(res) if block_given? res end
post(resource, body)
click to toggle source
# File lib/spage/client.rb, line 25 def post(resource, body) make_request(Net::HTTP::Post, resource, nil, body) end
put(resource, id, body)
click to toggle source
# File lib/spage/client.rb, line 21 def put(resource, id, body) make_request(Net::HTTP::Put, resource, id, body) end