cubehouse / themeparks

Unofficial API for accessing ride wait times and schedules for Disneyland, Disney World, Universal Studios, and many more parks
MIT License
546 stars 126 forks source link

Walt Disney World Parks Returning Error - UnhandledPromiseRejectionWarning #96

Closed kyleaj closed 6 years ago

kyleaj commented 6 years ago

This morning, I started receiving an error when trying to access wait times for the 4 Walt Disney World parks. Other resorts I tested (Disneyland, Disneyland Paris) seem to still be functional.

(node:16522) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): 503: { "errors": [ { "message": "Error calling Facility Service.", "systemErrorCode": "220038", "typeId": "SERVICE_CALL_ERROR" } ] }

cubehouse commented 6 years ago

"503" suggests a service is unavailable, which could mean a temporary issue, or some service has been removed for WDW.

Strange other Disney parks work, Disneyland and Paris use the same API. I can hopefully take a look at this in the next few days, but will happily look at any pull requests if anyone can resolve this in the mean time.

cubehouse commented 6 years ago

I've just tried to use the official app, and am getting an error when trying to access park times. I assume this will resolve itself shortly once Disney have fixed their servers.

kyleaj commented 6 years ago

Thanks for your help; this is an awesome project. In the meantime, I tried using wdwJS (the one forked from this project, https://github.com/magicbear/wdwJS) which (strangely) seems to be working. Do they use the same APIs to access wait times?

cubehouse commented 6 years ago

wdwJS is very old now and I haven't updated it quite some time (so I'm surprised it's still returning valid data!), themeparks using a slightly different API structure to fetch things such as fastpass status and better ride names.

In this case, one specific part of the WDW API had broken on their servers. I'm hoping it will be resolved soon.

In the mean-time, here is a quick hack you can use for the WDW parks to skip the step that's having issues:

const wdw = new themeparks.Parks.WaltDisneyWorldMagicKingdom();
// temporary hack
wdw.GetFacilitiesData = () => Promise.resolve({});
cubehouse commented 6 years ago

This still hasn't been resolved on WDW's end, so I'm going to now assume they've switched off some parts of the API for WDW. Because of this, I've pushed a hotfix out in 4.6.5.

WDW is now using couchbase mobile for their updates (the other parks seem to be using the "classic" APIs still), so I believe an API rewrite will be required in the near future... :(

jobrown5vt commented 6 years ago

Yikes. Well, thanks for the quick fix @cubehouse!