/// <summary> /// Sets any properties on this object that are null to the appropriate defaults, if possible. /// </summary> /// <param name="settings">The settings used to construct the <see cref="LaybuyClient" /> instance that is about to send this request.</param> public override void SetDefaults(LaybuyClientConfiguration settings) { if (settings == null) { return; } if (String.IsNullOrWhiteSpace(this.Origin)) { this.Origin = settings.DefaultOrigin.GuardNullOrWhiteSpace("request", nameof(Origin)); } if (OriginData == null) { if (!String.IsNullOrEmpty(settings.DefaultBranch)) { this.OriginData = new StandardOriginData() { Branch = settings.DefaultBranch }; } else { this.OriginData.GuardNull(nameof(OriginData)); } } }
/// <summary> /// Full constructor. /// </summary> /// <param name="settings">A <see cref="LaybuyClientConfiguration"/> instance containing configuration details.</param> public LaybuyClient(LaybuyClientConfiguration settings) { settings.GuardNull(nameof(settings)); settings.Credentials.GuardNull(nameof(settings), nameof(settings.Credentials)); settings.Credentials?.MerchantId?.GuardNullOrWhiteSpace(nameof(settings), "Credentials.MerchantId"); settings.Credentials?.ApiKey?.GuardNullOrWhiteSpace(nameof(settings), "Credentials.ApiKey"); _Settings = settings; Newtonsoft.Json.JsonConvert.DefaultSettings = () => { var retVal = new Newtonsoft.Json.JsonSerializerSettings { NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore }; return(retVal); }; try { _Client = settings?.HttpClientFactory?.Invoke() ?? CreateDefaultHttpClient(); _Client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", GetBasicAuthParameter()); } catch { _Client?.Dispose(); throw; } }
/// <summary> /// Sets any properties on this object that are null to the appropriate defaults, if possible. /// </summary> /// <param name="settings">The settings used to construct the <see cref="LaybuyClient"/> instance that is about to send this request.</param> /// <remarks> /// <para>The base implementation of this method does nothing, it should be overriden by derived classes that have defaults which can have suitable defaults applied. /// This method is not abstract so as not to force derived classes to implement and document an empty versions when there are no defaults that can be applied.</para> /// </remarks> public virtual void SetDefaults(LaybuyClientConfiguration settings) { }