sms-ir-api
Version:
SMS.IR API client for JS/TS/ESM/Node.js
1 lines • 18.4 kB
Source Map (JSON)
{"version":3,"file":"smsir.mjs","sources":["../src/smsir.ts"],"sourcesContent":["// import axios, { type AxiosRequestConfig } from \"axios\";\r\n\r\nconst DefaultPageSize = 100;\r\n\r\ntype ILineNumber = string | number;\r\ntype IParameter = {\r\n\tname: string;\r\n\tvalue: string;\r\n};\r\n\r\ninterface Data_Base {\r\n\tstatus: number;\r\n\tmessage: string;\r\n\tdata: any;\r\n}\r\n\r\ninterface Data_SendBulk extends Data_Base {\r\n\tdata: {\r\n\t\tpackId: string;\r\n\t\tmessageIds: number[];\r\n\t\tcost: number;\r\n\t};\r\n}\r\ninterface Data_SendWithUsername extends Data_Verify {}\r\ninterface Data_LikeToLike extends Data_SendBulk {}\r\ninterface Data_DeleteScheduled extends Data_Base {\r\n\tdata: {\r\n\t\treturnedCreditCount: number;\r\n\t\tsmsCount: number;\r\n\t};\r\n}\r\ninterface Data_Verify extends Data_Base {\r\n\tdata: {\r\n\t\tmessageId: number;\r\n\t\tcost: number;\r\n\t};\r\n}\r\n\r\ninterface ReportSingle {\r\n\tmessageId: number;\r\n\tmobile: string;\r\n\tmessageText: string;\r\n\tsendDateTime: number;\r\n\tlineNumber: ILineNumber;\r\n\tcost: number;\r\n\tdeliveryState: number;\r\n\tdeliveryDateTime: number;\r\n}\r\ninterface ReportPack {\r\n\tpackId: string;\r\n\trecipientCount: number;\r\n\tcreationDateTime: number;\r\n}\r\ninterface ReceiveSingle {\r\n\tmessageText: string;\r\n\tnumber: ILineNumber;\r\n\tmobile: string;\r\n\treceivedDateTime: number;\r\n}\r\ninterface Data_Report_Message extends Data_Base {\r\n\tdata: ReportSingle;\r\n}\r\ninterface Data_Report_TodayPacks extends Data_Base {\r\n\tdata: ReportPack[];\r\n}\r\n\r\ninterface Data_Report_Messages extends Data_Base {\r\n\tdata: ReportSingle[];\r\n}\r\ninterface Data_Report_Today extends Data_Report_Messages {}\r\ninterface Data_Report_Pack extends Data_Report_Messages {}\r\ninterface Data_Report_Archive extends Data_Report_Messages {}\r\n\r\ninterface Data_Receive_Messages extends Data_Base {\r\n\tdata: ReceiveSingle[];\r\n}\r\ninterface Data_Receive_Latest extends Data_Receive_Messages {}\r\ninterface Data_Receive_Today extends Data_Receive_Messages {}\r\ninterface Data_Receive_Archive extends Data_Receive_Messages {}\r\n\r\ninterface Data_Credit extends Data_Base {\r\n\tdata: number;\r\n}\r\ninterface Data_Lines extends Data_Base {\r\n\tdata: ILineNumber[];\r\n}\r\n\r\n/**\r\n * Class representing the SMS.ir API\r\n * @author Shahab Movahhedi\r\n * @see {@link https://shmovahhedi.com Shahab Movahhedi's Website}\r\n * @see {@link https://github.com/movahhedi/sms-ir-node sms-ir-node's Repository}\r\n * @license MIT\r\n */\r\nexport class Smsir {\r\n\tprivate ApiKey: string;\r\n\tprivate LineNumber: ILineNumber;\r\n\tprivate Username: string | null;\r\n\tpublic readonly ApiUrl = \"https://api.sms.ir/v1\";\r\n\r\n\t/**\r\n\t * Create a new instance of the Smsir class\r\n\t * @param {string} ApiKey - The API key for the SMS.ir account\r\n\t * @param {number} LineNumber - The line number to use for sending messages\r\n\t * @param {string} [Username=null] - The username for the SMS.ir account\r\n\t */\r\n\tconstructor(ApiKey: string, LineNumber: ILineNumber, Username: string | null = null) {\r\n\t\tthis.ApiKey = ApiKey;\r\n\t\tthis.LineNumber = LineNumber;\r\n\t\tthis.Username = Username;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Make an API request to the SMS.ir API\r\n\t * @private\r\n\t * @param {string} urlSuffix - The URL suffix for the API endpoint\r\n\t * @param {(\"GET\"|\"POST\"|\"DELETE\")} [method=\"GET\"] - The HTTP method to use for the request\r\n\t * @param {object|null} [data=null] - The data to send with the request\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tprivate async Api(\r\n\t\turlSuffix: string,\r\n\t\tmethod: \"GET\" | \"POST\" | \"DELETE\" = \"GET\",\r\n\t\tdata: object | undefined = undefined,\r\n\t): Promise<Data_Base> {\r\n\t\tconst response = await fetch(`${this.ApiUrl}/${urlSuffix}`, {\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t\"X-API-KEY\": this.ApiKey,\r\n\t\t\t},\r\n\t\t\tmethod,\r\n\t\t\tbody: data && JSON.stringify(data),\r\n\t\t});\r\n\t\tconst responseBody = await response.json();\r\n\r\n\t\treturn responseBody?.data;\r\n\t}\r\n\r\n\t/**\r\n\t * Send a single SMS message to a single recipient\r\n\t * @param {string} MessageText - The text of the message to send\r\n\t * @param {string} Mobile - The mobile number of the recipient\r\n\t * @param {number|null} [SendDateTime=null] - The Unix timestamp of when to send the message (null for immediate sending)\r\n\t * @param {number} [LineNumber=this.LineNumber] - The line number to use for sending the message\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync Send(\r\n\t\tMessageText: string,\r\n\t\tMobile: string,\r\n\t\tSendDateTime: number | null = null,\r\n\t\tLineNumber: ILineNumber = this.LineNumber\r\n\t): Promise<Data_SendBulk> {\r\n\t\treturn this.SendBulk(MessageText, [Mobile], SendDateTime, LineNumber);\r\n\t}\r\n\r\n\t/**\r\n\t * Send a single SMS message to a single recipient (The username for the SMS.ir account is required)\r\n\t * @param {string} messageText - The text of the message to send\r\n\t * @param {string} mobile - The mobile number of the recipient\r\n\t * @param {ILineNumber} [lineNumber=this.LineNumber] - The line number to use for sending the message\r\n\t * @param {string} [username=this.Username] - The username for the SMS.ir account\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync SendWithUsername(\r\n\t\tmessageText: string,\r\n\t\tmobile: string,\r\n\t\tlineNumber: ILineNumber = this.LineNumber,\r\n\t\tusername: string | null = this.Username\r\n\t): Promise<Data_SendWithUsername> {\r\n\t\treturn this.Api(\r\n\t\t\t\"send?\" +\r\n\t\t\t\tnew URLSearchParams({\r\n\t\t\t\t\tusername: username ?? \"\",\r\n\t\t\t\t\tpassword: this.ApiKey,\r\n\t\t\t\t\tline: \"\" + lineNumber,\r\n\t\t\t\t\tmobile,\r\n\t\t\t\t\ttext: messageText,\r\n\t\t\t\t}),\r\n\t\t\t\"GET\",\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Send a single SMS message to multiple recipients\r\n\t * @param {string} MessageText - The text of the message to send\r\n\t * @param {Array<string>} Mobiles - An array of mobile numbers of the recipients\r\n\t * @param {number|null} [SendDateTime=null] - The Unix timestamp of when to send the message (null for immediate sending)\r\n\t * @param {ILineNumber} [lineNumber=this.LineNumber] - The line number to use for sending the message\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync SendBulk(\r\n\t\tMessageText: string,\r\n\t\tMobiles: Array<string>,\r\n\t\tSendDateTime: number | null = null,\r\n\t\tlineNumber: ILineNumber = this.LineNumber\r\n\t): Promise<Data_SendBulk> {\r\n\t\treturn this.Api(\"send/bulk\", \"POST\", {\r\n\t\t\tlineNumber,\r\n\t\t\tMessageText,\r\n\t\t\tMobiles,\r\n\t\t\tSendDateTime,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Send multiple SMS messages to multiple recipients (one message per recipient)\r\n\t * @param {string} MessageTexts - The text of the messages to send\r\n\t * @param {Array<string>} Mobiles - An array of mobile numbers of the recipients\r\n\t * @param {number|null} [SendDateTime=null] - The Unix timestamp of when to send the message (null for immediate sending)\r\n\t * @param {ILineNumber|null} [lineNumber=null] - The line number to use for sending the message (null for line number)\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync SendLikeToLike(\r\n\t\tMessageTexts: string,\r\n\t\tMobiles: Array<string>,\r\n\t\tSendDateTime: number | null = null,\r\n\t\tlineNumber: ILineNumber = this.LineNumber\r\n\t): Promise<Data_LikeToLike> {\r\n\t\treturn this.Api(\"send/likeToLike\", \"POST\", {\r\n\t\t\tlineNumber,\r\n\t\t\tMessageTexts,\r\n\t\t\tMobiles,\r\n\t\t\tSendDateTime,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Delete a scheduled SMS message\r\n\t * @param {number} PackId - The ID of the scheduled message pack to delete\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync DeleteScheduled(PackId: number): Promise<Data_DeleteScheduled> {\r\n\t\treturn this.Api(`send/scheduled/${PackId}`, \"DELETE\");\r\n\t}\r\n\r\n\t/**\r\n\t * Send a verification code via SMS\r\n\t * @param {string} Mobile - The mobile number of the recipient\r\n\t * @param {number} TemplateId - The ID of the verification code template to use\r\n\t * @param {} Parameters - An array of parameters to use in the verification code template\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync SendVerifyCode(Mobile: string, TemplateId: number, Parameters: IParameter[]): Promise<Data_Verify> {\r\n\t\treturn this.Api(\"send/verify\", \"POST\", {\r\n\t\t\tMobile,\r\n\t\t\tTemplateId,\r\n\t\t\tParameters,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on a specific sent SMS message\r\n\t * @param {number} MessageId - The ID of the sent message to get a report on\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportMessage(MessageId: number): Promise<Data_Verify> {\r\n\t\treturn this.Api(`send/${MessageId}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on today's sent SMS messages\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportTodayPacks(pageSize: number = DefaultPageSize, pageNumber: number = 1): Promise<Data_Report_TodayPacks> {\r\n\t\treturn this.Api(\"send/pack\", \"GET\", {\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on a specific sent SMS message pack\r\n\t * @param {number} PackId - The ID of the sent message pack to get a report on\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportPack(PackId: number): Promise<Data_Report_Pack> {\r\n\t\treturn this.Api(`send/pack/${PackId}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on today's sent SMS messages\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportToday(pageSize: number = DefaultPageSize, pageNumber: number = 1): Promise<Data_Report_Today> {\r\n\t\treturn this.Api(\"send/live\", \"GET\", {\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on archived sent SMS messages\r\n\t * @param {null} [fromDate=null] - The start date to get results for (null for no start date)\r\n\t * @param {null} [toDate=null] - The end date to get results for (null for no end date)\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportArchived(\r\n\t\tfromDate: number | null = null,\r\n\t\ttoDate: number | null = null,\r\n\t\tpageSize: number = DefaultPageSize,\r\n\t\tpageNumber: number = 1\r\n\t): Promise<Data_Report_Archive> {\r\n\t\treturn this.Api(\"send/archive\", \"GET\", {\r\n\t\t\tfromDate,\r\n\t\t\ttoDate,\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on the latest received SMS messages\r\n\t * @param {number} [count=DefaultPageSize] - The number of results to return\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportLatestReceived(count: number = DefaultPageSize): Promise<Data_Receive_Latest> {\r\n\t\treturn this.Api(\"receive/latest\", \"GET\", { count });\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on today's received SMS messages\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportTodayReceived(pageSize: number = DefaultPageSize, pageNumber: number = 1): Promise<Data_Receive_Today> {\r\n\t\treturn this.Api(\"receive/live\", \"GET\", {\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on archived received SMS messages\r\n\t * @param {null} [fromDate=null] - The start date to get results for (null for no start date)\r\n\t * @param {null} [toDate=null] - The end date to get results for (null for no end date)\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportArchivedReceived(\r\n\t\tfromDate: number | null = null,\r\n\t\ttoDate: number | null = null,\r\n\t\tpageSize: number = DefaultPageSize,\r\n\t\tpageNumber: number = 1\r\n\t): Promise<Data_Receive_Archive> {\r\n\t\treturn this.Api(\"receive/archive\", \"GET\", {\r\n\t\t\tfromDate,\r\n\t\t\ttoDate,\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get the remaining credit balance for the SMS.ir account\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync GetCredit(): Promise<Data_Credit> {\r\n\t\treturn this.Api(\"credit\");\r\n\t}\r\n\r\n\t/**\r\n\t * Get a list of available line numbers for the SMS.ir account\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync GetLineNumbers(): Promise<Data_Lines> {\r\n\t\treturn this.Api(\"line\");\r\n\t}\r\n}\r\n\r\nexport default Smsir;\r\n"],"names":["DefaultPageSize","Smsir","ApiKey","LineNumber","Username","ApiUrl","this","_proto","prototype","Api","urlSuffix","method","data","undefined","Promise","resolve","fetch","headers","Accept","body","JSON","stringify","then","response","json","responseBody","e","reject","Send","MessageText","Mobile","SendDateTime","SendBulk","SendWithUsername","messageText","mobile","lineNumber","username","_username","_this3","URLSearchParams","password","line","text","Mobiles","SendLikeToLike","MessageTexts","DeleteScheduled","PackId","SendVerifyCode","TemplateId","Parameters","ReportMessage","MessageId","ReportTodayPacks","pageSize","pageNumber","ReportPack","ReportToday","ReportArchived","fromDate","toDate","ReportLatestReceived","count","ReportTodayReceived","ReportArchivedReceived","GetCredit","GetLineNumbers"],"mappings":"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"}