/* **************************************************************************** * * deleteIndividualContextEntityAttributeWithTypeAndId - * * DELETE /v1/contextEntities/type/{entity::type}/id/{entity::id}/attributes/{attribute::name} * * Payload In: None * Payload Out: StatusCode * * URI parameters: * - entity::type=TYPE (must coincide with type in URL-path) * - !exist=entity::type (if set - error -- entity::type cannot be empty) * - exist=entity::type (not supported - ok if present, ok if not present ...) * * 01. Get values from URL (+ entityId::type, exist, !exist) * 02. Check validity of URI params * 03. Fill in UpdateContextRequest * 04. Call Standard Operation * 05. Fill in response from UpdateContextResponse * 06. Cleanup and return result */ std::string deleteIndividualContextEntityAttributeWithTypeAndId ( ConnectionInfo* ciP, int components, std::vector<std::string>& compV, ParseData* parseDataP ) { std::string entityType = compV[3]; std::string entityId = compV[5]; std::string attributeName = compV[7]; EntityTypeInfo typeInfo = EntityTypeEmptyOrNotEmpty; std::string typeNameFromUriParam = ciP->uriParam[URI_PARAM_ENTITY_TYPE]; std::string answer; StatusCode response; // 01. Get values from URL (+ entityId::type, exist, !exist) if (ciP->uriParam[URI_PARAM_NOT_EXIST] == URI_PARAM_ENTITY_TYPE) { typeInfo = EntityTypeEmpty; } else if (ciP->uriParam[URI_PARAM_EXIST] == URI_PARAM_ENTITY_TYPE) { typeInfo = EntityTypeNotEmpty; } // 02. Check validity of URI params if (typeInfo == EntityTypeEmpty) { alarmMgr.badInput(clientIp, "entity::type cannot be empty for this request"); response.fill(SccBadRequest, "entity::type cannot be empty for this request"); TIMED_RENDER(answer = response.toJsonV1(false, false)); return answer; } else if ((typeNameFromUriParam != entityType) && (typeNameFromUriParam != "")) { alarmMgr.badInput(clientIp, "non-matching entity::types in URL"); response.fill(SccBadRequest, "non-matching entity::types in URL"); TIMED_RENDER(answer = response.toJsonV1(false, false)); return answer; } // 03. Fill in UpdateContextRequest parseDataP->upcr.res.fill(entityId, entityType, "", attributeName, ActionTypeDelete); // 04. Call Standard Operation postUpdateContext(ciP, components, compV, parseDataP); // 05. Fill in response from UpdateContextResponse response.fill(parseDataP->upcrs.res); // 06. Cleanup and return result TIMED_RENDER(answer = response.toJsonV1(false, false)); parseDataP->upcr.res.release(); return answer; }