예제 #1
0
        /// <summary>
        /// Starts the Twitter stream.
        /// </summary>
        /// <param name="type">Type of streaming.</param>
        /// <param name="parameters">The parameters of streaming.</param>
        /// <returns>The stream messages.</returns>
        public IEnumerable <StreamingMessage> StartStream(StreamingType type, StreamingParameters parameters = null)
        {
            if (parameters == null)
            {
                parameters = new StreamingParameters();
            }

            var url = type == StreamingType.User ? "https://userstream.twitter.com/1.1/user.json" :
                      type == StreamingType.Site ? " https://sitestream.twitter.com/1.1/site.json " :
                      type == StreamingType.Filter ? "https://stream.twitter.com/1.1/statuses/filter.json" :
                      type == StreamingType.Sample ? "https://stream.twitter.com/1.1/statuses/sample.json" :
                      type == StreamingType.Firehose ? "https://stream.twitter.com/1.1/statuses/firehose.json" : "";

            var str = this.Connect(parameters, type == StreamingType.Filter ? MethodType.Post : MethodType.Get, url)
                      .Where(x => !string.IsNullOrEmpty(x));

            foreach (var s in str)
            {
                StreamingMessage m;
#if !DEBUG
                try
                {
#endif
                m = StreamingMessage.Parse(s);
#if !DEBUG
            }
            catch
            {
                m = RawJsonMessage.Create(s);
            }
#endif
                yield return(m);
            }
        }
예제 #2
0
파일: Stream.cs 프로젝트: hinaloe/CoreTweet
        public Task <IEnumerable <StreamingMessage> > StartStreamAsync(StreamingType type, StreamingParameters parameters = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (parameters == null)
            {
                parameters = new StreamingParameters();
            }

            return(this.Tokens.SendStreamingRequestAsync(this.GetMethodType(type), this.GetUrl(type), parameters.Parameters, cancellationToken)
                   .ContinueWith(t =>
            {
                if (t.IsFaulted)
                {
                    t.Exception.InnerException.Rethrow();
                }

                return t.Result.GetResponseStreamAsync();
            }, cancellationToken)
                   .Unwrap()
                   .ContinueWith(t =>
            {
                if (t.IsFaulted)
                {
                    t.Exception.InnerException.Rethrow();
                }

                return EnumerateMessages(t.Result);
            }, cancellationToken));
        }
예제 #3
0
파일: Stream.cs 프로젝트: hinaloe/CoreTweet
        public IEnumerable <StreamingMessage> StartStream(StreamingType type, StreamingParameters parameters = null)
        {
            if (parameters == null)
            {
                parameters = new StreamingParameters();
            }

            return(this.AccessStreamingApiImpl(type, parameters.Parameters));
        }
예제 #4
0
 IEnumerable <string> Connect(StreamingParameters parameters, MethodType type, string url)
 {
     using (var str = this.Tokens.SendStreamingRequest(type, url, parameters.Parameters))
         using (var reader = new StreamReader(str.GetResponseStream()))
             foreach (var s in reader.EnumerateLines()
                      .Where(x => !string.IsNullOrEmpty(x)))
             {
                 yield return(s);
             }
 }
예제 #5
0
        public Task <IEnumerable <StreamingMessage> > StartStreamAsync(StreamingType type, StreamingParameters parameters = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (parameters == null)
            {
                parameters = new StreamingParameters();
            }

            return(this.Tokens.SendStreamingRequestAsync(GetMethodType(type), this.GetUrl(type), parameters.Parameters, cancellationToken)
                   .Done(res => res.GetResponseStreamAsync(), cancellationToken)
                   .Unwrap()
                   .Done(stream => EnumerateMessages(stream), cancellationToken));
        }