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); }