MetaDataProvider(string integrator, ShoppingCartExtension shoppingCartExtension, IEnumerable <RequestHeader> additionalRequestHeaders) { ValidateAdditionalRequestHeaders(additionalRequestHeaders); ServerMetaInfo serverMetaInfo = new ServerMetaInfo() { PlatformIdentifier = PlatformIdentifier, SdkIdentifier = SdkIdentifier, SdkCreator = "Ingenico", Integrator = integrator, ShoppingCartExtension = shoppingCartExtension }; string serverMetaInfoString = DefaultMarshaller.Instance.Marshal(serverMetaInfo); RequestHeader serverMetaInfoHeader = new RequestHeader(SERVER_META_INFO_HEADER, serverMetaInfoString.ToBase64String()); _metaDataHeaders = new List <RequestHeader> { serverMetaInfoHeader } .Concat(additionalRequestHeaders ?? Enumerable.Empty <RequestHeader>());; }
public static void CheckWithAdditionalRequestHeader(string additionalHeaderName, bool isAllowed) { RequestHeader additionalRequestHeader = new RequestHeader(additionalHeaderName, Guid.NewGuid().ToString()); MetaDataProviderBuilder builder = new MetaDataProviderBuilder("Ingenico"); if (isAllowed) { MetaDataProvider metaDataProvider = builder.WithAdditionalRequestHeader(additionalRequestHeader).Build(); IEnumerable <RequestHeader> requestHeaders = metaDataProvider.ServerMetaDataHeaders; Assert.AreEqual(2, requestHeaders.Count()); RequestHeader requestHeader = requestHeaders.First(); Assert.AreEqual("X-GCS-ServerMetaInfo", requestHeader.Name); requestHeader = requestHeaders.Skip(1).First(); Assert.AreEqual(requestHeader, additionalRequestHeader); } else { Assert.That((() => builder.WithAdditionalRequestHeader(additionalRequestHeader)), Throws.ArgumentException.With.Message.Contains(additionalHeaderName)); } }
public bool Equals(RequestHeader obj) => (obj?.Name?.Equals(Name) ?? false) && (obj?.Value?.Equals(Value) ?? false);
/// <summary> /// Adds an additional request header. /// The following names are prohibited in these additional request headers, because these will be set automatically /// as needed: /// <list> /// <item><description>X-GCS-ServerMetaInfo</description></item> /// <item><description>X-GCS-ClientMetaInfo</description></item> /// <item><description>X-GCS-Idempotence-Key</description></item> /// <item><description>Date</description></item> /// <item><description>Content-Type</description></item> /// <item><description>Authorization</description></item> /// </list> /// </summary> /// <returns>This.</returns> public MetaDataProviderBuilder WithAdditionalRequestHeader(RequestHeader additionalRequestHeader) { MetaDataProvider.ValidateAdditionalRequestHeader(additionalRequestHeader); _additionalRequestHeaders.Add(additionalRequestHeader); return(this); }