diff --git a/src/Nyanlabs.Pubresolv/Doi.cs b/src/Nyanlabs.Pubresolv/Doi.cs index 6fa9566..9fb5f40 100644 --- a/src/Nyanlabs.Pubresolv/Doi.cs +++ b/src/Nyanlabs.Pubresolv/Doi.cs @@ -11,7 +11,14 @@ public readonly struct Doi try { Prefix = short.Parse(match.Groups["prefix"].Value); - Suffix = match.Groups["suffix"].Value; + if (Prefix > 1000 && Prefix < 10000) + { + Suffix = match.Groups["suffix"].Value; + } + else + { + throw new(); + } } catch (Exception) { @@ -19,6 +26,17 @@ public readonly struct Doi } } + public Doi(short prefix, string suffix) + { + if (prefix > 1000 && prefix < 10000) + { + Prefix = prefix; + Suffix = suffix; + return; + } + throw new ArgumentException($"Invalid prefix: {prefix}"); + } + public short Prefix { get; } public string Suffix { get; } diff --git a/src/Nyanlabs.Pubresolv/IResolver.cs b/src/Nyanlabs.Pubresolv/IResolver.cs index 7200099..f91038b 100644 --- a/src/Nyanlabs.Pubresolv/IResolver.cs +++ b/src/Nyanlabs.Pubresolv/IResolver.cs @@ -1,6 +1,9 @@ +using System.Net; + namespace Nyanlabs.Pubresolv; public interface IResolver { public Task Resolve(Doi doi); + public Task Authenticate(ICredentials credentials); }