class Fabricate::Fabricate
Attributes
api_key[R]
app_identifier[R]
developer_token[R]
filename[R]
verbose[RW]
Public Class Methods
new(options)
click to toggle source
# File lib/fabricate.rb, line 14 def initialize(options) @app_identifier = options[:app_identifier] @api_key = options[:api_key] @filename = options[:filename] end
Public Instance Methods
debug(message)
click to toggle source
# File lib/fabricate.rb, line 63 def debug(message) STDERR.puts message if verbose end
output(message)
click to toggle source
# File lib/fabricate.rb, line 71 def output(message) puts message end
print(message)
click to toggle source
# File lib/fabricate.rb, line 67 def print(message) STDERR.puts message end
run!()
click to toggle source
# File lib/fabricate.rb, line 20 def run! debug "Getting CSRF token..." response = Faraday.get "https://fabric.io/login" document = Oga.parse_html(response.body) csrf_token = document.at_css('meta[name="csrf-token"]')['content'] raise "No CSRF token!" if csrf_token.nil? debug "CSRF token: #{csrf_token}" debug "Getting developer token..." response = Faraday.get "https://fabric.io/api/v2/client_boot/config_data" do |req| req.headers['X-CSRF-Token'] = csrf_token end developer_token = JSON.parse!(response.body)['developer_token'] debug "Developer token: #{developer_token}" raise "No developer token!" if developer_token.nil? @developer_token = developer_token debug "Uploading file..." upload_file! end
upload_file!()
click to toggle source
# File lib/fabricate.rb, line 41 def upload_file! conn = Faraday.new do |conn| conn.request :multipart conn.request :url_encoded # Last middleware must be the adapter: conn.adapter :net_http end payload = Hash.new payload['code_mapping[file]'] = Faraday::UploadIO.new(filename, 'application/zip') payload['code_mapping[type]'] = 'dsym' payload['project[identifier]'] = app_identifier response = conn.post "https://cm.crashlytics.com/api/v3/platforms/ios/code_mappings", payload do |req| req.headers['X-CRASHLYTICS-API-KEY'] = api_key req.headers['X-CRASHLYTICS-DEVELOPER-TOKEN'] = developer_token end debug "Status: #{response.status}" debug response.body end