Class: Trainspotter::Ingest::SessionBuilder

Inherits:
Object
  • Object
show all
Defined in:
app/jobs/trainspotter/ingest/session_builder.rb

Instance Method Summary collapse

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 = (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