Class: GroupDocs::Api::Request

Inherits:
Object
  • Object
show all
Includes:
Helpers::Credentials, Helpers::REST, Helpers::URL
Defined in:
lib/groupdocs/api/request.rb

Constant Summary

Constants included from Helpers::REST

Helpers::REST::DEFAULT_HEADERS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers::URL

#add_params

Constructor Details

#initialize(options = {}) {|options| ... } ⇒ Request

Creates new API request.

Examples:

api = GroupDocs::Api::Request.new do |request|
  request[:method] = :POST
  request[:path] = "/storage/{{client_id}}/info"
end

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :method (Symbol, String)

    HTTP method. One of :GET, :DOWNLOAD, :POST, :PUT or :DELETE.

  • :path (String)

    Path to send request to

  • :headers (Hash)

    Additional HTTP headers

  • :access (Hash)

    Access credentials hash

  • :request_body (Hash, String, Array, File)

    payload

  • :plain (Boolean)

    Send payload as plain text (i.e. do not convert to JSON). Defaults to false.

  • :sign (Boolean)

    Should URL be signed. Defaults to true.

Yield Parameters:

  • options (Hash)


38
39
40
41
42
43
44
# File 'lib/groupdocs/api/request.rb', line 38

def initialize(options = {}, &blk)
  @options = options
  yield @options if block_given?
  @options[:access] ||= {}
  @options[:sign] = true if @options[:sign].nil?
  @resource = RestClient::Resource.new(GroupDocs.api_server)
end

Instance Attribute Details

#accessObject



16
17
18
# File 'lib/groupdocs/api/request.rb', line 16

def access
  @access
end

#optionsObject



14
15
16
# File 'lib/groupdocs/api/request.rb', line 14

def options
  @options
end

#resourceObject (readonly)



10
11
12
# File 'lib/groupdocs/api/request.rb', line 10

def resource
  @resource
end

#responseObject



12
13
14
# File 'lib/groupdocs/api/request.rb', line 12

def response
  @response
end

Instance Method Details

#execute!Hash, String

Executes API request to server.

It performs the following actions step by step:

* Prepends path with version if it's set
* Prepares and signs URL
* Prepare request (add headers, converts payload to JSON, etc.)
* Sends request to server
* Parses response

Returns:

  • (Hash, String)

    Parsed response



81
82
83
84
85
86
87
# File 'lib/groupdocs/api/request.rb', line 81

def execute!
  prepend_version
  prepare_and_sign_url
  prepare_request
  send_request
  parse_response
end

#prepare_and_sign_urlString

Prepares, signs and returns absolute URL.

It performs the following actions step by step:

* Parses path (i.e. replaces client ID)
* URL encodes path
* Signs URL

Returns:

  • (String)


56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/groupdocs/api/request.rb', line 56

def prepare_and_sign_url
  unless @signed
    # the order is important here and if client_id is replaced after path
    # is encoded, there might be bad requests
    replace_client_id if @options[:sign]
    url_encode_path
    sign_url          if @options[:sign]
    @signed = true
  end

  options[:path]
end