class CloudappExport::Api
Constants
- DEFAULT_HOST
Public Class Methods
new(options = {})
click to toggle source
# File lib/cloudapp_export/api.rb, line 11 def initialize(options = {}) @options = options end
Public Instance Methods
authenticate!()
click to toggle source
# File lib/cloudapp_export/api.rb, line 15 def authenticate! response = request("items?per_page=1") return true if response.status_code == 200 # TODO: Use custom exception classes raise response.body.strip end
request(path)
click to toggle source
# File lib/cloudapp_export/api.rb, line 22 def request(path) digest_auth = Net::HTTP::DigestAuth.new uri = URI.parse("https://#{host}/v3/#{path}") uri.user = CGI.escape(username) uri.password = password Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| # First request is a 401 response with a WWW-Authenticate header request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) # Create a new request with the Authorization header auth = digest_auth.auth_header(uri, response['www-authenticate'], 'GET') request = Net::HTTP::Get.new(uri.request_uri) request.add_field('Authorization', auth) # re-issue request with Authorization ApiResponse.new(http.request(request)) end end
Protected Instance Methods
host()
click to toggle source
# File lib/cloudapp_export/api.rb, line 45 def host @options['host'] || DEFAULT_HOST end
password()
click to toggle source
# File lib/cloudapp_export/api.rb, line 53 def password @options['password'] || raise('Password is required for API use') end
username()
click to toggle source
# File lib/cloudapp_export/api.rb, line 49 def username @options['username'] || raise('Username is required for API use') end