public async Task Invoke(OicContext context) { var resourceContext = new ResourceRepositoryContext(context, _options, _resourceRepository); if (!resourceContext.ValidatePath()) { await _next(context); return; } OicResponse result; var request = resourceContext.GetSubRequest(); IOicResource requestResource = null; if (request.ContentType != OicMessageContentType.None) { if (request.Content == null) { context.Response = OicResponseUtility.CreateMessage(OicResponseCode.BadRequest, "Content type provided with no content"); return; } var r = _oicConfiguration.Serialiser.Deserialise(request.Content, request.ContentType); if (r is OicResourceList list) { // TODO: verify grabbing the first resource is okay and enumeration is not needed. requestResource = list.First(); } else { requestResource = r as IOicResource; } } if (request.Operation == OicRequestOperation.Get) { result = await _resourceRepository.RetrieveAsync(request); } else if (request.Operation == OicRequestOperation.Post) { result = await _resourceRepository.CreateOrUpdateAsync(request, requestResource); } else if (request.Operation == OicRequestOperation.Put) { result = await _resourceRepository.CreateAsync(request, requestResource); } else if (request.Operation == OicRequestOperation.Delete) { result = await _resourceRepository.DeleteAsync(request); } else { result = OicResponseUtility.CreateMessage(OicResponseCode.BadRequest, "Bad request"); } if (result.ResposeCode == OicResponseCode.NotFound) { await _next(context); return; } context.Response = result; }
public Task <OicResponse> CreateOrUpdateAsync(OicRequest request, IOicResource resource) { return(_resourceRepository.CreateOrUpdateAsync(request, resource)); }