class Echelon::UniversalStudiosOrlando::Park
Attributes
json_data[R]
park_id[R]
Public Class Methods
new(access_token, park_id)
click to toggle source
# File lib/echelon/parks/universal_studios_orlando.rb, line 67 def initialize(access_token, park_id) @park_id = park_id uri = URI.parse('https://services.universalorlando.com/api/pointsOfInterest') http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE headers = { 'X-UNIWebService-ApiKey' => 'AndroidMobileApp', 'X-UNIWebService-Token' => access_token }.merge(SHARED_HEADERS) resp = http.get(uri.request_uri, headers) gzip = Zlib::GzipReader.new(StringIO.new(resp.body)) @json_data = JSON.parse(gzip.read) @json_data end
Public Instance Methods
ride_list()
click to toggle source
# File lib/echelon/parks/universal_studios_orlando.rb, line 62 def ride_list park_rides = json_data['Rides'].keep_if { |r| r['VenueId'] == park_id } park_rides.inject({}) { |a, e| a[e['Id'].to_i] = e['MblDisplayName']; a } end
Private Instance Methods
create_ride_object(ref)
click to toggle source
# File lib/echelon/parks/universal_studios_orlando.rb, line 99 def create_ride_object(ref) ride = json_data['Rides'].find { |k, _v| k['Id'].to_i == ref } active = ride['WaitTime'].to_i >= 0 ? 1 : 0 meta = { express_pass_accepted: ride['ExpressPassAccepted'], single_rider: ride['HasSingleRiderLine'], unavailable_reason: ride_status(ride['WaitTime'].to_i) }.delete_if { |key, value| value.is_a?(String) && value.empty? } wait_time = ride['WaitTime'].to_i < 0 ? 0 : ride['WaitTime'].to_i Ride.new(name: ride['MblDisplayName'], queue_time: wait_time, active: active, meta: meta) end
ride_status(time)
click to toggle source
# File lib/echelon/parks/universal_studios_orlando.rb, line 87 def ride_status(time) case time when -1 then 'Out of operating hours' when -2 then 'Closed temporarily' when -3 then 'Closed long term' when -4 then 'Closed for inclement weather' when -5 then 'Closed for capacity' when -50 then 'Not available' else '' end end