Sha256: 5c423ef2066de81e02dd27b2199b1206e289015f9afdeb571914b48efa680685

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

module Nextcloud
  module Ruby
    class Api
      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

      def self.request(method, path, payload = nil)
        new(method, path, payload).request
      end

      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

      def init_request
        @request = net_http_class.new(@path)
        @request.body = @payload if @payload
        @request.basic_auth @username, @password
      end

      def net_http_class
        Kernel.const_get("Net::HTTP::#{@method.capitalize}")
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
nextcloud-ruby-0.1.2 lib/nextcloud/ruby/api.rb
nextcloud-ruby-0.1.1 lib/nextcloud/ruby/api.rb