예제 #1
0
        public static void GetUserActivities(string ProfileId, string AcessToken)
        {
            oAuthTokenGPlus ObjoAuthTokenGPlus = new oAuthTokenGPlus(AppSettings.GoogleConsumerKey, AppSettings.GoogleConsumerSecret, AppSettings.GoogleRedirectUri);

            try
            {
                //Domain.Socioboard.Domain.GooglePlusActivities _GooglePlusActivities = null;
                MongoGplusFeed _GooglePlusActivities;
                string         _Activities  = ObjoAuthTokenGPlus.APIWebRequestToGetUserInfo(Globals.strGetActivitiesList.Replace("[ProfileId]", ProfileId) + "?key=" + AppSettings.GoogleApiKey, AcessToken);
                JObject        J_Activities = JObject.Parse(_Activities);
                foreach (var item in J_Activities["items"])
                {
                    _GooglePlusActivities    = new MongoGplusFeed();
                    _GooglePlusActivities.Id = ObjectId.GenerateNewId();
                    //_GooglePlusActivities.UserId = Guid.Parse(UserId);
                    _GooglePlusActivities.GpUserId = ProfileId;
                    try
                    {
                        _GooglePlusActivities.FromUserName = item["actor"]["displayName"].ToString();
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.FromId = item["actor"]["id"].ToString();
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.ActivityId = item["id"].ToString();
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.ActivityUrl = item["url"].ToString();
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.Title = item["title"].ToString();
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.FromProfileImage = item["actor"]["image"]["url"].ToString();
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.Content = item["object"]["content"].ToString();
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.PublishedDate = Convert.ToDateTime(item["published"].ToString()).ToString("yyyy/MM/dd HH:mm:ss");
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.PlusonersCount = Convert.ToInt32(item["object"]["plusoners"]["totalItems"].ToString());
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.RepliesCount = Convert.ToInt32(item["object"]["replies"]["totalItems"].ToString());
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.ResharersCount = Convert.ToInt32(item["object"]["resharers"]["totalItems"].ToString());
                    }
                    catch { }
                    try
                    {
                        _GooglePlusActivities.AttachmentType = item["object"]["attachments"][0]["objectType"].ToString();
                        if (_GooglePlusActivities.AttachmentType == "video")
                        {
                            _GooglePlusActivities.Attachment = item["object"]["attachments"][0]["embed"]["url"].ToString();
                        }
                        else if (_GooglePlusActivities.AttachmentType == "photo")
                        {
                            _GooglePlusActivities.Attachment = item["object"]["attachments"][0]["image"]["url"].ToString();
                        }
                        else if (_GooglePlusActivities.AttachmentType == "album")
                        {
                            _GooglePlusActivities.Attachment = item["object"]["attachments"][0]["thumbnails"][0]["image"]["url"].ToString();
                        }
                        else if (_GooglePlusActivities.AttachmentType == "article")
                        {
                            try
                            {
                                _GooglePlusActivities.Attachment = item["object"]["attachments"][0]["image"]["url"].ToString();
                            }
                            catch { }
                            try
                            {
                                _GooglePlusActivities.ArticleDisplayname = item["object"]["attachments"][0]["displayName"].ToString();
                            }
                            catch { }
                            try
                            {
                                _GooglePlusActivities.ArticleContent = item["object"]["attachments"][0]["content"].ToString();
                            }
                            catch { }
                            try
                            {
                                _GooglePlusActivities.Link = item["object"]["attachments"][0]["url"].ToString();
                            }
                            catch { }
                        }
                    }
                    catch (Exception ex)
                    {
                        _GooglePlusActivities.AttachmentType = "note";
                        _GooglePlusActivities.Attachment     = "";
                    }
                    MongoRepository gplusFeedRepo = new MongoRepository("MongoGplusFeed");
                    var             ret           = gplusFeedRepo.Find <MongoGplusFeed>(t => t.ActivityId.Equals(_GooglePlusActivities.ActivityId));
                    var             task          = Task.Run(async() => {
                        return(await ret);
                    });
                    int count = task.Result.Count;
                    if (count < 1)
                    {
                        gplusFeedRepo.Add(_GooglePlusActivities);
                    }
                    else
                    {
                        FilterDefinition <BsonDocument> filter = new BsonDocument("ActivityId", _GooglePlusActivities.ActivityId);
                        var update = Builders <BsonDocument> .Update.Set("PlusonersCount", _GooglePlusActivities.PlusonersCount).Set("RepliesCount", _GooglePlusActivities.RepliesCount).Set("ResharersCount", _GooglePlusActivities.ResharersCount);

                        gplusFeedRepo.Update <MongoGplusFeed>(update, filter);
                    }
                    new Thread(delegate() {
                        GetGooglePlusComments(_GooglePlusActivities.ActivityId, AcessToken, ProfileId);
                    }).Start();
                }
            }
            catch (Exception ex)
            {
            }
        }
        private void ParseAndUpdateGoogleAccountFeeds(Googleplusaccounts googlePlusAccount, oAuthTokenGPlus objoAuthTokenGPlus, oAuthToken objToken)
        {
            try
            {
                string  objRefresh     = objoAuthTokenGPlus.GetAccessToken(googlePlusAccount.RefreshToken);
                JObject objaccesstoken = JObject.Parse(objRefresh);
                string  access_token   = objaccesstoken.SelectToken("access_token")?.ToString();

                MongoGplusFeed _GooglePlusActivities;
                string         _Activities  = objoAuthTokenGPlus.APIWebRequestToGetUserInfo(Globals.strGetActivitiesList.Replace("[ProfileId]", googlePlusAccount.GpUserId) + "?key=" + AppSettings.googleApiKey, access_token);
                JObject        J_Activities = JObject.Parse(_Activities);
                foreach (var item in J_Activities["items"])
                {
                    _GooglePlusActivities          = new MongoGplusFeed();
                    _GooglePlusActivities.Id       = ObjectId.GenerateNewId();
                    _GooglePlusActivities.GpUserId = googlePlusAccount.GpUserId;

                    _GooglePlusActivities.FromUserName     = item.SelectToken("actor.displayName")?.ToString();
                    _GooglePlusActivities.FromId           = item.SelectToken("actor.id")?.ToString();
                    _GooglePlusActivities.ActivityId       = item.SelectToken("id")?.ToString();
                    _GooglePlusActivities.ActivityUrl      = item.SelectToken("url")?.ToString();
                    _GooglePlusActivities.Title            = item.SelectToken("title")?.ToString();
                    _GooglePlusActivities.FromProfileImage = item.SelectToken("actor.image.url")?.ToString();
                    _GooglePlusActivities.Content          = item.SelectToken("object.content")?.ToString();
                    _GooglePlusActivities.PublishedDate    = Convert.ToDateTime(item.SelectToken("published")?.ToString()).ToString("yyyy/MM/dd HH:mm:ss") ?? "";
                    _GooglePlusActivities.PlusonersCount   = Convert.ToInt32(item.SelectToken("object.plusoners.totalItems")?.ToString() ?? "0");
                    _GooglePlusActivities.RepliesCount     = Convert.ToInt32(item.SelectToken("object.replies.totalItems")?.ToString() ?? "0");
                    _GooglePlusActivities.ResharersCount   = Convert.ToInt32(item.SelectToken("object.resharers.totalItems")?.ToString() ?? "0");

                    _GooglePlusActivities.AttachmentType = item.SelectTokens("object.attachments")?.FirstOrDefault()?.SelectToken("objectType")?.ToString() ?? "";

                    switch (_GooglePlusActivities.AttachmentType)
                    {
                    case "video":
                        _GooglePlusActivities.Attachment = item.SelectTokens("object.attachments")?.FirstOrDefault()?.SelectToken("embed.url")?.ToString() ?? "";
                        break;

                    case "photo":
                        _GooglePlusActivities.Attachment = item.SelectTokens("object.attachments")?.FirstOrDefault()?.SelectToken("image.url")?.ToString() ?? "";
                        break;

                    case "album":
                        _GooglePlusActivities.Attachment = item.SelectTokens("object.attachments")?.FirstOrDefault()?.SelectTokens("thumbnails")?.FirstOrDefault().SelectToken("image.url")?.ToString() ?? "";
                        break;

                    case "article":
                        _GooglePlusActivities.Attachment         = item.SelectTokens("object.attachments")?.FirstOrDefault()?.SelectToken("image.url")?.ToString() ?? "";
                        _GooglePlusActivities.ArticleDisplayname = item.SelectTokens("object.attachments")?.FirstOrDefault()?.SelectToken("displayName")?.ToString() ?? "";
                        _GooglePlusActivities.ArticleContent     = item.SelectTokens("object.attachments")?.FirstOrDefault()?.SelectToken("content")?.ToString() ?? "";
                        _GooglePlusActivities.Link = item.SelectTokens("object.attachments")?.FirstOrDefault()?.SelectToken("url")?.ToString() ?? "";
                        break;

                    default:
                        _GooglePlusActivities.AttachmentType = "note";
                        _GooglePlusActivities.Attachment     = "";
                        break;
                    }

                    MongoRepository gplusFeedRepo = new MongoRepository("MongoGplusFeed");
                    var             ret           = gplusFeedRepo.Find <MongoGplusFeed>(t => t.ActivityId.Equals(_GooglePlusActivities.ActivityId));
                    var             task          = Task.Run(async() =>
                    {
                        return(await ret);
                    });
                    int count = task.Result.Count;
                    if (count < 1)
                    {
                        gplusFeedRepo.Add(_GooglePlusActivities);
                    }
                    else
                    {
                        FilterDefinition <BsonDocument> filter = new BsonDocument("ActivityId", _GooglePlusActivities.ActivityId);
                        var update = Builders <BsonDocument> .Update.Set("PlusonersCount", _GooglePlusActivities.PlusonersCount).Set("RepliesCount", _GooglePlusActivities.RepliesCount).Set("ResharersCount", _GooglePlusActivities.ResharersCount);

                        gplusFeedRepo.Update <MongoGplusFeed>(update, filter);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }