mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-14 02:37:08 -07:00
Twatter has been added, Notifications cannot be saved (yet), nor will they send, but the framework for a user to setup Twitter (Authorize NzbDrone) is in place.
This commit is contained in:
parent
f5b5aea62d
commit
a2735d7716
27 changed files with 25605 additions and 4 deletions
112
NzbDrone.Core/Providers/TwitterProvider.cs
Normal file
112
NzbDrone.Core/Providers/TwitterProvider.cs
Normal file
|
@ -0,0 +1,112 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using Ninject;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Model.Twitter;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
using Twitterizer;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class TwitterProvider
|
||||
{
|
||||
private readonly ConfigProvider _configProvider;
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
private const string ConsumerKey = "umKU6jBWpFbHTuqQbW2VlQ";
|
||||
private const string ConsumerSecret = "e30OXkI6qrZWS35hbUUnrQQ8J2R9XNpccQNWAVK10";
|
||||
|
||||
[Inject]
|
||||
public TwitterProvider(ConfigProvider configProvider)
|
||||
{
|
||||
_configProvider = configProvider;
|
||||
}
|
||||
|
||||
public virtual TwitterAuthorizationModel GetAuthorization()
|
||||
{
|
||||
try
|
||||
{
|
||||
OAuthTokenResponse requestToken = OAuthUtility.GetRequestToken(ConsumerKey, ConsumerSecret, "oob", null);
|
||||
Uri authorizationUri = OAuthUtility.BuildAuthorizationUri(requestToken.Token);
|
||||
|
||||
return new TwitterAuthorizationModel
|
||||
{
|
||||
Token = requestToken.Token,
|
||||
Url = authorizationUri.ToString()
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Warn("Failed to get Twitter authorization URL.");
|
||||
Logger.TraceException(ex.Message, ex);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public virtual bool GetAndSaveAccessToken(string authToken, string verifier)
|
||||
{
|
||||
try
|
||||
{
|
||||
Logger.Debug("Attempting to get the AccessToken from Twitter");
|
||||
|
||||
OAuthTokenResponse accessToken = OAuthUtility.GetAccessToken(ConsumerKey, ConsumerSecret, authToken, verifier);
|
||||
|
||||
_configProvider.TwitterAccessToken = accessToken.Token;
|
||||
_configProvider.TwitterAccessTokenSecret = accessToken.TokenSecret;
|
||||
|
||||
//Send a tweet to test!
|
||||
SendTweet("I have just setup tweet notifications for NzbDrone!");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.TraceException(ex.Message, ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual bool SendTweet(string message)
|
||||
{
|
||||
try
|
||||
{
|
||||
Logger.Trace("Sending status update to twitter: {0}", message);
|
||||
|
||||
var accessToken = _configProvider.TwitterAccessToken;
|
||||
var accessTokenSecret = _configProvider.TwitterAccessTokenSecret;
|
||||
|
||||
//If the access token or access token secret are not configured, log an error and return
|
||||
if (String.IsNullOrWhiteSpace(accessToken) || String.IsNullOrWhiteSpace(accessTokenSecret))
|
||||
{
|
||||
Logger.Warn("Twitter Setup is incomplete, please check your settings");
|
||||
return false;
|
||||
}
|
||||
|
||||
var token = new OAuthTokens
|
||||
{
|
||||
AccessToken = accessToken,
|
||||
AccessTokenSecret = accessTokenSecret,
|
||||
ConsumerKey = ConsumerKey,
|
||||
ConsumerSecret = ConsumerSecret
|
||||
};
|
||||
|
||||
TwitterStatus.Update(token, message + " #NzbDrone");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.DebugException(ex.Message, ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue