Advertisement
Guest User

service

a guest
Dec 17th, 2017
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.72 KB | None | 0 0
  1. require 'sinatra'
  2. require 'json'
  3.  
  4.  
  5. TEST_SECRET_KEY = "railssuks"
  6.  
  7.  
  8.  
  9. def get_cities_names()
  10.     Dir.entries('./SCHEDULES').select { |f| f != '.' && f != '..'}
  11. end
  12.  
  13.  
  14. def get_schedule_names_of_city(city_name)
  15.     filenames = Dir.entries('./SCHEDULES/' + city_name).select { |f| f != '.' && f != '..'}
  16.  
  17.     filenames.map { |filename| File.basename(filename, File.extname(filename)) }
  18. end
  19.  
  20. def get_schedules_metadata()
  21.     city_folders = get_cities_names()
  22.     cities = []
  23.     city_folders.each do | city_name |
  24.         schedules_names = get_schedule_names_of_city(city_name)
  25.         if schedules_names.length != 0
  26.             most_recent = schedules_names.map{ |e| e.to_i }.max
  27.             city_hash = {:cityName => city_name,
  28.                          :mostRecent => most_recent.to_s,
  29.                          :schedules => schedules_names}
  30.             cities.push(city_hash)
  31.         end
  32.     end
  33.     cities.to_json
  34. end
  35.  
  36. def get_json_string(city, schedule_version)
  37.     json = File.read("./SCHEDULES/#{city}/#{schedule_version}.json")
  38.     json
  39. end
  40.  
  41.  
  42. class MainService < Sinatra::Base
  43.  
  44.     set :bind, '0.0.0.0'
  45.     set :port, '40000'
  46.     set :environment, :production
  47.  
  48.     get '/' do
  49.         get_schedules_metadata()
  50.     end
  51.  
  52.     get '/:city/:schedule_version' do
  53.         city = params['city']
  54.         schedule_version  = params['schedule_version']
  55.  
  56.         cities = get_cities_names()
  57.         if not cities.include? city
  58.             error_json = {}
  59.             error_json[:message] = 'wrong city'
  60.             error_json[:city] = city
  61.             return error_json.to_json
  62.         end
  63.         schedules = get_schedule_names_of_city(city)
  64.    
  65.         if not schedules.include? schedule_version
  66.             error_json = {}
  67.             error_json[:message] = 'wrong schedule version'
  68.             error_json[:scheduleVersion] = schedule_version
  69.             return error_json.to_json
  70.         end
  71.    
  72.         get_json_string(city, schedule_version)
  73.     end
  74.  
  75.    
  76. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement