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/#{GroupDocs.client_id}/info"
end

Parameters:

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

Options Hash (options):

  • :method (Symbol)

    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, File)

    Payload. If hash, will be converted to JSON, if File, will be send as is.

Yield Parameters:

  • options (Hash)


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

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

Instance Attribute Details

#accessObject



19
20
21
# File 'lib/groupdocs/api/request.rb', line 19

def access
  @access
end

#optionsObject



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

def options
  @options
end

#resourceObject (readonly)



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

def resource
  @resource
end

#responseObject



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

def response
  @response
end

Instance Method Details

#execute!Hash, String

Executes API request to server.

It performs the following actions step by step:

* Normalizes path (i.e. replace // with /)
* Parses path (i.e. replaces client ID)
* Prepends path with version if it's set
* URL encodes path
* Signs URL
* Prepare request (add headers, converts payload to JSON, etc.)
* Sends request to server
* Parses response

Returns:

  • (Hash, String)

    Parsed response



61
62
63
64
65
66
67
68
69
70
# File 'lib/groupdocs/api/request.rb', line 61

def execute!
  normalize_path
  parse_path
  prepend_version
  url_encode_path
  sign_url
  prepare_request
  send_request
  parse_response
end