Class: Trainspotter::Ingest::SessionBuilder
- Inherits:
-
Object
- Object
- Trainspotter::Ingest::SessionBuilder
- Defined in:
- app/jobs/trainspotter/ingest/session_builder.rb
Instance Method Summary collapse
- #expire_stale_sessions(log_file) ⇒ Object
-
#initialize(configuration: Trainspotter.configuration) ⇒ SessionBuilder
constructor
A new instance of SessionBuilder.
- #process_request(request, log_file) ⇒ Object
Constructor Details
#initialize(configuration: Trainspotter.configuration) ⇒ SessionBuilder
Returns a new instance of SessionBuilder.
4 5 6 |
# File 'app/jobs/trainspotter/ingest/session_builder.rb', line 4 def initialize(configuration: Trainspotter.configuration) @configuration = configuration end |
Instance Method Details
#expire_stale_sessions(log_file) ⇒ Object
26 27 28 29 |
# File 'app/jobs/trainspotter/ingest/session_builder.rb', line 26 def expire_stale_sessions(log_file) cutoff = Time.current - @configuration.session_timeout SessionRecord.expire_before(cutoff, log_file: log_file) end |
#process_request(request, log_file) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/jobs/trainspotter/ingest/session_builder.rb', line 8 def process_request(request, log_file) return unless request.completed? && request.ip session = find_or_create_session(request.ip, request.started_at, log_file) if (email = detect_login(request)) session.update!(email: email) end if detect_logout(request) session.update!(ended_at: request.started_at, end_reason: "logout") end RequestRecord.where(log_request_id: request.id).update_all(session_id: session.id) session.increment!(:request_count) session.update!(ended_at: request.started_at) if session.ongoing? end |