QCloudDnsChallengeHandlerProvider.cs
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ACMESharp.ACME; using ACMESharp.Ext; namespace ACMESharp.Providers.QCloud { [ChallengeHandlerProvider("qclouddns", ChallengeTypeKind.DNS, false, Description = "A QCloud dns provider for handling Challenges.", Label = "QCloud DNS Provider")] public class QCloudDnsChallengeHandlerProvider : IChallengeHandlerProvider { private static readonly ParameterDetail[] PARAMS = { new ParameterDetail(nameof(QCloudDnsChallengeHandler.SecretId), ParameterType.TEXT, true, false, "Secret ID"), new ParameterDetail(nameof(QCloudDnsChallengeHandler.SecretKey), ParameterType.TEXT, true, false, "Secret Key"), new ParameterDetail(nameof(QCloudDnsChallengeHandler.Line), ParameterType.TEXT, false, false, "Line", "记录的线路名称,如:\"默认\""), }; public IEnumerable<ParameterDetail> DescribeParameters() => PARAMS; public IChallengeHandler GetHandler(Challenge c, IReadOnlyDictionary<string, object> initParams) { var handler = new QCloudDnsChallengeHandler() { SecretId = initParams[nameof(QCloudDnsChallengeHandler.SecretId)]?.ToString() ?? throw new ArgumentNullException(nameof(QCloudDnsChallengeHandler.SecretId)), SecretKey = initParams[nameof(QCloudDnsChallengeHandler.SecretKey)]?.ToString() ?? throw new ArgumentNullException(nameof(QCloudDnsChallengeHandler.SecretKey)), }; if (initParams.TryGetValue(nameof(QCloudDnsChallengeHandler.Line), out var line)) handler.Line = line as string ?? throw new InvalidCastException(nameof(QCloudDnsChallengeHandler.Line) + " has to be a string."); return handler; } public bool IsSupported(Challenge c) => c is DnsChallenge; } } |