Exemplo n.º 1
0
        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
            });
        }
Exemplo n.º 2
0
        private IOicSerialisableResource GetResourceForPath(OicRequest request)
        {
            var path = request.ToUri.AbsolutePath;

            if (_resources.TryGetValue(path, out var resource))
            {
                return(resource);
            }

            return(null);
        }
Exemplo n.º 3
0
        public OicResponse Delete(OicRequest request)
        {
            var resource = GetResourceForPath(request);

            if (resource != null)
            {
                throw new NotImplementedException();
            }

            return(OicResponseUtility.CreateMessage(OicResponseCode.NotFound, "Not found"));
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        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
            });
        }
Exemplo n.º 6
0
        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"));
        }
    }
Exemplo n.º 7
0
        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
            });
        }
Exemplo n.º 8
0
        private static void OnNewDevice(object sender, OicNewDeviceEventArgs e)
        {
            try
            {
                Console.WriteLine($"New device found \"{e.Device.Name}\" ({e.Device.DeviceId})");

                var resourceRepository = new OicRemoteResourceRepository(e.Device as OicRemoteDevice, _client);

                foreach (var resource in e.Device.Resources)
                {
                    Console.WriteLine($" - {resource.RelativeUri}\n\tName: {resource.Name}\n\tResource Types: {string.Join(", ", resource.ResourceTypes)}");

                    var response = resourceRepository.RetrieveAsync(OicRequest.Create(resource.RelativeUri)).Result;
                    resource.UpdateFields(response.Resource);
                    Console.WriteLine($"\tValue: {resource}");
                }
            }
            catch (AggregateException aex)
            {
                Debugger.Break();
            }
        }
Exemplo n.º 9
0
        public static OicRequest ToOicRequest(this CoapMessage message)
        {
            var request = new OicRequest
            {
                //FromUri = TODO populate FromUri
                ToUri = new UriBuilder(message.GetUri())
                {
                    Scheme = "oic"
                }.Uri,

                Content     = message.Payload,
                ContentType = message.Options.Get <CoAPNet.Options.ContentFormat>()?.MediaType.ToOicMessageContentType() ?? OicMessageContentType.None,
                Operation   = message.Code.ToOicRequestOperation(),
                RequestId   = (message.Token.Length > 0) ? BitConverter.ToInt32(message.Token, 0) : 0,
            };

            foreach (var oicMessageContentType in message.Options.GetAll <CoAPNet.Options.Accept>().Select(a => a.MediaType.ToOicMessageContentType()))
            {
                request.Accepts.Add(oicMessageContentType);
            }

            return(request);
        }
Exemplo n.º 10
0
 public Task <OicResponse> RetrieveAsync(OicRequest request)
 => Task.FromResult(Retrieve(request));
Exemplo n.º 11
0
 public Task <OicResponse> DeleteAsync(OicRequest request)
 => Task.FromResult(Delete(request));
Exemplo n.º 12
0
 public Task <OicResponse> CreateOrUpdateAsync(OicRequest request, IOicResource resource)
 => Task.FromResult(CreateOrUpdate(request, resource));
Exemplo n.º 13
0
 public Task <OicResponse> DeleteAsync(OicRequest request)
 {
     return(_resourceRepository.DeleteAsync(request));
 }
Exemplo n.º 14
0
 public Task <OicResponse> CreateOrUpdateAsync(OicRequest request, IOicResource resource)
 {
     return(_resourceRepository.CreateOrUpdateAsync(request, resource));
 }
Exemplo n.º 15
0
 public Task <OicResponse> RetrieveAsync(OicRequest request)
 {
     return(_resourceRepository.RetrieveAsync(request));
 }
Exemplo n.º 16
0
 public OicContext(OicRequest request, ConnectionInfo connection)
 {
     //TODO: verify request has minimum parameters set to prevent null refernce exceptions
     Request    = request;
     Connection = connection;
 }