Give sceNpWebApiAbortHandle, sceNpWebApiAddHttpRequestHeader,
sceNpWebApiCheckTimeout, sceNpWebApiCreateMultipartRequest,
sceNpWebApiSendRequest2, sceNpWebApiSetHandleTimeout,
sceNpWebApiSetMultipartContentType and sceNpWebApiSetRequestTimeout
their prototypes and the offline behaviour of the existing model.
Requests keep a multipart flag and a timeout whose timer starts on the
first send; CheckTimeout aborts expired requests at most once per
millisecond. The timeout unit is unverified: shadPS4 logs it as
milliseconds but adds it to microsecond process time, which is what
is done here. Handles created from SDK 3.00 get a timer slot. Headers
and multipart content types are validated and dropped, since nothing
is sent. Multipart parts and UtilityParseNpId still throw.
Adds the measured row to guest_np_web_api (method 99 at SDK version
0x05050001 is INVALID_ARGUMENT and leaves the request id alone), as
rooklz suggested in review, and says in the debt entry that the 2.50
threshold comes from shadPS4.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
NpTrophy reads the trophy count and icons from the title's trophy
package (names are encrypted and stay not implemented), PS4 v1 save data
calls wrap the native v2/v3 ones, and NpWebApi library contexts, handles
and push event filters work offline (service filters fail without a
signed-in user). libSceAjm is built from the libSceAjm.native sources
for PS4 titles. Limbo's (CUSA01664) remaining PS4 imports, including the
synchronous PS4 TUS calls and the Facebook dialog calls next to the
existing libraries, are exported as not implemented.