public async Task <HttpResponseMessage> Search([FromBody] IdentitySearchRequest[] criteria)
        {
            try
            {
                if ((_identitySubsystemAsync.IdentityServiceCapabilities & IdentityServiceCapabilities.Search) != 0)
                {
                    var result = await _identitySubsystemAsync.Search(criteria);

                    switch (result.StatusCode)
                    {
                    case IdentityStatusCode.Success:
                        var response = Request.CreateResponse(HttpStatusCode.Accepted);

                        var route = Url.Link(
                            "IdentitiesSearchResult",
                            new
                        {
                            id = result.Data
                        });

                        response.Headers.Location = new Uri(route);
                        return(response);

                    case IdentityStatusCode.Incomplete:
                        return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, InvalidServerResponse + "Incomplete"));

                    case IdentityStatusCode.InvalidProperties:
                        return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, InvalidServerResponse + "Invalid Properties"));

                    case IdentityStatusCode.NotFound:
                        return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, InvalidServerResponse + "Not Found"));

                    default:
                        return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, InvalidServerResponse + "Unknown"));
                    }
                }

                if ((_identitySubsystem.IdentityServiceCapabilities & IdentityServiceCapabilities.Search) != 0)
                {
                    var result = await _identitySubsystem.Search(criteria);

                    var response = Request.CreateResponse(HttpStatusCode.OK, result.Data);
                    return(response);
                }

                return(NotImplemented());
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadGateway, ex));
            }
        }
Example #2
0
        public async Task <IActionResult> Search([FromBody] IdentitySearchRequest[] criteria)
        {
            try
            {
                if ((_identitySubsystemAsync.IdentityServiceCapabilities & IdentityServiceCapabilities.Search) != 0)
                {
                    var result = await _identitySubsystemAsync.Search(criteria);

                    switch (result.StatusCode)
                    {
                    case IdentityStatusCode.Success:
                        var route = Url.Link("IdentitiesSearchResult", new { id = result.Data });
                        return(Accepted(route));

                    case IdentityStatusCode.Incomplete:
                        return(StatusCode((int)HttpStatusCode.BadGateway, InvalidServerResponse + "Incomplete"));

                    case IdentityStatusCode.InvalidProperties:
                        return(StatusCode((int)HttpStatusCode.BadGateway, InvalidServerResponse + "Invalid Properties"));

                    case IdentityStatusCode.NotFound:
                        return(NotFound(InvalidServerResponse + "Not Found"));

                    default:
                        return(StatusCode((int)HttpStatusCode.BadGateway, InvalidServerResponse + "Unknown"));
                    }
                }

                if ((_identitySubsystem.IdentityServiceCapabilities & IdentityServiceCapabilities.Search) != 0)
                {
                    return(Ok((await _identitySubsystem.Search(criteria)).Data));
                }

                return(NotImplemented());
            }
            catch (Exception ex)
            {
                return(StatusCode((int)HttpStatusCode.BadGateway, ex));
            }
        }