コード例 #1
0
        public Yield ProxyToService(DreamContext context, DreamMessage request, Result <DreamMessage> response)
        {
            PermissionsBL.IsUserAllowed(DekiContext.Current.User, Permissions.ADMIN);

            //Private feature requires api-key
            var identifier = context.GetParam("id");

            ServiceRepository.IServiceInfo serviceInfo = null;
            if (identifier.StartsWith("="))
            {
                serviceInfo = DekiContext.Current.Instance.RunningServices[XUri.Decode(identifier.Substring(1))];
            }
            else
            {
                uint serviceId;
                if (uint.TryParse(identifier, out serviceId))
                {
                    serviceInfo = DekiContext.Current.Instance.RunningServices[serviceId];
                }
                else
                {
                    throw new DreamBadRequestException(string.Format("Invalid id '{0}'", identifier));
                }
            }
            if (serviceInfo == null)
            {
                throw new ServiceNotFoundException(identifier);
            }
            var proxyUri = serviceInfo.ServiceUri.At(context.GetSuffixes(UriPathFormat.Original).Skip(1).ToArray());

            yield return(context.Relay(Plug.New(proxyUri), request, response));
        }
コード例 #2
0
        public Yield FeatureGetAuthenticate(DreamContext context, DreamMessage request, Result <DreamMessage> response)
        {
            string user = Authenticate(context, request);

            string password;

            HttpUtil.GetAuthentication(context.Uri.ToUri(), request.Headers, out user, out password);
            yield return(context.Relay(Self.At("users", XUri.Encode(user)).WithCredentials(user, password), request, response));
        }
コード例 #3
0
 public Yield GetFiles(DreamContext context, DreamMessage request, Result <DreamMessage> response)
 {
     if (_resourcesUri != null)
     {
         yield return(context.Relay(Plug.New(_resourcesUri).AtPath(string.Join("/", context.GetSuffixes(UriPathFormat.Original))), request, response));
     }
     else
     {
         response.Return(GetFile(context));
     }
     yield break;
 }
コード例 #4
0
        public Yield GetImage(DreamContext context, DreamMessage request, Result <DreamMessage> response)
        {
            string image = context.GetParam("name");

            if (Path.GetExtension(image) != ".xaml")
            {
                response.Return(DreamMessage.NotFound("xaml not found"));
            }
            else
            {
                yield return(context.Relay(Storage.At(image), request, response));
            }
        }
コード例 #5
0
        public Yield GetLibraryFiles(DreamContext context, DreamMessage request, Result <DreamMessage> response)
        {
            string name = context.GetParam("name");
            Plug   resource;

            if (!_files.TryGetValue(name, out resource))
            {
                response.Return(DreamMessage.NotFound("resource not found: " + name));
            }
            else
            {
                yield return(context.Relay(resource, request, response));
            }
        }
コード例 #6
0
 public Yield GetImage(DreamContext context, DreamMessage request, Result <DreamMessage> response)
 {
     yield return(context.Relay(Storage.At(context.GetParam("name")), request, response));
 }
コード例 #7
0
        public Yield ProxyToService(DreamContext context, DreamMessage request, Result<DreamMessage> response) {
            PermissionsBL.IsUserAllowed(DekiContext.Current.User, Permissions.ADMIN);

            //Private feature requires api-key
            var identifier = context.GetParam("id");
            ServiceRepository.IServiceInfo serviceInfo = null;
            if(identifier.StartsWith("=")) {
                serviceInfo = DekiContext.Current.Instance.RunningServices[XUri.Decode(identifier.Substring(1))];
            } else {
                uint serviceId;
                if(uint.TryParse(identifier, out serviceId)) {
                    serviceInfo = DekiContext.Current.Instance.RunningServices[serviceId];
                } else {
                    throw new DreamBadRequestException(string.Format("Invalid id '{0}'", identifier));
                }
            }
            if(serviceInfo == null) {
                response.Return(DreamMessage.NotFound(string.Format(DekiResources.SERVICE_NOT_FOUND, identifier)));
                yield break;
            }
            var proxyUri = serviceInfo.ServiceUri.At(context.GetSuffixes(UriPathFormat.Original).Skip(1).ToArray());

            yield return context.Relay(Plug.New(proxyUri), request, response);
        }
コード例 #8
0
ファイル: GraphvizService.cs プロジェクト: heran/DekiWiki
 public Yield GetImage(DreamContext context, DreamMessage request, Result<DreamMessage> response) {
     yield return context.Relay(Storage.At(context.GetParam("name")), request, response);
 }
コード例 #9
0
 public Yield GetImage(DreamContext context, DreamMessage request, Result<DreamMessage> response) {
     string image = context.GetParam("name");
     if(Path.GetExtension(image) != ".png") {
         response.Return(DreamMessage.NotFound("image not found"));
     } else {
         yield return context.Relay(Storage.At(image), request, response);
     }
 }
コード例 #10
0
 public Yield GetFiles(DreamContext context, DreamMessage request, Result<DreamMessage> response) {
     if(_resourcesUri != null) {
         yield return context.Relay(Plug.New(_resourcesUri).AtPath(string.Join("/", context.GetSuffixes(UriPathFormat.Original))), request, response);
     } else {
         response.Return(GetFile(context));
     }
     yield break;
 }
コード例 #11
0
 public Yield PostUnsubscribeEvents(DreamContext context, DreamMessage request, Result <DreamMessage> response)
 {
     yield return(context.Relay(_events.At("unsubscribe"), request, response));
 }
コード例 #12
0
ファイル: DreamHostService.cs プロジェクト: nataren/DReAM
 public Yield GetErrorXsl(DreamContext context, DreamMessage request, Result<DreamMessage> response)
 {
     string resource = context.GetParam("resource");
     Plug plug = Plug.New(string.Format("resource://mindtouch.core/MindTouch.Dream.resources.host.{0}", resource)).With(DreamOutParam.TYPE, MimeType.FromFileExtension(resource).FullType);
     yield return context.Relay(plug, request, response);
 }
コード例 #13
0
 public Yield home(DreamContext context) {
     yield return context.Relay(_fs.At("metl.html"), "GET:", null, null);
 }
コード例 #14
0
ファイル: directoryservice.cs プロジェクト: sdether/DReAM
 public Yield PostUnsubscribeEvents(DreamContext context, DreamMessage request, Result<DreamMessage> response)
 {
     yield return context.Relay(_events.At("unsubscribe"), request, response);
 }
コード例 #15
0
 public Yield FeatureGetAuthenticate(DreamContext context, DreamMessage request, Result<DreamMessage> response) {
     string user = Authenticate(context, request);
     
     string password;
     HttpUtil.GetAuthentication(context.Uri.ToUri(), request.Headers, out user, out password);
     yield return context.Relay(Self.At("users", XUri.Encode(user)).WithCredentials(user, password), request, response);
 }
コード例 #16
0
ファイル: RedirectService.cs プロジェクト: sdether/DReAM
 public Yield GetHttp(DreamContext context, DreamMessage request, Result<DreamMessage> response)
 {
     yield return context.Relay(_redirect.At(context.GetSuffixes(UriPathFormat.Original)), request, response);
 }
コード例 #17
0
 public Yield GetHttp(DreamContext context, DreamMessage request, Result <DreamMessage> response)
 {
     yield return(context.Relay(_redirect.At(context.GetSuffixes(UriPathFormat.Original)), request, response));
 }