Class: MsRest::HttpOperationRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/ms_rest/http_operation_request.rb

Overview

Class which represents the data received and deserialized from server.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_uri, path_template, method, options = {}) ⇒ HttpOperationRequest

Creates and initialize new instance of the HttpOperationResponse class.

Parameters:

  • base (String|URI)

    uri for requests

  • path (String)

    template /replace/url_param

  • http (String)

    method for the request

  • body (Hash)

    the HTTP response body.



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/ms_rest/http_operation_request.rb', line 52

def initialize(base_uri, path_template, method, options = {})
  fail 'path_template must not be nil' if path_template.nil?
  fail 'method must not be nil' if method.nil?
  
  @base_uri = base_uri || ''
  @path_template = path_template
  @method = method
  @headers = {}
  @user_agent_extended = []
  
  options.each do |k,v|
    instance_variable_set("@#{k}", v) unless v.nil?
  end
end

Instance Attribute Details

#base_uriString

Returns base uri of the request.

Returns:

  • (String)

    base uri of the request



24
25
26
# File 'lib/ms_rest/http_operation_request.rb', line 24

def base_uri
  @base_uri
end

#bodyString

Returns the HTTP response body.

Returns:

  • (String)

    the HTTP response body.



36
37
38
# File 'lib/ms_rest/http_operation_request.rb', line 36

def body
  @body
end

#headersHash

Returns request headers.

Returns:

  • (Hash)

    request headers



30
31
32
# File 'lib/ms_rest/http_operation_request.rb', line 30

def headers
  @headers
end

#logString

Returns full - to log requests, responses and bodies, partial - just requests and responses without body.

Returns:

  • (String)

    full - to log requests, responses and bodies, partial - just requests and responses without body



42
43
44
# File 'lib/ms_rest/http_operation_request.rb', line 42

def log
  @log
end

#methodString

Returns http request method.

Returns:

  • (String)

    http request method



33
34
35
# File 'lib/ms_rest/http_operation_request.rb', line 33

def method
  @method
end

#middlewaresArray

Returns the list of middlewares to apply to the Request.

Returns:

  • (Array)

    the list of middlewares to apply to the Request



39
40
41
# File 'lib/ms_rest/http_operation_request.rb', line 39

def middlewares
  @middlewares
end

#path_paramsHash

Returns path parameters to be ERB::Util.url_encode encoded.

Returns:

  • (Hash)

    path parameters to be ERB::Util.url_encode encoded



12
13
14
# File 'lib/ms_rest/http_operation_request.rb', line 12

def path_params
  @path_params
end

#path_templateString

Returns path template /replace/url_param.

Returns:

  • (String)

    path template /replace/url_param



27
28
29
# File 'lib/ms_rest/http_operation_request.rb', line 27

def path_template
  @path_template
end

#query_paramsHash

Returns query parameters to be ERB::Util.url_encode encoded.

Returns:

  • (Hash)

    query parameters to be ERB::Util.url_encode encoded



18
19
20
# File 'lib/ms_rest/http_operation_request.rb', line 18

def query_params
  @query_params
end

#skip_encoding_path_paramsHash

Returns path parameters not to be ERB::Util.url_encode encoded.

Returns:

  • (Hash)

    path parameters not to be ERB::Util.url_encode encoded



15
16
17
# File 'lib/ms_rest/http_operation_request.rb', line 15

def skip_encoding_path_params
  @skip_encoding_path_params
end

#skip_encoding_query_paramsHash

Returns query parameters to be ERB::Util.url_encode encoded.

Returns:

  • (Hash)

    query parameters to be ERB::Util.url_encode encoded



21
22
23
# File 'lib/ms_rest/http_operation_request.rb', line 21

def skip_encoding_query_params
  @skip_encoding_query_params
end

#user_agent_extendedArray

Returns strings to be appended to the user agent in the request.

Returns:

  • (Array)

    strings to be appended to the user agent in the request



45
46
47
# File 'lib/ms_rest/http_operation_request.rb', line 45

def user_agent_extended
  @user_agent_extended
end

Instance Method Details

#build_pathURI

Creates a path from the path template and the path_params and skip_encoding_path_params

Returns:

  • (URI)

    body the HTTP response body.



90
91
92
93
94
95
96
97
98
99
# File 'lib/ms_rest/http_operation_request.rb', line 90

def build_path
  template = path_template.dup
  path_params.each{ |key, value| template["{#{key}}"] = ERB::Util.url_encode(value) if template.include?("{#{key}}") } unless path_params.nil?
  skip_encoding_path_params.each{ |key, value| template["{#{key}}"] = value } unless skip_encoding_path_params.nil?
  path = URI.parse(template.gsub(/([^:])\/\//, '\1/'))
  unless skip_encoding_query_params.nil?
    path.query = [(path.query || ""), skip_encoding_query_params.reject{|_, v| v.nil?}.map{|k,v| "#{k}=#{v}"}].join('&')
  end
  path
end

#full_uriObject



101
102
103
# File 'lib/ms_rest/http_operation_request.rb', line 101

def full_uri
  URI.join(base_uri || '', build_path)
end

#run_promise(&block) ⇒ URI

Creates a promise which will execute the request. Block will yield the request for customization.

Returns:

  • (URI)

    body the HTTP response body.



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/ms_rest/http_operation_request.rb', line 69

def run_promise(&block)
  Concurrent::Promise.new do
    @connection ||= Faraday.new(:url => base_uri, :ssl => MsRest.ssl_options) do |faraday|
      middlewares.each{ |args| faraday.use(*args) } unless middlewares.nil?
      faraday.adapter Faraday.default_adapter
      logging = ENV['AZURE_HTTP_LOGGING'] || log
      if logging
        faraday.response :logger, nil, { :bodies => logging == 'full' }
      end
    end

    @connection.run_request(:"#{method}", build_path, body, {'User-Agent' => user_agent}.merge(headers)) do |req|
      req.params = req.params.merge(query_params.reject{|_, v| v.nil?}) unless query_params.nil?
      yield(req) if block_given?
    end
  end
end

#to_json(*a) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/ms_rest/http_operation_request.rb', line 109

def to_json(*a)
  {
    base_uri: base_uri,
    path_template: path_template,
    method: method, 
    path_params: path_params,
    skip_encoding_path_params: skip_encoding_path_params,
    query_params: query_params,
    skip_encoding_query_params: skip_encoding_query_params,
    headers: headers,
    body: body,
    middlewares: middlewares,
    log: log  
  }.to_json(*a)
end

#user_agentObject



105
106
107
# File 'lib/ms_rest/http_operation_request.rb', line 105

def user_agent
  "Ruby/#{RUBY_VERSION} (#{RUBY_PLATFORM}) #{user_agent_extended.join(' ')}"
end