Exemple #1
0
        public GetCursorResponse GetCursor(GetCursorRequest request)
        {
            using (ServiceRequest sReq = new ServiceRequest())
            {
                sReq.Method   = HttpMethod.Get;
                sReq.Endpoint = BuildReqEndpoint(request);

                sReq.ResourcePath = LogConsts.RESOURCE_LOGSTORES
                                    + LogConsts.RESOURCE_SEPARATOR
                                    + request.Logstore
                                    + LogConsts.RESOURCE_SHARDS
                                    + LogConsts.RESOURCE_SEPARATOR
                                    + request.Shard;

                FillCommonHeaders(sReq);
                FillCommonParameters(sReq);

                request.AddSpecHeadersTo(sReq.Headers);
                request.AddSpecParamsTo(sReq.Parameters);

                ExecutionContext context = new ExecutionContext();
                context.Signer      = new LogRequestSigner(sReq.ResourcePath, HttpMethod.Get);
                context.Credentials = new ServiceCredentials(this.AccessKeyId, this.AccessKey);

                using (ServiceResponse response = serviceClient.Send(sReq, context))
                {
                    LogClientTools.ResponseErrorCheck(response, context.Credentials);
                    JObject           body          = LogClientTools.ParserResponseToJObject(response.Content);
                    GetCursorResponse getCursorResp = new GetCursorResponse(response.Headers, body.GetValue("cursor").ToString());
                    return(getCursorResp);
                }
            }
        }
Exemple #2
0
        public BatchGetLogsResponse BatchGetLogs(BatchGetLogsRequest request)
        {
            using (ServiceRequest sReq = new ServiceRequest())
            {
                sReq.Method   = HttpMethod.Get;
                sReq.Endpoint = BuildReqEndpoint(request);

                sReq.ResourcePath = LogConsts.RESOURCE_LOGSTORES
                                    + LogConsts.RESOURCE_SEPARATOR
                                    + request.Logstore
                                    + LogConsts.RESOURCE_SHARDS
                                    + LogConsts.RESOURCE_SEPARATOR
                                    + request.Shard;

                FillCommonHeaders(sReq);
                FillCommonParameters(sReq);

                request.AddSpecHeadersTo(sReq.Headers);
                request.AddSpecParamsTo(sReq.Parameters);

                ExecutionContext context = new ExecutionContext();
                context.Signer      = new LogRequestSigner(sReq.ResourcePath, HttpMethod.Get);
                context.Credentials = new ServiceCredentials(this.AccessKeyId, this.AccessKey);

                using (ServiceResponse response = serviceClient.Send(sReq, context))
                {
                    LogClientTools.ResponseErrorCheck(response, context.Credentials);
                    BatchGetLogsResponse batchGetLogsResp = new BatchGetLogsResponse(response.Headers, response.Content);
                    return(batchGetLogsResp);
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Get The log status(histogram info) from sls server which match input
        /// parameters. All the logs with logstore and topic in [from, to) which
        /// contain the keys in query are the matched data.
        /// </summary>
        /// <param name="request">The get histograms request</param>
        /// <exception>LogException</exception>
        /// <returns>The get histograms response</returns>
        public GetHistogramsResponse GetHistograms(GetHistogramsRequest request)
        {
            ServiceRequest sReq = new ServiceRequest();

            sReq.Method   = HttpMethod.Get;
            sReq.Endpoint = BuildReqEndpoint(request);

            //use empty string to replace Logstore if not set by user explicitly
            string logstore = request.IsSetLogstore() ? request.Logstore : String.Empty;

            sReq.ResourcePath = LogConsts.RESOURCE_LOGSTORES + LogConsts.RESOURCE_SEPARATOR + logstore;

            FillCommonHeaders(sReq);
            FillCommonParameters(sReq);

            sReq.Parameters.Add(LogConsts.PARAMETER_TYPE, LogConsts.VALUE_TYPE_STATUS);

            if (request.IsSetTopic())
            {
                sReq.Parameters.Add(LogConsts.PARAMETER_TOPIC, request.Topic);
            }

            if (request.IsSetFrom())
            {
                sReq.Parameters.Add(LogConsts.PARAMETER_FROM, request.From.ToString());
            }

            if (request.IsSetTo())
            {
                sReq.Parameters.Add(LogConsts.PARAMETER_TO, request.To.ToString());
            }

            if (request.IsSetQuery())
            {
                sReq.Parameters.Add(LogConsts.PARAMETER_QUERY, request.Query);
            }

            ExecutionContext context = new ExecutionContext();

            context.Signer      = new LogRequestSigner(sReq.ResourcePath, HttpMethod.Get);
            context.Credentials = new ServiceCredentials(this.AccessKeyId, this.AccessKey);

            using (ServiceResponse response = serviceClient.Send(sReq, context))
            {
                LogClientTools.ResponseErrorCheck(response, context.Credentials);
                JArray body = LogClientTools.ParserResponseToJArray(response.Content);
                GetHistogramsResponse res = new GetHistogramsResponse(response.Headers, body);
                return(res);
            }
        }
Exemple #4
0
        internal PutLogsResponse PutLogs(PutLogsRequest request, LogGroup logGroup)
        {
            if (logGroup.LogsCount > LogConsts.LIMIT_LOG_COUNT)
            {
                throw new LogException("InvalidLogSize", "logItems' length exceeds maximum limitation: " + LogConsts.LIMIT_LOG_COUNT + " lines.");
            }
            else if (logGroup.SerializedSize > LogConsts.LIMIT_LOG_SIZE)
            {
                throw new LogException("InvalidLogSize", "logItems' size exceeds maximum limitation: " + LogConsts.LIMIT_LOG_SIZE + " byte.");
            }
            ServiceRequest sReq = new ServiceRequest();

            sReq.Method   = HttpMethod.Post;
            sReq.Endpoint = BuildReqEndpoint(request);

            //use empty string to replace Logstore if not set by user explicitly
            string logstore = request.IsSetLogstore() ? request.Logstore : String.Empty;

            sReq.ResourcePath = LogConsts.RESOURCE_LOGSTORES + LogConsts.RESOURCE_SEPARATOR + logstore;

            FillCommonHeaders(sReq);
            FillCommonParameters(sReq);
            sReq.Headers.Add(LogConsts.NAME_HEADER_CONTENTTYPE, LogConsts.PBVALUE_HEADER_CONTENTTYPE);
            byte[] logBytes = logGroup.ToByteArray();
            sReq.Headers[LogConsts.NAME_HEADER_BODYRAWSIZE] = logBytes.Length.ToString();
            sReq.Headers.Add(LogConsts.NAME_HEADER_COMPRESSTYPE, LogConsts.VALUE_HEADER_COMPRESSTYPE_LZ4);
            logBytes = LogClientTools.CompressToLz4(logBytes);
            sReq.Headers.Add(LogConsts.NAME_HEADER_MD5, LogClientTools.GetMd5Value(logBytes));
            sReq.Content = new MemoryStream(logBytes);

            ExecutionContext context = new ExecutionContext();

            context.Signer      = new LogRequestSigner(sReq.ResourcePath, HttpMethod.Post);
            context.Credentials = new ServiceCredentials(this.AccessKeyId, this.AccessKey);

            using (ServiceResponse response = serviceClient.Send(sReq, context))
            {
                LogClientTools.ResponseErrorCheck(response, context.Credentials);
                PutLogsResponse putLogResp = new PutLogsResponse(response.Headers);
                return(putLogResp);
            }
        }
Exemple #5
0
        /// <summary>
        /// Get the topics in the logtstore
        /// </summary>
        /// <param name="request">The list topics request</param>
        /// <exception>LogException</exception>
        /// <returns>The List topics response</returns>
        public ListTopicsResponse ListTopics(ListTopicsRequest request)
        {
            ServiceRequest sReq = new ServiceRequest();

            sReq.Method   = HttpMethod.Get;
            sReq.Endpoint = BuildReqEndpoint(request);

            //use empty string to replace Logstore if not set by user explicitly
            string logstore = request.IsSetLogstore() ? request.Logstore : String.Empty;

            sReq.ResourcePath = LogConsts.RESOURCE_LOGSTORES + LogConsts.RESOURCE_SEPARATOR + logstore;

            FillCommonHeaders(sReq);
            FillCommonParameters(sReq);

            sReq.Parameters.Add(LogConsts.PARAMETER_TYPE, LogConsts.RESOURCE_TOPIC);

            if (request.IsSetToken())
            {
                sReq.Parameters.Add(LogConsts.PARAMETER_TOKEN, request.Token);
            }

            if (request.IsSetLines())
            {
                sReq.Parameters.Add(LogConsts.PARAMETER_LINES, request.Lines.ToString());
            }

            ExecutionContext context = new ExecutionContext();

            context.Signer      = new LogRequestSigner(sReq.ResourcePath, HttpMethod.Get);
            context.Credentials = new ServiceCredentials(this.AccessKeyId, this.AccessKey);

            using (ServiceResponse response = serviceClient.Send(sReq, context))
            {
                LogClientTools.ResponseErrorCheck(response, context.Credentials);
                JArray             body = LogClientTools.ParserResponseToJArray(response.Content);
                ListTopicsResponse res  = new ListTopicsResponse(response.Headers, body);
                return(res);
            }
        }
Exemple #6
0
        public BatchGetLogsResponse(IDictionary <String, String> headers, Stream body)
            : base(headers)
        {
            headers.TryGetValue(LogConsts.NAME_HEADER_NEXT_CURSOR, out _nextCursor);
            String tmpLogCount, tmpRawSize, tmpContentLength;

            if (headers.TryGetValue(LogConsts.NAME_HEADER_LOG_COUNT, out tmpLogCount))
            {
                int.TryParse(tmpLogCount, out _logCount);
            }
            if (headers.TryGetValue(LogConsts.NAME_HEADER_LOG_BODY_RAW_SIZE, out tmpRawSize))
            {
                int.TryParse(tmpRawSize, out _rawSize);
            }
            int contentLength = 0;

            if (headers.TryGetValue("Content-Length", out tmpContentLength))
            {
                int.TryParse(tmpContentLength, out contentLength);
            }
            _logGroupList = LogGroupList.ParseFrom(LogClientTools.DecompressFromLZ4(body, _rawSize));
        }
Exemple #7
0
        /// <summary>
        /// List all of the logstores under specified project
        /// </summary>
        /// <param name="request">The request to list logstores</param>
        /// <exception>LogException</exception>
        /// <returns>The response of list log logstores</returns>
        public ListLogstoresResponse ListLogstores(ListLogstoresRequest request)
        {
            using (ServiceRequest sReq = new ServiceRequest())
            {
                sReq.Method       = HttpMethod.Get;
                sReq.Endpoint     = BuildReqEndpoint(request);
                sReq.ResourcePath = LogConsts.RESOURCE_LOGSTORES;

                FillCommonHeaders(sReq);
                FillCommonParameters(sReq);

                ExecutionContext context = new ExecutionContext();
                context.Signer      = new LogRequestSigner(sReq.ResourcePath, HttpMethod.Get);
                context.Credentials = new ServiceCredentials(this.AccessKeyId, this.AccessKey);

                using (ServiceResponse response = serviceClient.Send(sReq, context))
                {
                    LogClientTools.ResponseErrorCheck(response, context.Credentials);
                    JObject body = LogClientTools.ParserResponseToJObject(response.Content);
                    ListLogstoresResponse res = new ListLogstoresResponse(response.Headers, body);
                    return(res);
                }
            }
        }
        public void TestCalcSignature()
        {
            String signature = LogClientTools.SigInternal(ClientTestData.TEST_SIGNATURE.Key, ClientTestData.TEST_ACCESSKEYID, ClientTestData.TEST_ACCESSKEY);

            Assert.IsTrue(signature.CompareTo(ClientTestData.TEST_SIGNATURE.Value) == 0);
        }
 public void TestCalcMD5()
 {
     Assert.IsTrue(LogClientTools.GetMd5Value(ClientTestData.TEST_COMPUTMD5.Key).CompareTo(ClientTestData.TEST_COMPUTMD5.Value) == 0);
 }