Exemple #1
0
        public async Task Send(string message, Uri link, [NotNull] IReadOnlyCollection <string> tags)
        {
            var tagLine = string.Join(" ", _defaultTags.ToList().Union(tags));

            var maxMessageLength = MaxTweetLength - tagLine.Length;

            var text = $"{Substring(message, maxMessageLength)} {tagLine} {link}";

            try
            {
                _semaphore.WaitOne();

                Auth.SetUserCredentials(_consumerKey, _consumerSecret, _accessToken, _accessTokenSecret);

                var publishTweetParameters = Tweet.CreatePublishTweetParameters(text);
                var tweet = Tweet.PublishTweet(publishTweetParameters);

                _logger.Write(LogEventLevel.Information, $"Message was sent to Twitter channel `{_name}`: `{text}`");
            }
            catch (Exception ex)
            {
                _logger.Write(LogEventLevel.Error, "Error in TwitterCrosspostService.Send", ex);
            }
            finally
            {
                _semaphore.Release();
            }
        }