Example #1
0
        /// <summary>
        ///     Create the JiraApi, using OAuth 1 for the communication, here the HttpClient is configured
        /// </summary>
        /// <param name="baseUri">Base URL, e.g. https://yourjiraserver</param>
        /// <param name="jiraOAuthSettings">JiraOAuthSettings</param>
        /// <param name="httpSettings">IHttpSettings or null for default</param>
        public static IJiraClient Create(Uri baseUri, JiraOAuthSettings jiraOAuthSettings, IHttpSettings httpSettings = null)
        {
            JiraClient client       = JiraClient.Create(baseUri, httpSettings) as JiraClient;
            var        jiraOAuthUri = client.JiraBaseUri.AppendSegments("plugins", "servlet", "oauth");

            var oAuthSettings = new OAuth1Settings
            {
                TokenUrl          = jiraOAuthUri.AppendSegments("request-token"),
                TokenMethod       = HttpMethod.Post,
                AccessTokenUrl    = jiraOAuthUri.AppendSegments("access-token"),
                AccessTokenMethod = HttpMethod.Post,
                CheckVerifier     = false,
                SignatureType     = OAuth1SignatureTypes.RsaSha1,
                Token             = jiraOAuthSettings.Token,
                ClientId          = jiraOAuthSettings.ConsumerKey,
                CloudServiceName  = jiraOAuthSettings.CloudServiceName,
                RsaSha1Provider   = jiraOAuthSettings.RsaSha1Provider,
                AuthorizeMode     = jiraOAuthSettings.AuthorizeMode,
                AuthorizationUri  = jiraOAuthUri.AppendSegments("authorize")
                                    .ExtendQuery(new Dictionary <string, string>
                {
                    {
                        OAuth1Parameters.Token.EnumValueOf(), "{RequestToken}"
                    },
                    {
                        OAuth1Parameters.Callback.EnumValueOf(), "{RedirectUrl}"
                    }
                })
            };

            // Configure the OAuth1Settings

            client.Behaviour = client.ConfigureBehaviour(OAuth1HttpBehaviourFactory.Create(oAuthSettings), httpSettings);
            return(client);
        }
        private ConfluenceOAuthClient(Uri baseUri, ConfluenceOAuthSettings confluenceOAuthSettings, IHttpSettings httpSettings = null) : base(baseUri, httpSettings)
        {
            var confluenceOAuthUri = ConfluenceUri.AppendSegments("plugins", "servlet", "oauth");

            var oAuthSettings = new OAuth1Settings
            {
                TokenUrl          = confluenceOAuthUri.AppendSegments("request-token"),
                TokenMethod       = HttpMethod.Post,
                AccessTokenUrl    = confluenceOAuthUri.AppendSegments("access-token"),
                AccessTokenMethod = HttpMethod.Post,
                CheckVerifier     = false,
                SignatureType     = OAuth1SignatureTypes.RsaSha1,
                // According to <a href="https://community.atlassian.com/t5/Questions/Confluence-Oauth-Authentication/qaq-p/331326#M51385">here</a>
                // the OAuth arguments need to be passed in the query
                SignatureTransport = OAuth1SignatureTransports.QueryParameters,
                Token            = confluenceOAuthSettings.Token,
                ClientId         = confluenceOAuthSettings.ConsumerKey,
                CloudServiceName = confluenceOAuthSettings.CloudServiceName,
                RsaSha1Provider  = confluenceOAuthSettings.RsaSha1Provider,
                AuthorizeMode    = confluenceOAuthSettings.AuthorizeMode,
                AuthorizationUri = confluenceOAuthUri.AppendSegments("authorize")
                                   .ExtendQuery(new Dictionary <string, string>
                {
                    { OAuth1Parameters.Token.EnumValueOf(), "{RequestToken}" },
                    { OAuth1Parameters.Callback.EnumValueOf(), "{RedirectUrl}" }
                })
            };

            // Configure the OAuth1Settings
            Behaviour = ConfigureBehaviour(OAuth1HttpBehaviourFactory.Create(oAuthSettings), httpSettings);
        }
Example #3
0
        public FlickrDestination(IFlickrConfiguration flickrConfiguration, IFlickrLanguage flickrLanguage)
        {
            _flickrConfiguration = flickrConfiguration;
            _flickrLanguage      = flickrLanguage;

            _oAuthSettings = new OAuth1Settings
            {
                Token             = flickrConfiguration,
                ClientId          = flickrConfiguration.ClientId,
                ClientSecret      = flickrConfiguration.ClientSecret,
                CloudServiceName  = "Flickr",
                AuthorizeMode     = AuthorizeModes.LocalhostServer,
                TokenUrl          = FlickrOAuthUri.AppendSegments("request_token"),
                TokenMethod       = HttpMethod.Post,
                AccessTokenUrl    = FlickrOAuthUri.AppendSegments("access_token"),
                AccessTokenMethod = HttpMethod.Post,
                AuthorizationUri  = FlickrOAuthUri.AppendSegments("authorize")
                                    .ExtendQuery(new Dictionary <string, string>
                {
                    { OAuth1Parameters.Token.EnumValueOf(), "{RequestToken}" },
                    { OAuth1Parameters.Callback.EnumValueOf(), "{RedirectUrl}" }
                }),
                // Create a localhost redirect uri, prefer port 47336, but use the first free found
                RedirectUrl = new[] { 47336, 0 }.CreateLocalHostUri().AbsoluteUri,
                CheckVerifier = true
            };

            _oAuthHttpBehaviour = OAuth1HttpBehaviourFactory.Create(_oAuthSettings);
            _oAuthHttpBehaviour.ValidateResponseContentType = false;
        }
Example #4
0
        public OAuthTests(ITestOutputHelper testOutputHelper)
        {
            LogSettings.RegisterDefaultLogger <XUnitLogger>(LogLevels.Verbose, testOutputHelper);
            var oAuthSettings = new OAuth1Settings
            {
                ClientId          = "key",
                ClientSecret      = "secret",
                AuthorizeMode     = AuthorizeModes.TestPassThrough,
                TokenUrl          = OAuthTestServerUri.AppendSegments("request_token.php"),
                TokenMethod       = HttpMethod.Post,
                AccessTokenUrl    = OAuthTestServerUri.AppendSegments("access_token.php"),
                AccessTokenMethod = HttpMethod.Post,
                CheckVerifier     = false
            };

            _oAuthHttpBehaviour = OAuth1HttpBehaviourFactory.Create(oAuthSettings);
        }
Example #5
0
        public FlickrDestination(
            IFlickrConfiguration flickrConfiguration,
            IFlickrLanguage flickrLanguage,
            INetworkConfiguration networkConfiguration,
            IResourceProvider resourceProvider,
            ICoreConfiguration coreConfiguration,
            IGreenshotLanguage greenshotLanguage,
            Func <CancellationTokenSource, Owned <PleaseWaitForm> > pleaseWaitFormFactory
            ) : base(coreConfiguration, greenshotLanguage)
        {
            _flickrConfiguration   = flickrConfiguration;
            _flickrLanguage        = flickrLanguage;
            _resourceProvider      = resourceProvider;
            _pleaseWaitFormFactory = pleaseWaitFormFactory;

            _oAuthSettings = new OAuth1Settings
            {
                Token             = flickrConfiguration,
                ClientId          = flickrConfiguration.ClientId,
                ClientSecret      = flickrConfiguration.ClientSecret,
                CloudServiceName  = "Flickr",
                AuthorizeMode     = AuthorizeModes.LocalhostServer,
                TokenUrl          = FlickrOAuthUri.AppendSegments("request_token"),
                TokenMethod       = HttpMethod.Post,
                AccessTokenUrl    = FlickrOAuthUri.AppendSegments("access_token"),
                AccessTokenMethod = HttpMethod.Post,
                AuthorizationUri  = FlickrOAuthUri.AppendSegments("authorize")
                                    .ExtendQuery(new Dictionary <string, string>
                {
                    { OAuth1Parameters.Token.EnumValueOf(), "{RequestToken}" },
                    { OAuth1Parameters.Callback.EnumValueOf(), "{RedirectUrl}" }
                }),
                // Create a localhost redirect uri, prefer port 47336, but use the first free found
                RedirectUrl = new[] { 47336, 0 }.CreateLocalHostUri().AbsoluteUri,
                CheckVerifier = true
            };

            _oAuthHttpBehaviour = OAuth1HttpBehaviourFactory.Create(_oAuthSettings);
            _oAuthHttpBehaviour.ValidateResponseContentType = false;
            // Use the default network settings
            _oAuthHttpBehaviour.HttpSettings = networkConfiguration;
        }
        public PhotobucketDestination(IPhotobucketConfiguration photobucketConfiguration, IPhotobucketLanguage photobucketLanguage)
        {
            _photobucketConfiguration = photobucketConfiguration;
            _photobucketLanguage      = photobucketLanguage;

            _oAuthSettings = new OAuth1Settings
            {
                Token                 = photobucketConfiguration,
                ClientId              = photobucketConfiguration.ClientId,
                ClientSecret          = photobucketConfiguration.ClientSecret,
                CloudServiceName      = "Photobucket",
                EmbeddedBrowserWidth  = 1010,
                EmbeddedBrowserHeight = 400,
                AuthorizeMode         = AuthorizeModes.EmbeddedBrowser,
                TokenUrl              = PhotobucketApiUri.AppendSegments("login", "request"),
                TokenMethod           = HttpMethod.Post,
                AccessTokenUrl        = PhotobucketApiUri.AppendSegments("login", "access"),
                AccessTokenMethod     = HttpMethod.Post,
                AuthorizationUri      = PhotobucketApiUri.AppendSegments("apilogin", "login")
                                        .ExtendQuery(new Dictionary <string, string>
                {
                    { OAuth1Parameters.Token.EnumValueOf(), "{RequestToken}" },
                    { OAuth1Parameters.Callback.EnumValueOf(), "{RedirectUrl}" }
                }),
                RedirectUrl   = "http://getgreenshot.org",
                CheckVerifier = false
            };
            var oAuthHttpBehaviour = OAuth1HttpBehaviourFactory.Create(_oAuthSettings);

            // Store the leftover values
            oAuthHttpBehaviour.OnAccessTokenValues = values =>
            {
                if (values != null && values.ContainsKey("subdomain"))
                {
                    photobucketConfiguration.SubDomain = values["subdomain"];
                }
                if (values != null && values.ContainsKey("username"))
                {
                    photobucketConfiguration.Username = values["username"];
                }
            };

            oAuthHttpBehaviour.BeforeSend = httpRequestMessage =>
            {
                if (photobucketConfiguration.SubDomain == null)
                {
                    return;
                }

                var uriBuilder = new UriBuilder(httpRequestMessage.RequestUri)
                {
                    Host = photobucketConfiguration.SubDomain
                };
                httpRequestMessage.RequestUri = uriBuilder.Uri;
            };
            // Reset the OAuth token if there is no subdomain, without this we need to request it again.
            if (photobucketConfiguration.SubDomain == null || photobucketConfiguration.Username == null)
            {
                photobucketConfiguration.OAuthToken       = null;
                photobucketConfiguration.OAuthTokenSecret = null;
            }
            _oAuthHttpBehaviour = oAuthHttpBehaviour;
        }