public OicResponse CreateOrUpdate(OicRequest request, IOicResource resource) { var myResource = GetResource(request.ToUri); if (myResource == null) { return(OicResponseUtility.CreateMessage(OicResponseCode.NotFound, "Resource not found")); } if ((myResource.Interfaces & OicResourceInterface.ReadWrite) == OicResourceInterface.ReadWrite) { return(OicResponseUtility.CreateMessage(OicResponseCode.OperationNotAllowed, "Operation not allowed")); } if (resource == null) { return(OicResponseUtility.CreateMessage(OicResponseCode.BadRequest, "No valid OIC resource was provided")); } myResource.UpdateFields(resource); return(new OicResourceResponse(_configuration, _helloResource) { ResposeCode = OicResponseCode.Changed }); }
public OicResponse Delete(OicRequest request) { var resource = GetResourceForPath(request); if (resource != null) { throw new NotImplementedException(); } return(OicResponseUtility.CreateMessage(OicResponseCode.NotFound, "Not found")); }
public OicResponse Create(OicRequest request, IOicResource resource) { var myResource = GetResource(request.ToUri); if (myResource == null) { return(OicResponseUtility.CreateMessage(OicResponseCode.NotFound, "Resource not found")); } throw new NotImplementedException(); }
public OicResponse Retrieve(OicRequest request) { var myResource = GetResource(request.ToUri); if (myResource == null) { return(OicResponseUtility.CreateMessage(OicResponseCode.NotFound, "Resource not found")); } return(new OicResourceResponse(_configuration, myResource) { ResposeCode = OicResponseCode.Content }); }
public OicResponse Retrieve(OicRequest request) { var resource = GetResourceForPath(request); if (resource != null) { return new OicResourceResponse(_configuration, resource) { ResposeCode = OicResponseCode.Content } } ; return(OicResponseUtility.CreateMessage(OicResponseCode.NotFound, "Not found")); } }
protected override async Task <CoapMessage> HandleRequestAsync(ICoapConnectionInformation connectionInformation, CoapMessage message) { _logger.LogDebug($"New request! {message}"); var response = OicResponseUtility.CreateMessage(OicResponseCode.NotFound, "Not found"); OicContext context = null; Exception exception = null; if (_options.UseCoreLink && message.GetUri().AbsolutePath.Equals("/.well-known/core", StringComparison.Ordinal)) { return(GenerateCoreLinkResource(message)); } try { // Create the OiCContext context = _application.CreateContext(new OicCoapContext(connectionInformation, message)); await _application.ProcessRequestAsync(context); if (context.Response.ResposeCode != default(OicResponseCode)) { response = context.Response; } else { // This should only occur during development. var errorMessage = $"{context.GetType()}.{nameof(context.Response)}.{nameof(context.Response.ResposeCode)} was not set!"; _logger.LogError(errorMessage); response = OicResponseUtility .CreateMessage(OicResponseCode.InternalServerError, errorMessage); } } catch (Exception ex) { exception = ex; // TODO: Do we want to restrict error messages to developers/logging only? response = OicResponseUtility.FromException(ex); } finally { _application.DisposeContext <OicCoapContext>(context, exception); } _logger.LogDebug($"Responding with {response}"); return(response.ToCoapMessage()); }
public OicResponse CreateOrUpdate(OicRequest request, IOicResource resource) { var existing = GetResourceForPath(request); if (existing == null) { return(OicResponseUtility.CreateMessage(OicResponseCode.NotFound, "Not found")); } if (existing is OicResourceList) { throw new NotImplementedException(); } ((IOicResource)existing).UpdateFields(resource); return(new OicResourceResponse(_configuration, existing) { ResposeCode = OicResponseCode.Changed }); }
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; }