securenative 0.1.24 → 0.1.30

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +2 -2
  3. data/README.md +44 -30
  4. data/lib/securenative.rb +49 -0
  5. data/lib/securenative/api_manager.rb +10 -17
  6. data/lib/securenative/client.rb +75 -0
  7. data/lib/securenative/{models/client_token.rb → client_token.rb} +0 -0
  8. data/lib/securenative/config/configuration_builder.rb +22 -22
  9. data/lib/securenative/config/configuration_manager.rb +42 -43
  10. data/lib/securenative/context.rb +65 -0
  11. data/lib/securenative/{models/device.rb → device.rb} +0 -0
  12. data/lib/securenative/enums/api_route.rb +5 -3
  13. data/lib/securenative/enums/risk_level.rb +7 -5
  14. data/{out/production/securenative-ruby/errors/securenative_config_error.rb → lib/securenative/errors/config_error.rb} +0 -0
  15. data/{out/production/securenative-ruby/errors/securenative_http_error.rb → lib/securenative/errors/http_error.rb} +0 -0
  16. data/{out/production/securenative-ruby/errors/securenative_invalid_options_error.rb → lib/securenative/errors/invalid_options_error.rb} +0 -0
  17. data/lib/securenative/errors/{securenative_invalid_uri_error.rb → invalid_uri_error.rb} +0 -0
  18. data/lib/securenative/errors/{securenative_parse_error.rb → parse_error.rb} +0 -2
  19. data/{out/production/securenative-ruby/errors/securenative_sdk_Illegal_state_error.rb → lib/securenative/errors/sdk_Illegal_state_error.rb} +0 -0
  20. data/{out/production/securenative-ruby/errors/securenative_sdk_error.rb → lib/securenative/errors/sdk_error.rb} +0 -0
  21. data/lib/securenative/event_manager.rb +125 -128
  22. data/lib/securenative/{models/event_options.rb → event_options.rb} +3 -7
  23. data/lib/securenative/{enums/event_types.rb → event_types.rb} +0 -0
  24. data/lib/securenative/{enums/failover_strategy.rb → failover_strategy.rb} +0 -0
  25. data/lib/securenative/frameworks/hanami.rb +46 -0
  26. data/lib/securenative/frameworks/rails.rb +48 -0
  27. data/lib/securenative/frameworks/sinatra.rb +46 -0
  28. data/lib/securenative/{http/securenative_http_client.rb → http_client.rb} +7 -12
  29. data/lib/securenative/{http/secure_native_http_response.rb → http_response.rb} +1 -1
  30. data/lib/securenative/{config/securenative_options.rb → options.rb} +1 -3
  31. data/lib/securenative/{models/request_context.rb → request_context.rb} +0 -0
  32. data/lib/securenative/{models/request_options.rb → request_options.rb} +0 -0
  33. data/lib/securenative/{models/sdk_event.rb → sdk_event.rb} +4 -11
  34. data/lib/securenative/{models/user_traits.rb → user_traits.rb} +0 -0
  35. data/lib/securenative/utils/date_utils.rb +6 -4
  36. data/lib/securenative/utils/encryption_utils.rb +34 -37
  37. data/lib/securenative/utils/ip_utils.rb +15 -15
  38. data/lib/securenative/utils/{secure_native_logger.rb → log.rb} +1 -1
  39. data/lib/securenative/utils/request_utils.rb +55 -42
  40. data/lib/securenative/utils/signature_utils.rb +12 -12
  41. data/lib/securenative/utils/utils.rb +6 -4
  42. data/lib/securenative/utils/version_utils.rb +9 -7
  43. data/lib/securenative/{models/verify_result.rb → verify_result.rb} +0 -0
  44. data/lib/securenative/{errors/securenative_sdk_error.rb → version.rb} +1 -2
  45. data/securenative.gemspec +5 -2
  46. data/{out/test/securenative-ruby → spec}/spec_helper.rb +0 -0
  47. metadata +35 -83
  48. data/lib/securenative/context/hanami_context.rb +0 -44
  49. data/lib/securenative/context/rails_context.rb +0 -46
  50. data/lib/securenative/context/securenative_context.rb +0 -69
  51. data/lib/securenative/context/sinatra_context.rb +0 -44
  52. data/lib/securenative/errors/securenative_config_error.rb +0 -6
  53. data/lib/securenative/errors/securenative_http_error.rb +0 -6
  54. data/lib/securenative/errors/securenative_invalid_options_error.rb +0 -6
  55. data/lib/securenative/errors/securenative_sdk_Illegal_state_error.rb +0 -6
  56. data/lib/securenative/sdk.rb +0 -85
  57. data/out/production/securenative-ruby/api_manager.rb +0 -39
  58. data/out/production/securenative-ruby/config/configuration_builder.rb +0 -27
  59. data/out/production/securenative-ruby/config/configuration_manager.rb +0 -56
  60. data/out/production/securenative-ruby/config/securenative_options.rb +0 -23
  61. data/out/production/securenative-ruby/context/hanami_context.rb +0 -42
  62. data/out/production/securenative-ruby/context/rails_context.rb +0 -44
  63. data/out/production/securenative-ruby/context/securenative_context.rb +0 -67
  64. data/out/production/securenative-ruby/context/sinatra_context.rb +0 -42
  65. data/out/production/securenative-ruby/enums/api_route.rb +0 -6
  66. data/out/production/securenative-ruby/enums/event_types.rb +0 -23
  67. data/out/production/securenative-ruby/enums/failover_strategy.rb +0 -6
  68. data/out/production/securenative-ruby/enums/risk_level.rb +0 -7
  69. data/out/production/securenative-ruby/errors/securenative_invalid_uri_error.rb +0 -4
  70. data/out/production/securenative-ruby/errors/securenative_parse_error.rb +0 -4
  71. data/out/production/securenative-ruby/event_manager.rb +0 -157
  72. data/out/production/securenative-ruby/http/secure_native_http_response.rb +0 -12
  73. data/out/production/securenative-ruby/http/securenative_http_client.rb +0 -50
  74. data/out/production/securenative-ruby/models/client_token.rb +0 -12
  75. data/out/production/securenative-ruby/models/device.rb +0 -10
  76. data/out/production/securenative-ruby/models/event_options.rb +0 -37
  77. data/out/production/securenative-ruby/models/request_context.rb +0 -18
  78. data/out/production/securenative-ruby/models/request_options.rb +0 -12
  79. data/out/production/securenative-ruby/models/sdk_event.rb +0 -49
  80. data/out/production/securenative-ruby/models/user_traits.rb +0 -13
  81. data/out/production/securenative-ruby/models/verify_result.rb +0 -16
  82. data/out/production/securenative-ruby/securenative.rb +0 -83
  83. data/out/production/securenative-ruby/utils/date_utils.rb +0 -9
  84. data/out/production/securenative-ruby/utils/encryption_utils.rb +0 -49
  85. data/out/production/securenative-ruby/utils/ip_utils.rb +0 -23
  86. data/out/production/securenative-ruby/utils/request_utils.rb +0 -69
  87. data/out/production/securenative-ruby/utils/secure_native_logger.rb +0 -44
  88. data/out/production/securenative-ruby/utils/signature_utils.rb +0 -16
  89. data/out/production/securenative-ruby/utils/utils.rb +0 -9
  90. data/out/production/securenative-ruby/utils/version_utils.rb +0 -11
  91. data/out/test/securenative-ruby/spec_api_manager.rb +0 -87
  92. data/out/test/securenative-ruby/spec_context_builder.rb +0 -87
  93. data/out/test/securenative-ruby/spec_date_utils.rb +0 -13
  94. data/out/test/securenative-ruby/spec_encryption_utils.rb +0 -26
  95. data/out/test/securenative-ruby/spec_event_manager.rb +0 -93
  96. data/out/test/securenative-ruby/spec_ip_utils.rb +0 -41
  97. data/out/test/securenative-ruby/spec_request_utils.rb +0 -25
  98. data/out/test/securenative-ruby/spec_sdk_event.rb +0 -24
  99. data/out/test/securenative-ruby/spec_securenative.rb +0 -61
  100. data/out/test/securenative-ruby/spec_securenative_http_client.rb +0 -31
  101. data/out/test/securenative-ruby/spec_signature_utils.rb +0 -18
  102. data/out/test/securenative-ruby/spec_version_util.rb +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d106e0702046e45250d4005ee93dc1baa17d5fa31cf393f3993a5667e3d14703
4
- data.tar.gz: caba785bb61b1c517d98669d59f9ef1ae6e357f49ef2dbfbd6f41eeb0c96f0da
3
+ metadata.gz: 37b0720aab5431b97f1b2313e9e1e88d6a3ce712ba342575c86884a5d3ed9f7c
4
+ data.tar.gz: 74258ad8d16b072378bda84119bb65831cb1441f186fcb49a893308d777249d6
5
5
  SHA512:
6
- metadata.gz: ab405d8068d865533569350a378853d5b864ad3933f7d394c8fb81e3d08365bfffff6f1fdf9bd5da6e8ca25adb9355ca1cd473ce68aed723318fa86171834d9c
7
- data.tar.gz: 2b0f71f461ac6c9ec58f9c7d3cc75ac6cde418ee70da7f2df73102e56ddf4a3a0d22d883f124efe95e807c2cd07ba969f860561eccc8d460a45e775aab324bf0
6
+ metadata.gz: bb0ce8d22b7b1ce832c49a3690856312b298cc8cc55046ebe966cf7ddb410079ae5d13cc93a4fd25b4a111fd971ec7be9782f92b5716103bba2842ce72607d8e
7
+ data.tar.gz: 17dece79e7f8dabed7fd270d1da3d7cc50f94691bfed65324e45b961ac8bd0a33371d4390f941cb3fa460e24a72fb86487a466ceaff91ec6d23595fc6cb6b9a8
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- securenative (0.1.24)
4
+ securenative (0.1.30)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -208,7 +208,7 @@ GEM
208
208
  rspec-core (~> 3.9.0)
209
209
  rspec-expectations (~> 3.9.0)
210
210
  rspec-mocks (~> 3.9.0)
211
- rspec-core (3.9.2)
211
+ rspec-core (3.9.3)
212
212
  rspec-support (~> 3.9.3)
213
213
  rspec-expectations (3.9.2)
214
214
  diff-lcs (>= 1.2.0, < 2.0)
data/README.md CHANGED
@@ -50,36 +50,36 @@ To get your *API KEY*, login to your SecureNative account and go to project sett
50
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/securenative'
53
+ require 'securenative'
54
54
 
55
55
 
56
- secureative = SecureNative::SecureNative.init
56
+ secureative = SecureNative::Client.init
57
57
  ```
58
58
  ### Option 2: Initialize via API Key
59
59
 
60
60
  ```ruby
61
- require 'securenative/sdk'
61
+ require 'securenative'
62
62
 
63
63
 
64
- securenative = SecureNative::SecureNative.init_with_api_key('YOUR_API_KEY')
64
+ securenative = SecureNative::Client.init_with_api_key('YOUR_API_KEY')
65
65
  ```
66
66
 
67
67
  ### Option 3: Initialize via ConfigurationBuilder
68
68
  ```ruby
69
- require 'securenative/sdk'
69
+ require 'securenative'
70
70
 
71
71
 
72
- options = SecureNative::ConfigurationBuilder.new(api_key: 'API_KEY', max_events: 10, log_level: 'ERROR')
73
- SecureNative::SecureNative.init_with_options(options)
72
+ options = SecureNative::Config::ConfigurationBuilder.new(api_key: 'API_KEY', max_events: 10, log_level: 'ERROR')
73
+ SecureNative::Client.init_with_options(options)
74
74
  ```
75
75
 
76
76
  ## Getting SecureNative instance
77
77
  Once initialized, sdk will create a singleton instance which you can get:
78
78
  ```ruby
79
- require 'securenative/sdk'
79
+ require 'securenative'
80
80
 
81
81
 
82
- secureNative = SecureNative::SecureNative.instance
82
+ secureNative = SecureNative::Client.instance
83
83
  ```
84
84
 
85
85
  ## Tracking events
@@ -88,15 +88,12 @@ Once the SDK has been initialized, tracking requests sent through the SDK
88
88
  instance. Make sure you build event with the EventBuilder:
89
89
 
90
90
  ```ruby
91
- require 'securenative/sdk'
92
- require 'securenative/models/event_options'
93
- require 'securenative/enums/event_types'
94
- require 'securenative/models/user_traits'
91
+ require 'securenative'
95
92
 
96
93
 
97
94
  def track
98
- securenative = SecureNative::SecureNative.instance
99
- context = SecureNative::SecureNativeContext.new(client_token: 'SECURED_CLIENT_TOKEN', ip: '127.0.0.1',
95
+ securenative = SecureNative::Client.instance
96
+ context = SecureNative::Context.new(client_token: 'SECURED_CLIENT_TOKEN', ip: '127.0.0.1',
100
97
  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
98
 
102
99
  event_options = SecureNative::EventOptions.new(event: SecureNative::EventTypes::LOG_IN, user_id: '1234', context: context,
@@ -112,15 +109,12 @@ end
112
109
  You can also create request securenative.context from requests:
113
110
 
114
111
  ```ruby
115
- require 'securenative/sdk'
116
- require 'securenative/models/event_options'
117
- require 'securenative/enums/event_types'
118
- require 'securenative/models/user_traits'
112
+ require 'securenative'
119
113
 
120
114
 
121
115
  def track(request)
122
- securenative = SecureNative::SecureNative.instance
123
- context = SecureNative::SecureNativeContext.from_http_request(request)
116
+ securenative = SecureNative::Client.instance
117
+ context = SecureNative::Context.from_http_request(request)
124
118
 
125
119
  event_options = SecureNative::EventOptions.new(event: SecureNative::EventTypes::LOG_IN, user_id: '1234', context: context,
126
120
  user_traits: SecureNative::UserTraits.new(name: 'Your Name', email: 'name@gmail.com', phone: '+1234567890'),
@@ -137,15 +131,12 @@ end
137
131
  **Example**
138
132
 
139
133
  ```ruby
140
- require 'securenative/sdk'
141
- require 'securenative/models/event_options'
142
- require 'securenative/enums/event_types'
143
- require 'securenative/models/user_traits'
134
+ require 'securenative'
144
135
 
145
136
 
146
137
  def verify(request)
147
- securenative = SecureNative::SecureNative.instance
148
- context = SecureNative::SecureNativeContext.from_http_request(request)
138
+ securenative = SecureNative::Client.instance
139
+ context = SecureNative::Context.from_http_request(request)
149
140
 
150
141
  event_options = SecureNative::EventOptions.new(event: SecureNative::EventTypes::LOG_IN, user_id: '1234', context: context,
151
142
  user_traits: SecureNative::UserTraits.new(name: 'Your Name', email: 'name@gmail.com', phone: '+1234567890'),
@@ -163,13 +154,36 @@ end
163
154
  Apply our filter to verify the request is from us, for example:
164
155
 
165
156
  ```ruby
166
- require 'securenative/sdk'
157
+ require 'securenative'
167
158
 
168
159
 
169
160
  def webhook_endpoint(request)
170
- securenative = SecureNative::SecureNative.instance
161
+ securenative = SecureNative::Client.instance
171
162
 
172
163
  # Checks if request is verified
173
164
  is_verified = securenative.verify_request_payload(request)
174
165
  end
175
- ```
166
+ ```
167
+
168
+ ## Extract proxy headers from Cloudflare
169
+
170
+ You can specify custom header keys to allow extraction of client ip from different providers.
171
+ This example demonstrates the usage of proxy headers for ip extraction from Cloudflare.
172
+
173
+ ### Option 1: Using config file
174
+ ```yaml
175
+ SECURENATIVE_API_KEY: dsbe27fh3437r2yd326fg3fdg36f43
176
+ SECURENATIVE_PROXY_HEADERS: ["CF-Connecting-IP"]
177
+ ```
178
+
179
+ Initialize sdk as showed above.
180
+
181
+ ### Options 2: Using ConfigurationBuilder
182
+
183
+ ```ruby
184
+ require 'securenative'
185
+
186
+ options = SecureNative::Options.new(api_key: 'API_KEY', max_events: 10, log_level: 'ERROR', proxy_headers: ['CF-Connecting-IP'])
187
+
188
+ SecureNative::Client.init_with_options(options)
189
+ ```
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'securenative/failover_strategy'
4
+ require 'securenative/enums/risk_level'
5
+ require 'securenative/enums/api_route'
6
+ require 'securenative/event_types'
7
+ require 'securenative/enums/risk_level'
8
+ require 'securenative/config/configuration_builder'
9
+ require 'securenative/config/configuration_manager'
10
+ require 'securenative/options'
11
+ require 'securenative/utils/request_utils'
12
+ require 'securenative/utils/version_utils'
13
+ require 'securenative/utils/encryption_utils'
14
+ require 'securenative/utils/signature_utils'
15
+ require 'securenative/utils/date_utils'
16
+ require 'securenative/utils/utils'
17
+ require 'securenative/utils/log'
18
+ require 'securenative/utils/ip_utils'
19
+ require 'securenative/frameworks/hanami'
20
+ require 'securenative/frameworks/sinatra'
21
+ require 'securenative/frameworks/rails'
22
+ require 'securenative/context'
23
+ require 'securenative/event_options'
24
+ require 'securenative/user_traits'
25
+ require 'securenative/request_context'
26
+ require 'securenative/client_token'
27
+ require 'securenative/sdk_event'
28
+ require 'securenative/verify_result'
29
+ require 'securenative/errors/invalid_options_error'
30
+ require 'securenative/errors/sdk_Illegal_state_error'
31
+ require 'securenative/errors/config_error'
32
+ require 'securenative/errors/sdk_error'
33
+ require 'securenative/errors/http_error'
34
+ require 'securenative/http_client'
35
+ require 'securenative/event_manager'
36
+ require 'securenative/api_manager'
37
+ require 'securenative/client'
38
+ require 'securenative/version'
39
+
40
+ require 'yaml'
41
+ require 'net/http'
42
+ require 'uri'
43
+ require 'json'
44
+ require 'securerandom'
45
+ require 'openssl'
46
+ require 'digest'
47
+ require 'base64'
48
+ require 'resolv'
49
+ require 'logger'
@@ -1,12 +1,5 @@
1
1
  # frozen_string_literal: true
2
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
3
  module SecureNative
11
4
  class ApiManager
12
5
  def initialize(event_manager, securenative_options)
@@ -15,27 +8,27 @@ module SecureNative
15
8
  end
16
9
 
17
10
  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)
11
+ SecureNative::Log.debug('Track event call')
12
+ event = SecureNative::SDKEvent.new(event_options, @options)
13
+ @event_manager.send_async(event, SecureNative::Enums::ApiRoute::TRACK)
21
14
  end
22
15
 
23
16
  def verify(event_options)
24
- SecureNativeLogger.debug('Verify event call')
25
- event = SDKEvent.new(event_options, @options)
17
+ SecureNative::Log.debug('Verify event call')
18
+ event = SecureNative::SDKEvent.new(event_options, @options)
26
19
 
27
20
  begin
28
- res = @event_manager.send_sync(event, ApiRoute::VERIFY, false)
21
+ res = @event_manager.send_sync(event, SecureNative::Enums::ApiRoute::VERIFY)
29
22
  ver_result = JSON.parse(res.body)
30
23
  return VerifyResult.new(risk_level: ver_result['riskLevel'], score: ver_result['score'], triggers: ver_result['triggers'])
31
24
  rescue StandardError => e
32
- SecureNativeLogger.debug("Failed to call verify; #{e}")
25
+ SecureNative::Log.debug("Failed to call verify; #{e}")
33
26
  end
34
- if @options.fail_over_strategy == FailOverStrategy::FAIL_OPEN
35
- return VerifyResult.new(risk_level: RiskLevel::LOW, score: 0, triggers: nil)
27
+ if @options.fail_over_strategy == SecureNative::FailOverStrategy::FAIL_OPEN
28
+ return SecureNative::VerifyResult.new(risk_level: SecureNative::Enums::RiskLevel::LOW, score: 0, triggers: nil)
36
29
  end
37
30
 
38
- VerifyResult.new(risk_level: RiskLevel::HIGH, score: 1, triggers: nil)
31
+ VerifyResult.new(risk_level: SecureNative::Enums::RiskLevel::HIGH, score: 1, triggers: nil)
39
32
  end
40
33
  end
41
34
  end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecureNative
4
+ class Client
5
+ attr_reader :options
6
+
7
+ def initialize(options)
8
+ @securenative = nil
9
+ if SecureNative::Utils::Utils.null_or_empty?(options.api_key)
10
+ raise SecureNativeSDKError, 'You must pass your SecureNative api key'
11
+ end
12
+
13
+ @options = options
14
+ @event_manager = EventManager.new(@options)
15
+
16
+ @api_manager = SecureNative::ApiManager.new(@event_manager, @options)
17
+ SecureNative::Log.init_logger(@options.log_level)
18
+ end
19
+
20
+ def self.init_with_options(options)
21
+ if @securenative.nil?
22
+ @securenative = SecureNative::Client.new(options)
23
+ @securenative
24
+ else
25
+ SecureNative::Log.debug('This SDK was already initialized.')
26
+ raise SecureNativeSDKError, 'This SDK was already initialized.'
27
+ end
28
+ end
29
+
30
+ def self.init_with_api_key(api_key)
31
+ if SecureNative::Utils::Utils.null_or_empty?(api_key)
32
+ raise SecureNativeConfigError, 'You must pass your SecureNative api key'
33
+ end
34
+
35
+ if @securenative.nil?
36
+ options = SecureNative::Config::ConfigurationBuilder.new(api_key: api_key)
37
+ @securenative = SecureNative::Client.new(options)
38
+ @securenative
39
+ else
40
+ SecureNative::Log.debug('This SDK was already initialized.')
41
+ raise SecureNativeSDKError, 'This SDK was already initialized.'
42
+ end
43
+ end
44
+
45
+ def self.init
46
+ options = SecureNative::Config::ConfigurationManager.load_config
47
+ init_with_options(options)
48
+ end
49
+
50
+ def self.instance
51
+ raise SecureNativeSDKIllegalStateError if @securenative.nil?
52
+
53
+ @securenative
54
+ end
55
+
56
+ def track(event_options)
57
+ @api_manager.track(event_options)
58
+ end
59
+
60
+ def verify(event_options)
61
+ @api_manager.verify(event_options)
62
+ end
63
+
64
+ def self._flush
65
+ @securenative = nil
66
+ end
67
+
68
+ def verify_request_payload(request)
69
+ request_signature = request.header[SignatureUtils.SIGNATURE_HEADER]
70
+ body = request.body
71
+
72
+ SignatureUtils.valid_signature?(@options.api_key, body, request_signature)
73
+ end
74
+ end
75
+ end
@@ -1,29 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'securenative/enums/failover_strategy'
4
-
5
3
  module SecureNative
6
- class ConfigurationBuilder
7
- attr_reader :api_key, :api_url, :interval, :max_events, :timeout, :auto_send, :disable, :log_level, :fail_over_strategy, :proxy_headers
8
- attr_writer :api_key, :api_url, :interval, :max_events, :timeout, :auto_send, :disable, :log_level, :fail_over_strategy, :proxy_headers
4
+ module Config
5
+ class ConfigurationBuilder
6
+ attr_reader :api_key, :api_url, :interval, :max_events, :timeout, :auto_send, :disable, :log_level, :fail_over_strategy, :proxy_headers
7
+ attr_writer :api_key, :api_url, :interval, :max_events, :timeout, :auto_send, :disable, :log_level, :fail_over_strategy, :proxy_headers
9
8
 
10
- def initialize(api_key: nil, api_url: 'https://api.securenative.com/collector/api/v1', interval: 1000,
11
- max_events: 1000, timeout: 1500, auto_send: true, disable: false, log_level: 'FATAL',
12
- fail_over_strategy: FailOverStrategy::FAIL_OPEN, proxy_headers: nil)
13
- @api_key = api_key
14
- @api_url = api_url
15
- @interval = interval
16
- @max_events = max_events
17
- @timeout = timeout
18
- @auto_send = auto_send
19
- @disable = disable
20
- @log_level = log_level
21
- @fail_over_strategy = fail_over_strategy
22
- @proxy_headers = proxy_headers
23
- end
9
+ def initialize(api_key: nil, api_url: 'https://api.securenative.com/collector/api/v1', interval: 1000,
10
+ max_events: 1000, timeout: 1500, auto_send: true, disable: false, log_level: 'FATAL',
11
+ fail_over_strategy: SecureNative::FailOverStrategy::FAIL_OPEN, proxy_headers: nil)
12
+ @api_key = api_key
13
+ @api_url = api_url
14
+ @interval = interval
15
+ @max_events = max_events
16
+ @timeout = timeout
17
+ @auto_send = auto_send
18
+ @disable = disable
19
+ @log_level = log_level
20
+ @fail_over_strategy = fail_over_strategy
21
+ @proxy_headers = proxy_headers
22
+ end
24
23
 
25
- def self.default_securenative_options
26
- SecureNativeOptions.new
24
+ def self.default_securenative_options
25
+ Options.new
26
+ end
27
27
  end
28
28
  end
29
- end
29
+ end
@@ -1,58 +1,57 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'yaml'
4
- require 'securenative/config/configuration_builder'
5
-
6
3
  module SecureNative
7
- class ConfigurationManager
8
- DEFAULT_CONFIG_FILE = 'securenative.yml'
9
- CUSTOM_CONFIG_FILE_ENV_NAME = 'SECURENATIVE_CONFIG_FILE'
10
- @config = nil
11
-
12
- def self.read_resource_file(resource_path)
13
- properties = {}
14
- begin
15
- @config = YAML.load_file(resource_path)
16
- properties = @config unless @config.nil?
17
- rescue StandardError => e
18
- SecureNativeLogger.error("Could not parse securenative.config file #{resource_path}; #{e}")
4
+ module Config
5
+ class ConfigurationManager
6
+ DEFAULT_CONFIG_FILE = 'securenative.yml'
7
+ CUSTOM_CONFIG_FILE_ENV_NAME = 'SECURENATIVE_CONFIG_FILE'
8
+ @config = nil
9
+
10
+ def self.read_resource_file(resource_path)
11
+ properties = {}
12
+ begin
13
+ @config = YAML.load_file(resource_path)
14
+ properties = @config unless @config.nil?
15
+ rescue StandardError => e
16
+ SecureNative::Log.error("Could not parse securenative.config file #{resource_path}; #{e}")
17
+ end
18
+ properties
19
19
  end
20
- properties
21
- end
22
20
 
23
- def self._get_resource_path(env_name)
24
- Env.fetch(env_name, ENV[DEFAULT_CONFIG_FILE])
25
- end
21
+ def self._get_resource_path(env_name)
22
+ Env.fetch(env_name, ENV[DEFAULT_CONFIG_FILE])
23
+ end
26
24
 
27
- def self.config_builder
28
- ConfigurationBuilder.new
29
- end
25
+ def self.config_builder
26
+ SecureNative::Config::ConfigurationBuilder.new
27
+ end
30
28
 
31
- def self._get_env_or_default(properties, key, default)
32
- return ENV[key] if ENV[key]
33
- return properties[key] if properties[key]
29
+ def self._get_env_or_default(properties, key, default)
30
+ return ENV[key] if ENV[key]
31
+ return properties[key] if properties[key]
34
32
 
35
- default
36
- end
33
+ default
34
+ end
37
35
 
38
- def self.load_config
39
- options = ConfigurationBuilder.default_securenative_options
36
+ def self.load_config
37
+ options = SecureNative::Config::ConfigurationBuilder.default_securenative_options
40
38
 
41
- resource_path = DEFAULT_CONFIG_FILE
42
- resource_path = ENV[CUSTOM_CONFIG_FILE_ENV_NAME] unless ENV[CUSTOM_CONFIG_FILE_ENV_NAME].nil?
39
+ resource_path = DEFAULT_CONFIG_FILE
40
+ resource_path = ENV[CUSTOM_CONFIG_FILE_ENV_NAME] unless ENV[CUSTOM_CONFIG_FILE_ENV_NAME].nil?
43
41
 
44
- properties = read_resource_file(resource_path)
42
+ properties = read_resource_file(resource_path)
45
43
 
46
- ConfigurationBuilder.new(api_key: _get_env_or_default(properties, 'SECURENATIVE_API_KEY', options.api_key),
47
- api_url: _get_env_or_default(properties, 'SECURENATIVE_API_URL', options.api_url),
48
- interval: _get_env_or_default(properties, 'SECURENATIVE_INTERVAL', options.interval),
49
- max_events: _get_env_or_default(properties, 'SECURENATIVE_MAX_EVENTS', options.max_events),
50
- timeout: _get_env_or_default(properties, 'SECURENATIVE_TIMEOUT', options.timeout),
51
- auto_send: _get_env_or_default(properties, 'SECURENATIVE_AUTO_SEND', options.auto_send),
52
- disable: _get_env_or_default(properties, 'SECURENATIVE_DISABLE', options.disable),
53
- log_level: _get_env_or_default(properties, 'SECURENATIVE_LOG_LEVEL', options.log_level),
54
- fail_over_strategy: _get_env_or_default(properties, 'SECURENATIVE_FAILOVER_STRATEGY', options.fail_over_strategy),
55
- proxy_headers: _get_env_or_default(properties, 'SECURENATIVE_PROXY_HEADERS', options.proxy_headers))
44
+ SecureNative::Config::ConfigurationBuilder.new(api_key: _get_env_or_default(properties, 'SECURENATIVE_API_KEY', options.api_key),
45
+ api_url: _get_env_or_default(properties, 'SECURENATIVE_API_URL', options.api_url),
46
+ interval: _get_env_or_default(properties, 'SECURENATIVE_INTERVAL', options.interval),
47
+ max_events: _get_env_or_default(properties, 'SECURENATIVE_MAX_EVENTS', options.max_events),
48
+ timeout: _get_env_or_default(properties, 'SECURENATIVE_TIMEOUT', options.timeout),
49
+ auto_send: _get_env_or_default(properties, 'SECURENATIVE_AUTO_SEND', options.auto_send),
50
+ disable: _get_env_or_default(properties, 'SECURENATIVE_DISABLE', options.disable),
51
+ log_level: _get_env_or_default(properties, 'SECURENATIVE_LOG_LEVEL', options.log_level),
52
+ fail_over_strategy: _get_env_or_default(properties, 'SECURENATIVE_FAILOVER_STRATEGY', options.fail_over_strategy),
53
+ proxy_headers: _get_env_or_default(properties, 'SECURENATIVE_PROXY_HEADERS', options.proxy_headers))
54
+ end
56
55
  end
57
56
  end
58
57
  end