/* * Логика программы написана достаточно абстрактно, я думаю, её можно применить и к различным соц. сетям. * Создаем объект для авторизации, объект конфига, авторизуемся, далее создаем объекты обработчика консольных команд, * получателя данных из соцсети, писателя записей и публикатора записей, и ,наконец, выполняем необходимые команды. * Обработка ошибок в блоке while, чтобы увидеть ошибку и дальше вводить команды. * * В основе лежит абстрактная фабрика, которая создает все необходимые объекты. * Описания абстрактных объектов в их интерфейсах, а для конкретных объектов в их реализациях */ public static void Main(string[] args) { Interfaces.ISocialFactory social = new TwitterFactory(); Interfaces.IAuthConfig config = social.CreateConfig(); Interfaces.IAuth authenticator = social.CreateAuthenticator(); authenticator.Auth(config); Interfaces.IDataHandler handler = social.CreateDataHandler(); Interfaces.IReceiver receiver = social.CreateReceiver(); Interfaces.IWriter writer = social.CreateWriter(); Interfaces.IPublisher publisher = social.CreatePublisher(); Console.WriteLine(handler.Info()); string inputData = Console.ReadLine(); while (!inputData.Equals("")) { try { string[] handledData = handler.HandleData(inputData); receiver.Receive(handledData); writer.WritePosts(); publisher.PublishPosts(); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.WriteLine(handler.Info()); inputData = Console.ReadLine(); } }
/* * Конкретный авторизатор для соц. сети Twitter'a */ public void Auth(Interfaces.IAuthConfig config) { Tweetinvi.Auth.SetUserCredentials(config.ConsumerKey, config.ConsumerSecret, config.AccessToken, config.AccessTokenSecret); var authenticatedUser = User.GetAuthenticatedUser(); if (authenticatedUser == null) { // Необходимо прекратить выполнение программы, если не удалось авторизоваться throw new Exception("Пользователь не авторизован. Проверьте правильность авторизационных данных."); } }