chili_logger 0.0.9 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,8 +8,8 @@ class ChiliLogger
8
8
  :rabbitmq
9
9
  end
10
10
 
11
- def msg_broker_config
12
- {}
11
+ def fallback_broker
12
+ :aws_sqs
13
13
  end
14
14
 
15
15
  def user
@@ -0,0 +1,63 @@
1
+ require 'aws-sdk-secretsmanager'
2
+ require 'base64'
3
+
4
+ # class for centralizing Creative's logging logic
5
+ class ChiliLogger
6
+ # module responsible for uniformization of values in ChiliLogger
7
+ module Values
8
+ # class to centralize access to all secrets stored in 3rd-party managers
9
+ class Secrets
10
+ # Module to load secrets environment variables
11
+ class AwsSecretsManager
12
+ def initialize(region_name = 'us-east-1')
13
+ @client = Aws::SecretsManager::Client.new(region: region_name)
14
+ end
15
+
16
+ def get_secrets_collection(collection_name)
17
+ JSON.parse(get_secret(collection_name))
18
+ end
19
+
20
+ private
21
+
22
+ # rubocop:disable Metrics/MethodLength
23
+ # Use this code snippet in your app.
24
+ # If you need more information about configurations or implementing the sample code, visit the AWS docs:
25
+ # https://aws.amazon.com/developers/getting-started/ruby/
26
+ # method from AWS example, ipsis literis
27
+ def get_secret(secret_name)
28
+ # In this sample we only handle the specific exceptions for the 'GetSecretValue' API.
29
+ # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
30
+ # We rethrow the exception by default.
31
+ get_secret_value_response = @client.get_secret_value(secret_id: secret_name)
32
+ rescue Aws::SecretsManager::Errors::DecryptionFailure => _e
33
+ # Secrets Manager can't decrypt the protected secret text using the provided KMS key.
34
+ # Deal with the exception here, and/or rethrow at your discretion.
35
+ raise
36
+ rescue Aws::SecretsManager::Errors::InternalServiceError => _e
37
+ # An error occurred on the server side.
38
+ # Deal with the exception here, and/or rethrow at your discretion.
39
+ raise
40
+ rescue Aws::SecretsManager::Errors::InvalidParameterException => _e
41
+ # You provided an invalid value for a parameter.
42
+ # Deal with the exception here, and/or rethrow at your discretion.
43
+ raise
44
+ rescue Aws::SecretsManager::Errors::InvalidRequestException => _e
45
+ # You provided a parameter value that is not valid for the current state of the resource.
46
+ # Deal with the exception here, and/or rethrow at your discretion.
47
+ raise
48
+ rescue Aws::SecretsManager::Errors::ResourceNotFoundException => _e
49
+ # We can't find the resource that you asked for.
50
+ # Deal with the exception here, and/or rethrow at your discretion.
51
+ raise
52
+ else
53
+ # This block is ran if there were no exceptions.
54
+
55
+ # Decrypts secret using the associated KMS CMK.
56
+ # Depending on whether the secret is a string or binary, one of these fields will be populated.
57
+ get_secret_value_response.secret_string || Base64.decode64(get_secret_value_response.secret_binary)
58
+ end
59
+ # rubocop:enable Metrics/MethodLength
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,29 @@
1
+ require 'helpers/values/secrets/aws_secrets_manager'
2
+
3
+ # class for centralizing Creative's logging logic
4
+ class ChiliLogger
5
+ # module responsible for uniformization of values in ChiliLogger
6
+ module Values
7
+ # class to centralize access to all secrets stored in 3rd-party managers
8
+ class Secrets
9
+ def initialize(manager_name = 'aws')
10
+ manager_class = supported_managers[manager_name.to_s]
11
+ manager_class ||= supported_managers['aws']
12
+
13
+ @secrets_manager = manager_class.new
14
+ end
15
+
16
+ def get_secrets_collection(collection_name)
17
+ @secrets_manager.get_secrets_collection(collection_name)
18
+ end
19
+
20
+ private
21
+
22
+ def supported_managers
23
+ {
24
+ 'aws' => AwsSecretsManager
25
+ }
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,46 @@
1
+ require 'errors/error_messages/config_error'
2
+ require 'brokers/main_broker'
3
+ require 'errors/logging_error_handler/logging_error_handler'
4
+
5
+ # class for centralizing Creative's logging logic
6
+ class ChiliLogger
7
+ # class for manipulating unpublished logs that were sent to the fallback_broker
8
+ class UnpublishedLogsManager
9
+ def initialize(msg_broker, logging_error_handler)
10
+ validate_msg_broker_type(msg_broker)
11
+ validate_logging_error_handler_type(logging_error_handler)
12
+
13
+ @msg_broker = msg_broker
14
+ @logging_error_handler = logging_error_handler
15
+ end
16
+
17
+ def republish
18
+ unpub_logs = @logging_error_handler.fetch_unpublished_logs
19
+ unpub_logs.each do |unpub_log|
20
+ fallback_broker_msg = unpub_log[:fallback_broker_msg]
21
+ log = unpub_log[:log]
22
+
23
+ # if a message can't be published by MainBroker, LoggingErrorHandler sends it to the fallback_broker
24
+ # to avoid duplicates in this scenario, we delete the message before even trying to publish it
25
+ @logging_error_handler.delete_unpublished_log(fallback_broker_msg)
26
+ @msg_broker.publish(log)
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def validate_msg_broker_type(msg_broker)
33
+ err_type = ChiliLogger::ConfigError
34
+ err_msg = "#{msg_broker.inspect} should be an instance of ChiliLogger::MainBroker"
35
+
36
+ raise(err_type, err_msg) unless msg_broker.class == ChiliLogger::MainBroker
37
+ end
38
+
39
+ def validate_logging_error_handler_type(error_handler)
40
+ err_type = ChiliLogger::ConfigError
41
+ err_msg = "#{error_handler} should be an instance of ChiliLogger::LoggingError::Handler"
42
+
43
+ raise(err_type, err_msg) unless error_handler.class == ChiliLogger::LoggingErrorHandler
44
+ end
45
+ end
46
+ end
@@ -51,9 +51,15 @@ test:
51
51
  transaction:
52
52
  console:
53
53
  publish_test:
54
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/chili_logger-0.0.8/lib/chili_logger.rb:61:in
54
+ - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/chili_logger-0.1.0/lib/chili_logger.rb:61:in
55
+ `publish_instant_log'"
56
+ - "(pry):189:in `block (2 levels) in __pry__'"
57
+ uncaught_error:
58
+ console:
59
+ publish_test:
60
+ - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/chili_logger-0.1.0/lib/chili_logger.rb:61:in
55
61
  `publish_instant_log'"
56
- - "(pry):53:in `__pry__'"
62
+ - "(pry):10:in `__pry__'"
57
63
  - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:290:in
58
64
  `eval'"
59
65
  - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:290:in
metadata CHANGED
@@ -1,35 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chili_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - lucas sandeville
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-07 00:00:00.000000000 Z
11
+ date: 2020-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aws-sdk
14
+ name: aws-sdk-sqs
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 2.9.0
20
17
  - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '2.9'
19
+ version: 1.30.0
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: 2.9.0
26
+ version: 1.30.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk-secretsmanager
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.36.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
30
38
  - - "~>"
31
39
  - !ruby/object:Gem::Version
32
- version: '2.9'
40
+ version: 1.36.0
33
41
  - !ruby/object:Gem::Dependency
34
42
  name: bunny
35
43
  requirement: !ruby/object:Gem::Requirement
@@ -81,10 +89,8 @@ files:
81
89
  - assets/images/rabbit-topic-explanation.webp
82
90
  - bin/console
83
91
  - bin/setup
84
- - chili_logger-0.0.6.gem
85
- - chili_logger-0.0.7.gem
86
- - chili_logger-0.0.8.gem
87
92
  - chili_logger.gemspec
93
+ - lib/brokers/main_broker.rb
88
94
  - lib/brokers/rabbit_broker.rb
89
95
  - lib/brokers/sqs_broker.rb
90
96
  - lib/chili_logger.rb
@@ -96,11 +102,14 @@ files:
96
102
  - lib/helpers/logs_coverage/coverage_writer.rb
97
103
  - lib/helpers/logs_coverage/levantamento_provisório.yaml
98
104
  - lib/helpers/values/default.rb
105
+ - lib/helpers/values/secrets/aws_secrets_manager.rb
106
+ - lib/helpers/values/secrets/secrets.rb
99
107
  - lib/helpers/values/type_uniformizer/desc.rb
100
108
  - lib/helpers/values/type_uniformizer/main_content.rb
101
109
  - lib/helpers/values/type_uniformizer/user.rb
102
110
  - lib/message_writer/aws_ops_metadata.rb
103
111
  - lib/message_writer/message_writer.rb
112
+ - lib/unpublished_logs_manager/unpublished_logs_manager.rb
104
113
  - log/chili-logger-coverage.yml
105
114
  homepage: https://gitlab.com/chiligumdev/chili_logger
106
115
  licenses:
Binary file
Binary file
Binary file