| 255 | } |
| 256 | |
| 257 | void HTTPModule::sendRequestFromScript(const var::NativeFunctionArgs& args, RequestMethod method) |
| 258 | { |
| 259 | if (!enabled->boolValue()) return; |
| 260 | |
| 261 | if (args.numArguments < 1) |
| 262 | { |
| 263 | LOGWARNING("Sending HTTP Request requires at least one argument being the address !"); |
| 264 | return; |
| 265 | } |
| 266 | |
| 267 | ResultDataType dataType = ResultDataType::DEFAULT; |
| 268 | |
| 269 | String extraHeaders = ""; |
| 270 | String payload = ""; |
| 271 | StringPairArray requestParams; |
| 272 | |
| 273 | File file = File(); |
| 274 | |
| 275 | if (args.numArguments >= 2) |
| 276 | { |
| 277 | if (args.arguments[1].isObject()) |
| 278 | { |
| 279 | var o = args.arguments[1]; |
| 280 | extraHeaders = o.getProperty("extraHeaders", extraHeaders); |
| 281 | |
| 282 | var pp = o.getProperty("payload", ""); |
| 283 | if (pp.isObject()) payload = JSON::toString(pp, true); |
| 284 | else payload = pp.toString(); |
| 285 | |
| 286 | String dataTypeString = o.getProperty("dataType", "").toString().toLowerCase(); |
| 287 | if (dataTypeString == jsonDataTypeId.toString()) dataType = ResultDataType::JSON; |
| 288 | else if (dataTypeString == rawDataTypeId.toString()) dataType = ResultDataType::RAW; |
| 289 | |
| 290 | var argArray = o.getProperty("arguments", var()); |
| 291 | for (int i = 0; i < argArray.size(); i += 2) |
| 292 | { |
| 293 | if (i >= argArray.size() - 1) break; |
| 294 | requestParams.set(argArray[i], argArray[i + 1]); |
| 295 | } |
| 296 | |
| 297 | var fp = o.getProperty("file", var()); |
| 298 | file = File(fp.toString()); |
| 299 | } |
| 300 | else |
| 301 | { |
| 302 | if (method == GET) |
| 303 | { |
| 304 | if (args.numArguments >= 2) |
| 305 | { |
| 306 | String dataTypeString = args.arguments[1].toString().toLowerCase(); |
| 307 | if (dataTypeString == jsonDataTypeId.toString()) dataType = ResultDataType::JSON; |
| 308 | else if (dataTypeString == rawDataTypeId.toString()) dataType = ResultDataType::RAW; |
| 309 | if (args.numArguments >= 3) extraHeaders = args.arguments[2].toString(); |
| 310 | if (args.numArguments >= 4) |
| 311 | { |
| 312 | var pp = args.arguments[3]; |
| 313 | if (pp.isObject()) payload = JSON::toString(pp, true); |
| 314 | else payload = pp.toString(); |
no test coverage detected