Ejemplo n.º 1
0
        public IVpdbClient Initialize()
        {
            // setup rest client
            var handler = new AuthenticatedHttpClientHandler(_settingsManager.Settings.ApiKey, _settingsManager.Settings.AuthUser, _settingsManager.Settings.AuthPass);
            // todo enable gzip in api!!
            // AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate

            var client = new HttpClient(handler)
            {
                BaseAddress = new Uri(_settingsManager.Settings.Endpoint)
            };
            var settings = new RefitSettings {
                JsonSerializerSettings = new JsonSerializerSettings {
                    ContractResolver = new SnakeCasePropertyNamesContractResolver()
                }
            };

            Api = RestService.For <IVpdbApi>(client, settings);

            // subscribe to pusher if profile allows
            _settingsManager.ApiAuthenticated.Subscribe(user => {
                if (user != null && user.Permissions.Messages?.Contains("receive") == true)
                {
                    SetupPusher(user);
                }
                else
                {
                    _logger.Debug("Pusher disabled due to insufficient permissions.");
                }
            }, exception => HandleApiError(exception, "subscribing to ApiAuthenticated for Pusher"));

            return(this);
        }
Ejemplo n.º 2
0
        public MaskedEmailsClient(Endpoints endpoints, NetworkCredential credentials)
        {
            var handler = new AuthenticatedHttpClientHandler(endpoints, credentials);

            client_ = RestService.For <IMaskedEmailsApi>(new HttpClient(handler)
            {
                BaseAddress = new Uri(endpoints?.Api ?? Endpoint),
            });
        }
Ejemplo n.º 3
0
        protected HttpMessageHandler GetAuthenticatedMessageHandler()
        {
            var signInService = Mvx.IoCProvider.Resolve <ISignInService>();
            var handler       = new AuthenticatedHttpClientHandler(signInService.GetToken)
            {
                AllowAutoRedirect = false
            };

            return(handler);
        }
Ejemplo n.º 4
0
        public IApi Create(string authUserToken, string authAccessToken, string endpointAddress)
        {
            var httpClientHandler     = new AuthenticatedHttpClientHandler(authUserToken, authAccessToken);
            var messageLoggingHandler = new LoggingHandler(httpClientHandler);

            var httpClient = new HttpClient(messageLoggingHandler)
            {
                BaseAddress = new Uri(endpointAddress)
            };

            return(RestService.For <IApi>(httpClient));
        }
Ejemplo n.º 5
0
        public T GetClient <T>()
        {
            AuthenticatedHttpClientHandler httpClientHandler = new AuthenticatedHttpClientHandler(GetToken);

#if DEBUG
            httpClientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return(true); };
#endif
            return(RestService.For <T>(new HttpClient(httpClientHandler)
            {
                BaseAddress = new Uri(_apiSettings.BaseUrl)
            }));
        }
Ejemplo n.º 6
0
        private HttpClient GetHttpClient(bool authenticated = true)
        {
            var handler = new HttpClientHandler();

            if (authenticated)
            {
                Guard.IsNotNull(Token, nameof(Token));
                handler = new AuthenticatedHttpClientHandler(Token);
            }

            return(new HttpClient(handler)
            {
                BaseAddress = new Uri(BaseUrl),
            });
        }
Ejemplo n.º 7
0
        public static HttpClient GetHttpClient(string instanceUrl, string consumerKey)
        {
            AuthenticatedHttpClientHandler authenticatedHttpClientHandler = new AuthenticatedHttpClientHandler(consumerKey);
            HttpClient httpClient = new HttpClient(authenticatedHttpClientHandler)
            {
                BaseAddress = new Uri(instanceUrl)
            };

            //if ( !string.IsNullOrWhiteSpace( mediaType ) )
            //{httpClient.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue( mediaType ) );
            //}

            //httpClient.Timeout = TimeSpan.FromSeconds( timeoutSeconds );

            return(httpClient);
        }
        public void OnLogin()
        {
            var handler = new AuthenticatedHttpClientHandler("eZclcV**uSVviAazkVJ6ug((", () => Authentication.Token)
            {
                AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
            };

            // TODO: Add message handler to add access token
            HttpClient = new HttpClient(handler)
            {
                BaseAddress = new Uri("https://api.stackexchange.com/2.2"),
            };

            Search = new SearchViewModel(this);
            Locator.CurrentMutable.RegisterConstant(Search, typeof(ISearchViewModel));
        }
Ejemplo n.º 9
0
        public static DelegatingHandler GetDDYDelegatingHandler(IServiceProvider provider)
        {
            var innerHandler = new AuthenticatedHttpClientHandler(httpRequestMessage =>
            {
                AddRequiredHeaders(httpRequestMessage);

                var options = provider.GetService <IOptions <DadayunClientOptions> >().Value;
                if (options != null && !string.IsNullOrWhiteSpace(options.AccessKeyId) && !string.IsNullOrWhiteSpace(options.AccessSecret))
                {
                    var signer = new DDYSigner();
                    signer.Sign(httpRequestMessage, options.AccessKeyId, options.AccessSecret);
                }
                return(Task.CompletedTask);
            });

            return(innerHandler);
        }
Ejemplo n.º 10
0
        private static HttpClient CreateHttpClient(Uri baseAddr, Func <Task <string> > authGetter)
        {
            HttpMessageHandler inner = new HttpClientHandler {
                AutomaticDecompression = DecompressionMethods.GZip
                                         | DecompressionMethods.Deflate
            };

            if (authGetter != null)
            {
                inner = new AuthenticatedHttpClientHandler(authGetter, inner);
            }
            var httpClient = new HttpClient(inner);

            httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate");
            httpClient.DefaultRequestHeaders
            .Accept
            .Add(new MediaTypeWithQualityHeaderValue("application/json"));
            httpClient.BaseAddress = baseAddr;
            return(httpClient);
        }
Ejemplo n.º 11
0
        public async Task Can_Retrieve_User_oAuth_Token()
        {
            var mockHttp = new MockHttpMessageHandler();

            mockHttp.Expect("/")
            .WithHeaders("Authorization", "Bearer zX8UgaHFfOQcHqew4KMbWzo9fQ2fSbdCwMhgwl7hALL2lm2APy9juXh6tJoweort6CVZq5vZ8CQYyGlJqlJ-hz_LyAQChYHhTxIk2N62B9i47vIetAFOYJN5nQbPC8v2qS8fA8zZ1N9UJxbCHiPQhJIQBgg0kZkauHcRdinZP9TJcJZCdFQPCEh1iSCVk9K-NmA6j_hGoqs3EhKuNBjazYb6tiINUgpWJ8gvlPRlqFODL0MNUDqVJc0hMHqbyaacrfcfJy0o3-59SnpK2OMqHqB_DNe5-2oAOXbFG7-j8CfQtpM7SIzb1nmQahyOjpTkVEmkYCOsr2sKGUDz0N7cAiWHvzjJfnog1nJM8pn-dF22N1x9TuoFd_jfuUQcOkgexQllJiZAA2dd_P7o-EqtkU4NKr-X3JNHPxd00PwcZ40Uzt53PmJA8jdnh25GYlugogvCsNGzYEwJo31VB-1pnHmckV_sK8IpFc9LM8zN40WIEFM4TGvRX4XBEX9ntSu0Rke43IBZHVULPEp0nTquI_amZ7zUGiDewRJTkEFCT8FLnuWMQ09q5lO0BbQ49G1Yp88Uy3XJfVd1NPTiHQfe1mm-hiHhVGHINna-UADE4Iis8tuKFNxj6zZkqXj2k8iaQRrKPZ7zfb8yWQr2-O9lCoqk8mL2q7jGXuJr93tQlW8f8B8FIyc9rF5bMAskyQK4SRezVpWgwYi_w6oktAlvb5UqeZgS2xSKcgadtr1_dMo")
            .Respond(HttpStatusCode.OK);

            var authMockHttp = new MockHttpMessageHandler();

            authMockHttp.Expect("/oauth/token")
            .WithFormData("grant_type", "password")
            .WithFormData("username", "*****@*****.**")
            .WithFormData("password", "}8N7aOE8#@")
            .Respond("application/json", OAuthJson.GetToken);

            var configuration = new PasswordBasedConfiguration("myProject", "*****@*****.**", "}8N7aOE8#@");
            var apiClient     = new HttpClient(authMockHttp)
            {
                BaseAddress = new Uri(Constants.Urls.BaseApiUrl)
            };
            var authenticationService = new AuthenticationService(configuration, apiHttpClient: apiClient);

            var handler = new AuthenticatedHttpClientHandler(
                new UserPasswordAccessTokenResolver(configuration.Username, configuration.Password, authenticationService),
                mockHttp
                );

            var client = new HttpClient(handler)
            {
                BaseAddress = new Uri(Constants.Urls.BaseCdnUrl)
            };
            var service = RestService.For <TestEndpoints>(client);

            await service.Get();

            mockHttp.VerifyNoOutstandingExpectation();
        }
Ejemplo n.º 12
0
        public async Task <Dictionary <string, string> > Validate(Settings settings, IMessageManager messageManager = null)
        {
            _logger.Info("Validating settings...");
            var errors = new Dictionary <string, string>();

            // pinballx folder
            if (string.IsNullOrEmpty(settings.PinballXFolder))
            {
                errors.Add("PbxFolder", "The folder where PinballX is installed must be set.");
            }
            else if (!Directory.Exists(settings.PinballXFolder) || !Directory.Exists(settings.PinballXFolder + @"\Config"))
            {
                errors.Add("PbxFolder", "The folder \"" + settings.PinballXFolder + "\" is not a valid PinballX folder.");
            }

            // network params
            if (string.IsNullOrEmpty(settings.ApiKey))
            {
                errors.Add("ApiKey", "The API key is mandatory and needed in order to communicate with VPDB.");
            }
            if (string.IsNullOrEmpty(settings.Endpoint))
            {
                errors.Add("Endpoint", "The endpoint is mandatory. In doubt, put \"https://vpdb.io\".");
            }

            // xml file name
            var badFilenameChars = new Regex("[\\\\" + Regex.Escape(new string(Path.GetInvalidPathChars())) + "]");
            var filename         = settings.XmlFile[Platform.VP];

            if (string.IsNullOrWhiteSpace(filename))
            {
                errors.Add("XmlFileVP", "You need to provide a file name for the XML database.");
            }
            else if (badFilenameChars.IsMatch(filename))
            {
                errors.Add("XmlFileVP", "That doesn't look like a valid file name!");
            }
            else if (filename.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
            {
                errors.Add("XmlFileVP", "No need to provide the .xml extension, we'll do that!");
            }

            // test params if set
            if (!string.IsNullOrEmpty(settings.ApiKey) && !string.IsNullOrEmpty(settings.Endpoint))
            {
                try {
                    var handler = new AuthenticatedHttpClientHandler(settings.ApiKey, settings.AuthUser, settings.AuthPass);
                    var client  = new HttpClient(handler)
                    {
                        BaseAddress = new Uri(settings.Endpoint)
                    };
                    var s = new RefitSettings {
                        JsonSerializerSettings = new JsonSerializerSettings {
                            ContractResolver = new SnakeCasePropertyNamesContractResolver()
                        }
                    };
                    var api  = RestService.For <IVpdbApi>(client, s);
                    var user = await api.GetProfile().SubscribeOn(Scheduler.Default).ToTask();

                    _logger.Info("Logged as <{0}>", user.Email);
                    OnValidationResult(user);
                } catch (ApiException e) {
                    HandleApiError(errors, e);
                    OnValidationResult(null);
                    messageManager?.LogApiError(e, "Error while logging in");
                } catch (Exception e) {
                    errors.Add("ApiKey", e.Message);
                    OnValidationResult(null);
                    messageManager?.LogError(e, "Error while logging in");
                }
            }
            settings.IsValidated = errors.Count == 0;

            return(errors);
        }
        public void DefaultHandlerIsHttpClientHandler()
        {
            var handler = new AuthenticatedHttpClientHandler((() => Task.FromResult(string.Empty)));

            Assert.IsType <HttpClientHandler>(handler.InnerHandler);
        }
Ejemplo n.º 14
0
        public ViewModelLocator()
        {
            if (IsAppDependenciesRegistered())
            {
                return;
            }

            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

            SimpleIoc.Default.Register(SetupLogging);
            SimpleIoc.Default.Register <IMessenger, Messenger>();
            SimpleIoc.Default.Register <IDispatcherHelper, DispatcherHelperEx>();
            SimpleIoc.Default.Register <ICustomDialogService, CustomDialogService>();
            SimpleIoc.Default.Register(SetupNavigation);
            SimpleIoc.Default.Register <IUserCredentialService, UserCredentialService>();
            SimpleIoc.Default.Register(SetupMapper);

            SimpleIoc.Default.Register <AuthorizationHandler>();

            SimpleIoc.Default.Register <IApplicationSettingsServiceBase, ApplicationSettingsServiceBase>();
            SimpleIoc.Default.Register <IAppSettingsService, AppSettingsService>();
            SimpleIoc.Default.Register <IBackgroundTaskManagerService, BackgroundTaskManagerService>();

            if (ViewModelBase.IsInDesignModeStatic)
            {
                SimpleIoc.Default.Register <IGoogleApiService, DesignGoogleApiService>();
            }
            else
            {
                SimpleIoc.Default.Register <IGoogleApiService, GoogleApiService>();
            }

            var handler = new AuthenticatedHttpClientHandler(
                Logger.ForContext <AuthenticatedHttpClientHandler>(),
                () => GoogleApiService,
                () => UserCredentialService);
            var client = new HttpClient(handler)
            {
                BaseAddress = new Uri(AppConstants.BaseGoogleApiUrl)
            };

            var googleApiService = RestService.For <IGoogleApi>(client);

            SimpleIoc.Default.Register(() => googleApiService);

            SimpleIoc.Default.Register <INetworkService, NetworkService>();
            SimpleIoc.Default.Register <ISyncService, SyncService>();

            SimpleIoc.Default.Register <IUserDataService, UserDataService>();
            SimpleIoc.Default.Register <ITaskListDataService, TaskListDataService>();
            SimpleIoc.Default.Register <ITaskDataService, TaskDataService>();
            SimpleIoc.Default.Register <IMiraiNotesDataService, MiraiNotesDataService>();

            SimpleIoc.Default.Register <INotificationService, NotificationService>();
            SimpleIoc.Default.Register <ITelemetryService, TelemetryService>();

            SimpleIoc.Default.Register <LoginPageViewModel>();
            SimpleIoc.Default.Register <NavPageViewModel>();
            SimpleIoc.Default.Register <TasksPageViewModel>();
            SimpleIoc.Default.Register <NewTaskPageViewModel>();
            SimpleIoc.Default.Register <SettingsPageViewModel>();

            SimpleIoc.Default.Register <AccountsDialogViewModel>();
            SimpleIoc.Default.Register <SettingsPasswordDialogViewModel>();
            SimpleIoc.Default.Register <LoginPasswordDialogViewModel>();

            SimpleIoc.Default.Register <GoogleUserViewModel>();
        }