Starting using the IHttpSettings which are configurable.

This commit is contained in:
Robin 2018-04-16 22:41:15 +02:00
commit 540eb7cb19
10 changed files with 228 additions and 194 deletions

View file

@ -57,15 +57,20 @@ namespace Greenshot.Addon.Box
private static readonly LogSource Log = new LogSource();
private readonly IBoxConfiguration _boxConfiguration;
private readonly IBoxLanguage _boxLanguage;
private readonly INetworkConfiguration _networkConfiguration;
private readonly OAuth2Settings _oauth2Settings;
private static readonly Uri UploadFileUri = new Uri("https://upload.box.com/api/2.0/files/content");
private static readonly Uri FilesUri = new Uri("https://www.box.com/api/2.0/files/");
[ImportingConstructor]
public BoxDestination(IBoxConfiguration boxConfiguration, IBoxLanguage boxLanguage)
public BoxDestination(
IBoxConfiguration boxConfiguration,
IBoxLanguage boxLanguage,
INetworkConfiguration networkConfiguration)
{
_boxConfiguration = boxConfiguration;
_boxLanguage = boxLanguage;
_networkConfiguration = networkConfiguration;
_oauth2Settings = new OAuth2Settings
{
@ -166,6 +171,8 @@ namespace Greenshot.Addon.Box
string filename = surface.GenerateFilename(CoreConfiguration, _boxConfiguration);
var oauthHttpBehaviour = HttpBehaviour.Current.ShallowClone();
// Use the network settings
oauthHttpBehaviour.HttpSettings = _networkConfiguration;
// Use UploadProgress
if (progress != null)
{

View file

@ -65,7 +65,10 @@ namespace Greenshot.Addon.Dropbox
private IHttpBehaviour _oAuthHttpBehaviour;
[ImportingConstructor]
public DropboxDestination(IDropboxConfiguration dropboxPluginConfiguration, IDropboxLanguage dropboxLanguage)
public DropboxDestination(
IDropboxConfiguration dropboxPluginConfiguration,
IDropboxLanguage dropboxLanguage,
INetworkConfiguration networkConfiguration)
{
_dropboxPluginConfiguration = dropboxPluginConfiguration;
_dropboxLanguage = dropboxLanguage;
@ -89,10 +92,14 @@ namespace Greenshot.Addon.Dropbox
RedirectUrl = "http://localhost:47336",
Token = dropboxPluginConfiguration
};
_oAuthHttpBehaviour = OAuth2HttpBehaviourFactory.Create(_oAuth2Settings);
var httpBehaviour = OAuth2HttpBehaviourFactory.Create(_oAuth2Settings) as IChangeableHttpBehaviour;
_oAuthHttpBehaviour = httpBehaviour;
// Use the default network settings
httpBehaviour.HttpSettings = networkConfiguration;
}
public override Bitmap DisplayIcon
public override Bitmap DisplayIcon
{
get
{

View file

@ -76,7 +76,8 @@ namespace Greenshot.Addon.Flickr
});
[ImportingConstructor]
public FlickrDestination(IFlickrConfiguration flickrConfiguration, IFlickrLanguage flickrLanguage)
public FlickrDestination(IFlickrConfiguration flickrConfiguration,
IFlickrLanguage flickrLanguage, INetworkConfiguration networkConfiguration)
{
_flickrConfiguration = flickrConfiguration;
_flickrLanguage = flickrLanguage;
@ -105,7 +106,9 @@ namespace Greenshot.Addon.Flickr
_oAuthHttpBehaviour = OAuth1HttpBehaviourFactory.Create(_oAuthSettings);
_oAuthHttpBehaviour.ValidateResponseContentType = false;
}
// Use the default network settings
_oAuthHttpBehaviour.HttpSettings = networkConfiguration;
}
public override string Description => _flickrLanguage.UploadMenuItem;

View file

@ -56,13 +56,18 @@ namespace Greenshot.Addon.GooglePhotos
private static readonly LogSource Log = new LogSource();
private readonly IGooglePhotosConfiguration _googlePhotosConfiguration;
private readonly IGooglePhotosLanguage _googlePhotosLanguage;
private readonly INetworkConfiguration _networkConfiguration;
private readonly OAuth2Settings _oAuth2Settings;
[ImportingConstructor]
public GooglePhotosDestination(IGooglePhotosConfiguration googlePhotosConfiguration, IGooglePhotosLanguage googlePhotosLanguage)
public GooglePhotosDestination(
IGooglePhotosConfiguration googlePhotosConfiguration,
IGooglePhotosLanguage googlePhotosLanguage,
INetworkConfiguration networkConfiguration)
{
_googlePhotosConfiguration = googlePhotosConfiguration;
_googlePhotosLanguage = googlePhotosLanguage;
_networkConfiguration = networkConfiguration;
_oAuth2Settings = new OAuth2Settings
{
@ -157,7 +162,7 @@ namespace Greenshot.Addon.GooglePhotos
string filename = surface.GenerateFilename(CoreConfiguration, _googlePhotosConfiguration);
var oAuthHttpBehaviour = HttpBehaviour.Current.ShallowClone();
oAuthHttpBehaviour.HttpSettings = _networkConfiguration;
// Use UploadProgress
if (progress != null)
{

View file

@ -61,7 +61,10 @@ namespace Greenshot.Addon.Imgur
private HttpBehaviour Behaviour { get; }
[ImportingConstructor]
public ImgurApi(IImgurConfiguration imgurConfiguration, ICoreConfiguration coreConfiguration)
public ImgurApi(
IImgurConfiguration imgurConfiguration,
ICoreConfiguration coreConfiguration,
INetworkConfiguration networkConfiguration)
{
_imgurConfiguration = imgurConfiguration;
_coreConfiguration = coreConfiguration;
@ -87,7 +90,8 @@ namespace Greenshot.Addon.Imgur
Behaviour = new HttpBehaviour
{
JsonSerializer = new JsonNetJsonSerializer(),
HttpSettings = networkConfiguration,
JsonSerializer = new JsonNetJsonSerializer(),
OnHttpClientCreated = httpClient =>
{
httpClient.SetAuthorization("Client-ID", _imgurConfiguration.ClientId);

View file

@ -65,13 +65,17 @@ namespace Greenshot.Addon.Jira
private DateTimeOffset _loggedInTime = DateTimeOffset.MinValue;
[ImportingConstructor]
public JiraConnector(IJiraConfiguration jiraConfiguration, JiraMonitor jiraMonitor, ICoreConfiguration coreConfiguration)
public JiraConnector(
IJiraConfiguration jiraConfiguration,
JiraMonitor jiraMonitor,
ICoreConfiguration coreConfiguration,
INetworkConfiguration networkConfiguration)
{
jiraConfiguration.Url = jiraConfiguration.Url.Replace(DefaultPostfix, "");
_jiraConfiguration = jiraConfiguration;
_jiraMonitor = jiraMonitor;
_coreConfiguration = coreConfiguration;
_jiraClient = JiraClient.Create(new Uri(jiraConfiguration.Url));
_jiraClient = JiraClient.Create(new Uri(jiraConfiguration.Url), networkConfiguration);
}
public Bitmap FavIcon { get; private set; }

View file

@ -66,13 +66,13 @@ namespace Greenshot.Addon.OneDrive
private static readonly Uri OneDriveUri = GraphUri.AppendSegments("v1.0", "me", "drive");
private static readonly Uri OAuth2Uri = new Uri("https://login.microsoftonline.com").AppendSegments("common", "oauth2", "v2.0");
private static readonly HttpBehaviour OneDriveHttpBehaviour = new HttpBehaviour
{
JsonSerializer = new JsonNetJsonSerializer()
};
private readonly HttpBehaviour _oneDriveHttpBehaviour;
[ImportingConstructor]
public OneDriveDestination(IOneDriveConfiguration oneDriveConfiguration, IOneDriveLanguage oneDriveLanguage)
public OneDriveDestination(
IOneDriveConfiguration oneDriveConfiguration,
IOneDriveLanguage oneDriveLanguage,
INetworkConfiguration networkConfiguration)
{
_oneDriveConfiguration = oneDriveConfiguration;
_oneDriveLanguage = oneDriveLanguage;
@ -96,6 +96,11 @@ namespace Greenshot.Addon.OneDrive
AuthorizeMode = AuthorizeModes.EmbeddedBrowser,
Token = oneDriveConfiguration
};
_oneDriveHttpBehaviour = new HttpBehaviour
{
HttpSettings = networkConfiguration,
JsonSerializer = new JsonNetJsonSerializer()
};
}
public override string Description => _oneDriveLanguage.UploadMenuItem;
@ -196,7 +201,7 @@ namespace Greenshot.Addon.OneDrive
{
var filename = surfaceToUpload.GenerateFilename(CoreConfiguration, _oneDriveConfiguration);
var uploadUri = OneDriveUri.AppendSegments("root:", "Screenshots", filename + ":", "content");
var localBehaviour = OneDriveHttpBehaviour.ShallowClone();
var localBehaviour = _oneDriveHttpBehaviour.ShallowClone();
if (progress != null)
{
localBehaviour.UploadProgress = percent => { UiContext.RunOn(() => progress.Report((int)(percent * 100)), token); };
@ -219,7 +224,7 @@ namespace Greenshot.Addon.OneDrive
string imageId, OneDriveLinkType oneDriveLinkType)
{
var sharableLink = OneDriveUri.AppendSegments("items", imageId, "createLink");
var localBehaviour = OneDriveHttpBehaviour.ShallowClone();
var localBehaviour = _oneDriveHttpBehaviour.ShallowClone();
var oauthHttpBehaviour = OAuth2HttpBehaviourFactory.Create(oAuth2Settings, localBehaviour);
oauthHttpBehaviour.MakeCurrent();
var body = new OneDriveGetLinkRequest();

View file

@ -43,7 +43,6 @@ using Greenshot.Addons.Addons;
using Greenshot.Addons.Core;
using Greenshot.Addons.Extensions;
using Greenshot.Addons.Interfaces;
using Greenshot.Addons.Interfaces.Plugin;
using Greenshot.Gfx;
#endregion
@ -61,6 +60,7 @@ namespace Greenshot.Addon.Photobucket
private readonly string _albumPath;
private readonly IPhotobucketConfiguration _photobucketConfiguration;
private readonly IPhotobucketLanguage _photobucketLanguage;
private readonly INetworkConfiguration _networkConfiguration;
private readonly OAuth1Settings _oAuthSettings;
private readonly OAuth1HttpBehaviour _oAuthHttpBehaviour;
private IList<string> _albumsCache;
@ -71,12 +71,16 @@ namespace Greenshot.Addon.Photobucket
/// <param name="photobucketConfiguration">IPhotobucketConfiguration</param>
/// <param name="photobucketLanguage">IPhotobucketLanguage</param>
[ImportingConstructor]
public PhotobucketDestination(IPhotobucketConfiguration photobucketConfiguration, IPhotobucketLanguage photobucketLanguage)
public PhotobucketDestination(
IPhotobucketConfiguration photobucketConfiguration,
IPhotobucketLanguage photobucketLanguage,
INetworkConfiguration networkConfiguration)
{
_photobucketConfiguration = photobucketConfiguration;
_photobucketLanguage = photobucketLanguage;
_networkConfiguration = networkConfiguration;
_oAuthSettings = new OAuth1Settings
_oAuthSettings = new OAuth1Settings
{
Token = photobucketConfiguration,
ClientId = photobucketConfiguration.ClientId,
@ -99,6 +103,7 @@ namespace Greenshot.Addon.Photobucket
CheckVerifier = false
};
var oAuthHttpBehaviour = OAuth1HttpBehaviourFactory.Create(_oAuthSettings);
oAuthHttpBehaviour.HttpSettings = networkConfiguration;
// Store the leftover values
oAuthHttpBehaviour.OnAccessTokenValues = values =>
{
@ -140,7 +145,7 @@ namespace Greenshot.Addon.Photobucket
/// <param name="photobucketConfiguration">IPhotobucketConfiguration</param>
/// <param name="photobucketLanguage">IPhotobucketLanguage</param>
/// <param name="albumPath">path to the album, null for default</param>
public PhotobucketDestination(IPhotobucketConfiguration photobucketConfiguration, IPhotobucketLanguage photobucketLanguage, string albumPath) : this (photobucketConfiguration, photobucketLanguage)
public PhotobucketDestination(IPhotobucketConfiguration photobucketConfiguration, IPhotobucketLanguage photobucketLanguage, INetworkConfiguration networkConfiguration, string albumPath) : this (photobucketConfiguration, photobucketLanguage, networkConfiguration)
{
_photobucketConfiguration = photobucketConfiguration;
_albumPath = albumPath;
@ -193,7 +198,7 @@ namespace Greenshot.Addon.Photobucket
}
foreach (var album in albums)
{
yield return new PhotobucketDestination(_photobucketConfiguration, _photobucketLanguage, album);
yield return new PhotobucketDestination(_photobucketConfiguration, _photobucketLanguage, _networkConfiguration, album);
}
}

View file

@ -23,16 +23,10 @@
#region Usings
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using Dapplo.HttpExtensions;
using Dapplo.Ini;
using Dapplo.InterfaceImpl.Extensions;
using Dapplo.Windows.Common.Structs;
using Greenshot.Addons.Core.Enums;
using Greenshot.Addons.Interfaces;
#endregion