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