in iot-onboarding-service/src/main/main.go [56:112]
func HandleRequest(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
log.Printf("[ONBOARDING] Received Request %+v with context %+v", req, ctx)
//0-Adding content to dynamoDB client to be able to use Xray Training
onboardingDB.AddContext(ctx)
//1-Identifying use case from HTTP Method and path
useCase := identifyUseCase(req.Resource, req.HTTPMethod)
var err error
var res model.Response
//2-Validating request and creating request wrapper
onboardingRequest, err := createOnBoardingRequest(req)
if err != nil {
log.Printf("[ONBOARDING] Use Case %s failed with error: %v", useCase, err)
return builResponseError(err), nil
}
//3-Get IOT Data-ATS Enpoint for the account
mqttEndpoint, err2 := iotCore.GetEndpoint()
if err2 != nil {
log.Printf("[ONBOARDING] Use Case %s failed while retreiving MQTT Endpoint with error: %v", useCase, err)
return builResponseError(err2), nil
}
//3-Selecting apropriate use case
if useCase == FN_RETRIEVE_ONBOARDED_DEVICE {
log.Printf("[ONBOARDING]Selected Use Case %v", useCase)
if err == nil {
res, err = usecase.Retrieve(onboardingRequest, onboardingDB, mqttEndpoint)
if err == nil {
log.Printf("[ONBOARDING] Use Case %s successult with response: %v", useCase, res)
return builResponse(res), nil
}
}
return builResponseError(err), nil
} else if useCase == FN_ONBOARD_DEVICE {
log.Printf("[ONBOARDING] Selected Use Case %v", useCase)
if err == nil {
res, err = usecase.Create(onboardingRequest, onboardingDB, iotCore, mqttEndpoint)
if err == nil {
log.Printf("[ONBOARDING] Use Case %s successult with response: %v", useCase, res)
return builResponse(res), nil
}
}
return builResponseError(err), nil
} else if useCase == FN_DELETE_ONBOARDED_DEVICE {
log.Printf("[ONBOARDING] Selected Use Case %v", useCase)
if err == nil {
res, err = usecase.Delete(onboardingRequest, onboardingDB, iotCore)
if err == nil {
log.Printf("[ONBOARDING] Use Case %s successult with response: %v", useCase, res)
return builResponse(res), nil
}
}
return builResponseError(err), nil
}
//4-if no use case found, return an error
log.Printf("No Use Case Found for %v", req.HTTPMethod+" "+req.Resource)
err = errors.New("No Use Case Found for " + req.HTTPMethod + " " + req.Resource)
return builResponseError(err), nil
}