Class: CastleDevise::SdkFacade
- Inherits:
-
Object
- Object
- CastleDevise::SdkFacade
- Defined in:
- lib/castle_devise/sdk_facade.rb
Overview
A Facade layer providing a simpler API on top of the Castle SDK
Instance Attribute Summary collapse
- #castle ⇒ Castle::Client readonly
Instance Method Summary collapse
-
#filter(event:, context:, status: "$attempted") ⇒ Hash
Sends request to the /v1/filter endpoint.
-
#initialize(castle, before_request_hooks = [], after_request_hooks = []) ⇒ SdkFacade
constructor
A new instance of SdkFacade.
-
#log(event:, status:, context:) ⇒ Hash
Sends request to the /v1/log endpoint.
-
#risk(event:, context:, status: "$succeeded") ⇒ Hash
Sends request to the /v1/risk endpoint.
Constructor Details
#initialize(castle, before_request_hooks = [], after_request_hooks = []) ⇒ SdkFacade
Returns a new instance of SdkFacade.
12 13 14 15 16 |
# File 'lib/castle_devise/sdk_facade.rb', line 12 def initialize(castle, before_request_hooks = [], after_request_hooks = []) @castle = castle @before_request_hooks = before_request_hooks @after_request_hooks = after_request_hooks end |
Instance Attribute Details
#castle ⇒ Castle::Client (readonly)
7 8 9 |
# File 'lib/castle_devise/sdk_facade.rb', line 7 def castle @castle end |
Instance Method Details
#filter(event:, context:, status: "$attempted") ⇒ Hash
Sends request to the /v1/filter endpoint.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/castle_devise/sdk_facade.rb', line 23 def filter(event:, context:, status: "$attempted") payload = { event: event, status: status, params: { email: context.email }.compact, request_token: context.request_token, context: payload_context(context.rack_request) } with_request_hooks(:filter, context, payload) do castle.filter(payload) end end |
#log(event:, status:, context:) ⇒ Hash
Sends request to the /v1/log endpoint.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/castle_devise/sdk_facade.rb', line 72 def log(event:, status:, context:) return if context.castle_id.blank? && context.email.blank? user = if context.castle_id { id: context.castle_id, email: context.email, registered_at: format_time(context.registered_at), traits: context.user_traits } else { email: context.email } end payload = { event: event, status: status, user: user, context: payload_context(context.rack_request) } # request_token is optional on the Log endpoint, but if it's sent it must # be a valid Castle token payload[:request_token] = context.request_token if context.request_token with_request_hooks(:log, context, payload) do castle.log(payload) end end |
#risk(event:, context:, status: "$succeeded") ⇒ Hash
Sends request to the /v1/risk endpoint.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/castle_devise/sdk_facade.rb', line 45 def risk(event:, context:, status: "$succeeded") payload = { event: event, status: status, user: { id: context.castle_id, email: context.email, registered_at: format_time(context.registered_at), traits: context.user_traits }, request_token: context.request_token, context: payload_context(context.rack_request) } payload[:user][:name] = context.username if context.username with_request_hooks(:risk, context, payload) do castle.risk(payload) end end |