Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | 1x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 2x 2x 2x 2x 2x 2x 2x 2x 4x 4x 4x | /**
* Creation d'une requête en REST ou WPS
* (Factory)
*
* @module AltiRequestFactory
* @alias Gp.Services.Alti.Request.AltiRequestFactory
* @private
*/
import Logger from "../../../Utils/LoggerByDefault";
import ErrorService from "../../../Exceptions/ErrorService";
import AltiRequestREST from "./AltiRequestREST";
import AltiRequestWPS from "./AltiRequestWPS";
var AltiRequestFactory = {
/**
* interface unique
*
* @method build
* @static
* @param {Object} options - options definies dans le composant Alti
*
* @example
* var options = {
* httpMethod : 'GET', // GET|POST
* onSuccess : function (response) {},
* onError : function (error) {},
* scope : this,
* positions : [{lon:, lat:}, {lon:, lat:}],
* outputFormat : 'json' // json|xml
* sampling : 3,
* api : 'REST', // REST|WPS
* zonly : false // false|true
* };
*
*/
build : function (options) {
// logger
var logger = Logger.getLogger("AltiRequestFactory");
logger.trace(["AltiRequestFactory::build()"]);
var request = null;
// on factorise les options par groupe;
// - global,
// - param, les params pour les data inputs
// - wps, les param du service
// - callback
var settings = {
// ajout des valeurs par defaut spécifiques au service
type : options.sampling ? "Profil" : "Elevation",
method : options.httpMethod,
param : {
positions : null,
delimiter : null, // FIXME par defaut, on ne le met pas en place car ça fait planter la requête !?
indent : null, // par defaut
crs : null, // par defaut
format : null, // (only to POST)
sampling : null, // (only use by Profil)
zonly : null, // (only use by Elevation)
measures : null // (only use by Elevation)
}
};
// surcharge des valeurs obligatoires
settings.param.positions = options.positions;
settings.param.format = options.outputFormat;
settings.param.sampling = options.sampling;
settings.param.zonly = options.zonly;
settings.param.measures = options.measures;
settings.param.resource = options.resource;
// gestion des callback
var bOnError = !!(options.onError !== null && typeof options.onError === "function"); // cast variable to boolean
var bOnSuccess = !!(options.onSuccess !== null && typeof options.onSuccess === "function");
var message = null;
switch (options.api) {
case "REST":
// FIXME les exceptions ne sont pas 'catchées' sur le constructeur !
var myReq = new AltiRequestREST(settings);
Iif (!myReq.processRequestString()) {
message = "Error in process request (rest) !";
if (bOnError) {
options.onError.call(options.scope, new ErrorService(message));
return;
}
throw new Error(message);
}
request = myReq.requestString;
break;
case "WPS":
// ajout des valeurs par defaut spécifiques au service WPS
settings.wps = {
service : null, // par defaut
version : null, // par defaut
identifier : null, // par defaut
rawdataoutput : null, // par defaut
request : null // par defaut
};
request = AltiRequestWPS.build(settings);
Iif (!request) {
message = "Error in process request (wps) !";
if (bOnError) {
options.onError.call(options.scope, new ErrorService(message));
return;
}
throw new Error(message);
}
break;
default:
message = "Type of API is not supported by service (REST or WPS) !";
if (bOnError) {
options.onError.call(options.scope, new ErrorService(message));
return;
}
throw new Error(message);
}
Eif (bOnSuccess) {
options.onSuccess.call(options.scope, request);
}
return request;
}
};
export default AltiRequestFactory;
|