class Castle::Client
Castle’s client.
Attributes
context[RW]
Public Class Methods
from_request(request, options = {})
click to toggle source
# File lib/castle/client.rb, line 10 def from_request(request, options = {}) new(options.merge(context: Castle::Context::Prepare.call(request, options))) end
new(options = {})
click to toggle source
@param options [Hash]
# File lib/castle/client.rb, line 18 def initialize(options = {}) options = Castle::Utils::DeepSymbolizeKeys.call(options || {}) @do_not_track = options.fetch(:do_not_track, false) @timestamp = options.fetch(:timestamp) { Castle::Utils::GetTimestamp.call } @context = options.fetch(:context) { {} } end
Public Instance Methods
authenticate(options = {})
click to toggle source
@param options [Hash]
# File lib/castle/client.rb, line 26 def authenticate(options = {}) options = Castle::Utils::DeepSymbolizeKeys.call(options || {}) return generate_do_not_track_response(options[:user_id]) unless tracked? add_timestamp_if_necessary(options) new_context = Castle::Context::Merge.call(@context, options[:context]) Castle::API::Authenticate.call(options.merge(context: new_context, no_symbolize: true)) end
disable_tracking()
click to toggle source
# File lib/castle/client.rb, line 112 def disable_tracking @do_not_track = true end
enable_tracking()
click to toggle source
# File lib/castle/client.rb, line 116 def enable_tracking @do_not_track = false end
end_impersonation(options = {})
click to toggle source
@param options [Hash]
# File lib/castle/client.rb, line 102 def end_impersonation(options = {}) options = Castle::Utils::DeepSymbolizeKeys.call(options || {}) add_timestamp_if_necessary(options) new_context = Castle::Context::Merge.call(@context, options[:context]) Castle::API::EndImpersonation.call(options.merge(context: new_context, no_symbolize: true)) end
filter(options = {})
click to toggle source
@param options [Hash]
# File lib/castle/client.rb, line 52 def filter(options = {}) options = Castle::Utils::DeepSymbolizeKeys.call(options || {}) return generate_do_not_track_response(options[:user][:id]) unless tracked? add_timestamp_if_necessary(options) new_context = Castle::Context::Merge.call(@context, options[:context]) Castle::API::Filter.call(options.merge(context: new_context, no_symbolize: true)) end
log(options = {})
click to toggle source
@param options [Hash]
# File lib/castle/client.rb, line 78 def log(options = {}) options = Castle::Utils::DeepSymbolizeKeys.call(options || {}) return generate_do_not_track_response(options[:user][:id]) unless tracked? add_timestamp_if_necessary(options) new_context = Castle::Context::Merge.call(@context, options[:context]) Castle::API::Log.call(options.merge(context: new_context, no_symbolize: true)) end
risk(options = {})
click to toggle source
@param options [Hash]
# File lib/castle/client.rb, line 65 def risk(options = {}) options = Castle::Utils::DeepSymbolizeKeys.call(options || {}) return generate_do_not_track_response(options[:user][:id]) unless tracked? add_timestamp_if_necessary(options) new_context = Castle::Context::Merge.call(@context, options[:context]) Castle::API::Risk.call(options.merge(context: new_context, no_symbolize: true)) end
start_impersonation(options = {})
click to toggle source
@param options [Hash]
# File lib/castle/client.rb, line 91 def start_impersonation(options = {}) options = Castle::Utils::DeepSymbolizeKeys.call(options || {}) add_timestamp_if_necessary(options) new_context = Castle::Context::Merge.call(@context, options[:context]) Castle::API::StartImpersonation.call(options.merge(context: new_context, no_symbolize: true)) end
track(options = {})
click to toggle source
@param options [Hash]
# File lib/castle/client.rb, line 39 def track(options = {}) options = Castle::Utils::DeepSymbolizeKeys.call(options || {}) return unless tracked? add_timestamp_if_necessary(options) new_context = Castle::Context::Merge.call(@context, options[:context]) Castle::API::Track.call(options.merge(context: new_context, no_symbolize: true)) end
tracked?()
click to toggle source
@return [Boolean]
# File lib/castle/client.rb, line 121 def tracked? !@do_not_track end
Private Instance Methods
add_timestamp_if_necessary(options)
click to toggle source
@param options [Hash]
# File lib/castle/client.rb, line 133 def add_timestamp_if_necessary(options) options[:timestamp] ||= @timestamp if @timestamp end
generate_do_not_track_response(user_id)
click to toggle source
@param user_id [String, Boolean]
# File lib/castle/client.rb, line 128 def generate_do_not_track_response(user_id) Castle::Failover::PrepareResponse.new(user_id, strategy: :allow, reason: 'Castle is set to do not track.').call end