zgcp_toolkit 1.1.0 → 1.2.0
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 +4 -4
- data/README.md +3 -0
- data/lib/zgcp_toolkit.rb +1 -0
- data/lib/zgcp_toolkit/formatter/request.rb +101 -0
- data/lib/zgcp_toolkit/logger.rb +14 -46
- data/lib/zgcp_toolkit/version.rb +1 -1
- data/zgcp_toolkit.gemspec +1 -0
- metadata +17 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: cd687c8e796176929ce117783a4d5f9f9948a27260d744feee40c497d670f5b0
         | 
| 4 | 
            +
              data.tar.gz: 83c0d180249472a52495955606395869804c8c4a26732e308bfc670cd67124f8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: bd1d70407f154d0440f31300d8a577e37066fa95f5871b04111c9b2ce7524f281fc7afa61eb498becf0d369c598e2b8d85aae2b0dda23c803c84baa398b5b458
         | 
| 7 | 
            +
              data.tar.gz: b7982e5efdd431ba08d0c99dff3ac02d063199dd5354c49af5b90e94f70d0d7375f405ab90786ece8d13cd7ed9824ca6796a1ad5b678dc648bcfa0e38bdd5ee9
         | 
    
        data/README.md
    CHANGED
    
    | @@ -72,6 +72,9 @@ rescue_from StandardError do |e| | |
| 72 72 | 
             
              logger = ZgcpToolkit::Logger.new(Rails.env)
         | 
| 73 73 | 
             
              logger.error_request(e, request)
         | 
| 74 74 |  | 
| 75 | 
            +
              # You can report error (Error Reporting) with: 
         | 
| 76 | 
            +
              # ZgcpToolkit::Logger.report_error_request(e, request)
         | 
| 77 | 
            +
             | 
| 75 78 | 
             
              # If you want send notity to slack 
         | 
| 76 79 | 
             
              # logger.error_request(e, request, push_slack: true)
         | 
| 77 80 |  | 
    
        data/lib/zgcp_toolkit.rb
    CHANGED
    
    
| @@ -0,0 +1,101 @@ | |
| 1 | 
            +
            module ZgcpToolkit::Formatter
         | 
| 2 | 
            +
              class Request
         | 
| 3 | 
            +
                FILTERED_ENV_LIST = %w(
         | 
| 4 | 
            +
                  CONTENT_LENGTH
         | 
| 5 | 
            +
                  CONTENT_TYPE
         | 
| 6 | 
            +
                  HTTP_ACCEPT
         | 
| 7 | 
            +
                  HTTP_ACCEPT_ENCODING
         | 
| 8 | 
            +
                  HTTP_ACCEPT_LANGUAGE
         | 
| 9 | 
            +
                  HTTP_CACHE_CONTROL
         | 
| 10 | 
            +
                  HTTP_COOKIE
         | 
| 11 | 
            +
                  HTTP_HOST
         | 
| 12 | 
            +
                  HTTP_ORIGIN
         | 
| 13 | 
            +
                  HTTP_REFERER
         | 
| 14 | 
            +
                  HTTP_SEC_CH_UA
         | 
| 15 | 
            +
                  HTTP_SEC_CH_UA_MOBILE
         | 
| 16 | 
            +
                  HTTP_SEC_FETCH_DEST
         | 
| 17 | 
            +
                  HTTP_SEC_FETCH_MODE
         | 
| 18 | 
            +
                  HTTP_SEC_FETCH_SITE
         | 
| 19 | 
            +
                  HTTP_SEC_FETCH_USER
         | 
| 20 | 
            +
                  HTTP_UPGRADE_INSECURE_REQUESTS
         | 
| 21 | 
            +
                  HTTP_USER_AGENT
         | 
| 22 | 
            +
                  HTTP_VERSION
         | 
| 23 | 
            +
                  HTTP_VIA
         | 
| 24 | 
            +
                  HTTP_X_FORWARDED_FOR
         | 
| 25 | 
            +
                  HTTP_X_FORWARDED_PROTO
         | 
| 26 | 
            +
                  ORIGINAL_FULLPATH
         | 
| 27 | 
            +
                  ORIGINAL_SCRIPT_NAME
         | 
| 28 | 
            +
                  PATH_INFO
         | 
| 29 | 
            +
                  QUERY_STRING
         | 
| 30 | 
            +
                  REMOTE_ADDR
         | 
| 31 | 
            +
                  REMOTE_PORT
         | 
| 32 | 
            +
                  REQUEST_METHOD
         | 
| 33 | 
            +
                  REQUEST_URI
         | 
| 34 | 
            +
                  SERVER_NAME
         | 
| 35 | 
            +
                  SERVER_PORT
         | 
| 36 | 
            +
                  SERVER_PROTOCOL
         | 
| 37 | 
            +
                ).freeze
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                def call(request)
         | 
| 40 | 
            +
                  log_object = {}
         | 
| 41 | 
            +
                  log_object[:request]     = request_filter(request)
         | 
| 42 | 
            +
                  log_object[:session]     = session_filter(request)
         | 
| 43 | 
            +
                  log_object[:environment] = environment_filter(request)
         | 
| 44 | 
            +
                  log_object
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                def format_for_report(request)
         | 
| 48 | 
            +
                  log_object = {}
         | 
| 49 | 
            +
                  log_object[:request]     = beauty_format request_filter(request)
         | 
| 50 | 
            +
                  log_object[:session]     = beauty_format session_filter(request)
         | 
| 51 | 
            +
                  log_object[:environment] = beauty_format separation_environment_filter(request)
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  result = log_object.map { |key, value| "#{key.capitalize}:\n#{value}\n" }
         | 
| 54 | 
            +
                  result.join("\n")
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                private
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                def beauty_format(data)
         | 
| 60 | 
            +
                  data.map { |k,v| "#{k.to_s.indent(4)}: #{v}" }.join("\n")
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                def environment_filter(request)
         | 
| 64 | 
            +
                  result = {}
         | 
| 65 | 
            +
                  request.filtered_env.keys.each do |key|
         | 
| 66 | 
            +
                    result[key] = request.filtered_env[key]
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
                  result
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                def separation_environment_filter(request)
         | 
| 72 | 
            +
                  result = {}
         | 
| 73 | 
            +
                  FILTERED_ENV_LIST.each do |key|
         | 
| 74 | 
            +
                    result[key] = request.filtered_env[key]
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
                  result
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                def session_filter(request)
         | 
| 80 | 
            +
                  result = {}
         | 
| 81 | 
            +
                  result[:session_id]   = request.ssl? ? "[FILTERED]" : request.session['session_id'] || request.env['rack.session.options'][:id].inspect
         | 
| 82 | 
            +
                  result[:data_session] = request.session.to_hash
         | 
| 83 | 
            +
                  result
         | 
| 84 | 
            +
                end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                def request_filter(request)
         | 
| 87 | 
            +
                  result = {}
         | 
| 88 | 
            +
                  result[:url]            = request.url
         | 
| 89 | 
            +
                  result[:request_method] = request.request_method
         | 
| 90 | 
            +
                  result[:ip_address]     = request.remote_ip
         | 
| 91 | 
            +
                  result[:parameters]     = request.filtered_parameters.inspect
         | 
| 92 | 
            +
                  result[:timestamp]      = Time.current
         | 
| 93 | 
            +
                  result[:server]         = Socket.gethostname
         | 
| 94 | 
            +
                  result[:process]        = $$
         | 
| 95 | 
            +
                  if defined?(Rails) && Rails.respond_to?(:root)
         | 
| 96 | 
            +
                    result[:rails_root] = Rails.root
         | 
| 97 | 
            +
                  end
         | 
| 98 | 
            +
                  result
         | 
| 99 | 
            +
                end
         | 
| 100 | 
            +
              end
         | 
| 101 | 
            +
            end
         | 
    
        data/lib/zgcp_toolkit/logger.rb
    CHANGED
    
    | @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'dry/configurable'
         | 
| 2 | 
            +
            require "google/cloud/error_reporting"
         | 
| 2 3 | 
             
            require 'zgcp_toolkit/logger/stdout'
         | 
| 3 4 | 
             
            require 'zgcp_toolkit/logger/google_cloud_logging'
         | 
| 4 5 |  | 
| @@ -30,13 +31,20 @@ module ZgcpToolkit | |
| 30 31 | 
             
                    begin
         | 
| 31 32 | 
             
                      yield(logger) if block_given?
         | 
| 32 33 | 
             
                    rescue StandardError => e
         | 
| 33 | 
            -
                       | 
| 34 | 
            -
                      logger.flush!
         | 
| 34 | 
            +
                      Google::Cloud::ErrorReporting.report e
         | 
| 35 35 | 
             
                    end
         | 
| 36 36 |  | 
| 37 37 | 
             
                    logger
         | 
| 38 38 | 
             
                  end
         | 
| 39 39 |  | 
| 40 | 
            +
                  def report_error_request(error, request)
         | 
| 41 | 
            +
                    message = ZgcpToolkit::Formatter::Request.new.format_for_report(request)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    Google::Cloud::ErrorReporting.report error do |event|
         | 
| 44 | 
            +
                      event.message = event.message + "\n\n" + message
         | 
| 45 | 
            +
                    end
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
              
         | 
| 40 48 | 
             
                  private
         | 
| 41 49 |  | 
| 42 50 | 
             
                  def valid_name?(log_name)
         | 
| @@ -58,18 +66,18 @@ module ZgcpToolkit | |
| 58 66 | 
             
                end
         | 
| 59 67 |  | 
| 60 68 | 
             
                [:debug, :info, :warn, :error, :fatal, :unknown].each do |log_level_method|
         | 
| 61 | 
            -
                  define_method(log_level_method) do |log,  | 
| 69 | 
            +
                  define_method(log_level_method) do |log, **kwargs|
         | 
| 62 70 | 
             
                    log_object =
         | 
| 63 71 | 
             
                      case log
         | 
| 64 72 | 
             
                      when StandardError
         | 
| 65 73 | 
             
                        obj = { message: log.message, backtrace: log.backtrace.first(backtrace_limit) }
         | 
| 66 | 
            -
                        obj.merge!( | 
| 74 | 
            +
                        obj.merge!(kwargs)
         | 
| 67 75 | 
             
                        obj
         | 
| 68 76 | 
             
                      when Hash
         | 
| 69 77 | 
             
                        log
         | 
| 70 78 | 
             
                      when String
         | 
| 71 79 | 
             
                        obj = { message: log }
         | 
| 72 | 
            -
                        obj.merge!( | 
| 80 | 
            +
                        obj.merge!(kwargs)
         | 
| 73 81 | 
             
                        obj
         | 
| 74 82 | 
             
                      else
         | 
| 75 83 | 
             
                        raise UnsupportedLogType, "#{log.class.name} is not supported!"
         | 
| @@ -79,7 +87,7 @@ module ZgcpToolkit | |
| 79 87 | 
             
                end
         | 
| 80 88 |  | 
| 81 89 | 
             
                def error_request(error, request, **args)
         | 
| 82 | 
            -
                  filter_request_params =  | 
| 90 | 
            +
                  filter_request_params = ZgcpToolkit::Formatter::Request.new.call(request)
         | 
| 83 91 |  | 
| 84 92 | 
             
                  error({ message: error.message, backtrace: error.backtrace.first(backtrace_limit) }.merge!(filter_request_params).merge!(args))
         | 
| 85 93 | 
             
                end
         | 
| @@ -87,45 +95,5 @@ module ZgcpToolkit | |
| 87 95 | 
             
                def flush!
         | 
| 88 96 | 
             
                  loggers.each { |a| a.flush! }
         | 
| 89 97 | 
             
                end
         | 
| 90 | 
            -
             | 
| 91 | 
            -
                private
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                def format_request_env(request)
         | 
| 94 | 
            -
                  log_object = {}
         | 
| 95 | 
            -
                  log_object[:request]     = request_filter(request)
         | 
| 96 | 
            -
                  log_object[:session]     = session_filter(request)
         | 
| 97 | 
            -
                  log_object[:environment] = environment_filter(request)
         | 
| 98 | 
            -
                  log_object
         | 
| 99 | 
            -
                end
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                def environment_filter(request)
         | 
| 102 | 
            -
                  result = {}
         | 
| 103 | 
            -
                  request.filtered_env.keys.each do |key|
         | 
| 104 | 
            -
                    result[key] = request.filtered_env[key]
         | 
| 105 | 
            -
                  end
         | 
| 106 | 
            -
                  result
         | 
| 107 | 
            -
                end
         | 
| 108 | 
            -
             | 
| 109 | 
            -
                def session_filter(request)
         | 
| 110 | 
            -
                  result = {}
         | 
| 111 | 
            -
                  result[:session_id]   = request.ssl? ? "[FILTERED]" : request.session['session_id'] || request.env['rack.session.options'][:id].inspect
         | 
| 112 | 
            -
                  result[:data_session] = request.session.to_hash
         | 
| 113 | 
            -
                  result
         | 
| 114 | 
            -
                end
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                def request_filter(request)
         | 
| 117 | 
            -
                  result = {}
         | 
| 118 | 
            -
                  result[:url]            = request.url
         | 
| 119 | 
            -
                  result[:request_method] = request.request_method
         | 
| 120 | 
            -
                  result[:ip_address]     = request.remote_ip
         | 
| 121 | 
            -
                  result[:parameters]     = request.filtered_parameters.inspect
         | 
| 122 | 
            -
                  result[:timestamp]      = Time.current
         | 
| 123 | 
            -
                  result[:server]         = Socket.gethostname
         | 
| 124 | 
            -
                  result[:process]        = $$
         | 
| 125 | 
            -
                  if defined?(Rails) && Rails.respond_to?(:root)
         | 
| 126 | 
            -
                    result[:rails_root] = Rails.root
         | 
| 127 | 
            -
                  end
         | 
| 128 | 
            -
                  result
         | 
| 129 | 
            -
                end
         | 
| 130 98 | 
             
              end
         | 
| 131 99 | 
             
            end
         | 
    
        data/lib/zgcp_toolkit/version.rb
    CHANGED
    
    
    
        data/zgcp_toolkit.gemspec
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: zgcp_toolkit
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - ZIGExN VeNtura developers
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021-06- | 
| 11 | 
            +
            date: 2021-06-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: stackdriver
         | 
| @@ -38,6 +38,20 @@ dependencies: | |
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: 0.11.6
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: google-cloud-error_reporting
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - "~>"
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: 0.42.0
         | 
| 48 | 
            +
              type: :runtime
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - "~>"
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: 0.42.0
         | 
| 41 55 | 
             
            description: Manage essential toolset
         | 
| 42 56 | 
             
            email: kuruma-dev@zigexn.vn
         | 
| 43 57 | 
             
            executables: []
         | 
| @@ -55,6 +69,7 @@ files: | |
| 55 69 | 
             
            - bin/console
         | 
| 56 70 | 
             
            - bin/setup
         | 
| 57 71 | 
             
            - lib/zgcp_toolkit.rb
         | 
| 72 | 
            +
            - lib/zgcp_toolkit/formatter/request.rb
         | 
| 58 73 | 
             
            - lib/zgcp_toolkit/generators/templates/zgcp_toolkit.rb
         | 
| 59 74 | 
             
            - lib/zgcp_toolkit/generators/zgcp_toolkit_generator.rb
         | 
| 60 75 | 
             
            - lib/zgcp_toolkit/logger.rb
         |