Class: AzureAPI::Rest

Inherits:
Object
  • Object
show all
Defined in:
lib/azure/rest.rb

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Rest

Returns a new instance of Rest.



25
26
27
28
29
30
# File 'lib/azure/rest.rb', line 25

def initialize(params)
  @subscription_id = params[:azure_subscription_id]
  @pem_file = params[:azure_mgmt_cert]
  @host_name = params[:azure_api_host_name]
  @verify_ssl = params[:verify_ssl_cert]
end

Instance Method Details

#http_setup(uri) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/azure/rest.rb', line 48

def http_setup(uri)
  http = Net::HTTP.new(uri.host, uri.port)
  store = OpenSSL::X509::Store.new
  store.set_default_paths
  http.cert_store = store
  if @verify_ssl
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER
  else
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end
  http.use_ssl = true
  begin
    http.cert = OpenSSL::X509::Certificate.new(@pem_file)
  rescue OpenSSL::X509::CertificateError => err
    raise "Invalid Azure Certificate pem file. Error: #{err}"
  end
    http.key = OpenSSL::PKey::RSA.new(@pem_file)
  http
end

#query_azure(service_name, verb = 'get', body = '') ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/azure/rest.rb', line 31

def query_azure(service_name, verb = 'get', body = '')
  request_url = "https://#{@host_name}/#{@subscription_id}/services/#{service_name}"
  print '.'
  uri = URI.parse(request_url)
  http = http_setup(uri)
  request = request_setup(uri, verb, body)
  response = http.request(request)
  @last_request_id = response['x-ms-request-id']
  response
end

#query_for_completionObject



41
42
43
44
45
46
47
# File 'lib/azure/rest.rb', line 41

def query_for_completion()
  request_url = "https://#{@host_name}/#{@subscription_id}/operations/#{@last_request_id}"
  uri = URI.parse(request_url)
  http = http_setup(uri)
  request = request_setup(uri, 'get', '')
  response = http.request(request)
end

#request_setup(uri, verb, body) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/azure/rest.rb', line 67

def request_setup(uri, verb, body)
  if verb == 'get'
    request = Net::HTTP::Get.new(uri.request_uri)
  elsif verb == 'post'
    request = Net::HTTP::Post.new(uri.request_uri)
  elsif verb == 'delete'
    request = Net::HTTP::Delete.new(uri.request_uri)
  end
  request["x-ms-version"] = "2012-03-01"
  request["content-type"] = "application/xml"
  request["accept"] = "application/xml"
  request["accept-charset"] = "utf-8"
  request.body = body
  request
end

#showResponse(response) ⇒ Object



82
83
84
85
86
87
88
89
90
91
# File 'lib/azure/rest.rb', line 82

def showResponse(response)
  puts "=== response body ==="
  puts response.body
  puts "=== response.code ==="
  puts response.code
  puts "=== response.inspect ==="
  puts response.inspect
  puts "=== all of the headers ==="
  puts response.each_header { |h, j| puts h.inspect + ' : ' + j.inspect}
end