From 72045e5f71e2f7a1daf378c380027cad0f5fea8c Mon Sep 17 00:00:00 2001 From: JustArchi Date: Sat, 11 Feb 2017 16:06:05 +0100 Subject: [PATCH] Add WCF metadata publishing, #448 --- ArchiSteamFarm/WCF.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/ArchiSteamFarm/WCF.cs b/ArchiSteamFarm/WCF.cs index be0edb83a..fab4536f9 100644 --- a/ArchiSteamFarm/WCF.cs +++ b/ArchiSteamFarm/WCF.cs @@ -26,6 +26,7 @@ using System; using System.Linq; using System.ServiceModel; using System.ServiceModel.Channels; +using System.ServiceModel.Description; using ArchiSteamFarm.Localization; namespace ArchiSteamFarm { @@ -135,14 +136,32 @@ namespace ArchiSteamFarm { try { ServiceHost = new ServiceHost(typeof(WCF), new Uri(url)); + ServiceHost.AddServiceEndpoint( typeof(IWCF), binding, string.Empty ); - ServiceHost.Open(); + // TODO: Test metadata bits on Mono + ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); + switch (binding.Scheme) { + case "http": + smb.HttpGetEnabled = true; + break; + case "https": + smb.HttpsGetEnabled = true; + break; + case "net.tcp": + break; + default: + ASF.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningUnknownValuePleaseReport, nameof(binding.Scheme), binding.Scheme)); + goto case "net.tcp"; + } + ServiceHost.Description.Behaviors.Add(smb); + + ServiceHost.Open(); ASF.ArchiLogger.LogGenericInfo(Strings.WCFReady); } catch (AddressAccessDeniedException) { ASF.ArchiLogger.LogGenericError(Strings.ErrorWCFAddressAccessDeniedException);