addy_lambda 0.1.4 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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: []