lib/nightcrawler_swift/connection.rb in nightcrawler_swift-0.1.1 vs lib/nightcrawler_swift/connection.rb in nightcrawler_swift-0.2.0

- old
+ new

@@ -1,44 +1,49 @@ module NightcrawlerSwift class Connection - attr_accessor :opts, :auth_response, :token_id, :expires_at, :admin_url, :upload_url + attr_accessor :opts, :auth_response, :token_id, :expires_at, :admin_url, :upload_url, :public_url # Hash with: bucket, tenant_name, username, password, auth_url # def initialize opts = {} @opts = OpenStruct.new opts end def connect! - response = RestClient.post( - opts.auth_url, - { - auth: { - tenantName: opts.tenant_name, - passwordCredentials: {username: opts.username, password: opts.password} - } - }.to_json, + auth_response = authenticate! - content_type: :json, - accept: :json, - ) - - @auth_response = OpenStruct.new(JSON.parse(response.body)) - @token_id = @auth_response.access["token"]["id"] - @expires_at = @auth_response.access["token"]["expires"] + @token_id = auth_response.access["token"]["id"] + @expires_at = auth_response.access["token"]["expires"] @expires_at = DateTime.parse(@expires_at).to_time - @admin_url = @auth_response.access["serviceCatalog"].first["endpoints"].first["adminURL"] + @admin_url = auth_response.access["serviceCatalog"].first["endpoints"].first["adminURL"] @upload_url = "#{@admin_url}/#{opts.bucket}" + @public_url = auth_response.access["serviceCatalog"].first["endpoints"].first["publicURL"] NightcrawlerSwift.logger.info "Connected, token_id: #{@token_id}" self - - rescue StandardError => e - raise Exceptions::ConnectionError.new(e) end def connected? !self.token_id.nil? and self.expires_at > Time.now + end + + private + + def authenticate! + auth_options = { + tenantName: opts.tenant_name, + passwordCredentials: {username: opts.username, password: opts.password} + } + + response = RestClient.post( + opts.auth_url, { auth: auth_options }.to_json, + content_type: :json, + accept: :json, + ) + + OpenStruct.new(JSON.parse(response.body)) + rescue StandardError => e + raise Exceptions::ConnectionError.new(e) end end end