私はOAuthタイプのモジュールに取り組んでいます。これには、ホワイトリスト URL と呼ばれる URL のコレクションがあります。指定されたコールバック URL がコレクション内のこれらの URL のいずれかと一致するかどうかを確認する必要があります。
次のコードを書きました。私が正しくやったのか、それともいくつかの手順が欠けているのか教えてください。また、これらのメソッドを単体テストしたい場合、何らかのリファクタリングが必要かどうか教えてください。
コードは次のとおりです。
public class ValidateURLs
{
public bool MatchRedirectUrl(string requestUrl, IList<string> urlCollection)
{
var requestUri = new Uri(requestUrl);
foreach (var url in urlCollection)
{
var matchUri = new Uri(url);
if (IsDomainMatching(requestUri, matchUri))
{
if (IsPortMatch(requestUri, matchUri))
{
if (IsPathMatch(requestUri, matchUri))
return true;
else
return false;
}
}
}
return false;
}
private bool IsDomainMatching(Uri url1, Uri url2)
{
var result = String.Compare(url1.Host, url2.Host);
if (result == 0)
return true;
else
return false;
}
private bool IsPortMatch(Uri url1, Uri url2)
{
if (url1.Port == url2.Port)
return true;
return false;
}
private bool IsPathMatch(Uri url1, Uri url2)
{
return (url1.PathAndQuery.StartsWith(url2.PathAndQuery) || url2.PathAndQuery.StartsWith(url1.PathAndQuery));
}
}
前もって感謝します。
よろしく、スヨグ