Sha256: 04397268211de0f03de5fd4bdf702e3df33c1ec57e396ebcdc80d7605a2f9610

Contents?: true

Size: 847 Bytes

Versions: 2

Compression:

Stored size: 847 Bytes

Contents

module LineLog
  class RequestDataExtractor
    def self.call(event, status, began_at)
      extract_data_from_request(event, status, began_at)
    end

    private

    def self.extract_data_from_request(event, status, began_at)
      data = default_data(event, status, began_at)
      data.merge!(custom_data)
    end

    def self.default_data(event, status, began_at)
      {
        method: event['REQUEST_METHOD'],
        path: extract_path(event),
        format: event['HTTP_ACCEPT'],
        ip: event['HTTP_X_REAL_IP'],
        status: status,
        duration: (Time.now - began_at).round(2)
      }
    end

    def self.extract_path(event)
      path = event['REQUEST_PATH']
      index = path.index('?')
      index ? path[0, index] : path
    end
    
    def self.custom_data
      LineLog::Customizer.data || {}
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
line_log-0.1.1 lib/line_log/request_data_extractor.rb
line_log-0.1.0 lib/line_log/request_data_extractor.rb