Beispiel #1
0
        static UPnPError OnDoesResourceProviderSupportTreeListing(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                                  CallContext context)
        {
            Guid              resourceProviderId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            IMediaAccessor    mediaAccessor      = ServiceRegistration.Get <IMediaAccessor>();
            IResourceProvider rp;
            bool              result = false;

            if (mediaAccessor.LocalResourceProviders.TryGetValue(resourceProviderId, out rp) && rp is IBaseResourceProvider)
            {
                IResourceAccessor rootAccessor;
                if (((IBaseResourceProvider)rp).TryCreateResourceAccessor("/", out rootAccessor))
                {
                    if (rootAccessor is IFileSystemResourceAccessor)
                    {
                        result = true;
                    }
                    rootAccessor.Dispose();
                }
            }
            outParams = new List <object> {
                result
            };
            return(null);
        }
Beispiel #2
0
        public Guid CreateProfile(string profileName)
        {
            CpAction       action       = GetAction("CreateProfile");
            IList <object> inParameters = new List <object> {
                profileName
            };
            IList <object> outParameters = action.InvokeAction(inParameters);

            return(MarshallingHelper.DeserializeGuid((string)outParameters[0]));
        }
Beispiel #3
0
        public async Task <Guid> CreateProfileAsync(string profileName, UserProfileType profileType, string profilePassword)
        {
            CpAction       action       = GetAction("CreateUserProfile");
            IList <object> inParameters = new List <object> {
                profileName, (int)profileType, profilePassword
            };
            IList <object> outParameters = await action.InvokeAsync(inParameters);

            return(MarshallingHelper.DeserializeGuid((string)outParameters[0]));
        }
Beispiel #4
0
        public async Task <Guid> CreateClientProfileAsync(Guid profileId, string profileName)
        {
            CpAction       action       = GetAction("CreateClientProfile");
            IList <object> inParameters = new List <object> {
                MarshallingHelper.SerializeGuid(profileId), profileName
            };
            IList <object> outParameters = await action.InvokeAsync(inParameters);

            return(MarshallingHelper.DeserializeGuid((string)outParameters[0]));
        }
Beispiel #5
0
        // Cleanup user data

        static UPnPError OnClearAllUserData(DvAction action, IList <object> inParams, out IList <object> outParams,
                                            CallContext context)
        {
            Guid profileId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            bool success   = ServiceRegistration.Get <IUserProfileDataManagement>().ClearAllUserData(profileId);

            outParams = new List <object> {
                success
            };
            return(null);
        }
Beispiel #6
0
        static UPnPError OnChangeProfileId(DvAction action, IList <object> inParams, out IList <object> outParams,
                                           CallContext context)
        {
            Guid profileId    = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            Guid newProfileId = MarshallingHelper.DeserializeGuid((string)inParams[1]);
            bool success      = ServiceRegistration.Get <IUserProfileDataManagement>().ChangeProfileIdAsync(profileId, newProfileId).Result;

            outParams = new List <object> {
                success
            };
            return(null);
        }
Beispiel #7
0
        static UPnPError OnCreateClientProfile(DvAction action, IList <object> inParams, out IList <object> outParams,
                                               CallContext context)
        {
            Guid   profileGuid = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string profileName = (string)inParams[1];
            Guid   profileId   = ServiceRegistration.Get <IUserProfileDataManagement>().CreateClientProfileAsync(profileGuid, profileName).Result;

            outParams = new List <object> {
                profileId
            };
            return(null);
        }
Beispiel #8
0
        static UPnPError OnGetProfile(DvAction action, IList <object> inParams, out IList <object> outParams,
                                      CallContext context)
        {
            Guid        profileId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            var         result    = ServiceRegistration.Get <IUserProfileDataManagement>().GetProfileAsync(profileId).Result;
            UserProfile profile   = result.Success ? result.Result : null;

            outParams = new List <object> {
                profile
            };
            return(null);
        }
Beispiel #9
0
        static UPnPError OnClearUserAdditionalDataKey(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                      CallContext context)
        {
            Guid   profileId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string key       = (string)inParams[1];
            bool   success   = ServiceRegistration.Get <IUserProfileDataManagement>().ClearUserAdditionalDataKeyAsync(profileId, key).Result;

            outParams = new List <object> {
                success
            };
            return(null);
        }
Beispiel #10
0
        static UPnPError OnGetFeatureUsageStatistics(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            Guid   profileId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string scope     = (string)inParams[1];

            var result = ServiceRegistration.Get <IUserProfileDataManagement>().GetFeatureUsageStatisticsAsync(profileId, scope).Result;

            outParams = new List <object> {
                result
            };
            return(null);
        }
 public async Task<Guid> AddOrUpdateMediaItemAsync(Guid parentDirectoryId, string systemId, ResourcePath path,
     IEnumerable<MediaItemAspect> mediaItemAspects)
 {
   CpAction action = GetAction("X_MediaPortal_AddOrUpdateMediaItem");
   IList<object> inParameters = new List<object>
     {
         MarshallingHelper.SerializeGuid(parentDirectoryId),
         systemId,
         path.Serialize(),
         mediaItemAspects
     };
   IList<object> outParameters = await action.InvokeAsync(inParameters);
   return MarshallingHelper.DeserializeGuid((string) outParameters[0]);
 }
Beispiel #12
0
        static UPnPError OnUpdateUserProfile(DvAction action, IList <object> inParams, out IList <object> outParams,
                                             CallContext context)
        {
            Guid            profileId       = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string          profileName     = (string)inParams[1];
            UserProfileType profileType     = (UserProfileType)inParams[2];
            string          profilePassword = (string)inParams[3];
            bool            success         = ServiceRegistration.Get <IUserProfileDataManagement>().UpdateProfileAsync(profileId, profileName, profileType, profilePassword).Result;

            outParams = new List <object> {
                success
            };
            return(null);
        }
Beispiel #13
0
        // User additional data

        static UPnPError OnGetUserAdditionalData(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                 CallContext context)
        {
            Guid   profileId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string key       = (string)inParams[1];
            int    dataNo    = (int)inParams[2];
            var    result    = ServiceRegistration.Get <IUserProfileDataManagement>().GetUserAdditionalDataAsync(profileId, key, dataNo).Result;
            string data      = result.Success ? result.Result : null;

            outParams = new List <object> {
                data, result.Success
            };
            return(null);
        }
Beispiel #14
0
        static UPnPError OnSetUserMediaItemData(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                CallContext context)
        {
            Guid   profileId   = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            Guid   mediaItemId = MarshallingHelper.DeserializeGuid((string)inParams[1]);
            string key         = (string)inParams[2];
            string data        = (string)inParams[3];
            bool   success     = ServiceRegistration.Get <IUserProfileDataManagement>().SetUserMediaItemData(profileId, mediaItemId, key, data);

            outParams = new List <object> {
                success
            };
            return(null);
        }
Beispiel #15
0
        static UPnPError OnGetProfile(DvAction action, IList <object> inParams, out IList <object> outParams,
                                      CallContext context)
        {
            Guid        profileId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            UserProfile profile;

            if (!ServiceRegistration.Get <IUserProfileDataManagement>().GetProfile(profileId, out profile))
            {
                profile = null;
            }
            outParams = new List <object> {
                profile
            };
            return(null);
        }
        static UPnPError OnSearch(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            // In parameters
            var containerId    = (string)inParams[0];
            var searchCriteria = inParams[1].ToString();
            var filter         = inParams[2].ToString();
            var startingIndex  = Convert.ToInt32(inParams[3]);
            var requestedCount = Convert.ToInt32(inParams[4]);
            var sortCriteria   = (string)inParams[5];

            // Out parameters
            int numberReturned     = 0;
            int totalMatches       = 0;
            int containterUpdateId = 0;

            UPnPContentDirectorySearch query = new UPnPContentDirectorySearch();
            StringWriter sw = new StringWriter();

            query.Construct(searchCriteria, sw);
            query.searchCrit();
            PegNode pn = query.GetRoot();

            string xml = ParserHelper.PegNodeToXml(pn, searchCriteria);

            Logger.Debug("MediaServer - Parsed: \"{0}\" to make \"{1}\"", searchCriteria, xml);

            var parentDirectoryId = containerId == "0" ? Guid.Empty : MarshallingHelper.DeserializeGuid(containerId);
            var necessaryMIATypes = new List <Guid> {
                DirectoryAspect.ASPECT_ID
            };

            var searchQuery = new MediaItemQuery(necessaryMIATypes, null);
            //searchQuery.Filter

            var searchItems = ServiceRegistration.Get <IMediaLibrary>().Search(searchQuery, true);

            /*
             * foreach (var item in browseItems)
             * {
             *
             * }
             */
            outParams = new List <object>(3)
            {
                numberReturned, totalMatches, containterUpdateId
            };
            return(null);
        }
Beispiel #17
0
        static UPnPError OnGetResourceProviderMetadata(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                       CallContext context)
        {
            Guid              resourceProviderId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            IMediaAccessor    mediaAccessor      = ServiceRegistration.Get <IMediaAccessor>();
            IResourceProvider rp;

            outParams = null;
            if (!mediaAccessor.LocalResourceProviders.TryGetValue(resourceProviderId, out rp))
            {
                return(new UPnPError(600, string.Format("No resource provider of id '{0}' present in system", resourceProviderId)));
            }
            outParams = new List <object> {
                rp.Metadata
            };
            return(null);
        }
Beispiel #18
0
        // User additional data

        static UPnPError OnGetUserAdditionalData(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                 CallContext context)
        {
            Guid   profileId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string key       = (string)inParams[1];
            string data;
            bool   success;

            if (!(success = ServiceRegistration.Get <IUserProfileDataManagement>().GetUserAdditionalData(profileId, key, out data)))
            {
                data = null;
            }
            outParams = new List <object> {
                data, success
            };
            return(null);
        }
Beispiel #19
0
        static UPnPError OnExpandResourcePathFromString(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                        CallContext context)
        {
            Guid              resourceProviderId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string            pathStr            = (string)inParams[1];
            IMediaAccessor    mediaAccessor      = ServiceRegistration.Get <IMediaAccessor>();
            ResourcePath      result             = null;
            IResourceProvider rp;

            if (mediaAccessor.LocalResourceProviders.TryGetValue(resourceProviderId, out rp) && rp is IBaseResourceProvider)
            {
                result = ((IBaseResourceProvider)rp).ExpandResourcePathFromString(pathStr);
            }
            outParams = new List <object> {
                result == null ? null : result.Serialize()
            };
            return(null);
        }
Beispiel #20
0
        static UPnPError OnUpdateUserProfileImage(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                  CallContext context)
        {
            Guid   profileId    = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string profileImage = (string)inParams[1];

            byte[] image = null;
            if (!string.IsNullOrEmpty(profileImage))
            {
                image = Convert.FromBase64String(profileImage);
            }
            bool success = ServiceRegistration.Get <IUserProfileDataManagement>().SetProfileImageAsync(profileId, image).Result;

            outParams = new List <object> {
                success
            };
            return(null);
        }
Beispiel #21
0
        static UPnPError OnGetUserSelectedAdditionalDataList(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                             CallContext context)
        {
            Guid profileId = MarshallingHelper.DeserializeGuid((string)inParams[0]);

            string[]      keys      = MarshallingHelper.ParseCsvStringCollection((string)inParams[1]).ToArray();
            bool          sortByKey = (bool)inParams[2];
            SortDirection sortOrder = (SortDirection)(int)inParams[3];
            uint?         offset    = (uint?)inParams[4];
            uint?         limit     = (uint?)inParams[5];

            var result = ServiceRegistration.Get <IUserProfileDataManagement>().GetUserSelectedAdditionalDataListAsync(profileId, keys, sortByKey, sortOrder, offset, limit).Result;
            var data   = result.Success ?
                         MarshallingHelper.SerializeTuple3EnumerationToCsv(result.Result.Select(t => new Tuple <string, string, string>(t.Item1, t.Item2.ToString(), t.Item3)))
         : null;

            outParams = new List <object> {
                data, result.Success
            };
            return(null);
        }