Наследование: BaseFactory
Пример #1
0
        /// <summary>
        /// Опубликовываем запись на стене с картинкой альбома
        /// </summary>
        /// <param name="id">ID пользователя, где будем размещать запись</param>
        private void Share(int id)
        {
            string shareText = ReplaceKeyWords(Properties.Settings.Default.messageToPost);

            Console.WriteLine(shareText);

            _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
            try
            {
                if (_coverArt)
                {
                    _wallFactory = new WallFactory(_manager);
                    _wallFactory.Manager.Method("photos.getWallUploadServer");
                    _wallFactory.Manager.Params("uid", id);
                    XmlNode result = _wallFactory.Manager.Execute().GetResponseXml().LastChild;
                    XmlUtils.UseNode(result);
                    string uploadUrl = XmlUtils.String("upload_url");

                    HttpUploaderFactory uf = new HttpUploaderFactory();
                    NameValueCollection files = new NameValueCollection();
                    files.Add("photo", _imageDirectory);
                    string resp = uf.Upload(uploadUrl, null, files);
                    Console.WriteLine(resp);
                    var apiResponse = JObject.Parse(resp);
                    var server = (int)apiResponse["server"];
                    var photo = (string)apiResponse["photo"];
                    var hash = (string)apiResponse["hash"];

                    _wallFactory.Manager.Method("photos.saveWallPhoto");
                    _wallFactory.Manager.Params("server", server);
                    _wallFactory.Manager.Params("photo", photo);
                    _wallFactory.Manager.Params("hash", hash);
                    XmlNode result2 = _wallFactory.Manager.Execute().GetResponseXml().FirstChild.FirstChild;
                    XmlUtils.UseNode(result2);
                    string photoId = XmlUtils.String("id");
                    Console.WriteLine(photoId);

                    _wallFactory.Manager.Method("wall.post");
                    _wallFactory.Manager.Params("owner_id", id);
                    _wallFactory.Manager.Params("message", shareText);
                    _wallFactory.Manager.Params("attachments", photoId);
                    _wallFactory.Manager.Params("uid", id);
                    _wallFactory.Manager.Execute();

                }
                else
                {
                    _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
                    _wallFactory.Manager.Method("wall.post");
                    _wallFactory.Manager.Params("owner_id", id);
                    _wallFactory.Manager.Params("message", shareText);
                    Console.WriteLine(_wallFactory.Manager.Execute().ToString());
                }
                AddLineToConsole("Опубликовано."); // Уведомляем пользователя об успешности
            }

            catch (ApiRequestErrorException apiRequestError)
            {
                AddLineToConsole(apiRequestError.Message + ". Сайт вернул неверный ответ. Попробуйте изменить текст для публикации.");
            }
            catch (Exception e)
            {
                AddLineToConsole(e.Message);
            }
        }
Пример #2
0
        /// <summary>
        /// Опубликовываем запись на стене с картинкой альбома
        /// </summary>
        /// <param name="id">ID пользователя, где будем размещать запись</param>
        private void Share(int id)
        {
            iTunesApp app = new iTunesAppClass(); // И снова регистрируем iTunes, как класс приложения

            // Получаем нужную нам информацию о композиции
            string artist = app.CurrentTrack.Artist;
            string name = app.CurrentTrack.Name;
            string playlist = app.CurrentTrack.Playlist.Name;
            string album = app.CurrentTrack.Album;
            string genre = app.CurrentTrack.Genre;
            string prefix = _templatestatus;
            int count = app.CurrentTrack.PlayedCount;

            string shareText = Properties.Settings.Default.messageToPost;

            // Преобразуем ключевые слова
            shareText = shareText.Replace("{name}", name);
            shareText = shareText.Replace("{artist}", artist);
            shareText = shareText.Replace("{playlist}", playlist);
            shareText = shareText.Replace("{count}", count.ToString());
            shareText = shareText.Replace("{album}", album);
            shareText = shareText.Replace("{genre}", genre);
            shareText = shareText.Replace("{prefix}", prefix);
            Console.WriteLine(shareText);

            _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
            try
            {
                if (_coverArt)
                {
                    _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
                    _wallFactory.Manager.Method("photos.getWallUploadServer");
                    _wallFactory.Manager.Params("uid", id);
                    XmlNode result = _wallFactory.Manager.Execute().GetResponseXml();
                    XmlUtils.UseNode(result);
                    string uploadUrl = XmlUtils.String("upload_url");

                    HttpUploaderFactory uf = new HttpUploaderFactory();
                    NameValueCollection files = new NameValueCollection();
                    files.Add("photo", _imageDirectory);
                    string resp = uf.Upload(uploadUrl, null, files);
                    Console.WriteLine(resp);
                    var apiResponse = JObject.Parse(resp);
                    string server = (string)apiResponse["server"];
                    string photo = (string)apiResponse["photo"];
                    string hash = (string)apiResponse["hash"];

                    _wallFactory.Manager.Method("photos.saveWallPhoto");
                    _wallFactory.Manager.Params("server", server);
                    _wallFactory.Manager.Params("photo", photo);
                    _wallFactory.Manager.Params("hash", hash);
                    XmlNode result2 = _wallFactory.Manager.Execute().GetResponseXml().FirstChild;
                    XmlUtils.UseNode(result2);
                    string photoId = XmlUtils.String("id");
                    Console.WriteLine(photoId);

                    _wallFactory.Manager.Method("wall.post");
                    _wallFactory.Manager.Params("owner_id", id);
                    _wallFactory.Manager.Params("message", shareText);
                    _wallFactory.Manager.Params("attachments", photoId);
                    _wallFactory.Manager.Params("uid", id);
                    _wallFactory.Manager.Execute();

                }
                else
                {
                    _wallFactory = new WallFactory(_manager); // Инициализируем «фабрику» стены
                    _wallFactory.Manager.Method("wall.post");
                    _wallFactory.Manager.Params("owner_id", id);
                    _wallFactory.Manager.Params("message", shareText);
                    Console.WriteLine(_wallFactory.Manager.Execute().ToString());
                }
                actionsStatus.Text = "Опубликовано."; // Уведомляем пользователя об успешности
                actionsStatusTimer.Enabled = true; // Включаем таймер, который каждые n-секунд сбрасывает специальной поле статуса действий
            }
            catch (FormatException)
            {
                actionsStatus.Text = "Введен некорректный ID.";
                actionsStatusTimer.Enabled = true;
            }

            catch (ApiRequestErrorException)
            {
                actionsStatus.Text = "Сайт вернул неверный ответ. Попробуйте изменить текст для публикации.";
                actionsStatusTimer.Enabled = true;
            }
            catch (Exception)
            {
                actionsStatus.Text = "Нет соединения с ВКонтакте. Проверьте работоспособность интернета.";
                actionsStatusTimer.Enabled = true;
            }
        }
Пример #3
0
        // Выполняется при нажатии на кнопку «Порекомендовать»
        private void shareButton_Click(object sender, EventArgs e)
        {
            try
            {
                int id = int.Parse(idInput.Text);
                Share(id);
            }
            catch (FormatException)
            {
                try
                {
                    _wallFactory = new WallFactory(_manager);
                    _wallFactory.Manager.Method("getProfiles");
                    _wallFactory.Manager.Params("uids", idInput.Text);
                    XmlNode result = _wallFactory.Manager.Execute().GetResponseXml().FirstChild;
                    Console.WriteLine(result);
                    XmlUtils.UseNode(result);
                    int id = XmlUtils.Int("uid");
                    Console.WriteLine(id);
                    Share(id);
                }
                catch (Exception)
                {
                    actionsStatus.Text = "Введен некорректный ID, либо нет соединения с ВКонтакте.";
                    actionsStatusTimer.Enabled = true;
                }
            }

            catch (ApiRequestErrorException)
            {
                actionsStatus.Text = "Сайт вернул неверный ответ. Попробуйте изменить текст для публикации.";
                actionsStatusTimer.Enabled = true;
            }
            catch (Exception)
            {
                actionsStatus.Text = "Нет соединения с ВКонтакте. Проверьте работоспособность интернета.";
                actionsStatusTimer.Enabled = true;
            }
        }
Пример #4
0
        public void Auth()
        {
            //чтобы форма с авторизацией не фризила поток, а продолжала свою работу сразу после эвента
            //https://stackoverflow.com/questions/1916095/how-do-i-make-an-eventhandler-run-asynchronously
            //Task.Factory.FromAsync(
            //    (asyncCallback, @object) =>
            //    {
            //        var onConnecting = this.Connecting;
            //        return onConnecting != null ? onConnecting.BeginInvoke(this, GetNetworkName(), asyncCallback, @object) : null;
            //    },
            //    this.Connecting.EndInvoke, null);

            OnConnecting();
            ShareDestionation = ShareDestinations.Messages;
             _sessionManager = new SessionManager(2369574, "status,wall,photos,audio,messages");
            if (_needRelogin)
            {
                _sessionManager.ReLogin();
                _isLogged = false;
                _needRelogin = false;
            }
            if (!_isLogged)
            {

                // Соединяемся с VK API, передаем ему ключ приложения и необходимые нам разрешения

                _sessionInfo = _sessionManager.GetOAuthSession();

                if (_sessionInfo != null)
                {
                    _isLogged = true;
                }
                Auth();
            }

            // Выполняется если пользователь залогинен
            else
            {
                _manager = new ApiManager(_sessionInfo) { Timeout = 10000 };
                _statusFactory = new StatusFactory(_manager);
                _friendsFactory = new FriendsFactory(_manager);
                _audioFactory = new AudioFactory(_manager);
                _messagesFactory = new MessagesFactory(_manager);
                _photosFactory = new PhotosFactory(_manager);
                _wallFactory = new WallFactory(_manager);
                OnConnected(_sessionInfo.UserId.ToString());
            }
        }