class OpenprojectApi::Api
Attributes
apikey[RW]
endpoint[RW]
Public Class Methods
new(endpoint:, apikey:)
click to toggle source
# File lib/openproject_api/api.rb, line 12 def initialize(endpoint:, apikey:) self.endpoint = endpoint self.apikey = apikey end
Public Instance Methods
delete(resource, *args)
click to toggle source
# File lib/openproject_api/api.rb, line 62 def delete(resource, *args) request(resource, *args) do |uri| Net::HTTP::Delete.new(uri.request_uri) end end
get(resource, *args)
click to toggle source
# File lib/openproject_api/api.rb, line 36 def get(resource, *args) request(resource, *args) do |uri| Net::HTTP::Get.new(uri.request_uri) end end
patch(resource, body, *args)
click to toggle source
# File lib/openproject_api/api.rb, line 52 def patch(resource, body, *args) request(resource, *args) do |uri| Net::HTTP::Patch.new(uri.request_uri).tap do |request| request['Content-Type'] = 'application/json' request['Accept' ] = 'application/json' request.body = body.to_json end end end
post(resource, body, *args)
click to toggle source
# File lib/openproject_api/api.rb, line 42 def post(resource, body, *args) request(resource, *args) do |uri| Net::HTTP::Post.new(uri.request_uri).tap do |request| request['Content-Type'] = 'application/json' request['Accept' ] = 'application/json' request.body = body.to_json end end end
request(resource, query: {}) { |uri| ... }
click to toggle source
# File lib/openproject_api/api.rb, line 17 def request(resource, query: {}, &block) uri = URI.join(endpoint, resource) uri.query = URI.encode_www_form(query) response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme=='https') do |http| request = yield(uri) request.basic_auth('apikey', apikey) http.request(request) end if response.is_a?(Net::HTTPSuccess) ObjectifiedHash.new(JSON.parse(response.body)) else response.error! end end