addy_lambda 0.1.4 → 0.1.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: edd02ecf392d417845a391ba9d92361f4a26aedce5826026f752c77bc59e7048
4
- data.tar.gz: c37b4ee80bbfb56bf62a00374bb98b6a947ea255748b21172ee11cfc05daa1d5
3
+ metadata.gz: cbd56d5111f9bb6ca950599f30cb7027a192582a8992ca6d59854751cfadab67
4
+ data.tar.gz: 4ccefde4de2d02e5ccae21bc68df5092c8492c873425bcc3155c18c076cc1110
5
5
  SHA512:
6
- metadata.gz: edcd2c741c2561b935b77002700434bfb2d46fa1d4948da21798b19023916d7e67940471062640ef3438bf25ebaceef6f640a63a7ac5f4abada69597140e0db3
7
- data.tar.gz: a3d9fdf8ee0655e7d3925b5635b23a02849c95d7e37a3d9fdcb2fc7f5c1b7f937d72285de99af271889e268e085e30ae1135f3042238c1d24fb1b2db3cce852e
6
+ metadata.gz: e0772a3d16a14f73723d290d5d0b7881a61370288c5ba1bed04090548a0291105a8d9ee296ec2406f3b3a204a20740b54d82149261eac6ce3f413d5ce7dd6bca
7
+ data.tar.gz: dfafa14fdc0964557c1dde0eb3a4d2fbe60c0afb029b9a0102932fcf395cda8f0010861d36d13f02f7bfb5901fa7be4128b0baaf5f1b25510fc4a5b96aabdbfa
data/addy_lambda.gemspec CHANGED
@@ -3,8 +3,8 @@ require_relative 'lib/addy_lambda/version'
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'addy_lambda'
5
5
  spec.version = AddyLambda::VERSION
6
- spec.authors = ['Alon Sabi']
7
- spec.email = ['alon@sabi.me']
6
+ spec.authors = ['Alon Sabi', 'Raymond Lin']
7
+ spec.email = ['alon@sabi.me', 'hongkang.lin860@hotmail.com']
8
8
 
9
9
  spec.summary = 'A GEM for re-usable Lambda common functionalities'
10
10
  spec.description = 'Include this gem in your Lambda code to provide generic functionality, standardize code, and expedite development'
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'logger'
2
3
 
3
4
  module AddyLambda
4
5
  # Generic methods such as logging, error handling HTTP requests etc.
@@ -6,11 +7,54 @@ module AddyLambda
6
7
  VARIABLE_DIRECT = 'direct'.freeze
7
8
  VARIABLE_QUERYSTRING = 'querystring'.freeze
8
9
 
9
- def self.generic_log(logger, event, context)
10
+ def self.generic_log(logger, event, context, safe_to_log_override = {})
11
+ # Dictionary to allow certain keys to be logged
12
+ # safe_to_log["key"] = True
13
+
14
+ safe_to_log = {}
15
+
16
+ # Override the dictionar (add or change allowed items)
17
+ safe_to_log.update(safe_to_log_override)
18
+
19
+ # logger.info('## ENVIRONMENT VARIABLES\r' +
20
+ # jsonpickle.encode(dict(**os.environ)))
21
+ #
22
+ # logger = self.logger
23
+ logged_event = recoursive_clean(event, nil, safe_to_log)
10
24
  logger.debug('## EVENT')
11
- logger.debug(event.inspect)
25
+ logger.debug(logged_event.to_json)
12
26
  logger.debug('## CONTEXT')
13
- logger.debug(context.inspect)
27
+ logger.debug(context.inspect.to_json)
28
+ # logger.info("## EVENT\r#{logged_event.to_json}")
29
+ # logger.info("## CONTEXT\r#{context.to_json}")
30
+ end
31
+
32
+ def self.recoursive_clean(obj, key, safe_to_log)
33
+ if obj.is_a?(Hash)
34
+ # Recoursively run for dictionary objects
35
+ # return {k: recoursive_clean(v, k, safe_to_log) for k, v in obj.items()}
36
+ obj.map { |k, v| { k => recoursive_clean(v, k, safe_to_log) } }
37
+ elsif obj.is_a?(Array)
38
+ # Recoursively run for arrays
39
+ # return [recoursive_clean(v, None, safe_to_log) for v in obj]
40
+ obj.map { |v| [recoursive_clean(v, key, safe_to_log)] }
41
+ elsif !!safe_to_log[key] || (key.to_s.strip.downcase.end_with?('id') && !safe_to_log.key?(key))
42
+ # If the key is safe to log, and is specified as True, or if it's not specified but ends with "id"
43
+ obj
44
+ elsif !obj.nil? && (!!obj == obj || obj.is_a?(String) && %w[yes no].include?(obj.strip.downcase))
45
+ # If it's "yes" / "no" or a boolean, it's safe to log.
46
+ obj
47
+ elsif obj.nil?
48
+ # Null can be logged
49
+ nil
50
+ elsif obj.is_a?(String) && obj.strip.empty?
51
+ # An empty string can be logged
52
+ ''
53
+ else
54
+ # Anything else becomes a "?"
55
+ # Note: This means that a number will become a "?" string.
56
+ '?'
57
+ end
14
58
  end
15
59
 
16
60
  def self.get_body_as_object(event)
@@ -1,3 +1,3 @@
1
1
  module AddyLambda
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: addy_lambda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alon Sabi
8
- autorequire:
8
+ - Raymond Lin
9
+ autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2022-01-18 00:00:00.000000000 Z
12
+ date: 2024-02-15 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: aws-sdk-lambda
@@ -84,6 +85,7 @@ description: Include this gem in your Lambda code to provide generic functionali
84
85
  standardize code, and expedite development
85
86
  email:
86
87
  - alon@sabi.me
88
+ - hongkang.lin860@hotmail.com
87
89
  executables: []
88
90
  extensions: []
89
91
  extra_rdoc_files: []
@@ -111,7 +113,7 @@ metadata:
111
113
  homepage_uri: https://github.com/InvestIMBY/addy_lambda
112
114
  source_code_uri: https://github.com/InvestIMBY/addy_lambda
113
115
  changelog_uri: https://github.com/InvestIMBY/addy_lambda/changelog
114
- post_install_message:
116
+ post_install_message:
115
117
  rdoc_options: []
116
118
  require_paths:
117
119
  - lib
@@ -126,8 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
128
  - !ruby/object:Gem::Version
127
129
  version: '0'
128
130
  requirements: []
129
- rubygems_version: 3.1.6
130
- signing_key:
131
+ rubygems_version: 3.3.26
132
+ signing_key:
131
133
  specification_version: 4
132
134
  summary: A GEM for re-usable Lambda common functionalities
133
135
  test_files: []