class RobocaseShipit::API
Public Class Methods
new(key, token)
click to toggle source
# File lib/robocase_shipit/api.rb, line 10 def initialize(key, token) @key = key @token = token end
robocase_url()
click to toggle source
# File lib/robocase_shipit/api.rb, line 6 def self.robocase_url ENV['ROBOCASE_URL'] ? ENV['ROBOCASE_URL'] : 'https://www.robocase.io/api/v1' end
Public Instance Methods
check_metadata(metadata, filename)
click to toggle source
# File lib/robocase_shipit/api.rb, line 65 def check_metadata(metadata, filename) s3_size = metadata['content_length'] s3_md5 = metadata['etag'] if s3_size && s3_md5 size = File.size filename if size == s3_size puts "#{s3_size} matches #{size}".colorize(:green) else puts "ERROR: #{s3_size} did not match #{size}".colorize(:red) return false end md5 = Digest::MD5.file(filename).hexdigest if "\"#{md5}\"" == s3_md5 puts "#{s3_md5} matches \"#{md5}\"".colorize(:green) else puts "ERROR: #{s3_md5} did not match \"#{md5}\"".colorize(:red) return false end true else puts "ERROR: uploaded file did not match!" false end end
confirm_upload(uuid, filename)
click to toggle source
# File lib/robocase_shipit/api.rb, line 59 def confirm_upload(uuid, filename) options = { uuid: uuid } response = RestClient.put(RobocaseShipit::API::robocase_url + "/items/version", options, {"X-RoboCase-UUID" => @key, "X-RoboCase-Token" => @token}) metadata = JSON.parse(response) end
obtain_upload_url(filename)
click to toggle source
# File lib/robocase_shipit/api.rb, line 40 def obtain_upload_url(filename) options = { filename: filename} begin response = RestClient.post(RobocaseShipit::API::robocase_url + "/items/version", options, {"X-Robocase-UUID" => @key, "X-RoboCase-Token" => @token}) rescue Exception => e puts e.message.colorize(:red) response = nil end end
upload(filename)
click to toggle source
# File lib/robocase_shipit/api.rb, line 15 def upload(filename) if File.exists?(filename) response = self.obtain_upload_url(filename) return if response.nil? item_details = JSON.parse(response) puts "Uploading new version of #{item_details['item']}".colorize(:green) response = self.upload_version(item_details, filename) return if response.nil? puts "Confirming upload of #{item_details['item']}".colorize(:green) metadata = self.confirm_upload(item_details['uuid'], filename) return if metadata.nil? puts "Verifying metadata".colorize(:green) if self.check_metadata(metadata, filename) puts "Success".colorize(:green) else puts "ERROR!".colorize(:red) end else puts "ERROR: The file that you've specified does not exist".colorize(:red) end end
upload_version(options, file)
click to toggle source
# File lib/robocase_shipit/api.rb, line 50 def upload_version(options, file) begin response = RestClient.post options['url'], options['fields'].merge(file: File.new("./#{file}", 'rb')), {} rescue puts e.message.colorize(:red) response = nil end end