Пример #1
0
 public async Task SendTaskStream(MethodDescriptor methodDescriptor, IMessage request)
 {
     var inner = new InnerRequest
     {
         ServiceName = methodDescriptor.Service.FullName, MethodName = methodDescriptor.Name, Msg = request.ToByteString()
     };
     await call.RequestStream.WriteAsync(inner);
 }
Пример #2
0
 public override Task <Empty> SendTask(InnerRequest request, ServerCallContext context)
 {
     Task.Run(async() =>
     {
         ResponseQueue.queue.Enqueue(await backendClient.dispatchAsync(request));
     });
     return(Task.FromResult(new Empty()));
 }
Пример #3
0
        protected override void OnPreRequest()
        {
            var queries = GetQueries();

            while (queries.MoveNext())
            {
                InnerRequest.AddQueryParam(queries.Current.Key, queries.Current.Value);
            }
        }
Пример #4
0
        public async Task SendTask(MethodDescriptor methodDescriptor, IMessage request)
        {
            var inner = new InnerRequest
            {
                ServiceName = methodDescriptor.Service.FullName, MethodName = methodDescriptor.Name, Msg = request.ToByteString()
            };

            await GetClient().SendTaskAsync(inner);
        }
Пример #5
0
        public HttpResponseMessage RavenRoot()
        {
            var location = DatabasesLandlord.SystemConfiguration.VirtualDirectory != "/"
                                ? DatabasesLandlord.SystemConfiguration.VirtualDirectory + "/" + RootPath : RootPath;

            var result = InnerRequest.CreateResponse(HttpStatusCode.Found);

            result.Headers.Location = new Uri(location, UriKind.Relative);

            return(result);
        }
Пример #6
0
        public StringBuilder GetSignData()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(nameof(LoginName)).Append(LoginName)
            .Append(nameof(ObjectId)).Append(ObjectId)
            .Append(nameof(ClientId)).Append(ClientId)
            .Append(nameof(ClientIp)).Append(ClientIp)
            .Append(nameof(InnerRequest)).Append(nameof(Sign)).Append(InnerRequest.GetSignData())
            .Append(nameof(Timestamp)).Append(Timestamp.ToUlong());
            return(sb);
        }
Пример #7
0
        public HttpResponseMessage GetStudioFile(string path = null)
        {
            if (string.IsNullOrEmpty(Database.Configuration.RedirectStudioUrl) == false)
            {
                var result = InnerRequest.CreateResponse(HttpStatusCode.Found);
                result.Headers.Location = new Uri(Path.Combine(DatabasesLandlord.SystemConfiguration.ServerUrl, Database.Configuration.RedirectStudioUrl));
                return(result);
            }

            var docPath = GetRequestUrl().Replace("/studio/", "");

            return(WriteEmbeddedFile("~/Server/Html5Studio", "Raven.Database.Server.Html5Studio", "Raven.Studio.Html5", docPath));
        }
Пример #8
0
        public HttpResponseMessage RavenUiGet(string id = null)
        {
            if (string.IsNullOrEmpty(Database.Configuration.Server.RedirectStudioUrl) == false)
            {
                var result = InnerRequest.CreateResponse(HttpStatusCode.Found);
                result.Headers.Location = new Uri(Path.Combine(DatabasesLandlord.SystemConfiguration.ServerUrl, Database.Configuration.Server.RedirectStudioUrl));
                return(result);
            }

            var docPath = GetRequestUrl().Replace("/raven/", "");

            return(WriteEmbeddedFile(DatabasesLandlord.SystemConfiguration.Core.WebDir, "Raven.Database.Server.WebUI", null, docPath));
        }
Пример #9
0
        public string GenerateRequestJSON()
        {
            this.GeneratePaySign();
            InnerRequest req = new InnerRequest();

            req.appId     = this._innerParams["appId"];
            req.timeStamp = this._innerParams["timeStamp"];
            req.nonceStr  = this._innerParams["nonceStr"];
            req.package   = this.Package.GeneratePackageContent();
            req.signType  = "SHA1";
            req.paySign   = this._innerParams["paySign"];

            return(req.ToJSON());
        }
Пример #10
0
        public HttpResponseMessage MoreLikeThisGet()
        {
            var nameValueCollection = new NameValueCollection();

            foreach (var queryNameValuePair in InnerRequest.GetQueryNameValuePairs())
            {
                nameValueCollection.Add(queryNameValuePair.Key, queryNameValuePair.Value);
            }

            var parameters = GetParametersFromPath(GetRequestUrl(), nameValueCollection);

            parameters.TransformerParameters = ExtractTransformerParameters();
            parameters.ResultsTransformer    = GetQueryStringValue("resultsTransformer");
            parameters.Includes = GetQueryStringValues("include");

            var index = Database.IndexStorage.GetIndexInstance(parameters.IndexName);

            if (index == null)
            {
                return(GetMessageWithObject(new { Error = "The index " + parameters.IndexName + " cannot be found" },
                                            HttpStatusCode.NotFound));
            }

            var indexEtag = Database.Indexes.GetIndexEtag(parameters.IndexName, null);

            if (MatchEtag(indexEtag))
            {
                return(GetEmptyMessage(HttpStatusCode.NotModified));
            }


            var result = Database.ExecuteMoreLikeThisQuery(parameters, GetRequestTransaction(), GetPageSize(Database.Configuration.MaxPageSize),
                                                           Database.IndexQueryTriggers);

            if (MatchEtag(result.Etag))
            {
                return(GetEmptyMessage(HttpStatusCode.NotModified));
            }

            var msg = GetMessageWithObject(result.Result);

            WriteETag(result.Etag, msg);
            return(msg);
        }
Пример #11
0
        public Dictionary <string, RavenJToken> ExtractTransformerParameters()
        {
            var result = new Dictionary <string, RavenJToken>();

            foreach (var key in InnerRequest.GetQueryNameValuePairs().Select(pair => pair.Key))
            {
                if (string.IsNullOrEmpty(key))
                {
                    continue;
                }
                if (key.StartsWith("qp-") || key.StartsWith("tp-"))
                {
                    var realkey = key.Substring(3);
                    result[realkey] = GetQueryStringValue(key);
                }
            }

            return(result);
        }
Пример #12
0
        public override async Task <InnerResponse> dispatch(InnerRequest innerRequest, ServerCallContext context)
        {
            //Console.WriteLine(innerRequest.ServiceName + " " + innerRequest.MethodName);
            try
            {
                var callInvoker = channel.CreateCallInvoker();

                var request   = new RawMessage(innerRequest.Msg);
                var rawMethod = new RawMethod(innerRequest.ServiceName, innerRequest.MethodName);
                var result    = await callInvoker.AsyncUnaryCall(rawMethod.method, null, new CallOptions(), request);

                return(new InnerResponse {
                    Msg = ByteString.CopyFrom(result.msg)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Пример #13
0
        private Dictionary <string, SortOptions> GetSortHints()
        {
            var result = new Dictionary <string, SortOptions>();

            // backward compatibility
            foreach (var header in InnerRequest.Headers.Where(pair => pair.Key.StartsWith("SortHint-")))
            {
                SortOptions sort;
                Enum.TryParse(GetHeader(header.Key), true, out sort);
                result[Uri.UnescapeDataString(header.Key)] = sort;
            }

            foreach (var pair in InnerRequest.GetQueryNameValuePairs().Where(pair => pair.Key.StartsWith("SortHint-", StringComparison.OrdinalIgnoreCase)))
            {
                var key   = pair.Key;
                var value = pair.Value != null?Uri.UnescapeDataString(pair.Value) : null;

                SortOptions sort;
                Enum.TryParse(value, true, out sort);
                result[Uri.UnescapeDataString(key)] = sort;
            }

            return(result);
        }
Пример #14
0
 public override WebResponse GetResponse()
 {
     return(InnerRequest.GetResponse());
 }
Пример #15
0
            // can't call protected method on InnerRequest.  This shouldn't
            // cause any problems unless the request is serialized.
            //protected override void GetObjectData(System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext)
            //{
            //    InnerRequest.GetObjectData(serializationInfo, streamingContext);
            //}

            public override System.IO.Stream GetRequestStream()
            {
                return(InnerRequest.GetRequestStream());
            }
Пример #16
0
 public override WebResponse EndGetResponse(IAsyncResult asyncResult)
 {
     return(InnerRequest.EndGetResponse(asyncResult));
 }
Пример #17
0
 public override System.IO.Stream EndGetRequestStream(IAsyncResult asyncResult)
 {
     return(InnerRequest.EndGetRequestStream(asyncResult));
 }
Пример #18
0
        public string[] GetQueryStringValues(string key)
        {
            var items = InnerRequest.GetQueryNameValuePairs().Where(pair => pair.Key == key);

            return(items.Select(pair => (pair.Value != null) ? Uri.UnescapeDataString(pair.Value) : null).ToArray());
        }
Пример #19
0
 protected override void OnPreRequest()
 {
     InnerRequest.AddQueryParam("id", Mapset.Id.ToString());
 }