class PencilcaseTeamsShipit::API
Public Class Methods
new(key, token)
click to toggle source
# File lib/pencilcase_teams_shipit/api.rb, line 11 def initialize(key, token) @key = key @token = token end
pencilcase_url()
click to toggle source
# File lib/pencilcase_teams_shipit/api.rb, line 7 def self.pencilcase_url ENV['PENCILCASE_URL'] ? ENV['PENCILCASE_URL'] : 'https://teams.pencilcase.io/api/v1' end
Public Instance Methods
check_metadata(metadata, filename)
click to toggle source
# File lib/pencilcase_teams_shipit/api.rb, line 73 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(title, bundle_id, uuid, filename)
click to toggle source
# File lib/pencilcase_teams_shipit/api.rb, line 63 def confirm_upload(title, bundle_id, uuid, filename) options = { title: title, bundle_id: bundle_id, uuid: uuid } response = RestClient.put(PencilcaseTeamsShipit::API::pencilcase_url + "/shipit", options, {"X-PencilCase-UUID" => @key, "X-PencilCase-Token" => @token}) metadata = JSON.parse(response) end
obtain_upload_url(filename)
click to toggle source
# File lib/pencilcase_teams_shipit/api.rb, line 44 def obtain_upload_url(filename) options = { filename: filename} begin response = RestClient.post(PencilcaseTeamsShipit::API::pencilcase_url + "/shipit", options, {"X-Pencilcase-UUID" => @key, "X-PencilCase-Token" => @token}) rescue Exception => e puts e.message.colorize(:red) response = nil end end
upload(title, bundle_id, filename)
click to toggle source
# File lib/pencilcase_teams_shipit/api.rb, line 16 def upload(title, bundle_id, 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 #{bundle_id}".colorize(:green) response = self.upload_version(item_details, filename) return false if response.nil? puts "Confirming upload of #{bundle_id}".colorize(:green) metadata = self.confirm_upload(title, bundle_id, item_details['uuid'], filename) return false if metadata.nil? puts "Verifying metadata".colorize(:green) if self.check_metadata(metadata, filename) puts "Success".colorize(:green) true else puts "ERROR!".colorize(:red) false end else puts "ERROR: The file that you've specified does not exist".colorize(:red) false end end
upload_version(options, file)
click to toggle source
# File lib/pencilcase_teams_shipit/api.rb, line 54 def upload_version(options, file) begin response = RestClient.post options['url'], options['fields'].merge(file: File.new("#{file}", 'rb')), {} rescue Exception => e puts e.message.colorize(:red) response = nil end end