blob: 30efe836331c66f3baa8d6f75c89caefbad6840a [file] [log] [blame]
const STASH_RESPONDER = "wss://{{host}}:{{ports[wss][0]}}/stash_responder_blocking";
class StashUtils {
/**
* Sends a request to store (|key|, |tuple|) in Stash
* (https://web-platform-tests.org/tools/wptserve/docs/stash.html).
* @param {string} key A UUID that acts as a key that can be used to retrieve |value| later.
* @param {string} value Value to be stored in Stash.
* @returns {Promise} Promise that resolves once the server responds.
*/
static putValue(key, value) {
return new Promise(resolve => {
const ws = new WebSocket(STASH_RESPONDER);
ws.onopen = () => {
ws.send(JSON.stringify({action: 'set', key: key, value: value}));
};
ws.onmessage = e => {
ws.close();
resolve();
};
});
}
/**
* Retrieves value associated with |key| in Stash. If no value has been
* associated with |key| yet, the method waits for putValue to be called with
* |key|, and a value to be associated, before resolving the return promise.
* @param {string} key A UUID that uniquely identifies the value to retrieve.
* @returns {Promise<string>} A promise that resolves with the value associated with |key|.
*/
static takeValue(key) {
return new Promise(resolve => {
const ws = new WebSocket(STASH_RESPONDER);
ws.onopen = () => {
ws.send(JSON.stringify({action: 'get', key: key}));
};
ws.onmessage = e => {
ws.close();
resolve(JSON.parse(e.data).value);
};
});
}
}