// Optional Shared Code class. Methods return the unchanged response body. // Only System and the built-in ZennoPoster HTTP client are used. public class SimailClient { private readonly string key; private readonly string proxy; public SimailClient(string apiKey, string proxy = "") { if (System.String.IsNullOrWhiteSpace(apiKey) || apiKey.Contains("\r") || apiKey.Contains("\n")) throw new System.ArgumentException("Укажите API-ключ."); this.key = apiKey.Trim(); this.proxy = proxy ?? ""; } public string GetDomains() { return Get("/api/domains"); } public string CreateMailbox(string domain = "", string prefix = "", int ttlSeconds = 1200) { string path = "/api/mailbox/new?ttl=" + ttlSeconds; if (!System.String.IsNullOrEmpty(domain)) path += "&domain=" + System.Uri.EscapeDataString(domain); if (!System.String.IsNullOrEmpty(prefix)) path += "&prefix=" + System.Uri.EscapeDataString(prefix); return Get(path); } public string GetMailbox(string idOrEmail) { return Get(Path(idOrEmail)); } public string GetMessages(string idOrEmail) { return Get(Path(idOrEmail) + "/messages"); } public string GetLatestMessage(string idOrEmail) { return Get(Path(idOrEmail) + "/latest?silent=true"); } public string GetMessage(string idOrEmail, string messageId) { return Get(Path(idOrEmail) + "/messages/" + System.Uri.EscapeDataString(messageId)); } public string DeleteMailbox(string idOrEmail) { return Call(ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.DELETE, Path(idOrEmail)); } private string Get(string path) { return Call(ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET, path); } private static string Path(string idOrEmail) { return "/api/mailbox/" + System.Uri.EscapeDataString(idOrEmail); } private string Call(ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod method, string path) { return ZennoLab.CommandCenter.ZennoPoster.HTTP.Request( method, "https://api.apmw.net" + path, "", contentPostingType: "application/json", proxy: proxy, Encoding: "UTF-8", respType: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, Timeout: 30000, Cookies: "", UseRedirect: false, AdditionalHeaders: new string[] { "Authorization: Bearer " + key }, throwExceptionOnError: true); } }