internal Yield GetSiteSettings(DreamContext context, DreamMessage request, Result <DreamMessage> response)
        {
            var givenKey = context.GetParam("apikey", null);
            var includes = context.GetParam("include", "");

            //If apikey is not given for a request, dont return hidden entries
            var validMasterKey = MasterApiKey.EqualsInvariant(givenKey);
            var retrieve       = new SiteSettingsRetrievalSettings {
                IncludeHidden        = validMasterKey,
                IncludeAnonymousUser = includes.Contains(UserBL.ANON_USERNAME),
                IncludeLicense       = (validMasterKey || PermissionsBL.IsUserAllowed(DekiContext.Current.User, Permissions.ADMIN)) && includes.Contains(ConfigBL.LICENSE),
            };

            var doc = ConfigBL.GetInstanceSettingsAsDoc(retrieve);

            // check if a custom logo was uploaded; if yes, update the config document.
            // This is being done outside of caching since URIs to the api should be computed for every request
            if (doc[ConfigBL.UI_LOGO_UPLOADED].AsBool ?? false)
            {
                doc.InsertValueAt(ConfigBL.UI_LOGO_URI, DekiContext.Current.ApiUri.At("site", "logo.png").ToString());
            }
            response.Return(DreamMessage.Ok(doc));
            yield break;
        }
Exemple #2
0
        internal Yield GetSiteSettings(DreamContext context, DreamMessage request, Result<DreamMessage> response) {
            var givenKey = context.GetParam("apikey", null);
            var includes = context.GetParam("include", "");
            
            //If apikey is not given for a request, dont return hidden entries
            var validMasterKey = MasterApiKey.EqualsInvariant(givenKey);
            var retrieve = new SiteSettingsRetrievalSettings {
                IncludeHidden = validMasterKey,
                IncludeAnonymousUser = includes.Contains(UserBL.ANON_USERNAME),
                IncludeLicense = (validMasterKey || PermissionsBL.IsUserAllowed(DekiContext.Current.User, Permissions.ADMIN)) && includes.Contains(ConfigBL.LICENSE),
            };

            var doc = ConfigBL.GetInstanceSettingsAsDoc(retrieve);

            // check if a custom logo was uploaded; if yes, update the config document. 
            // This is being done outside of caching since URIs to the api should be computed for every request
            if(doc[ConfigBL.UI_LOGO_UPLOADED].AsBool ?? false) {
                doc.InsertValueAt(ConfigBL.UI_LOGO_URI, DekiContext.Current.ApiUri.At("site", "logo.png").ToString());
            }
            response.Return(DreamMessage.Ok(doc));
            yield break;
        }