class MokiRuby::MokiAPI
Constants
- BASE_URL
Public Class Methods
action(device_id, action_id)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 36 def self.action(device_id, action_id) issue_request(:get, full_url("/devices/#{ device_id }/actions/#{ action_id }"), {}) end
device_details(device_id)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 16 def self.device_details(device_id) issue_request(:get, full_url("/devices/#{ device_id }"), {}) end
device_managed_app_list(device_id)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 28 def self.device_managed_app_list(device_id) issue_request(:get, full_url("/devices/#{ device_id }/managedapps"), {}) end
device_profile_list(device_id)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 20 def self.device_profile_list(device_id) issue_request(:get, full_url("/devices/#{ device_id }/profiles"), {}) end
full_url(path)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 44 def self.full_url(path) raise "No Moki URL Provided. Set ENV['MOKI_API_URL']." if ENV['MOKI_API_URL'].nil? || ENV['MOKI_API_URL'].empty? raise "No Tenant ID Provided. Set ENV['MOKI_TENANT_ID']." if ENV['MOKI_TENANT_ID'].nil? || ENV['MOKI_TENANT_ID'].empty? ENV['MOKI_API_URL'] + BASE_URL + ENV['MOKI_TENANT_ID'] + path end
ios_profiles()
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 12 def self.ios_profiles issue_request(:get, full_url('/iosprofiles'), {}) end
issue_request(method, url, options)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 51 def self.issue_request(method, url, options) raise "No API Key Provided. Set ENV['MOKI_API_KEY']." if ENV['MOKI_API_KEY'].nil? || ENV['MOKI_API_KEY'].empty? future = Celluloid::Future.new do begin log_request(method, url) response = conn.send(method, url, options) do |request| request.headers = request.headers.merge(headers) end to_return_type response rescue => e Honeybadger.notify(e, context: { method: method, url: url, options: options, response_status: response.try(:status), response_body: response.try(:body) }) if defined?(Honeybadger) raise e end end future.extend(FutureWrapper) end
perform_action(device_id, body_hash)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 32 def self.perform_action(device_id, body_hash) issue_request(:put, full_url("/devices/#{ device_id }/actions"), body_hash) end
pre_enroll(enroll_hash)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 40 def self.pre_enroll(enroll_hash) issue_request(:post, full_url("/preenroll"), enroll_hash) end
tenant_managed_app_list()
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 24 def self.tenant_managed_app_list issue_request(:get, full_url('/iosmanagedapps'), {}) end
Private Class Methods
conn()
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 90 def self.conn connection = Faraday.new do |conn| conn.request :json conn.adapter Faraday.default_adapter end connection end
headers()
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 98 def self.headers { "X-Moki-TenantAPIToken" => ENV['MOKI_API_KEY'] } end
log_request(method, url)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 104 def self.log_request(method, url) logger = if defined?(Rails) Rails.logger elsif defined?(Napa::Logger) Napa::Logger.logger else nil end return unless logger data = { moki_api_request: { message: "Calling Moki API URL #{ url }", request_method: method, request_url: url, } } logger.info(data.as_json) end
to_return_type(response)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 78 def self.to_return_type response begin Hashie::Mash.new({ body: JSON.parse(response.body), status: response.status, headers: response.headers }) rescue response end end
Public Instance Methods
issue_request(method, url, options)
click to toggle source
# File lib/moki_ruby/moki_api.rb, line 73 def issue_request(method, url, options) self.class.issue_request(method, url, options) end