Class: AzureAPI::Rest
- Inherits:
-
Object
- Object
- AzureAPI::Rest
- Defined in:
- lib/azure/service_management/rest.rb
Instance Method Summary collapse
- #http_query(request_url, verb, body, params, content_type = nil) ⇒ Object
- #http_setup(uri) ⇒ Object
-
#initialize(params) ⇒ Rest
constructor
A new instance of Rest.
- #query_azure(service_name, verb = "get", body = "", params = "", services = true, content_type = nil) ⇒ Object
- #query_for_completion ⇒ Object
- #request_setup(uri, verb, body, content_type) ⇒ Object
- #showResponse(response) ⇒ Object
Constructor Details
#initialize(params) ⇒ Rest
Returns a new instance of Rest.
25 26 27 28 29 30 |
# File 'lib/azure/service_management/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_query(request_url, verb, body, params, content_type = nil) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/azure/service_management/rest.rb', line 52 def http_query(request_url, verb, body, params, content_type = nil) uri = URI.parse(request_url) uri.query = params http = http_setup(uri) request = request_setup(uri, verb, body, content_type) response = http.request(request) @last_request_id = response["x-ms-request-id"] response end |
#http_setup(uri) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/azure/service_management/rest.rb', line 74 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 = "", params = "", services = true, content_type = nil) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/azure/service_management/rest.rb', line 32 def query_azure(service_name, verb = "get", body = "", params = "", services = true, content_type = nil) svc_str = services ? "/services" : "" uri = URI.parse("#{@host_name}/#{@subscription_id}#{svc_str}/#{service_name}") scheme = !uri.scheme ? "https://" : "" request_url = "#{scheme}#{@host_name}/#{@subscription_id}#{svc_str}/#{service_name}" print "." response = http_query(request_url, verb, body, params, content_type) if response.code.to_i == 307 Chef::Log.debug "Redirect to #{response['Location']}" response = http_query(response["Location"], verb, body, params, content_type) end @last_request_id = response["x-ms-request-id"] response end |
#query_for_completion ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/azure/service_management/rest.rb', line 62 def query_for_completion uri = URI.parse("#{@host_name}/#{@subscription_id}/operations/#{@last_request_id}") scheme = !uri.scheme ? "https://" : "" request_url = "#{scheme}#{@host_name}/#{@subscription_id}/operations/#{@last_request_id}" response = http_query(request_url, "get", "", "") if response.code.to_i == 307 Chef::Log.debug "Redirect to #{response['Location']}" response = http_query(response["Location"], "get", "", "") end response end |
#request_setup(uri, verb, body, content_type) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/azure/service_management/rest.rb', line 94 def request_setup(uri, verb, body, content_type) 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) elsif verb == "put" request = Net::HTTP::Put.new(uri.request_uri) end text = verb == "put" && content_type.nil? request["x-ms-version"] = "2014-05-01" request["content-type"] = text ? "text/plain" : "application/xml" request["accept"] = "application/xml" request["accept-charset"] = "utf-8" request.body = body request end |
#showResponse(response) ⇒ Object
113 114 115 116 117 118 119 120 121 122 |
# File 'lib/azure/service_management/rest.rb', line 113 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 |