module RubyPtv::Request

Module used for dispatching http requests

Public Instance Methods

parse(resp) click to toggle source
# File lib/ruby_ptv/request.rb, line 29
def parse(resp)
  JSON.parse(resp.body)
end
request(path, params = {}) click to toggle source

Perform HTTP get request

path = request path params = parameters hash

# File lib/ruby_ptv/request.rb, line 14
def request(path, params = {})
  raise StandardError, "Dev ID and secret key are required." unless @dev_id && @secret_key

  request_path = if params.empty?
                   "/v3/#{path}?devid=#{@dev_id}"
                 else
                   "/v3/#{path}?#{URI.encode_www_form(params)}&devid=#{@dev_id}"
                 end
  # Create unique SHA1 signature with each request
  signature = OpenSSL::HMAC.hexdigest("SHA1", @secret_key, request_path)
  req = "https://timetableapi.ptv.vic.gov.au" + request_path + "&signature=" + signature.upcase

  parse(HTTParty.get(req))
end