/// <summary> /// Обновить рекламные акции. /// </summary> public async void Update() { if (!ServiceHelper.SettingsService.EnablePromo) { return; } ulong promoGroupID = 0; var request = new VKExecuteRequest <uint>(VKMethodsConstants.ExecuteGetPromoGroup); for (int i = 0; i < MAX_RETRIES_NUMBER; i++) { var response = await request.ExecuteAsync(); if (response.Error.ErrorType != VKErrors.None) { continue; } promoGroupID = response.Response; break; } if (promoGroupID == 0) { return; } var wallRequest = new GetWallRequest { Count = 10, OwnerID = -((long)promoGroupID) }; for (int i = 0; i < MAX_RETRIES_NUMBER; i++) { var wall = await wallRequest.ExecuteAsync(); if (wall.Error.ErrorType != VKErrors.None) { continue; } var promos = new List <OneVKPromo>(); foreach (var post in wall.Response.Items) { try { var promo = JsonConvert.DeserializeObject <OneVKPromo>(post.FullText); promo.PromoImage = ((VKPhoto)post.Attachments[0].Attachment).Photo604; promos.Add(promo); } catch (Exception) { } } Promos = promos; Messenger.Default.Send(new UpdatePromosMessage()); break; } }
/// <summary> /// Выполняет указанную хранимую процедуру ВКонтакте. /// </summary> /// <typeparam name="T">Тип данных, возвращаемых методом.</typeparam> /// <param name="callback">Метод, который будет вызван по завершении операции. /// Параметр является результатом запроса.</param> /// <param name="request">Объект запроса с необходимыми параметрами.</param> public void Execute <T>(Action <VKResponse <T> > callback, VKExecuteRequest request) { VKHelper.GetResponse <T>(request, callback); }