UNPKG

pusher-js

Version:

Pusher Channels JavaScript library for browsers, React Native, NodeJS and web workers

53 lines (47 loc) 1.48 kB
import ScriptReceiver from './script_receiver'; import ScriptRequest from './script_request'; import * as Collections from 'core/utils/collections'; import Util from 'core/util'; import Runtime from '../runtime'; /** Sends data via JSONP. * * Data is a key-value map. Its values are JSON-encoded and then passed * through base64. Finally, keys and encoded values are appended to the query * string. * * The class itself does not guarantee raising errors on failures, as it's not * possible to support such feature on all browsers. Instead, JSONP endpoint * should call back in a way that's easy to distinguish from browser calls, * for example by passing a second argument to the receiver. * * @param {String} url * @param {Object} data key-value map of data to be submitted */ export default class JSONPRequest { url: string; data: any; request: ScriptRequest; constructor(url: string, data: any) { this.url = url; this.data = data; } /** Sends the actual JSONP request. * * @param {ScriptReceiver} receiver */ send(receiver: ScriptReceiver) { if (this.request) { return; } var query = Collections.buildQueryString(this.data); var url = this.url + '/' + receiver.number + '?' + query; this.request = Runtime.createScriptRequest(url); this.request.send(receiver); } /** Cleans up the DOM remains of the JSONP request. */ cleanup() { if (this.request) { this.request.cleanup(); } } }