Sha256: ff8f8c9f89994b074e8e5fd4964cd43339824147d8a36ae823ad3e3d1d625220

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

module ArchivesSpace
  class Request
    include HTTParty
    attr_reader :config, :headers, :method, :path, :options

    def default_headers(method = :get)
      headers = {
        delete: {},
        get: {},
        post: {
          "Content-Type" => "application/json",
          "Content-Length" => "nnnn"
        },
        put: {
          "Content-Type" => "application/json",
          "Content-Length" => "nnnn"
        }
      }
      headers[method]
    end

    def initialize(config, method = "GET", path = "", options = {})
      @config = config
      @method = method.downcase.to_sym
      @path = path.gsub(%r{^/+}, "")
      @options = options
      @options[:headers] =
        options[:headers] ? default_headers(@method).merge(options[:headers]) : default_headers(@method)
      @options[:verify] = config.verify_ssl
      @options[:timeout] = config.timeout
      @options[:query] = {} unless options.key? :query

      self.class.debug_output($stdout) if @config.debug

      base_uri = config.base_repo&.length&.positive? ? File.join(config.base_uri, config.base_repo) : config.base_uri
      self.class.base_uri base_uri
    end

    def execute
      self.class.send method, "/#{path}", options
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
archivesspace-client-0.2.0 lib/archivesspace/client/request.rb