Esempio n. 1
0
		public async Task<MentionPack[]> RetrieveMentionsAsync(TimeSpan windowDuration)
		{
			var mentioneeScreenName = _selfScreenName;
			var mentioneeScreenNameWithAt = $"@{_selfScreenName}";

			using (var context = new TwitterContext(_selfAuthorizer))
			{
				var packs = new List<MentionPack>();

				var mentions = await
					(from tweet in context.Status
					 where (tweet.Type == StatusType.Mentions)
						&& (tweet.ScreenName == mentioneeScreenName)
						&& ((tweet.User != null) && (tweet.User.ScreenNameResponse != mentioneeScreenName)) // Mentioner
						&& (new DateTimeOffset(tweet.CreatedAt) >= DateTimeOffset.Now.Add(-windowDuration))
					 select tweet)
					 .ToListAsync();

				if (mentions != null)
				{
					foreach (var mention in mentions)
					{
						var mentionContent = WebUtility.HtmlDecode(mention.Text)?.TrimStartCombined('.');
						if (string.IsNullOrEmpty(mentionContent) ||
							!mentionContent.StartsWith(mentioneeScreenNameWithAt, StringComparison.Ordinal))
							continue;

						mentionContent = mentionContent.Substring(mentioneeScreenNameWithAt.Length).Trim();

						packs.Add(new MentionPack(
							tweetId: mention.StatusID,
							tweetTime: new DateTimeOffset(mention.CreatedAt),
							content: mentionContent,
							mentionerScreenName: mention.User.ScreenNameResponse,
							mentioneeScreenName: mentioneeScreenName));
					}
				}
				return packs.ToArray();
			}
		}
Esempio n. 2
0
        /// <summary>
        /// Adds a list of users to a list.
        /// </summary>
        /// <param name="listID">ID of List.</param>
        /// <param name="slug">List name.</param>
        /// <param name="ownerID">ID of user who owns the list.</param>
        /// <param name="ownerScreenName">Screen name of user who owns the list.</param>
        /// <param name="userIDs">List of user IDs to be list members. (max 100)</param>
        /// <param name="screenNames">List of user screen names to be list members. (max 100)</param>
        /// <param name="callback">Async Callback used in Silverlight queries</param>
        /// <returns>List info for list members added to.</returns>
        static List AddMemberRangeToList(this TwitterContext ctx, string listID, string slug, string ownerID, string ownerScreenName, IEnumerable<ulong> userIDs, List<string> screenNames, Action<TwitterAsyncResponse<List>> callback)
        {
            if (string.IsNullOrEmpty(listID) && string.IsNullOrEmpty(slug))
            {
                throw new ArgumentException("Either listID or slug is required.", ListIDOrSlugParam);
            }

            if (!string.IsNullOrEmpty(slug) && string.IsNullOrEmpty(ownerID) && string.IsNullOrEmpty(ownerScreenName))
            {
                throw new ArgumentException("If using slug, you must also provide either ownerID or ownerScreenName.", OwnerIDOrOwnerScreenNameParam);
            }

            var addMemberRangeUrl = ctx.BaseUrl + "lists/members/create_all.json";

            var reqProc = new ListRequestProcessor<List>();

            ITwitterExecute exec = ctx.TwitterExecutor;
            exec.AsyncCallback = callback;
            var resultsJson =
                exec.PostToTwitter(
                    addMemberRangeUrl,
                    new Dictionary<string, string>
                    {
                        { "list_id", listID },
                        { "slug", slug },
                        { "owner_id", ownerID },
                        { "owner_screen_name", ownerScreenName },
                        { "user_id", userIDs == null ? null : string.Join(",", userIDs.Select(id => id.ToString(CultureInfo.InvariantCulture)).ToArray()) },                        
                        { "screen_name", screenNames == null ? null : string.Join(",", screenNames.ToArray()) }
                    },
                    response => reqProc.ProcessActionResult(response, ListAction.AddMember));

            List results = reqProc.ProcessActionResult(resultsJson, ListAction.AddMember);
            return results;
        }
Esempio n. 3
0
 public string GetstringfromList(List<string> myList)
 {
     return string.Join(" ", myList.ToArray());
 }