Skip to content

Commit

Permalink
Improvement precondition error message (#272)
Browse files Browse the repository at this point in the history
* Improvement precondition error message

* Fixed indent
  • Loading branch information
shibayan authored Jan 30, 2021
1 parent 5e8cdd3 commit f78884c
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 13 deletions.
26 changes: 17 additions & 9 deletions AppService.Acmebot/Functions/SharedActivity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,18 @@ public async Task Http01Precondition([ActivityTrigger] Site site)

var kuduClient = _kuduClientFactory.CreateClient(site.ScmSiteUrl(), credentials.PublishingUserName, credentials.PublishingPassword);

// 特殊なファイルが存在する場合は web.config の作成を行わない
if (!await kuduClient.ExistsFileAsync(".well-known/configured"))
try
{
// Answer 用ファイルを返すための Web.config を作成
await kuduClient.WriteFileAsync(DefaultWebConfigPath, DefaultWebConfig);
// 特殊なファイルが存在する場合は web.config の作成を行わない
if (!await kuduClient.ExistsFileAsync(".well-known/configured"))
{
// Answer 用ファイルを返すための Web.config を作成
await kuduClient.WriteFileAsync(DefaultWebConfigPath, DefaultWebConfig);
}
}
catch (HttpRequestException ex)
{
throw new PreconditionException($"Failed to access SCM site. Message: {ex.Message}");
}

// .well-known を仮想アプリケーションとして追加
Expand Down Expand Up @@ -237,12 +244,13 @@ public async Task Dns01Precondition([ActivityTrigger] IReadOnlyList<string> dnsN
// Azure DNS が存在するか確認
var zones = await _dnsManagementClient.Zones.ListAllAsync();

foreach (var dnsName in dnsNames)
var notFoundZones = dnsNames.Where(x => zones.All(xs => !string.Equals(x, xs.Name, StringComparison.OrdinalIgnoreCase) && !x.EndsWith($".{xs.Name}", StringComparison.OrdinalIgnoreCase)))
.ToArray();

// マッチする DNS zone が見つからない DNS name があった場合はエラー
if (notFoundZones.Length > 0)
{
if (!zones.Any(x => string.Equals(dnsName, x.Name, StringComparison.OrdinalIgnoreCase) || dnsName.EndsWith($".{x.Name}", StringComparison.OrdinalIgnoreCase)))
{
throw new InvalidOperationException($"Azure DNS zone \"{dnsName}\" is not found");
}
throw new PreconditionException($"DNS zone(s) are not found. {string.Join(",", notFoundZones)}");
}
}

Expand Down
4 changes: 3 additions & 1 deletion AppService.Acmebot/Internal/KuduClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ public async Task<bool> ExistsFileAsync(string filePath)
return false;
}

throw new InvalidOperationException($"Failed to access SCM site. StatusCode = {response.StatusCode}, Url = {_scmUrl}");
response.EnsureSuccessStatusCode();

return false;
}

public Task WriteFileAsync(string filePath, string content)
Expand Down
28 changes: 28 additions & 0 deletions AppService.Acmebot/PreconditionException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System;
using System.Runtime.Serialization;

namespace AppService.Acmebot
{
[Serializable]
public class PreconditionException : Exception
{
public PreconditionException()
{
}

public PreconditionException(string message)
: base(message)
{
}

public PreconditionException(string message, Exception inner)
: base(message, inner)
{
}

protected PreconditionException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}
9 changes: 6 additions & 3 deletions AppService.Acmebot/RetriableActivityException.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,18 @@ public RetriableActivityException()
{
}

public RetriableActivityException(string message) : base(message)
public RetriableActivityException(string message)
: base(message)
{
}

public RetriableActivityException(string message, Exception inner) : base(message, inner)
public RetriableActivityException(string message, Exception inner)
: base(message, inner)
{
}

protected RetriableActivityException(SerializationInfo info, StreamingContext context) : base(info, context)
protected RetriableActivityException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
Expand Down

0 comments on commit f78884c

Please sign in to comment.