Пример #1
0
        public Task <BackendResult <NewsFeedData, ResultCode> > GetNewsFeed(NewsFeedGetParams parameters)
        {
            TaskCompletionSource <BackendResult <NewsFeedData, ResultCode> > tcs = new TaskCompletionSource <BackendResult <NewsFeedData, ResultCode> >();

            this.GetNewsFeed(parameters, (Action <BackendResult <NewsFeedData, ResultCode> >)(res => tcs.TrySetResult(res)));
            return(tcs.Task);
        }
Пример #2
0
        private NewsFeedGetParams CreateNewsFeedGetParams(FeedOperationDetails op)
        {
            NewsFeedGetParams newsFeedGetParams = new NewsFeedGetParams();

            //if (op.Direction == null)
            //    Debugger.Break();
            if (!string.IsNullOrEmpty(op.FeedItemRemoteId))
            {
                newsFeedGetParams = RemoteIdHelper.GetNewsFeedGetParamsBy(op.FeedItemRemoteId, op.ItemCount);
            }
            newsFeedGetParams.NewsListId = -10;
            return(newsFeedGetParams);
        }
Пример #3
0
 public static NewsFeedGetParams GetNewsFeedGetParamsBy(string lastNewsFeedItemRemoteId, int itemsCount)
 {
   NewsFeedGetParams newsFeedGetParams = new NewsFeedGetParams();
   newsFeedGetParams.NewsListId = -10L;
   int offset;
   string from;
   RemoteIdHelper.NewsFeedNewFromData.Instance.GetParams(lastNewsFeedItemRemoteId, out offset, out from);
   int num = itemsCount;
   newsFeedGetParams.count = num;
   string str = from;
   newsFeedGetParams.from = str;
   return newsFeedGetParams;
 }
Пример #4
0
        /// <summary>
        /// Возвращает данные, необходимые для показа списка новостей для текущего пользователя.
        /// </summary>
        /// <param name="params">Параметры запроса.</param>
        /// <returns>
        /// Возвращает результат выполнения метода.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте http://vk.com/dev/newsfeed.get
        /// </remarks>
        public NewsFeed Get(NewsFeedGetParams @params)
        {
            var response = _vk.Call("newsfeed.get", @params);
            var result   = new NewsFeed
            {
                Items     = response["items"].ToReadOnlyCollectionOf <NewsItem>(x => x),
                Profiles  = response["profiles"].ToReadOnlyCollectionOf <User>(x => x),
                Groups    = response["groups"].ToReadOnlyCollectionOf <Group>(x => x),
                NewOffset = response["new_offset"],
                NextFrom  = response["next_from"]
            };

            return(result);
        }
Пример #5
0
 /// <inheritdoc />
 public Task <NewsFeed> GetAsync(NewsFeedGetParams @params)
 {
     return(TypeHelper.TryInvokeMethodAsync(func: () => _vk.NewsFeed.Get(@params: @params)));
 }
Пример #6
0
        public void GetNewsFeed(NewsFeedGetParams parameters, Action <BackendResult <NewsFeedData, ResultCode> > callback)
        {
            string methodName = "execute.getNewsfeed";
            Dictionary <string, string> paramDict = new Dictionary <string, string>()
            {
                {
                    "count",
                    parameters.count.ToString()
                },
                {
                    "device_info",
                    new AdvertisingDeviceInfo().ToJsonString()
                }
            };

            paramDict["fields"] = "sex,online,photo_50,photo_100,photo_200,is_friend";
            if (!string.IsNullOrEmpty(parameters.from))
            {
                paramDict["start_from"] = parameters.from;
            }
            bool?nullable;

            if (parameters.NewsListId == -100L)
            {
                paramDict["filters"]  = "video";
                paramDict["grouping"] = "100";
                paramDict["extended"] = "1";
            }
            else if (parameters.photoFeed || parameters.NewsListId == -101L)
            {
                paramDict["filters"]    = "photo,photo_tag,wall_photo";
                paramDict["max_photos"] = "10";
                if (parameters.source_ids.NotNullAndHasAtLeastOneNonNullElement())
                {
                    paramDict["source_ids"] = parameters.source_ids.GetCommaSeparated();
                }
                else
                {
                    paramDict["source_ids"]    = "friends,following";
                    paramDict["return_banned"] = "1";
                }
            }
            else
            {
                paramDict["filters"] = "post,photo,photo_tag";
                long num1 = parameters.NewsListId - -10L;
                long num2 = 3;
                if ((ulong)num1 <= (ulong)num2)
                {
                    switch ((uint)num1)
                    {
                    case 0:
                        paramDict["is_newsfeed"] = "1";
                        Dictionary <string, string> dictionary1 = paramDict;
                        dictionary1["filters"] = dictionary1["filters"] + ",friends_recomm,ads_post";
                        nullable = AppGlobalStateManager.Current.GlobalState.AdsDemoManualSetting;
                        bool flag = true;
                        if ((nullable.GetValueOrDefault() == flag ? (nullable.HasValue ? 1 : 0) : 0) != 0)
                        {
                            Dictionary <string, string> dictionary2 = paramDict;
                            dictionary2["filters"] = dictionary2["filters"] + ",ads_demo";
                            goto label_16;
                        }
                        else
                        {
                            goto label_16;
                        }

                    case 1:
                        paramDict["recommended"] = "1";
                        goto label_16;

                    case 2:
                        paramDict["source_ids"] = "friends,following";
                        goto label_16;

                    case 3:
                        paramDict["source_ids"] = "groups,pages";
                        goto label_16;
                    }
                }
                paramDict["source_ids"] = "list" + parameters.NewsListId;
            }
label_16:
            NewsFeedType? feedType = parameters.FeedType;
            if (feedType.HasValue)
            {
                paramDict["feed_type"] = feedType.Value.ToString();
                if (parameters.UpdateFeedType)
                {
                    paramDict["set_feed_type"] = "1";
                }
            }
            if (parameters.SyncNotifications)
            {
                paramDict["sync_notifications"] = "1";
            }
            nullable = parameters.TopFeedPromoAnswer;
            if (nullable.HasValue)
            {
                Dictionary <string, string> dictionary = paramDict;
                string index = "top_feed_promo_accepted";
                nullable = parameters.TopFeedPromoAnswer;
                string str = nullable.Value ? "1" : "0";
                dictionary[index] = str;
                paramDict["top_feed_promo_id"] = parameters.TopFeedPromoId.ToString();
            }
            ConnectionType connectionType = NetworkStatusInfo.Instance.RetrieveNetworkConnectionType();

            if (connectionType != null)
            {
                paramDict["connection_type"]    = connectionType.Type;
                paramDict["connection_subtype"] = connectionType.Subtype;
            }
            if (parameters.UpdateAwayTime > 0)
            {
                paramDict["update_away_time"] = parameters.UpdateAwayTime.ToString();
            }
            if (parameters.UpdatePosition > -1)
            {
                paramDict["update_position"] = parameters.UpdatePosition.ToString();
            }
            if (!string.IsNullOrEmpty(parameters.UpdatePost))
            {
                paramDict["update_post"] = parameters.UpdatePost;
            }
            NewsFeedService.DoLoadNewsFeed(methodName, paramDict, callback);
        }
Пример #7
0
 /// <inheritdoc />
 public async Task <NewsFeed> GetAsync(NewsFeedGetParams @params)
 {
     return(await TypeHelper.TryInvokeMethodAsync(() => _vk.NewsFeed.Get(@params)));
 }
        public void GetNewsFeed(NewsFeedGetParams parameters, Action <BackendResult <NewsFeedData, ResultCode> > callback)
        {
            /*
             * Dictionary<string, string> paramDict = new Dictionary<string, string>()
             * {
             * {
             * "count",
             * parameters.count.ToString()
             * },
             * {
             * "device_info",
             * new AdvertisingDeviceInfo().ToJsonString()
             * }
             * };
             * paramDict["fields"] = "sex,online,photo_50,photo_100,photo_200,is_friend";
             * if (!string.IsNullOrEmpty(parameters.from))
             * paramDict["start_from"] = parameters.from;
             * bool? nullable;
             * if (parameters.NewsListId == -100L)
             * {
             * paramDict["filters"] = "video";
             * paramDict["grouping"] = "100";
             * paramDict["extended"] = "1";
             * }
             * else if (parameters.photoFeed || parameters.NewsListId == -101L)
             * {
             * paramDict["filters"] = "photo,photo_tag,wall_photo";
             * paramDict["max_photos"] = "10";
             * if (parameters.source_ids.NotNullAndHasAtLeastOneNonNullElement())
             * {
             * paramDict["source_ids"] = parameters.source_ids.GetCommaSeparated();
             * }
             * else
             * {
             * paramDict["source_ids"] = "friends,following";
             * paramDict["return_banned"] = "1";
             * }
             * }
             * else
             * {
             * paramDict["filters"] = "post,photo,photo_tag";
             * long num1 = parameters.NewsListId - -10L;
             *
             * if ((ulong) num1 <= (ulong) 3)
             * {
             * switch ((uint) num1)
             * {
             *  case 0:
             *    paramDict["is_newsfeed"] = "1";
             *    Dictionary<string, string> dictionary1 = paramDict;
             *    dictionary1["filters"] = dictionary1["filters"] + ",friends_recomm,ads_post";
             *    nullable = AppGlobalStateManager.Current.GlobalState.AdsDemoManualSetting;
             *    bool flag = true;
             *    if ((nullable.GetValueOrDefault() == flag ? (nullable.HasValue ? 1 : 0) : 0) != 0)
             *    {
             *      Dictionary<string, string> dictionary2 = paramDict;
             *      dictionary2["filters"] = dictionary2["filters"] + ",ads_demo";
             *      goto label_16;
             *    }
             *    else
             *      goto label_16;
             *  case 1:
             *    paramDict["recommended"] = "1";
             *    goto label_16;
             *  case 2:
             *    paramDict["source_ids"] = "friends,following";
             *    goto label_16;
             *  case 3:
             *    paramDict["source_ids"] = "groups,pages";
             *    goto label_16;
             * }
             * }
             * paramDict["source_ids"] = "list" + parameters.NewsListId;
             * }
             * label_16:
             * NewsFeedType? feedType = parameters.FeedType;
             * if (feedType.HasValue)
             * {
             * paramDict["feed_type"] = feedType.Value.ToString();
             * if (parameters.UpdateFeedType)
             * paramDict["set_feed_type"] = "1";
             * }
             * if (parameters.SyncNotifications)
             * paramDict["sync_notifications"] = "1";
             * nullable = parameters.TopFeedPromoAnswer;
             * if (nullable.HasValue)
             * {
             * Dictionary<string, string> dictionary = paramDict;
             * string index = "top_feed_promo_accepted";
             * nullable = parameters.TopFeedPromoAnswer;
             * string str = nullable.Value ? "1" : "0";
             * dictionary[index] = str;
             * paramDict["top_feed_promo_id"] = parameters.TopFeedPromoId.ToString();
             * }
             * ConnectionType connectionType = NetworkStatusInfo.Instance.RetrieveNetworkConnectionType();
             * if (connectionType != null)
             * {
             * paramDict["connection_type"] = connectionType.Type;
             * paramDict["connection_subtype"] = connectionType.Subtype;
             * }
             * if (parameters.UpdateAwayTime > 0)
             * paramDict["update_away_time"] = parameters.UpdateAwayTime.ToString();
             * if (parameters.UpdatePosition > -1)
             * paramDict["update_position"] = parameters.UpdatePosition.ToString();
             * if (!string.IsNullOrEmpty(parameters.UpdatePost))
             * paramDict["update_post"] = parameters.UpdatePost;
             * NewsFeedService.DoLoadNewsFeed("execute.getNewsfeed", paramDict, callback);*/

            Dictionary <string, string> paramDict = new Dictionary <string, string>();

            paramDict["func_v"] = "2";
            ConnectionType connectionType = NetworkStatusInfo.Instance.RetrieveNetworkConnectionType();

            if (connectionType != null)
            {
                paramDict["connection_type"]    = connectionType.Type;
                paramDict["connection_subtype"] = connectionType.Subtype;
            }
            paramDict["user_options"] = "{\"autoplay_video\":{\"value\":\"always\"},\"autoplay_gif\":{\"value\":\"always\"}}";
            if (!string.IsNullOrEmpty(parameters.from))
            {
                paramDict["start_from"] = parameters.from;
            }
            paramDict["count"] = parameters.count.ToString();
            //todo:optimize fields
            paramDict["fields"] = "id,first_name,first_name_dat,last_name,last_name_dat,sex,screen_name,photo_50,photo_100,photo_200,online,video_files";
            //if (forceNotification)
            //{
            //    paramDict["forced_notifications"] = "1";
            //}
            switch (parameters.NewsListId)
            {
            case -100:    //новости видео(-5 андроид)
                paramDict["extended"] = "1";
                break;

            case -101:    //новости фотографий(-4 андроид)
                paramDict["return_banned"] = "1";
                break;

            case -9:    //(-1 андроид)
                paramDict["feed_type"] = "recommended";
                break;
            }

            switch (parameters.NewsListId)
            {
            case -100:    //новости видео(-5 андроид)
                paramDict["filters"] = "video";
                break;

            case -101:    //новости фотографий(-4 андроид)
                paramDict["filters"] = "photo,photo_tag,wall_photo";
                break;

            default:    //новости друзья
                paramDict["filters"] = "post,photo,photo_tag,friends_recomm,app_widget,ads_app,ads_site,ads_post,ads_app_slider,ads_app_video,ads_post_pretty_cards";
                break;
            }

            switch (parameters.NewsListId)
            {
            case -101:    //новости фотографий(-4 андроид)
                paramDict["source_ids"] = "friends,following";
                break;

            case -3:
                paramDict["source_ids"] = "groups,pages";
                break;

            case -8:    //новости друзья(-2 андроид)
                paramDict["source_ids"] = "friends,following";
                break;

            default:
                //if (list > 0) {
                //    paramDict["source_ids"] = "ArgKeys.LIST + list";
                //    break;
                //}
                break;
            }

            NewsFeedType?feedType = parameters.FeedType;

            if (feedType.HasValue)
            {
                //paramDict["feed_type"] = feedType.Value.ToString();
                paramDict["forced_feed_type"] = feedType.Value.ToString();//только в разделах Новости и Сначала интересные новости
            }

            /*
             * if (list == 0 && isSmartNews != null)
             * {
             *    if (!TextUtils.equals(from, AppEventsConstants.EVENT_PARAM_VALUE_NO))
             *    {
             *        param("feed_type", isSmartNews.booleanValue() ? FEED_TYPE_TOP : FEED_TYPE_RECENT);
             *    }
             *    else if (isStartFromInterestingPending())
             *    {
             *        param("forced_feed_type", isSmartNews.booleanValue() ? FEED_TYPE_TOP : FEED_TYPE_RECENT);
             *    }
             *    if (position >= 0)
             *    {
             *        param("update_position", String.valueOf(position));
             *    }
             *    if (lastPostId >= 0 && lastPostOwnerId != 0)
             *    {
             *        param("update_post", lastPostOwnerId + EventsFilesManager.ROLL_OVER_FILE_NAME_SEPARATOR + lastPostId);
             *    }
             *    if (awayTimeSec >= 0)
             *    {
             *        param("update_away_time", String.valueOf(awayTimeSec));
             *    }
             * }
             * if (list != 0)
             * {
             *    param("is_not_newsfeed", 1);
             * }
             * this.promoList = promoList;
             * if (promoList != null)
             * {
             *    param("feed_id", promoList);
             * }
             * param(ServerKeys.PHOTO_SIZES, 1);
             * int last = VKApplication.context.getSharedPreferences(null, 0).getInt(UserNotification.LAST_GET_NOTIFY_APP, 0);
             * if (last != 0)
             * {
             *    param("last_request_notification_sec", (int)((System.currentTimeMillis() / 1000) - ((long)last)));
             * }*/
            //

            if (parameters.UpdatePosition > -1)
            {
                paramDict["update_position"] = parameters.UpdatePosition.ToString();
            }
            if (!string.IsNullOrEmpty(parameters.UpdatePost))
            {
                paramDict["update_post"] = parameters.UpdatePost;
            }
            if (parameters.UpdateAwayTime > 0)
            {
                paramDict["update_away_time"] = parameters.UpdateAwayTime.ToString();
            }
            //
            //paramDict["is_not_newsfeed"] = "1";//при единице истории не грузятся
            paramDict["photo_sizes"] = "1";
            paramDict["last_request_notification_sec"] = "3";
            paramDict["device_info"]    = new AdvertisingDeviceInfo().ToJsonString();
            paramDict["app_package_id"] = "com.vkontakte.android";
            NewsFeedService.DoLoadNewsFeed("execute.getNewsfeedSmart", paramDict, callback);
        }