class Fanforce::AppFactory::CLI::Uranium include Fanforce::AppFactory::CLI::Utils attr_reader :app def initialize(app) @app = app end def uranium config[:uranium] || (error 'Uranium credentials were not found in config file') end def create RestClient.get("http://#{Fanforce.uranium_domain}/apps/#{app._id}") do |response| if response.code == 404 setup(false) elsif response.code < 300 confirm "\nThis app (#{app._id}) already exists in uranium. Proceeding will overwrite it.\n"+ 'OVERWRITE EXISTING URANIUM VERSION?', true setup(true) else raise response.to_s end end end def setup(exists_in_uranium=true) attrs = { :_puid => app._id, :developer_email => config[:uranium][:developer_email], :developer_password => config[:uranium][:developer_password], :update_if_exists => exists_in_uranium } url = "http://#{Fanforce.uranium_domain}/apps" RestClient.post(url, attrs) do |response| raise "#{response}: curl -X POST -d '#{attrs.to_param}' #{url}" if response.code >= 300 response = MultiJson.load(response.body, symbolize_keys: true) exists_in_uranium = true if response[:updated] end if exists_in_uranium log "#{'Updated '.format(:green,:bold)}" + "#{app._id} in uranium" else log "#{'Added '.format(:green,:bold)}" + "#{app._id} to uranium" end end def destroy if app.config[:awaiting_uranium_setup] return log "#{'Skipped '.format(:green,:bold)}" + 'since config.json was still awaiting uranium setup' elsif app.config.size == 0 return log "#{'Missing '.format(:green,:bold)}" + "config.json so assuming #{app._id} was removed from uranium" end error 'Uranium credentials were not found in config file' if !config[:uranium] error 'Your app\'s config.json is missing a _iuid field (delete config.json to skip)' if !app.config[:_iuid] attrs = { :developer_email => config[:uranium][:developer_email], :developer_password => config[:uranium][:developer_password] } url = "http://#{Fanforce.uranium_domain}/apps/#{app.config[:_iuid]}" RestClient.delete(url, params: attrs) do |response| if response.code == 404 return log "#{'Already Removed '.format(:green,:bold)}" + "#{app._id} from uranium" elsif response.code >= 300 log "curl -X DELETE -d '#{attrs.to_param}' #{url}" raise response.to_s end end log "#{'Removed '.format(:green,:bold)}" + "#{app._id} from uranium" end end