securenative 0.1.20 → 0.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -1
  3. data/Gemfile.lock +76 -82
  4. data/README.md +45 -40
  5. data/lib/securenative/api_manager.rb +41 -0
  6. data/lib/securenative/config/configuration_builder.rb +29 -0
  7. data/lib/securenative/config/configuration_manager.rb +58 -0
  8. data/lib/securenative/config/securenative_options.rb +25 -0
  9. data/lib/securenative/context/hanami_context.rb +44 -0
  10. data/lib/securenative/context/rails_context.rb +46 -0
  11. data/lib/securenative/context/securenative_context.rb +69 -0
  12. data/lib/securenative/context/sinatra_context.rb +44 -0
  13. data/lib/securenative/enums/api_route.rb +8 -0
  14. data/lib/securenative/enums/event_types.rb +25 -0
  15. data/lib/securenative/enums/failover_strategy.rb +8 -0
  16. data/lib/securenative/enums/risk_level.rb +9 -0
  17. data/lib/securenative/errors/securenative_config_error.rb +6 -0
  18. data/lib/securenative/errors/securenative_http_error.rb +6 -0
  19. data/lib/securenative/errors/securenative_invalid_options_error.rb +6 -0
  20. data/lib/securenative/errors/securenative_invalid_uri_error.rb +6 -0
  21. data/lib/securenative/errors/securenative_parse_error.rb +6 -0
  22. data/lib/securenative/errors/securenative_sdk_Illegal_state_error.rb +6 -0
  23. data/lib/securenative/errors/securenative_sdk_error.rb +6 -0
  24. data/lib/securenative/event_manager.rb +159 -0
  25. data/lib/securenative/http/secure_native_http_response.rb +14 -0
  26. data/lib/securenative/http/securenative_http_client.rb +52 -0
  27. data/lib/securenative/models/client_token.rb +14 -0
  28. data/lib/securenative/models/device.rb +12 -0
  29. data/lib/securenative/models/event_options.rb +39 -0
  30. data/lib/securenative/models/request_context.rb +20 -0
  31. data/lib/securenative/models/request_options.rb +14 -0
  32. data/lib/securenative/models/sdk_event.rb +51 -0
  33. data/lib/securenative/models/user_traits.rb +15 -0
  34. data/lib/securenative/models/verify_result.rb +18 -0
  35. data/lib/securenative/sdk.rb +85 -0
  36. data/lib/securenative/utils/date_utils.rb +11 -0
  37. data/lib/securenative/utils/encryption_utils.rb +51 -0
  38. data/lib/securenative/utils/ip_utils.rb +25 -0
  39. data/lib/securenative/utils/request_utils.rb +71 -0
  40. data/lib/securenative/utils/secure_native_logger.rb +46 -0
  41. data/lib/securenative/utils/signature_utils.rb +18 -0
  42. data/lib/securenative/utils/utils.rb +11 -0
  43. data/lib/securenative/utils/version_utils.rb +13 -0
  44. data/out/production/securenative-ruby/api_manager.rb +13 -5
  45. data/out/production/securenative-ruby/config/configuration_builder.rb +6 -9
  46. data/out/production/securenative-ruby/config/configuration_manager.rb +24 -23
  47. data/out/production/securenative-ruby/config/securenative_options.rb +8 -5
  48. data/{lib → out/production/securenative-ruby}/context/hanami_context.rb +9 -2
  49. data/{lib → out/production/securenative-ruby}/context/rails_context.rb +4 -1
  50. data/out/production/securenative-ruby/context/securenative_context.rb +35 -8
  51. data/{lib → out/production/securenative-ruby}/context/sinatra_context.rb +11 -4
  52. data/out/production/securenative-ruby/event_manager.rb +15 -14
  53. data/{lib → out/production/securenative-ruby}/http/secure_native_http_response.rb +0 -0
  54. data/out/production/securenative-ruby/http/securenative_http_client.rb +23 -5
  55. data/out/production/securenative-ruby/models/event_options.rb +23 -1
  56. data/out/production/securenative-ruby/models/request_context.rb +2 -2
  57. data/out/production/securenative-ruby/models/sdk_event.rb +22 -6
  58. data/out/production/securenative-ruby/models/user_traits.rb +1 -1
  59. data/out/production/securenative-ruby/models/verify_result.rb +5 -1
  60. data/out/production/securenative-ruby/securenative.rb +2 -10
  61. data/out/production/securenative-ruby/utils/date_utils.rb +1 -1
  62. data/out/production/securenative-ruby/utils/encryption_utils.rb +38 -24
  63. data/out/production/securenative-ruby/utils/request_utils.rb +53 -7
  64. data/out/production/securenative-ruby/utils/secure_native_logger.rb +6 -6
  65. data/out/production/securenative-ruby/utils/version_utils.rb +5 -6
  66. data/out/test/securenative-ruby/spec_api_manager.rb +37 -31
  67. data/out/test/securenative-ruby/spec_context_builder.rb +52 -34
  68. data/out/test/securenative-ruby/spec_encryption_utils.rb +13 -13
  69. data/out/test/securenative-ruby/spec_event_manager.rb +49 -15
  70. data/out/test/securenative-ruby/spec_helper.rb +8 -0
  71. data/out/test/securenative-ruby/spec_request_utils.rb +25 -0
  72. data/out/test/securenative-ruby/spec_sdk_event.rb +24 -0
  73. data/out/test/securenative-ruby/spec_securenative.rb +35 -39
  74. data/out/test/securenative-ruby/spec_securenative_http_client.rb +13 -5
  75. data/out/test/securenative-ruby/spec_signature_utils.rb +1 -1
  76. data/out/test/securenative-ruby/spec_version_util.rb +10 -0
  77. data/securenative.gemspec +16 -14
  78. metadata +48 -45
  79. data/VERSION +0 -1
  80. data/lib/api_manager.rb +0 -35
  81. data/lib/config/configuration_builder.rb +0 -30
  82. data/lib/config/configuration_manager.rb +0 -55
  83. data/lib/config/securenative_options.rb +0 -22
  84. data/lib/context/securenative_context.rb +0 -67
  85. data/lib/enums/api_route.rb +0 -6
  86. data/lib/enums/event_types.rb +0 -23
  87. data/lib/enums/failover_strategy.rb +0 -6
  88. data/lib/enums/risk_level.rb +0 -7
  89. data/lib/errors/securenative_config_error.rb +0 -4
  90. data/lib/errors/securenative_http_error.rb +0 -4
  91. data/lib/errors/securenative_invalid_options_error.rb +0 -4
  92. data/lib/errors/securenative_invalid_uri_error.rb +0 -4
  93. data/lib/errors/securenative_parse_error.rb +0 -4
  94. data/lib/errors/securenative_sdk_Illegal_state_error.rb +0 -4
  95. data/lib/errors/securenative_sdk_error.rb +0 -4
  96. data/lib/event_manager.rb +0 -156
  97. data/lib/event_options.rb +0 -32
  98. data/lib/http/securenative_http_client.rb +0 -38
  99. data/lib/models/client_token.rb +0 -12
  100. data/lib/models/device.rb +0 -10
  101. data/lib/models/event_options.rb +0 -15
  102. data/lib/models/request_context.rb +0 -18
  103. data/lib/models/request_options.rb +0 -12
  104. data/lib/models/sdk_event.rb +0 -35
  105. data/lib/models/user_traits.rb +0 -13
  106. data/lib/models/verify_result.rb +0 -12
  107. data/lib/securenative.rb +0 -95
  108. data/lib/utils/date_utils.rb +0 -9
  109. data/lib/utils/encryption_utils.rb +0 -35
  110. data/lib/utils/ip_utils.rb +0 -23
  111. data/lib/utils/request_utils.rb +0 -54
  112. data/lib/utils/secure_native_logger.rb +0 -44
  113. data/lib/utils/signature_utils.rb +0 -16
  114. data/lib/utils/utils.rb +0 -9
  115. data/lib/utils/version_utils.rb +0 -12
  116. data/out/production/securenative-ruby/event_options.rb +0 -32
  117. data/out/production/securenative-ruby/http/http_response.rb +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d6008fff3b5f2dea4e6d6680af895c51a18a14a80a495f1fbe3da99513d955b
4
- data.tar.gz: 6de47ae10eb46753aa40d1854ed35d42f961c39543bd12e931f80d191d033114
3
+ metadata.gz: 359945466b3e94469a2ba36d845cc3a9c2e2b484b1e2f08fc24ad5e78f65f21b
4
+ data.tar.gz: 3024cb47f839ce222ff62d3ddddc44f10fea694800cf3ad6c4de917a7da6b907
5
5
  SHA512:
6
- metadata.gz: 61c717b498a2a0464ad74fd32a1daca48f8ff115348f0b8a49710d54e3ce7f6d99f21c92560b8936c64548e08ba9ddd2cf105902d614f656925a15d9fa7094e4
7
- data.tar.gz: 7667f250f61f1629cdf36829e8f74ce74bcd66e862b183051616c3774090229426b8b38d96e873cc58496f64f8774616c4104799c50e26df8266acf95c60948f
6
+ metadata.gz: 2f54a793203b0de7898a450827fbf12b1115d8c59e50f81a1fa6cc7d29667efe085c1b68f0413248aa9cff916d54a0eb637140e06517b3c2805bfa3d21a7fb46
7
+ data.tar.gz: 613c77877ff89c89a8b390c725d90dc0cb3db1086291f81e7096a705c236c4f664b3700b6089dc893e243916271acf2b9a5d81b62ffcb1bf622cd4f8d2cedc30
data/Gemfile CHANGED
@@ -3,7 +3,6 @@ source "https://rubygems.org"
3
3
  gemspec
4
4
  gem "rspec"
5
5
  gem "rake"
6
- gem "parseconfig"
7
6
  gem "simplecov", :require => false, :group => :test
8
7
  gem "codecov", :require => false, :group => :test
9
8
  gem "webmock", :require => false, :group => :test
@@ -1,61 +1,61 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- securenative (0.1.20)
4
+ securenative (0.1.26)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- actioncable (6.0.3.2)
10
- actionpack (= 6.0.3.2)
9
+ actioncable (6.0.3.3)
10
+ actionpack (= 6.0.3.3)
11
11
  nio4r (~> 2.0)
12
12
  websocket-driver (>= 0.6.1)
13
- actionmailbox (6.0.3.2)
14
- actionpack (= 6.0.3.2)
15
- activejob (= 6.0.3.2)
16
- activerecord (= 6.0.3.2)
17
- activestorage (= 6.0.3.2)
18
- activesupport (= 6.0.3.2)
13
+ actionmailbox (6.0.3.3)
14
+ actionpack (= 6.0.3.3)
15
+ activejob (= 6.0.3.3)
16
+ activerecord (= 6.0.3.3)
17
+ activestorage (= 6.0.3.3)
18
+ activesupport (= 6.0.3.3)
19
19
  mail (>= 2.7.1)
20
- actionmailer (6.0.3.2)
21
- actionpack (= 6.0.3.2)
22
- actionview (= 6.0.3.2)
23
- activejob (= 6.0.3.2)
20
+ actionmailer (6.0.3.3)
21
+ actionpack (= 6.0.3.3)
22
+ actionview (= 6.0.3.3)
23
+ activejob (= 6.0.3.3)
24
24
  mail (~> 2.5, >= 2.5.4)
25
25
  rails-dom-testing (~> 2.0)
26
- actionpack (6.0.3.2)
27
- actionview (= 6.0.3.2)
28
- activesupport (= 6.0.3.2)
26
+ actionpack (6.0.3.3)
27
+ actionview (= 6.0.3.3)
28
+ activesupport (= 6.0.3.3)
29
29
  rack (~> 2.0, >= 2.0.8)
30
30
  rack-test (>= 0.6.3)
31
31
  rails-dom-testing (~> 2.0)
32
32
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
33
- actiontext (6.0.3.2)
34
- actionpack (= 6.0.3.2)
35
- activerecord (= 6.0.3.2)
36
- activestorage (= 6.0.3.2)
37
- activesupport (= 6.0.3.2)
33
+ actiontext (6.0.3.3)
34
+ actionpack (= 6.0.3.3)
35
+ activerecord (= 6.0.3.3)
36
+ activestorage (= 6.0.3.3)
37
+ activesupport (= 6.0.3.3)
38
38
  nokogiri (>= 1.8.5)
39
- actionview (6.0.3.2)
40
- activesupport (= 6.0.3.2)
39
+ actionview (6.0.3.3)
40
+ activesupport (= 6.0.3.3)
41
41
  builder (~> 3.1)
42
42
  erubi (~> 1.4)
43
43
  rails-dom-testing (~> 2.0)
44
44
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
45
- activejob (6.0.3.2)
46
- activesupport (= 6.0.3.2)
45
+ activejob (6.0.3.3)
46
+ activesupport (= 6.0.3.3)
47
47
  globalid (>= 0.3.6)
48
- activemodel (6.0.3.2)
49
- activesupport (= 6.0.3.2)
50
- activerecord (6.0.3.2)
51
- activemodel (= 6.0.3.2)
52
- activesupport (= 6.0.3.2)
53
- activestorage (6.0.3.2)
54
- actionpack (= 6.0.3.2)
55
- activejob (= 6.0.3.2)
56
- activerecord (= 6.0.3.2)
48
+ activemodel (6.0.3.3)
49
+ activesupport (= 6.0.3.3)
50
+ activerecord (6.0.3.3)
51
+ activemodel (= 6.0.3.3)
52
+ activesupport (= 6.0.3.3)
53
+ activestorage (6.0.3.3)
54
+ actionpack (= 6.0.3.3)
55
+ activejob (= 6.0.3.3)
56
+ activerecord (= 6.0.3.3)
57
57
  marcel (~> 0.3.1)
58
- activesupport (6.0.3.2)
58
+ activesupport (6.0.3.3)
59
59
  concurrent-ruby (~> 1.0, >= 1.0.2)
60
60
  i18n (>= 0.7, < 2)
61
61
  minitest (~> 5.1)
@@ -64,16 +64,13 @@ GEM
64
64
  addressable (2.7.0)
65
65
  public_suffix (>= 2.0.2, < 5.0)
66
66
  builder (3.2.4)
67
- codecov (0.2.6)
68
- colorize
67
+ codecov (0.2.11)
69
68
  json
70
69
  simplecov
71
- colorize (0.8.1)
72
70
  concurrent-ruby (1.1.7)
73
- crack (0.4.3)
74
- safe_yaml (~> 1.0.0)
71
+ crack (0.4.4)
75
72
  crass (1.0.6)
76
- diff-lcs (1.3)
73
+ diff-lcs (1.4.4)
77
74
  docile (1.3.2)
78
75
  dry-configurable (0.11.6)
79
76
  concurrent-ruby (~> 1.0)
@@ -157,7 +154,7 @@ GEM
157
154
  concurrent-ruby (~> 1.0)
158
155
  inflecto (0.0.2)
159
156
  json (2.3.1)
160
- loofah (2.6.0)
157
+ loofah (2.7.0)
161
158
  crass (~> 1.0.2)
162
159
  nokogiri (>= 1.5.9)
163
160
  mail (2.7.1)
@@ -168,74 +165,72 @@ GEM
168
165
  mimemagic (0.3.5)
169
166
  mini_mime (1.0.2)
170
167
  mini_portile2 (2.4.0)
171
- minitest (5.14.1)
168
+ minitest (5.14.2)
172
169
  mustermann (1.1.1)
173
170
  ruby2_keywords (~> 0.0.1)
174
- nio4r (2.5.2)
171
+ nio4r (2.5.4)
175
172
  nokogiri (1.10.10)
176
173
  mini_portile2 (~> 2.4.0)
177
- parseconfig (1.0.8)
178
- public_suffix (4.0.5)
174
+ public_suffix (4.0.6)
179
175
  rack (2.2.3)
180
- rack-protection (2.0.8.1)
176
+ rack-protection (2.1.0)
181
177
  rack
182
178
  rack-test (1.1.0)
183
179
  rack (>= 1.0, < 3)
184
- rails (6.0.3.2)
185
- actioncable (= 6.0.3.2)
186
- actionmailbox (= 6.0.3.2)
187
- actionmailer (= 6.0.3.2)
188
- actionpack (= 6.0.3.2)
189
- actiontext (= 6.0.3.2)
190
- actionview (= 6.0.3.2)
191
- activejob (= 6.0.3.2)
192
- activemodel (= 6.0.3.2)
193
- activerecord (= 6.0.3.2)
194
- activestorage (= 6.0.3.2)
195
- activesupport (= 6.0.3.2)
180
+ rails (6.0.3.3)
181
+ actioncable (= 6.0.3.3)
182
+ actionmailbox (= 6.0.3.3)
183
+ actionmailer (= 6.0.3.3)
184
+ actionpack (= 6.0.3.3)
185
+ actiontext (= 6.0.3.3)
186
+ actionview (= 6.0.3.3)
187
+ activejob (= 6.0.3.3)
188
+ activemodel (= 6.0.3.3)
189
+ activerecord (= 6.0.3.3)
190
+ activestorage (= 6.0.3.3)
191
+ activesupport (= 6.0.3.3)
196
192
  bundler (>= 1.3.0)
197
- railties (= 6.0.3.2)
193
+ railties (= 6.0.3.3)
198
194
  sprockets-rails (>= 2.0.0)
199
195
  rails-dom-testing (2.0.3)
200
196
  activesupport (>= 4.2.0)
201
197
  nokogiri (>= 1.6)
202
198
  rails-html-sanitizer (1.3.0)
203
199
  loofah (~> 2.3)
204
- railties (6.0.3.2)
205
- actionpack (= 6.0.3.2)
206
- activesupport (= 6.0.3.2)
200
+ railties (6.0.3.3)
201
+ actionpack (= 6.0.3.3)
202
+ activesupport (= 6.0.3.3)
207
203
  method_source
208
204
  rake (>= 0.8.7)
209
205
  thor (>= 0.20.3, < 2.0)
210
206
  rake (13.0.1)
211
- rspec (3.8.0)
212
- rspec-core (~> 3.8.0)
213
- rspec-expectations (~> 3.8.0)
214
- rspec-mocks (~> 3.8.0)
215
- rspec-core (3.8.2)
216
- rspec-support (~> 3.8.0)
217
- rspec-expectations (3.8.4)
207
+ rspec (3.9.0)
208
+ rspec-core (~> 3.9.0)
209
+ rspec-expectations (~> 3.9.0)
210
+ rspec-mocks (~> 3.9.0)
211
+ rspec-core (3.9.2)
212
+ rspec-support (~> 3.9.3)
213
+ rspec-expectations (3.9.2)
218
214
  diff-lcs (>= 1.2.0, < 2.0)
219
- rspec-support (~> 3.8.0)
220
- rspec-mocks (3.8.1)
215
+ rspec-support (~> 3.9.0)
216
+ rspec-mocks (3.9.1)
221
217
  diff-lcs (>= 1.2.0, < 2.0)
222
- rspec-support (~> 3.8.0)
223
- rspec-support (3.8.2)
218
+ rspec-support (~> 3.9.0)
219
+ rspec-support (3.9.3)
224
220
  ruby2_keywords (0.0.2)
225
- safe_yaml (1.0.5)
226
221
  simplecov (0.19.0)
227
222
  docile (~> 1.1)
228
223
  simplecov-html (~> 0.11)
229
- simplecov-html (0.12.2)
230
- sinatra (2.0.8.1)
224
+ simplecov-html (0.12.3)
225
+ sinatra (2.1.0)
231
226
  mustermann (~> 1.0)
232
- rack (~> 2.0)
233
- rack-protection (= 2.0.8.1)
227
+ rack (~> 2.2)
228
+ rack-protection (= 2.1.0)
234
229
  tilt (~> 2.0)
235
230
  sprockets (4.0.2)
236
231
  concurrent-ruby (~> 1.0)
237
232
  rack (> 1, < 3)
238
- sprockets-rails (3.2.1)
233
+ sprockets-rails (3.2.2)
239
234
  actionpack (>= 4.0)
240
235
  activesupport (>= 4.0)
241
236
  sprockets (>= 3.0.0)
@@ -247,7 +242,7 @@ GEM
247
242
  thread_safe (~> 0.1)
248
243
  url_mount (0.2.1)
249
244
  rack
250
- webmock (3.8.3)
245
+ webmock (3.9.1)
251
246
  addressable (>= 2.3.6)
252
247
  crack (>= 0.3.2)
253
248
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -263,7 +258,6 @@ DEPENDENCIES
263
258
  bundler (~> 2.0)
264
259
  codecov
265
260
  hanami
266
- parseconfig
267
261
  rails
268
262
  rake
269
263
  rspec
data/README.md CHANGED
@@ -47,38 +47,39 @@ Or install it yourself as:
47
47
  To get your *API KEY*, login to your SecureNative account and go to project settings page:
48
48
 
49
49
  ### Option 1: Initialize via Config file
50
- SecureNative can automatically load your config from *securenative.cfg* file or from the file that is specified in your *SECURENATIVE_CONFIG_FILE* env variable:
50
+ SecureNative can automatically load your config from *securenative.yml* file or from the file that is specified in your *SECURENATIVE_CONFIG_FILE* env variable:
51
51
 
52
52
  ```ruby
53
- require 'securenative'
53
+ require 'securenative/securenative'
54
54
 
55
55
 
56
- secureative = SecureNative.init
56
+ secureative = SecureNative::SecureNative.init
57
57
  ```
58
58
  ### Option 2: Initialize via API Key
59
59
 
60
60
  ```ruby
61
- require 'securenative'
61
+ require 'securenative/sdk'
62
62
 
63
63
 
64
- securenative = SecureNative.init_with_api_key('YOUR_API_KEY')
64
+ securenative = SecureNative::SecureNative.init_with_api_key('YOUR_API_KEY')
65
65
  ```
66
66
 
67
67
  ### Option 3: Initialize via ConfigurationBuilder
68
68
  ```ruby
69
- require 'securenative'
69
+ require 'securenative/sdk'
70
70
 
71
71
 
72
- securenative = SecureNative.init_with_options(SecureNative.config_builder(api_key = 'API_KEY', max_event = 10, log_level = 'ERROR'))
72
+ options = SecureNative::ConfigurationBuilder.new(api_key: 'API_KEY', max_events: 10, log_level: 'ERROR')
73
+ SecureNative::SecureNative.init_with_options(options)
73
74
  ```
74
75
 
75
76
  ## Getting SecureNative instance
76
77
  Once initialized, sdk will create a singleton instance which you can get:
77
78
  ```ruby
78
- require 'securenative'
79
+ require 'securenative/sdk'
79
80
 
80
81
 
81
- secureNative = SecureNative.instance
82
+ secureNative = SecureNative::SecureNative.instance
82
83
  ```
83
84
 
84
85
  ## Tracking events
@@ -87,43 +88,47 @@ Once the SDK has been initialized, tracking requests sent through the SDK
87
88
  instance. Make sure you build event with the EventBuilder:
88
89
 
89
90
  ```ruby
90
- require 'securenative'
91
+ require 'securenative/sdk'
92
+ require 'securenative/models/event_options'
91
93
  require 'securenative/enums/event_types'
92
- require 'securenative/event_options_builder'
93
94
  require 'securenative/models/user_traits'
94
- require 'securenative/context/context_builder'
95
95
 
96
96
 
97
- securenative = SecureNative.instance
98
-
99
- context = securenative.context_builder(ip = '127.0.0.1', client_token = 'SECURED_CLIENT_TOKEN',
100
- headers = { 'user-agent' => 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405' })
101
-
102
- event_options = EventOptions(event_type = EventTypes::LOG_IN,
103
- user_id = '1234', user_traits = UserTraits('Your Name', 'name@gmail.com', '+1234567890'),
104
- context = context, properties = {prop1 => 'CUSTOM_PARAM_VALUE', prop2 => true, prop3 => 3}).build
105
-
106
- securenative.track(event_options)
97
+ def track
98
+ securenative = SecureNative::SecureNative.instance
99
+ context = SecureNative::SecureNativeContext.new(client_token: 'SECURED_CLIENT_TOKEN', ip: '127.0.0.1',
100
+ headers: { 'user-agent' => 'Mozilla: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.3 Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/43.4' })
101
+
102
+ event_options = SecureNative::EventOptions.new(event: SecureNative::EventTypes::LOG_IN, user_id: '1234', context: context,
103
+ user_traits: SecureNative::UserTraits.new(name: 'Your Name', email: 'name@gmail.com', phone: '+1234567890'),
104
+ properties: { custom_param1: 'CUSTOM_PARAM_VALUE', custom_param2: true, custom_param3: 3 })
105
+
106
+ securenative.track(event_options)
107
+
108
+ @message = 'tracked'
109
+ end
107
110
  ```
108
111
 
109
- You can also create request context from requests:
112
+ You can also create request securenative.context from requests:
110
113
 
111
114
  ```ruby
112
- require 'securenative'
115
+ require 'securenative/sdk'
116
+ require 'securenative/models/event_options'
113
117
  require 'securenative/enums/event_types'
114
- require 'securenative/event_options_builder'
115
118
  require 'securenative/models/user_traits'
116
119
 
117
120
 
118
121
  def track(request)
119
- securenative = SecureNative.instance
120
- context = SecureNative.context_builder.from_http_request(request).build
121
-
122
- event_options = EventOptions(event_type = EventTypes::LOG_IN,
123
- user_id = '1234', user_traits = UserTraits('Your Name', 'name@gmail.com', '+1234567890'),
124
- context = context, properties = {prop1 => 'CUSTOM_PARAM_VALUE', prop2 => true, prop3 => 3}).build
122
+ securenative = SecureNative::SecureNative.instance
123
+ context = SecureNative::SecureNativeContext.from_http_request(request)
124
+
125
+ event_options = SecureNative::EventOptions.new(event: SecureNative::EventTypes::LOG_IN, user_id: '1234', context: context,
126
+ user_traits: SecureNative::UserTraits.new(name: 'Your Name', email: 'name@gmail.com', phone: '+1234567890'),
127
+ properties: { custom_param1: 'CUSTOM_PARAM_VALUE', custom_param2: true, custom_param3: 3 })
125
128
 
126
129
  securenative.track(event_options)
130
+
131
+ @message = 'tracked'
127
132
  end
128
133
  ```
129
134
 
@@ -132,19 +137,19 @@ end
132
137
  **Example**
133
138
 
134
139
  ```ruby
135
- require 'securenative'
140
+ require 'securenative/sdk'
141
+ require 'securenative/models/event_options'
136
142
  require 'securenative/enums/event_types'
137
- require 'securenative/event_options_builder'
138
143
  require 'securenative/models/user_traits'
139
144
 
140
145
 
141
146
  def verify(request)
142
- securenative = SecureNative.instance
143
- context = SecureNative.context_builder.from_http_request(request).build
147
+ securenative = SecureNative::SecureNative.instance
148
+ context = SecureNative::SecureNativeContext.from_http_request(request)
144
149
 
145
- event_options = EventOptions(event_type = EventTypes::LOG_IN,
146
- user_id = '1234', user_traits = UserTraits('Your Name', 'name@gmail.com', '+1234567890'),
147
- context = context, properties = {prop1 => 'CUSTOM_PARAM_VALUE', prop2 => true, prop3 => 3}).build
150
+ event_options = SecureNative::EventOptions.new(event: SecureNative::EventTypes::LOG_IN, user_id: '1234', context: context,
151
+ user_traits: SecureNative::UserTraits.new(name: 'Your Name', email: 'name@gmail.com', phone: '+1234567890'),
152
+ properties: { custom_param1: 'CUSTOM_PARAM_VALUE', custom_param2: true, custom_param3: 3 })
148
153
 
149
154
  verify_result = securenative.verify(event_options)
150
155
  verify_result.risk_level # Low, Medium, High
@@ -158,11 +163,11 @@ end
158
163
  Apply our filter to verify the request is from us, for example:
159
164
 
160
165
  ```ruby
161
- require 'securenative'
166
+ require 'securenative/sdk'
162
167
 
163
168
 
164
169
  def webhook_endpoint(request)
165
- securenative = SecureNative.instance
170
+ securenative = SecureNative::SecureNative.instance
166
171
 
167
172
  # Checks if request is verified
168
173
  is_verified = securenative.verify_request_payload(request)
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'securenative/models/sdk_event'
4
+ require 'securenative/enums/failover_strategy'
5
+ require 'securenative/enums/risk_level'
6
+ require 'securenative/enums/api_route'
7
+ require 'securenative/models/verify_result'
8
+ require 'json'
9
+
10
+ module SecureNative
11
+ class ApiManager
12
+ def initialize(event_manager, securenative_options)
13
+ @event_manager = event_manager
14
+ @options = securenative_options
15
+ end
16
+
17
+ def track(event_options)
18
+ SecureNativeLogger.debug('Track event call')
19
+ event = SDKEvent.new(event_options, @options)
20
+ @event_manager.send_async(event, ApiRoute::TRACK)
21
+ end
22
+
23
+ def verify(event_options)
24
+ SecureNativeLogger.debug('Verify event call')
25
+ event = SDKEvent.new(event_options, @options)
26
+
27
+ begin
28
+ res = @event_manager.send_sync(event, ApiRoute::VERIFY, false)
29
+ ver_result = JSON.parse(res.body)
30
+ return VerifyResult.new(risk_level: ver_result['riskLevel'], score: ver_result['score'], triggers: ver_result['triggers'])
31
+ rescue StandardError => e
32
+ SecureNativeLogger.debug("Failed to call verify; #{e}")
33
+ end
34
+ if @options.fail_over_strategy == FailOverStrategy::FAIL_OPEN
35
+ return VerifyResult.new(risk_level: RiskLevel::LOW, score: 0, triggers: nil)
36
+ end
37
+
38
+ VerifyResult.new(risk_level: RiskLevel::HIGH, score: 1, triggers: nil)
39
+ end
40
+ end
41
+ end