OCEntityHandlerResult ProcessGetRequest(OCEntityHandlerRequest *ehRequest, OCRepPayload **payload) { OCEntityHandlerResult ehResult = OC_EH_ERROR; if (!ehRequest) { OIC_LOG(ERROR, ES_RH_TAG, "Request is Null"); return ehResult; } if (ehRequest->payload && ehRequest->payload->type != PAYLOAD_TYPE_REPRESENTATION) { OIC_LOG(ERROR, ES_RH_TAG, "Incoming payload not a representation"); return ehResult; } OCRepPayload *getResp = constructResponse(ehRequest); if (!getResp) { OIC_LOG(ERROR, ES_RH_TAG, "constructResponse failed"); return OC_EH_ERROR; } *payload = getResp; ehResult = OC_EH_OK; return ehResult; }
OCEntityHandlerResult ProcessGetRequest (OCEntityHandlerRequest *ehRequest, OCRepPayload **payload) { OCEntityHandlerResult ehResult; bool queryPassed = checkIfQueryForPowerPassed(ehRequest->query); // Empty payload if the query has no match. if (queryPassed) { OCRepPayload *getResp = constructResponse(ehRequest); if(!getResp) { OIC_LOG(ERROR, TAG, "constructResponse failed"); return OC_EH_ERROR; } *payload = getResp; ehResult = OC_EH_OK; } else { ehResult = OC_EH_OK; } return ehResult; }
void ProcessGetPutRequest (OCEntityHandlerRequest *ehRequest) { OC_LOG(INFO, TAG, "Entering ProcessGetPutRequest"); OCRepPayload *getResp = constructResponse(ehRequest); if(!getResp) { OC_LOG(ERROR, TAG, "Failed to construct response"); return; } OCEntityHandlerResponse response; // Format the response. Note this requires some info about the request response.requestHandle = ehRequest->requestHandle; response.resourceHandle = ehRequest->resource; response.ehResult = OC_EH_OK; response.payload = reinterpret_cast<OCPayload*> (getResp); response.numSendVendorSpecificHeaderOptions = 0; memset(response.sendVendorSpecificHeaderOptions, 0, sizeof response.sendVendorSpecificHeaderOptions); memset(response.resourceUri, 0, sizeof(response.resourceUri)); // Indicate that response is NOT in a persistent buffer response.persistentBufferFlag = 0; // Send the response if (OCDoResponse(&response) != OC_STACK_OK) { OC_LOG(ERROR, TAG, "Error sending response"); } free(getResp); }
int eef_xacml_authorize(void *handler_arg, const xacml_request_t request, xacml_response_t response) { pid_t tid; /*char * logstr = "xacml_authorize()";*/ /*int rc = 0;*/ /*xacml_status_code_t my_decision = XACML_STATUS_ok;*/ xacml_response_set_issuer(response, "EES"); extractRequestSubjectToAOS (request); extractRequestActionToAOS (request); extractRequestResourceToAOS (request); extractRequestEnvironmentToAOS (request); tid = syscall(SYS_gettid); EEF_log(LOG_DEBUG, "In thread %i\n", tid); if(EEF_run() == EES_FAILURE) { constructFailureResponse(&response); EEF_log(LOG_ERR, "Failed to run the EEF successfully\n"); } else { constructResponse(&response); } return 0; }
OCEntityHandlerResult ProcessGetRequest (OCEntityHandlerRequest *ehRequest, OCRepPayload **payload) { OCEntityHandlerResult ehResult = OC_EH_ERROR; OCRepPayload *getResp = constructResponse(ehRequest); if(getResp && payload) { *payload = getResp; ehResult = OC_EH_OK; } return ehResult; }
OCEntityHandlerResult ProcessPutRequest (OCEntityHandlerRequest *ehRequest, OCRepPayload** payload) { OCEntityHandlerResult ehResult; OCRepPayload *putResp = constructResponse(ehRequest); if(!putResp) { OIC_LOG(ERROR, TAG, "Failed to construct Json response"); return OC_EH_ERROR; } *payload = putResp; ehResult = OC_EH_OK; return ehResult; }
OCEntityHandlerResult ProcessPutRequest (OCEntityHandlerRequest *ehRequest, OCRepPayload **payload) { OCEntityHandlerResult ehResult; OCRepPayload *putResp = constructResponse(ehRequest); if(putResp) { *payload = putResp; ehResult = OC_EH_OK; } else { ehResult = OC_EH_ERROR; } return ehResult; }
OCEntityHandlerResult ProcessPutRequest(OCEntityHandlerRequest *ehRequest, OCRepPayload** payload) { OCEntityHandlerResult ehResult = OC_EH_ERROR; if (ehRequest->payload && ehRequest->payload->type != PAYLOAD_TYPE_REPRESENTATION) { OC_LOG(ERROR, ES_RH_TAG, "Incoming payload not a representation"); return ehResult; } OCRepPayload* input = (OCRepPayload*) (ehRequest->payload); if (!input) { OC_LOG(ERROR, ES_RH_TAG, "Failed to parse"); return ehResult; } char* tnn; if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_TNN, &tnn)) { sprintf(g_prov.tnn, "%s", tnn); } char* cd; if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_CD, &cd)) { sprintf(g_prov.cd, "%s", cd); } g_flag = 1; OCRepPayload *getResp = constructResponse(ehRequest); if (!getResp) { OC_LOG(ERROR, ES_RH_TAG, "constructResponse failed"); return OC_EH_ERROR; } *payload = getResp; ehResult = OC_EH_OK; return ehResult; }
OCEntityHandlerResult ProcessPostRequest (OCEntityHandlerRequest *ehRequest, OCEntityHandlerResponse *response, OCRepPayload **payload) { OCRepPayload *respPLPost_led = NULL; OCEntityHandlerResult ehResult = OC_EH_OK; /* * The entity handler determines how to process a POST request. * Per the REST paradigm, POST can also be used to update representation of existing * resource or create a new resource. * In the sample below, if the POST is for /a/led then a new instance of the LED * resource is created with default representation (if representation is included in * POST payload it can be used as initial values) as long as the instance is * lesser than max new instance count. Once max instance count is reached, POST on * /a/led updated the representation of /a/led (just like PUT) */ if (ehRequest->resource == LED.handle) { if (gCurrLedInstance < SAMPLE_MAX_NUM_POST_INSTANCE) { // Create new LED instance char newLedUri[15] = "/a/led/"; int newLedUriLength = strlen(newLedUri); snprintf (newLedUri + newLedUriLength, sizeof(newLedUri)-newLedUriLength, "%d", gCurrLedInstance); respPLPost_led = OCRepPayloadCreate(); OCRepPayloadSetUri(respPLPost_led, gResourceUri); OCRepPayloadSetPropString(respPLPost_led, "createduri", newLedUri); if (0 == createLEDResource (newLedUri, &gLedInstance[gCurrLedInstance], false, 0)) { OIC_LOG (INFO, TAG, "Created new LED instance"); gLedInstance[gCurrLedInstance].state = 0; gLedInstance[gCurrLedInstance].power = 0; gCurrLedInstance++; strncpy ((char *)response->resourceUri, newLedUri, MAX_URI_LENGTH); ehResult = OC_EH_RESOURCE_CREATED; } } else { respPLPost_led = constructResponse(ehRequest); } } else { for (int i = 0; i < SAMPLE_MAX_NUM_POST_INSTANCE; i++) { if (ehRequest->resource == gLedInstance[i].handle) { if (i == 0) { respPLPost_led = constructResponse(ehRequest); break; } else if (i == 1) { respPLPost_led = constructResponse(ehRequest); } } } } if (respPLPost_led != NULL) { *payload = respPLPost_led; ehResult = OC_EH_OK; } else { OIC_LOG_V (INFO, TAG, "Payload was NULL"); ehResult = OC_EH_ERROR; } return ehResult; }
OCEntityHandlerResult ProcessPostRequest(OCEntityHandlerRequest *ehRequest, OCRepPayload** payload) { OIC_LOG(INFO, ES_RH_TAG, "ProcessPostRequest enter"); OCEntityHandlerResult ehResult = OC_EH_ERROR; if (ehRequest->payload && ehRequest->payload->type != PAYLOAD_TYPE_REPRESENTATION) { OIC_LOG(ERROR, ES_RH_TAG, "Incoming payload not a representation"); return ehResult; } OCRepPayload* input = (OCRepPayload*) (ehRequest->payload); if (!input) { OIC_LOG(ERROR, ES_RH_TAG, "Failed to parse"); return ehResult; } int64_t tr; if (OCRepPayloadGetPropInt(input, OC_RSRVD_ES_TR, &tr)) { // Triggering gProvResource.tr = tr; } //ES_PS_PROVISIONING_COMPLETED state indicates that already provisioning is completed. // A new request for provisioning means overriding existing network provisioning information. if (gProvResource.ps == ES_PS_PROVISIONING_COMPLETED && tr == ES_PS_TRIGGER_CONNECTION) { OIC_LOG(DEBUG, ES_RH_TAG, "Provisioning already completed." "Tiggering the network connection"); if (gNetworkInfoProvEventCb) { gNetworkInfoProvEventCb(ES_RECVTRIGGEROFPROVRES); ehResult = OC_EH_OK; } else { OIC_LOG(ERROR, ES_RH_TAG, "gNetworkInfoProvEventCb is NULL." "Network handler not registered. Failed to connect to the network"); ehResult = OC_EH_ERROR; } return ehResult; } else if (gProvResource.ps == ES_PS_PROVISIONING_COMPLETED) { OIC_LOG(DEBUG, ES_RH_TAG, "Provisioning already completed. " "This a request to override the existing the network provisioning information"); } else { OIC_LOG(DEBUG, ES_RH_TAG, "Provisioning the network information to the Enrollee."); } OICStrcpy(gProvResource.tnn, sizeof(gProvResource.tnn), ""); OICStrcpy(gProvResource.cd, sizeof(gProvResource.cd), ""); char* tnn; if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_TNN, &tnn)) { OICStrcpy(gProvResource.tnn, sizeof(gProvResource.tnn), tnn); OIC_LOG(INFO, ES_RH_TAG, "got ssid"); } OIC_LOG_V(INFO, ES_RH_TAG, "gProvResource.tnn %s", gProvResource.tnn); char* cd; if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_CD, &cd)) { OICStrcpy(gProvResource.cd, sizeof(gProvResource.cd), cd); OIC_LOG(INFO, ES_RH_TAG, "got password"); }OIC_LOG_V(INFO, ES_RH_TAG, "gProvResource.cd %s", gProvResource.cd); gProvResource.ps = ES_PS_PROVISIONING_COMPLETED; OIC_LOG_V(INFO, ES_RH_TAG, "gProvResource.ps %lld", gProvResource.ps); OCRepPayload *getResp = constructResponse(ehRequest); if (!getResp) { OIC_LOG(ERROR, ES_RH_TAG, "constructResponse failed"); return OC_EH_ERROR; } *payload = getResp; ehResult = OC_EH_OK; return ehResult; }
void RouteRequestHandler::operator()() { std::string response(constructResponse()); _connection_data->respond(response); }
OCEntityHandlerResult ProcessPostRequest (OCEntityHandlerRequest *ehRequest, OCEntityHandlerResponse *response, OCRepPayload** payload) { OCEntityHandlerResult ehResult = OC_EH_OK; OCRepPayload *respPLPost_light = nullptr; /* * The entity handler determines how to process a POST request. * Per the REST paradigm, POST can also be used to update representation of existing * resource or create a new resource. * In the sample below, if the POST is for /a/light then a new instance of the Light * resource is created with default representation (if representation is included in * POST payload it can be used as initial values) as long as the instance is * lesser than max new instance count. Once max instance count is reached, POST on * /a/light updated the representation of /a/light (just like PUT) */ if (ehRequest->resource == Light.handle) { if (gCurrLightInstance < SAMPLE_MAX_NUM_POST_INSTANCE) { // Create new Light instance char newLightUri[URI_MAXSIZE]; snprintf(newLightUri, URI_MAXSIZE, "/a/light/%d", gCurrLightInstance); respPLPost_light = OCRepPayloadCreate(); OCRepPayloadSetUri(respPLPost_light, gResourceUri); OCRepPayloadSetPropString(respPLPost_light, "createduri", newLightUri); if (0 == createLightResource (newLightUri, &gLightInstance[gCurrLightInstance])) { OIC_LOG (INFO, TAG, "Created new Light instance\n"); gLightInstance[gCurrLightInstance].state = 0; gLightInstance[gCurrLightInstance].power = 0; gCurrLightInstance++; strncpy ((char *)response->resourceUri, newLightUri, MAX_URI_LENGTH); ehResult = OC_EH_RESOURCE_CREATED; } } else { // Update repesentation of /a/light Light.state = true; Light.power = 11; respPLPost_light = constructResponse(ehRequest); } } else { for (int i = 0; i < SAMPLE_MAX_NUM_POST_INSTANCE; i++) { if (ehRequest->resource == gLightInstance[i].handle) { gLightInstance[i].state = true; gLightInstance[i].power = 22; if (i == 0) { respPLPost_light = constructResponse(ehRequest); break; } else if (i == 1) { respPLPost_light = constructResponse(ehRequest); } } } } if ((respPLPost_light != NULL)) { *payload = respPLPost_light; } else { OIC_LOG(INFO, TAG, "Payload was NULL"); ehResult = OC_EH_ERROR; } return ehResult; }