diff --git a/src/Weatherstack/Service/Extensions/CreateBaseParameters.cs b/src/Weatherstack/Service/Extensions/CreateBaseParameters.cs new file mode 100644 index 0000000..69cc654 --- /dev/null +++ b/src/Weatherstack/Service/Extensions/CreateBaseParameters.cs @@ -0,0 +1,44 @@ +using System; + +namespace Weatherstack; + +public static partial class WeatherstackServiceExtensions +{ + private static Dictionary CreateBaseParameters( + this IWeatherstackService source, + UnitPreference? unitPreference = null, + LanguagePreference? languagePreference = null) + { + var token = source.GetToken(); + var parameters = new Dictionary + { + ["access_key"] = token + }; + + parameters.AddUnitPreference(unitPreference); + parameters.AddLanguagePreference(languagePreference); + return parameters; + } + + private static void AddUnitPreference( + this IDictionary parameters, + UnitPreference? unitPreference) + { + if (!unitPreference.HasValue) + return; + + var literalValue = UnitPreferenceAdapter.Convert(unitPreference.Value); + parameters["units"] = literalValue; + } + + private static void AddLanguagePreference( + this IDictionary parameters, + LanguagePreference? languagePreference) + { + if (!languagePreference.HasValue) + return; + + var isoCode = LanguagePreferenceAdapter.Convert(languagePreference.Value); + parameters["language"] = isoCode; + } +}