mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-06-25 13:30:10 +02:00
Merge pull request #10362 from cfresquet/requestModuleRefactor
Request module refactor
This commit is contained in:
commit
fb8cfd720e
4 changed files with 93 additions and 153 deletions
82
scripts/modules/request.js
Normal file
82
scripts/modules/request.js
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// request.js
|
||||||
|
//
|
||||||
|
// Created by Cisco Fresquet on 04/24/2017.
|
||||||
|
// Copyright 2017 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
/* global module */
|
||||||
|
// @module request
|
||||||
|
//
|
||||||
|
// This module contains the `request` module implementation
|
||||||
|
|
||||||
|
// ===========================================================================================
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
request: function (options, callback) { // cb(error, responseOfCorrectContentType) of url. A subset of npm request.
|
||||||
|
var httpRequest = new XMLHttpRequest(), key;
|
||||||
|
// QT bug: apparently doesn't handle onload. Workaround using readyState.
|
||||||
|
httpRequest.onreadystatechange = function () {
|
||||||
|
var READY_STATE_DONE = 4;
|
||||||
|
var HTTP_OK = 200;
|
||||||
|
if (httpRequest.readyState >= READY_STATE_DONE) {
|
||||||
|
var error = (httpRequest.status !== HTTP_OK) && httpRequest.status.toString() + ':' + httpRequest.statusText,
|
||||||
|
response = !error && httpRequest.responseText,
|
||||||
|
contentType = !error && httpRequest.getResponseHeader('content-type');
|
||||||
|
if (!error && contentType.indexOf('application/json') === 0) { // ignoring charset, etc.
|
||||||
|
try {
|
||||||
|
response = JSON.parse(response);
|
||||||
|
} catch (e) {
|
||||||
|
error = e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
response = { statusCode: httpRequest.status };
|
||||||
|
}
|
||||||
|
callback(error, response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (typeof options === 'string') {
|
||||||
|
options = { uri: options };
|
||||||
|
}
|
||||||
|
if (options.url) {
|
||||||
|
options.uri = options.url;
|
||||||
|
}
|
||||||
|
if (!options.method) {
|
||||||
|
options.method = 'GET';
|
||||||
|
}
|
||||||
|
if (options.body && (options.method === 'GET')) { // add query parameters
|
||||||
|
var params = [], appender = (-1 === options.uri.search('?')) ? '?' : '&';
|
||||||
|
for (key in options.body) {
|
||||||
|
if (options.body.hasOwnProperty(key)) {
|
||||||
|
params.push(key + '=' + options.body[key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
options.uri += appender + params.join('&');
|
||||||
|
delete options.body;
|
||||||
|
}
|
||||||
|
if (options.json) {
|
||||||
|
options.headers = options.headers || {};
|
||||||
|
options.headers["Content-type"] = "application/json";
|
||||||
|
options.body = JSON.stringify(options.body);
|
||||||
|
}
|
||||||
|
for (key in options.headers || {}) {
|
||||||
|
if (options.headers.hasOwnProperty(key)) {
|
||||||
|
httpRequest.setRequestHeader(key, options.headers[key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
httpRequest.open(options.method, options.uri, true);
|
||||||
|
httpRequest.send(options.body);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// ===========================================================================================
|
||||||
|
// @function - debug logging
|
||||||
|
function debug() {
|
||||||
|
print('RequestModule | ' + [].slice.call(arguments).join(' '));
|
||||||
|
}
|
|
@ -11,8 +11,11 @@
|
||||||
// Distributed under the Apache License, Version 2.0.
|
// Distributed under the Apache License, Version 2.0.
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
(function () { // BEGIN LOCAL_SCOPE
|
(function () { // BEGIN LOCAL_SCOPE
|
||||||
|
|
||||||
|
var request = Script.require('request').request;
|
||||||
|
|
||||||
var LABEL = "makeUserConnection";
|
var LABEL = "makeUserConnection";
|
||||||
var MAX_AVATAR_DISTANCE = 0.2; // m
|
var MAX_AVATAR_DISTANCE = 0.2; // m
|
||||||
var GRIP_MIN = 0.75; // goes from 0-1, so 75% pressed is pressed
|
var GRIP_MIN = 0.75; // goes from 0-1, so 75% pressed is pressed
|
||||||
|
@ -126,61 +129,6 @@
|
||||||
function cleanId(guidWithCurlyBraces) {
|
function cleanId(guidWithCurlyBraces) {
|
||||||
return guidWithCurlyBraces.slice(1, -1);
|
return guidWithCurlyBraces.slice(1, -1);
|
||||||
}
|
}
|
||||||
function request(options, callback) { // cb(error, responseOfCorrectContentType) of url. A subset of npm request.
|
|
||||||
var httpRequest = new XMLHttpRequest(), key;
|
|
||||||
// QT bug: apparently doesn't handle onload. Workaround using readyState.
|
|
||||||
httpRequest.onreadystatechange = function () {
|
|
||||||
var READY_STATE_DONE = 4;
|
|
||||||
var HTTP_OK = 200;
|
|
||||||
if (httpRequest.readyState >= READY_STATE_DONE) {
|
|
||||||
var error = (httpRequest.status !== HTTP_OK) && httpRequest.status.toString() + ':' + httpRequest.statusText,
|
|
||||||
response = !error && httpRequest.responseText,
|
|
||||||
contentType = !error && httpRequest.getResponseHeader('content-type');
|
|
||||||
if (!error && contentType.indexOf('application/json') === 0) { // ignoring charset, etc.
|
|
||||||
try {
|
|
||||||
response = JSON.parse(response);
|
|
||||||
} catch (e) {
|
|
||||||
error = e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (error) {
|
|
||||||
response = {statusCode: httpRequest.status};
|
|
||||||
}
|
|
||||||
callback(error, response);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
if (typeof options === 'string') {
|
|
||||||
options = {uri: options};
|
|
||||||
}
|
|
||||||
if (options.url) {
|
|
||||||
options.uri = options.url;
|
|
||||||
}
|
|
||||||
if (!options.method) {
|
|
||||||
options.method = 'GET';
|
|
||||||
}
|
|
||||||
if (options.body && (options.method === 'GET')) { // add query parameters
|
|
||||||
var params = [], appender = (-1 === options.uri.search('?')) ? '?' : '&';
|
|
||||||
for (key in options.body) {
|
|
||||||
if (options.body.hasOwnProperty(key)) {
|
|
||||||
params.push(key + '=' + options.body[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
options.uri += appender + params.join('&');
|
|
||||||
delete options.body;
|
|
||||||
}
|
|
||||||
if (options.json) {
|
|
||||||
options.headers = options.headers || {};
|
|
||||||
options.headers["Content-type"] = "application/json";
|
|
||||||
options.body = JSON.stringify(options.body);
|
|
||||||
}
|
|
||||||
for (key in options.headers || {}) {
|
|
||||||
if (options.headers.hasOwnProperty(key)) {
|
|
||||||
httpRequest.setRequestHeader(key, options.headers[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
httpRequest.open(options.method, options.uri, true);
|
|
||||||
httpRequest.send(options.body);
|
|
||||||
}
|
|
||||||
|
|
||||||
function handToString(hand) {
|
function handToString(hand) {
|
||||||
if (hand === Controller.Standard.RightHand) {
|
if (hand === Controller.Standard.RightHand) {
|
||||||
|
@ -514,7 +462,7 @@
|
||||||
endHandshakeAnimation();
|
endHandshakeAnimation();
|
||||||
// No-op if we were successful, but this way we ensure that failures and abandoned handshakes don't leave us
|
// No-op if we were successful, but this way we ensure that failures and abandoned handshakes don't leave us
|
||||||
// in a weird state.
|
// in a weird state.
|
||||||
request({uri: requestUrl, method: 'DELETE'}, debug);
|
request({ uri: requestUrl, method: 'DELETE' }, debug);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateTriggers(value, fromKeyboard, hand) {
|
function updateTriggers(value, fromKeyboard, hand) {
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
|
|
||||||
(function() { // BEGIN LOCAL_SCOPE
|
(function() { // BEGIN LOCAL_SCOPE
|
||||||
|
|
||||||
|
var request = Script.require('request').request;
|
||||||
|
|
||||||
var populateNearbyUserList, color, textures, removeOverlays,
|
var populateNearbyUserList, color, textures, removeOverlays,
|
||||||
controllerComputePickRay, onTabletButtonClicked, onTabletScreenChanged,
|
controllerComputePickRay, onTabletButtonClicked, onTabletScreenChanged,
|
||||||
receiveMessage, avatarDisconnected, clearLocalQMLDataAndClosePAL,
|
receiveMessage, avatarDisconnected, clearLocalQMLDataAndClosePAL,
|
||||||
|
@ -331,55 +333,6 @@ function updateUser(data) {
|
||||||
//
|
//
|
||||||
// These are prototype versions that will be changed when the back end changes.
|
// These are prototype versions that will be changed when the back end changes.
|
||||||
var METAVERSE_BASE = location.metaverseServerUrl;
|
var METAVERSE_BASE = location.metaverseServerUrl;
|
||||||
function request(options, callback) { // cb(error, responseOfCorrectContentType) of url. A subset of npm request.
|
|
||||||
var httpRequest = new XMLHttpRequest(), key;
|
|
||||||
// QT bug: apparently doesn't handle onload. Workaround using readyState.
|
|
||||||
httpRequest.onreadystatechange = function () {
|
|
||||||
var READY_STATE_DONE = 4;
|
|
||||||
var HTTP_OK = 200;
|
|
||||||
if (httpRequest.readyState >= READY_STATE_DONE) {
|
|
||||||
var error = (httpRequest.status !== HTTP_OK) && httpRequest.status.toString() + ':' + httpRequest.statusText,
|
|
||||||
response = !error && httpRequest.responseText,
|
|
||||||
contentType = !error && httpRequest.getResponseHeader('content-type');
|
|
||||||
if (!error && contentType.indexOf('application/json') === 0) { // ignoring charset, etc.
|
|
||||||
try {
|
|
||||||
response = JSON.parse(response);
|
|
||||||
} catch (e) {
|
|
||||||
error = e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
callback(error, response);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
if (typeof options === 'string') {
|
|
||||||
options = {uri: options};
|
|
||||||
}
|
|
||||||
if (options.url) {
|
|
||||||
options.uri = options.url;
|
|
||||||
}
|
|
||||||
if (!options.method) {
|
|
||||||
options.method = 'GET';
|
|
||||||
}
|
|
||||||
if (options.body && (options.method === 'GET')) { // add query parameters
|
|
||||||
var params = [], appender = (-1 === options.uri.search('?')) ? '?' : '&';
|
|
||||||
for (key in options.body) {
|
|
||||||
params.push(key + '=' + options.body[key]);
|
|
||||||
}
|
|
||||||
options.uri += appender + params.join('&');
|
|
||||||
delete options.body;
|
|
||||||
}
|
|
||||||
if (options.json) {
|
|
||||||
options.headers = options.headers || {};
|
|
||||||
options.headers["Content-type"] = "application/json";
|
|
||||||
options.body = JSON.stringify(options.body);
|
|
||||||
}
|
|
||||||
for (key in options.headers || {}) {
|
|
||||||
httpRequest.setRequestHeader(key, options.headers[key]);
|
|
||||||
}
|
|
||||||
httpRequest.open(options.method, options.uri, true);
|
|
||||||
httpRequest.send(options.body);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function requestJSON(url, callback) { // callback(data) if successfull. Logs otherwise.
|
function requestJSON(url, callback) { // callback(data) if successfull. Logs otherwise.
|
||||||
request({
|
request({
|
||||||
|
|
|
@ -14,6 +14,9 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
(function () { // BEGIN LOCAL_SCOPE
|
(function () { // BEGIN LOCAL_SCOPE
|
||||||
|
|
||||||
|
var request = Script.require('request').request;
|
||||||
|
|
||||||
var gotoQmlSource = "TabletAddressDialog.qml";
|
var gotoQmlSource = "TabletAddressDialog.qml";
|
||||||
var buttonName = "GOTO";
|
var buttonName = "GOTO";
|
||||||
var onGotoScreen = false;
|
var onGotoScreen = false;
|
||||||
|
@ -30,54 +33,7 @@
|
||||||
text: buttonName,
|
text: buttonName,
|
||||||
sortOrder: 8
|
sortOrder: 8
|
||||||
});
|
});
|
||||||
function request(options, callback) { // cb(error, responseOfCorrectContentType) of url. A subset of npm request.
|
|
||||||
var httpRequest = new XMLHttpRequest(), key;
|
|
||||||
// QT bug: apparently doesn't handle onload. Workaround using readyState.
|
|
||||||
httpRequest.onreadystatechange = function () {
|
|
||||||
var READY_STATE_DONE = 4;
|
|
||||||
var HTTP_OK = 200;
|
|
||||||
if (httpRequest.readyState >= READY_STATE_DONE) {
|
|
||||||
var error = (httpRequest.status !== HTTP_OK) && httpRequest.status.toString() + ':' + httpRequest.statusText,
|
|
||||||
response = !error && httpRequest.responseText,
|
|
||||||
contentType = !error && httpRequest.getResponseHeader('content-type');
|
|
||||||
if (!error && contentType.indexOf('application/json') === 0) { // ignoring charset, etc.
|
|
||||||
try {
|
|
||||||
response = JSON.parse(response);
|
|
||||||
} catch (e) {
|
|
||||||
error = e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
callback(error, response);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
if (typeof options === 'string') {
|
|
||||||
options = {uri: options};
|
|
||||||
}
|
|
||||||
if (options.url) {
|
|
||||||
options.uri = options.url;
|
|
||||||
}
|
|
||||||
if (!options.method) {
|
|
||||||
options.method = 'GET';
|
|
||||||
}
|
|
||||||
if (options.body && (options.method === 'GET')) { // add query parameters
|
|
||||||
var params = [], appender = (-1 === options.uri.search('?')) ? '?' : '&';
|
|
||||||
for (key in options.body) {
|
|
||||||
params.push(key + '=' + options.body[key]);
|
|
||||||
}
|
|
||||||
options.uri += appender + params.join('&');
|
|
||||||
delete options.body;
|
|
||||||
}
|
|
||||||
if (options.json) {
|
|
||||||
options.headers = options.headers || {};
|
|
||||||
options.headers["Content-type"] = "application/json";
|
|
||||||
options.body = JSON.stringify(options.body);
|
|
||||||
}
|
|
||||||
for (key in options.headers || {}) {
|
|
||||||
httpRequest.setRequestHeader(key, options.headers[key]);
|
|
||||||
}
|
|
||||||
httpRequest.open(options.method, options.uri, true);
|
|
||||||
httpRequest.send(options.body);
|
|
||||||
}
|
|
||||||
function fromQml(message) {
|
function fromQml(message) {
|
||||||
var response = {id: message.id, jsonrpc: "2.0"};
|
var response = {id: message.id, jsonrpc: "2.0"};
|
||||||
switch (message.method) {
|
switch (message.method) {
|
||||||
|
@ -99,6 +55,7 @@
|
||||||
// No need for a different activeIcon, because we issue messagesWaiting(false) when the button goes active anyway.
|
// No need for a different activeIcon, because we issue messagesWaiting(false) when the button goes active anyway.
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var hasEventBridge = false;
|
var hasEventBridge = false;
|
||||||
function wireEventBridge(on) {
|
function wireEventBridge(on) {
|
||||||
if (on) {
|
if (on) {
|
||||||
|
|
Loading…
Reference in a new issue