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); }
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), }); }
protected HttpMessageHandler GetAuthenticatedMessageHandler() { var signInService = Mvx.IoCProvider.Resolve <ISignInService>(); var handler = new AuthenticatedHttpClientHandler(signInService.GetToken) { AllowAutoRedirect = false }; return(handler); }
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)); }
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) })); }
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), }); }
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)); }
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); }
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); }
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(); }
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); }
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>(); }