class Nextcloud::Ruby::Api

Public Class Methods

new(method, path, payload = nil) click to toggle source
# File lib/nextcloud/ruby/api.rb, line 4
def initialize(method, path, payload = nil)
  @method = method
  @payload = payload
  @path = Addressable::URI
          .join(Nextcloud::Ruby.configuration.dav_url.to_s, path)
  @uri = Nextcloud::Ruby.configuration.dav_url
  @username = Nextcloud::Ruby.configuration.username
  @password = Nextcloud::Ruby.configuration.password
  init_request
end
request(method, path, payload = nil) click to toggle source
# File lib/nextcloud/ruby/api.rb, line 15
def self.request(method, path, payload = nil)
  new(method, path, payload).request
end

Public Instance Methods

request() click to toggle source
# File lib/nextcloud/ruby/api.rb, line 19
def request
  response = Net::HTTP.start(@uri.host, @uri.port,
                             use_ssl: @uri.scheme == 'https') do |http|
    http.request(@request)
  end
  Response.new(response.body, response.code.to_i)
end

Private Instance Methods

init_request() click to toggle source
# File lib/nextcloud/ruby/api.rb, line 29
def init_request
  @request = net_http_class.new(@path)
  @request.body = @payload if @payload
  @request.basic_auth @username, @password
end
net_http_class() click to toggle source
# File lib/nextcloud/ruby/api.rb, line 35
def net_http_class
  Kernel.const_get("Net::HTTP::#{@method.capitalize}")
end