public IChallengeHandler GetHandler(Challenge c, IReadOnlyDictionary<string, object> initParams)
{
var h = new AwsS3ChallengeHandler();
if (initParams == null)
initParams = new Dictionary<string, object>();
// Required params
if (!initParams.ContainsKey(BUCKET_NAME.Name))
throw new KeyNotFoundException($"missing required parameter [{BUCKET_NAME.Name}]");
h.BucketName = (string)initParams[BUCKET_NAME.Name];
// Optional params
if (initParams.ContainsKey(CONTENT_TYPE.Name))
h.ContentType = (string)initParams[CONTENT_TYPE.Name];
if (initParams.ContainsKey(CANNED_ACL.Name))
h.CannedAcl = (string)initParams[CANNED_ACL.Name];
// Process the common params
h.CommonParams.InitParams(initParams);
return h;
}