public static bool HasAttributes(this OM2MResultContent self)
 {
     return(self == OM2MResultContent.Attributes ||
            self == OM2MResultContent.HierarchicalAddressAndAttributes ||
            self == OM2MResultContent.AttributesAndChildResources ||
            self == OM2MResultContent.AttributesAndChildResourceReferences);
 }
        public static OM2MContentInstance ToResource(this OM2MContentInstanceEntity entity,
                                                     OM2MResultContent resultContent)
        {
            var resource = new OM2MContentInstance();

            CopyAttributesResource(entity, resource);

            return(resource);
        }
        // ToDo:
        public static OM2MAccessControlPolicy ToResource(this OM2MAccessControlPolicyEntity entity,
                                                         OM2MResultContent resultContent)
        {
            var resource = new OM2MAccessControlPolicy();

            CopyAttributesResource(entity, resource);

            if (resultContent.HasAttributes())
            {
            }

            return(resource);
        }
Beispiel #4
0
        public override OM2MResponsePrimitive DoRetrieve(OM2MRequestPrimitive request)
        {
            using (var db = CreateDbContext())
            {
                // Check existence of the resource
                var cseBaseEntity = db.Resources.Find(request.TargetId) as OM2MCseBaseEntity;
                if (cseBaseEntity == null)
                {
                    throw new OM2MNotFoundException($"Resouce {request.TargetId} not found.");
                }

                // Check authorization
                var acpList = new List <OM2MAccessControlPolicyEntity>();
                foreach (var i in cseBaseEntity.AccessControlPolicyIds)
                {
                    var queryAcp = db.Resources.Where(x => x.ResourceId == i)
                                   .OfType <OM2MAccessControlPolicyEntity>()
                                   .Include(x => x.PrivilegesCore);

                    if (queryAcp.Count() == 0)
                    {
                        // Damaged
                        continue;
                    }

                    acpList.Add(queryAcp.First());
                }

                CheckACP(acpList, request.From, request.Operation.Value);

                OM2MResultContent resultContent = request.ResultContent ?? OM2MResultContent.Attributes;

                if (resultContent.HasChildResourceReferences())
                {
                    db.Entry(cseBaseEntity).Collection(x => x.Resources)
                    .Load();
                }

                OM2MCSEBase cseBaseResource = cseBaseEntity.ToResource(resultContent);

                var response = new OM2MResponsePrimitive(CseConfig, request);
                response.ResponseStatusCode = OM2MResponseStatusCode.Ok;
                response.Content            = cseBaseResource;

                return(response);
            }
        }
        // ToDo:
        public static OM2MCSEBase ToResource(this OM2MCseBaseEntity entity,
                                             OM2MResultContent resultContent)
        {
            var resource = new OM2MCSEBase();

            MapEntityToResourceCommonProcudure(entity, resource, resultContent);

            if (resultContent.HasAttributes())
            {
                resource.CseType  = (OM2MCseTypeID)entity.CseType;
                resource.CSEID    = entity.CseId;
                resource.NodeLink = entity.NodeLink;
                resource.SupportedResourceType = entity.SupportedResourceType;
            }

            return(resource);
        }
        // ToDo:
        public static void MapEntityToResourceCommonProcudure(OM2MResourceEntity entity,
                                                              OM2MResource resource,
                                                              OM2MResultContent resultContent)
        {
            if (resultContent.HasAttributes())
            {
                CopyAttributesResource(entity, resource);
            }

            if (resultContent.HasChildResourceReferences())
            {
                var container = resource as IOM2MChildResourceContainer;
                if (container != null)
                {
                    MapChildResourceRef(entity, container);
                }
            }
        }
        // ToDo:
        public static OM2MAE ToResource(this OM2MAEEntity entity,
                                        OM2MResultContent resultContent)
        {
            var resource = new OM2MAE();

            MapEntityToResourceCommonProcudure(entity, resource, resultContent);

            if (resultContent.HasAttributes())
            {
                resource.AppName             = entity.AppName;
                resource.AppID               = entity.AppId;
                resource.AEID                = entity.AEId;
                resource.PointOfAccess       = entity.PointOfAccess;
                resource.OntologyRef         = entity.OntologyRef;
                resource.NodeLink            = entity.NodeLink;
                resource.RequestReachability = entity.RequestReachability;
            }

            return(resource);
        }
 public static bool HasChildResourceReferences(this OM2MResultContent self)
 {
     return(self == OM2MResultContent.ChildResourceReferences ||
            self == OM2MResultContent.AttributesAndChildResourceReferences);
 }