Sha256: a9c54713420eaee8481210abf773f156ac9f1f6c799eea5ee932b37d35a50a6d

Contents?: true

Size: 1.41 KB

Versions: 4

Compression:

Stored size: 1.41 KB

Contents

require 'rubygems'
require 'rest_client'
require 'json'

class Transprt

  @domain = 'http://transport.opendata.ch'
  @version = 'v1'

  #
  # => find locations
  #
  def self.locations(parameters)

    allowed_parameters = ['query', 'x', 'y', 'type']

    query = self.create_query(parameters, allowed_parameters)

    locations = JSON.parse(RestClient.get self.create_url('locations') + query)

    locations['stations']
  end

  #
  # => find connections
  #
  def self.connections(parameters)
    allowed_parameters = ['from', 'to', 'via', 'date', 'time', 'isArrivalTime', 'transportations', 'limit', 'page',
      'direct', 'sleeper', 'couchette', 'bike']

    query = self.create_query(parameters, allowed_parameters)

    locations = JSON.parse(RestClient.get self.create_url('connections') + query)

    locations['connections']
  end

  #
  # => find station boards
  #
  def self.stationboard(parameters)
    allowed_parameters = ['station', 'id', 'limit', 'transportations', 'datetime']

    query = self.create_query(parameters, allowed_parameters)

    locations = JSON.parse(RestClient.get self.create_url('stationboard') + query)

    locations['stationboard']
  end

  private

  def self.create_url(base)
    [@domain, @version, base].join('/') + '?'
  end

  def self.create_query(parameters, allowed_parameters)
    query = parameters.map{|k,v|
        "#{k}=#{v}" if allowed_parameters.include? k.to_s
    }.join('&')
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
transprt-0.1.3 lib/transprt.rb
transprt-0.1.2 lib/transprt.rb
transprt-0.1.1 lib/transprt.rb
transprt-0.1.0 lib/transprt.rb