class NationalRailWrapper::Feeds::KnowledgeBase::Client

Public Instance Methods

incidents(parse_result: true) click to toggle source
# File lib/national_rail_wrapper/feeds/knowledge_base/client.rb, line 6
def incidents(parse_result: true)
  request = KnowledgeBase::Requests::Incidents.new.run(auth_token)

  parse_result ? Ox.parse(request.response_body).to_json : request.response_body
end
national_service_indicators(parse_result: true) click to toggle source
# File lib/national_rail_wrapper/feeds/knowledge_base/client.rb, line 12
def national_service_indicators(parse_result: true)
  request = KnowledgeBase::Requests::NationalServiceIndicators.new.run(auth_token).response_body

  if parse_result
    KnowledgeBase::Parsers::NationalServiceIndicators.new(request).to_json
  else
    request.response_body
  end
end
public_promotions(parse_result: true) click to toggle source
# File lib/national_rail_wrapper/feeds/knowledge_base/client.rb, line 22
def public_promotions(parse_result: true)
  request = KnowledgeBase::Requests::PublicPromotions.new.run(auth_token)

  parse_result ? response.to_json : request.response_body
end
stations(parse_result: true) click to toggle source
# File lib/national_rail_wrapper/feeds/knowledge_base/client.rb, line 28
def stations(parse_result: true)
  request = KnowledgeBase::Requests::Stations.new.run(auth_token).response_body

  if parse_result
    KnowledgeBase::Parsers::Stations.new(request).to_json
  else
    request.response_body
  end
end
ticket_restrictions(parse_result: true) click to toggle source
# File lib/national_rail_wrapper/feeds/knowledge_base/client.rb, line 38
def ticket_restrictions(parse_result: true)
  request = KnowledgeBase::Requests::TicketRestrictions.new.run(auth_token)

  parse_result ? Ox.parse(request.response_body).to_json : request.response_body
end
ticket_types(parse_result: true) click to toggle source
# File lib/national_rail_wrapper/feeds/knowledge_base/client.rb, line 44
def ticket_types(parse_result: true)
  request = KnowledgeBase::Requests::TicketTypes.new.run(auth_token)

  parse_result ? Ox.parse(request.response_body).to_json : request.response_body
end
tocs(parse_result: true) click to toggle source
# File lib/national_rail_wrapper/feeds/knowledge_base/client.rb, line 50
def tocs(parse_result: true)
  request = KnowledgeBase::Requests::Tocs.new.run(auth_token).response_body

  if parse_result
    KnowledgeBase::Parsers::Tocs.new(request).to_json
  else
    request.response_body
  end
end

Private Instance Methods

auth_token() click to toggle source
# File lib/national_rail_wrapper/feeds/knowledge_base/client.rb, line 66
def auth_token
  return @auth_token if !@auth_token.nil? && @auth_token_expires_at >= Time.now

  response = Net::HTTP.post_form(URI('https://opendata.nationalrail.co.uk/authenticate'), @credentials)
  response.value # Raise an exception if not successful
  data = JSON.parse(response.body)
  token = data.fetch('token')

  # Token expires in 1 hour. Using 55 minutes provides a safety margin.
  @auth_token_expires_at = Time.now + (55 * 60)

  @auth_token = token
end
parse_result(endpoint, response) click to toggle source
# File lib/national_rail_wrapper/feeds/knowledge_base/client.rb, line 62
def parse_result(endpoint, response)
  "KnowledgeBase::Parsers::#{endpoint.camelize}".constantize.new(request).to_json
end