lib/testdroid_api/client.rb in testdroid-api-client-0.3.0 vs lib/testdroid_api/client.rb in testdroid-api-client-0.4.0
- old
+ new
@@ -1,15 +1,14 @@
module TestdroidAPI
-class Client
+ class Client
attr_reader :config
attr_accessor :logger
attr_reader :token
API_VERSION = 'api/v2'
- CLOUD_ENDPOINT='https://cloud.testdroid.com'
- ACCEPT_HEADERS={'Accept' => 'application/json'}
+ CLOUD_ENDPOINT = 'https://cloud.bitbar.com'
def initialize(username, password, cloud_url = CLOUD_ENDPOINT, logger = nil)
# Instance variables
@username = username
@password = password
@@ -19,121 +18,114 @@
if @logger.nil?
@logger = Logger.new(STDOUT)
@logger.info("Logger is not defined => output to STDOUT")
end
end
- def label_groups
- label_groups = TestdroidAPI::LabelGroups.new( "/#{API_VERSION}/label-groups", self )
- label_groups.list
- label_groups
- end
- def devices
- devices = TestdroidAPI::Devices.new( "/#{API_VERSION}/devices", self )
- devices.list
- devices
- end
- def authorize
- @client = OAuth2::Client.new('testdroid-cloud-api', nil, :site => @cloud_url, :authorize_url => 'oauth/authorize',
- :token_url => 'oauth/token', :headers => ACCEPT_HEADERS) do |faraday|
- faraday.request :multipart
- faraday.request :url_encoded
+ def authorize
+ @client = OAuth2::Client.new(
+ 'testdroid-cloud-api', nil, :site => @cloud_url, :token_url => 'oauth/token') do |faraday|
+ faraday.request :multipart
+ faraday.request :url_encoded
faraday.response :logger, @logger
- faraday.adapter Faraday.default_adapter
+ faraday.adapter Faraday.default_adapter
end
- @token = @client.password.get_token(@username, @password, :headers => ACCEPT_HEADERS)
+ @token = @client.password.get_token(@username, @password)
- if (@cloud_user.nil?)
- @cloud_user = TestdroidAPI::User.new( "/#{API_VERSION}/me", self ).refresh
- @cloud_user = TestdroidAPI::User.new( "/#{API_VERSION}/users/#{@cloud_user.id}", self ).refresh
+ if @cloud_user.nil?
+ @cloud_user = TestdroidAPI::User.new("/#{API_VERSION}/me", self).refresh
+ @cloud_user = TestdroidAPI::User.new("/#{API_VERSION}/users/#{@cloud_user.id}", self).refresh
end
@cloud_user
end
def mime_for(path)
- mime = MIME::Types.type_for path
- mime.empty? ? 'text/plain' : mime[0].content_type
+ mime = MIME::Types.type_for path
+ mime.empty? ? 'text/plain' : mime[0].content_type
end
def upload(uri, filename)
begin
- @token = @token.refresh!(:headers => ACCEPT_HEADERS) if @token.expired?
+ @token = @token.refresh! if @token.expired?
connection = @token.client.connection
- payload = {:file => Faraday::UploadIO.new(filename, mime_for(filename)) }
- headers = ACCEPT_HEADERS.merge(@token.headers)
- response = connection.post(@cloud_url+"#{uri}",payload, headers)
+ payload = {:file => Faraday::UploadIO.new(filename, mime_for(filename))}
+ response = connection.post(@cloud_url + "#{uri}", payload, @token.headers)
rescue => e
@logger.error e
return nil
end
JSON.parse(response.body)
end
- def post(uri, params)
- @token = @token.refresh!(:headers => ACCEPT_HEADERS) if @token.expired?
+ def post(uri, params = {})
+ @token = @token.refresh! if @token.expired?
+
begin
- resp = @token.post("#{@cloud_url}#{uri}", params.merge(:headers => ACCEPT_HEADERS))
+ resp = @token.post("#{@cloud_url}#{uri}", params)
rescue => e
@logger.error "Failed to post resource #{uri} #{e}"
return nil
end
-
+
if resp.body.nil? || resp.body.length == 0
return nil
end
-
+
JSON.parse(resp.body)
end
- def get(uri, params={})
- @token = @token.refresh!(:headers => ACCEPT_HEADERS) if @token.expired?
+ def get(uri, params = {})
+ @token = @token.refresh! if @token.expired?
+
begin
- resp = @token.get(@cloud_url+"#{uri}", params.merge(:headers => ACCEPT_HEADERS))
+ resp = @token.get(@cloud_url + "#{uri}", :params => params)
rescue => e
@logger.error "Failed to get resource #{uri} #{e}"
return nil
end
JSON.parse(resp.body)
end
+
def delete(uri)
- @token = @token.refresh!(:headers => ACCEPT_HEADERS) if @token.expired?
+ @token = @token.refresh! if @token.expired?
begin
- resp = @token.delete(@cloud_url+"#{uri}", :headers => ACCEPT_HEADERS )
+ resp = @token.delete(@cloud_url + "#{uri}")
rescue => e
@logger.error "Failed to delete resource #{uri} #{e}"
return nil
end
- if (resp.status != 204)
+ if resp.status != 204
@logger.error "Failed to delete resource #{uri} #{e}"
- return nil
else
@logger.info "response: #{resp.status}"
end
end
+
def download(uri, file_name)
begin
- @token = @token.refresh!(:headers => ACCEPT_HEADERS) if @token.expired?
- File.open(file_name, "w+b") do |file|
- resp = @token.get("#{@cloud_url}/#{uri}", :headers => ACCEPT_HEADERS)
+ @token = @token.refresh! if @token.expired?
+ ::File.open(file_name, "w+b") do |file|
+ full_uri = uri.start_with?(@cloud_url) ? uri : @cloud_url + uri
+ resp = @token.get(full_uri)
file.write(resp.body)
end
rescue => e
@logger.error "Failed to get resource #{uri} #{e}"
return nil
end
end
# Resources
- # public read-only
+# public read-only
def info
TestdroidAPI::CloudResource.new("/#{API_VERSION}/info", self, "info")
end
@@ -143,11 +135,11 @@
def label_groups
TestdroidAPI::LabelGroups.new("/#{API_VERSION}/label-groups", self)
end
- # user read-write
+# user read-write
def me
TestdroidAPI::User.new("/#{API_VERSION}/me", self).load
end
@@ -157,10 +149,10 @@
def device_session_connections
TestdroidAPI::DeviceSessionConnections.new("/#{API_VERSION}/device-session-connections", self)
end
- # admin only
+# admin only
def admin
TestdroidAPI::Admin.new("/#{API_VERSION}/admin", self)
end