pusher-js
Version:
Pusher JavaScript library for browser, React Native, NodeJS and web workers
43 lines (37 loc) • 1.17 kB
text/typescript
import AbstractRuntime from 'runtimes/interface';
import Logger from 'core/logger';
import {AuthTransport} from 'core/auth/auth_transports';
var fetchAuth : AuthTransport = function(context, socketId, callback){
var headers = new Headers();
headers.set("Content-Type", "application/x-www-form-urlencoded");
for (var headerName in this.authOptions.headers) {
headers.set(headerName, this.authOptions.headers[headerName]);
}
var body = this.composeQuery(socketId);
var request = new Request(this.options.authEndpoint, {
headers,
body,
method: "POST",
});
return fetch(request).then((response)=>{
let {status} = response;
if (status === 200) {
return response.text();
} else {
Logger.warn("Couldn't get auth info from your webapp", status);
throw status;
}
}).then((data)=>{
try {
data = JSON.parse(data);
} catch (e) {
var message = 'JSON returned from webapp was invalid, yet status code was 200. Data was: ' + data;
Logger.warn(message);
throw message;
}
callback(false, data);
}).catch((err)=>{
callback(true, err);
});
}
export default fetchAuth;