示例#1
0
        /// <summary>
        /// Returns the events from the specified request.
        /// </summary>
        /// <param name="request">The http request.</param>
        /// <returns>The events from the specified request.</returns>
        public async Task <IEnumerable <ILineEvent> > GetEvents(HttpRequest request)
        {
            Guard.NotNull(nameof(request), request);

            byte[] content = await request.Body.ToArrayAsync();

            if (content == null)
            {
                return(Enumerable.Empty <ILineEvent>());
            }

            string signature = request.Headers["X-Line-Signature"];

            SignatureValidator validator = new SignatureValidator(_configuration);

            validator.Validate(content, signature);

            string jsonContent = Encoding.UTF8.GetString(content);

            LineEventCollection eventCollection = JsonConvert.DeserializeObject <LineEventCollection>(jsonContent);

            if (eventCollection == null || eventCollection.Events == null)
            {
                return(Enumerable.Empty <ILineEvent>());
            }

            return(eventCollection.Events);
        }
示例#2
0
        /// <summary>
        /// Returns the events from the specified request.
        /// </summary>
        /// <param name="request">The http request.</param>
        /// <returns>The events from the specified request.</returns>
        public async Task <ILineEvents> GetEvents(HttpRequest request)
        {
            Guard.NotNull(nameof(request), request);

            var content = await request.Body.ToArrayAsync().ConfigureAwait(false);

            if (content is null)
            {
                return(LineEventCollection.Empty());
            }

            await _logger.LogReceivedEvents(content).ConfigureAwait(false);

            var signature = request.Headers["X-Line-Signature"];

            _signatureValidator.Validate(content, signature);

            var jsonContent = Encoding.UTF8.GetString(content);

            var eventCollection = JsonConvert.DeserializeObject <LineEventCollection>(jsonContent);

            if (eventCollection is null)
            {
                return(LineEventCollection.Empty());
            }

            if (eventCollection.Events is null)
            {
                eventCollection.Events = new List <LineEvent>();
            }

            return(eventCollection);
        }