@muhammedaksam/ayyildiz-node 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/LICENSE.md +20 -0
  2. package/README.md +314 -0
  3. package/dist/AxiosHttpClient.d.ts +16 -0
  4. package/dist/AxiosHttpClient.d.ts.map +1 -0
  5. package/dist/AxiosHttpClient.js +57 -0
  6. package/dist/AxiosHttpClient.js.map +1 -0
  7. package/dist/AyyildizClient.d.ts +35 -0
  8. package/dist/AyyildizClient.d.ts.map +1 -0
  9. package/dist/AyyildizClient.js +61 -0
  10. package/dist/AyyildizClient.js.map +1 -0
  11. package/dist/IHttpClient.d.ts +8 -0
  12. package/dist/IHttpClient.d.ts.map +1 -0
  13. package/dist/IHttpClient.js +3 -0
  14. package/dist/IHttpClient.js.map +1 -0
  15. package/dist/VersionInfo.d.ts +14 -0
  16. package/dist/VersionInfo.d.ts.map +1 -0
  17. package/dist/VersionInfo.js +26 -0
  18. package/dist/VersionInfo.js.map +1 -0
  19. package/dist/__tests__/AyyildizClient.test.d.ts +2 -0
  20. package/dist/__tests__/AyyildizClient.test.d.ts.map +1 -0
  21. package/dist/__tests__/AyyildizClient.test.js +38 -0
  22. package/dist/__tests__/AyyildizClient.test.js.map +1 -0
  23. package/dist/index.d.ts +16 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +31 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/models/SmsConfig.d.ts +7 -0
  28. package/dist/models/SmsConfig.d.ts.map +1 -0
  29. package/dist/models/SmsConfig.js +3 -0
  30. package/dist/models/SmsConfig.js.map +1 -0
  31. package/dist/models/SmsReport.d.ts +18 -0
  32. package/dist/models/SmsReport.d.ts.map +1 -0
  33. package/dist/models/SmsReport.js +3 -0
  34. package/dist/models/SmsReport.js.map +1 -0
  35. package/dist/responses/AccountResponse.d.ts +7 -0
  36. package/dist/responses/AccountResponse.d.ts.map +1 -0
  37. package/dist/responses/AccountResponse.js +32 -0
  38. package/dist/responses/AccountResponse.js.map +1 -0
  39. package/dist/responses/BaseResponse.d.ts +17 -0
  40. package/dist/responses/BaseResponse.d.ts.map +1 -0
  41. package/dist/responses/BaseResponse.js +86 -0
  42. package/dist/responses/BaseResponse.js.map +1 -0
  43. package/dist/responses/IResponse.d.ts +8 -0
  44. package/dist/responses/IResponse.d.ts.map +1 -0
  45. package/dist/responses/IResponse.js +3 -0
  46. package/dist/responses/IResponse.js.map +1 -0
  47. package/dist/responses/ReportResponse.d.ts +7 -0
  48. package/dist/responses/ReportResponse.d.ts.map +1 -0
  49. package/dist/responses/ReportResponse.js +56 -0
  50. package/dist/responses/ReportResponse.js.map +1 -0
  51. package/dist/responses/SenderResponse.d.ts +6 -0
  52. package/dist/responses/SenderResponse.d.ts.map +1 -0
  53. package/dist/responses/SenderResponse.js +25 -0
  54. package/dist/responses/SenderResponse.js.map +1 -0
  55. package/dist/responses/SmsResponse.d.ts +6 -0
  56. package/dist/responses/SmsResponse.d.ts.map +1 -0
  57. package/dist/responses/SmsResponse.js +27 -0
  58. package/dist/responses/SmsResponse.js.map +1 -0
  59. package/dist/services/AccountService.d.ts +15 -0
  60. package/dist/services/AccountService.d.ts.map +1 -0
  61. package/dist/services/AccountService.js +35 -0
  62. package/dist/services/AccountService.js.map +1 -0
  63. package/dist/services/ReportService.d.ts +36 -0
  64. package/dist/services/ReportService.d.ts.map +1 -0
  65. package/dist/services/ReportService.js +94 -0
  66. package/dist/services/ReportService.js.map +1 -0
  67. package/dist/services/SenderService.d.ts +15 -0
  68. package/dist/services/SenderService.d.ts.map +1 -0
  69. package/dist/services/SenderService.js +37 -0
  70. package/dist/services/SenderService.js.map +1 -0
  71. package/dist/services/SmsService.d.ts +61 -0
  72. package/dist/services/SmsService.d.ts.map +1 -0
  73. package/dist/services/SmsService.js +171 -0
  74. package/dist/services/SmsService.js.map +1 -0
  75. package/package.json +62 -0
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReportService = void 0;
4
+ const ReportResponse_1 = require("../responses/ReportResponse");
5
+ class ReportService {
6
+ constructor(httpClient, username, password, companyCode) {
7
+ this.httpClient = httpClient;
8
+ this.username = username;
9
+ this.password = password;
10
+ this.companyCode = companyCode;
11
+ }
12
+ /**
13
+ * Get reports by date range
14
+ * @param startDate Format: YYYYMMDD
15
+ * @param endDate Format: YYYYMMDD
16
+ * @param delimiter Delimiter for parsing response (default: ||)
17
+ */
18
+ async getByDateRange(startDate, endDate, delimiter = '||') {
19
+ const xmlData = `<?xml version='1.0' encoding='ISO-8859-9'?>
20
+ <MainmsgBody>
21
+ <UserName>${this.escapeXml(this.username)}</UserName>
22
+ <PassWord>${this.escapeXml(this.password)}</PassWord>
23
+ <CompanyCode>${this.escapeXml(this.companyCode)}</CompanyCode>
24
+ <Delm>${this.escapeXml(delimiter)}</Delm>
25
+ <SDate>${startDate}</SDate>
26
+ <EDate>${endDate}</EDate>
27
+ <Type>2</Type>
28
+ </MainmsgBody>`;
29
+ const response = await this.httpClient.post('ReportList.aspx', xmlData);
30
+ return new ReportResponse_1.ReportResponse(response.getBody(), response.getStatusCode());
31
+ }
32
+ /**
33
+ * Get detailed report by message GUID
34
+ * @param messageGuid Message GUID from report list
35
+ * @param delimiter Delimiter for parsing response (default: ||)
36
+ */
37
+ async getDetailedReport(messageGuid, delimiter = '||') {
38
+ const xmlData = `<?xml version="1.0" encoding="ISO-8859-9"?>
39
+ <Main>
40
+ <UserName>${this.escapeXml(this.username)}</UserName>
41
+ <PassWord>${this.escapeXml(this.password)}</PassWord>
42
+ <CompanyCode>${this.escapeXml(this.companyCode)}</CompanyCode>
43
+ <strGuid>${this.escapeXml(messageGuid)}</strGuid>
44
+ <Delm>${this.escapeXml(delimiter)}</Delm>
45
+ <Type></Type>
46
+ </Main>`;
47
+ const response = await this.httpClient.post('DetailReport.aspx', xmlData);
48
+ return new ReportResponse_1.ReportResponse(response.getBody(), response.getStatusCode());
49
+ }
50
+ /**
51
+ * Get report by message ID
52
+ * @param messageId Message ID
53
+ * @param reportType Report type (1: Delivered, 2: Pending, 3: Failed, 4: Timeout)
54
+ * @param delimiter Delimiter for parsing response (default: ||)
55
+ */
56
+ async getByMessageId(messageId, reportType, delimiter = '||') {
57
+ const xmlData = `<?xml version="1.0" encoding="ISO-8859-9"?>
58
+ <ReportMain>
59
+ <UserName>${this.escapeXml(this.username)}</UserName>
60
+ <PassWord>${this.escapeXml(this.password)}</PassWord>
61
+ <CompanyCode>${this.escapeXml(this.companyCode)}</CompanyCode>
62
+ <Msgid>${this.escapeXml(messageId)}</Msgid>
63
+ <Delm>${this.escapeXml(delimiter)}</Delm>
64
+ <Type>${reportType || ''}</Type>
65
+ </ReportMain>`;
66
+ const response = await this.httpClient.post('Report.aspx', xmlData);
67
+ return new ReportResponse_1.ReportResponse(response.getBody(), response.getStatusCode());
68
+ }
69
+ /**
70
+ * Get report in XML format (v2)
71
+ * @param messageId Message ID
72
+ */
73
+ async getXmlReport(messageId) {
74
+ const xmlData = `<?xml version="1.0" encoding="UTF-8"?>
75
+ <ReportMain>
76
+ <UserName>${this.escapeXml(this.username)}</UserName>
77
+ <PassWord>${this.escapeXml(this.password)}</PassWord>
78
+ <CompanyCode>${this.escapeXml(this.companyCode)}</CompanyCode>
79
+ <Msgid>${this.escapeXml(messageId)}</Msgid>
80
+ </ReportMain>`;
81
+ const response = await this.httpClient.post('Reportnew.aspx', xmlData);
82
+ return new ReportResponse_1.ReportResponse(response.getBody(), response.getStatusCode());
83
+ }
84
+ escapeXml(text) {
85
+ return text
86
+ .replace(/&/g, '&amp;')
87
+ .replace(/</g, '&lt;')
88
+ .replace(/>/g, '&gt;')
89
+ .replace(/"/g, '&quot;')
90
+ .replace(/'/g, '&apos;');
91
+ }
92
+ }
93
+ exports.ReportService = ReportService;
94
+ //# sourceMappingURL=ReportService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportService.js","sourceRoot":"","sources":["../../src/services/ReportService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { SenderResponse } from '../responses/SenderResponse';
2
+ import { IHttpClient } from '../IHttpClient';
3
+ export declare class SenderService {
4
+ private httpClient;
5
+ private username;
6
+ private password;
7
+ private companyCode;
8
+ constructor(httpClient: IHttpClient, username: string, password: string, companyCode: string);
9
+ /**
10
+ * Query available originators/senders
11
+ */
12
+ getOriginators(): Promise<SenderResponse>;
13
+ private escapeXml;
14
+ }
15
+ //# sourceMappingURL=SenderService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SenderService.d.ts","sourceRoot":"","sources":["../../src/services/SenderService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,aAAa;IAEtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;gBAHX,UAAU,EAAE,WAAW,EACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM;IAG7B;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC;IActD,OAAO,CAAC,SAAS;CAQlB"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SenderService = void 0;
4
+ const SenderResponse_1 = require("../responses/SenderResponse");
5
+ class SenderService {
6
+ constructor(httpClient, username, password, companyCode) {
7
+ this.httpClient = httpClient;
8
+ this.username = username;
9
+ this.password = password;
10
+ this.companyCode = companyCode;
11
+ }
12
+ /**
13
+ * Query available originators/senders
14
+ */
15
+ async getOriginators() {
16
+ const xmlData = `<?xml version='1.0' encoding='UTF-8'?>
17
+ <OriginMain>
18
+ <UserName>${this.escapeXml(this.username)}</UserName>
19
+ <PassWord>${this.escapeXml(this.password)}</PassWord>
20
+ <CompanyCode>${this.escapeXml(this.companyCode)}</CompanyCode>
21
+ <User>User</User>
22
+ <Originator>DENEME</Originator>
23
+ </OriginMain>`;
24
+ const response = await this.httpClient.post('QueryOrigin.aspx', xmlData);
25
+ return new SenderResponse_1.SenderResponse(response.getBody(), response.getStatusCode());
26
+ }
27
+ escapeXml(text) {
28
+ return text
29
+ .replace(/&/g, '&amp;')
30
+ .replace(/</g, '&lt;')
31
+ .replace(/>/g, '&gt;')
32
+ .replace(/"/g, '&quot;')
33
+ .replace(/'/g, '&apos;');
34
+ }
35
+ }
36
+ exports.SenderService = SenderService;
37
+ //# sourceMappingURL=SenderService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SenderService.js","sourceRoot":"","sources":["../../src/services/SenderService.ts"],"names":[],"mappings":";;;AAAA,gEAA6D;AAG7D,MAAa,aAAa;IACxB,YACU,UAAuB,EACvB,QAAgB,EAChB,QAAgB,EAChB,WAAmB;QAHnB,eAAU,GAAV,UAAU,CAAa;QACvB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,gBAAW,GAAX,WAAW,CAAQ;IAC1B,CAAC;IAEJ;;OAEG;IACI,KAAK,CAAC,cAAc;QACzB,MAAM,OAAO,GAAG;;gBAEJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;mBAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;;;cAGrC,CAAC;QAEX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,IAAI,+BAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,OAAO,IAAI;aACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;aACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;CACF;AAjCD,sCAiCC"}
@@ -0,0 +1,61 @@
1
+ import { SmsResponse } from '../responses/SmsResponse';
2
+ import { IHttpClient } from '../IHttpClient';
3
+ export declare enum SmsType {
4
+ /** 160 character SMS */
5
+ STANDARD = 1,
6
+ /** 918 character SMS */
7
+ LONG = 5,
8
+ /** 70 character Turkish SMS */
9
+ TURKISH_SHORT = 6,
10
+ /** 402 character Turkish SMS */
11
+ TURKISH_LONG = 7,
12
+ /** 155 character Turkish SMS / 894 character Turkish SMS */
13
+ TURKISH_STANDARD = 12,
14
+ /** 402 character International SMS */
15
+ INTERNATIONAL = 13
16
+ }
17
+ export declare class SmsService {
18
+ private httpClient;
19
+ private username;
20
+ private password;
21
+ private companyCode;
22
+ private defaultOriginator?;
23
+ private sendDateTime;
24
+ private endDateTime;
25
+ private smsType;
26
+ constructor(httpClient: IHttpClient, username: string, password: string, companyCode: string, defaultOriginator?: string | undefined);
27
+ /**
28
+ * Schedule SMS to be sent at specific date/time
29
+ * @param sendDateTime Format: ddmmyyyyhhmm
30
+ */
31
+ schedule(sendDateTime: string, endDateTime?: string): this;
32
+ /**
33
+ * Set SMS type
34
+ * @param type SMS type to use for sending
35
+ */
36
+ setType(type: SmsType): this;
37
+ /**
38
+ * Send SMS to single or multiple recipients
39
+ * @param recipients Phone number(s) or object with number->message pairs
40
+ * @param message Message text (required if recipients is string or array)
41
+ * @param originator Sender name (3-11 characters, no Turkish chars)
42
+ */
43
+ send(recipients: string | string[] | Record<string, string>, message?: string, originator?: string): Promise<SmsResponse>;
44
+ /**
45
+ * Send same message to multiple recipients
46
+ */
47
+ private sendSameMessage;
48
+ /**
49
+ * Send different messages to different recipients
50
+ */
51
+ private sendMultipleMessages;
52
+ /**
53
+ * Send SMS via HTTP GET method
54
+ */
55
+ sendViaHttp(phoneNumber: string, message: string, originator?: string, tip?: string, type?: string): Promise<SmsResponse>;
56
+ private buildSingleMessageXml;
57
+ private buildMultiMessageXml;
58
+ private sanitizeMessage;
59
+ private escapeXml;
60
+ }
61
+ //# sourceMappingURL=SmsService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmsService.d.ts","sourceRoot":"","sources":["../../src/services/SmsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,oBAAY,OAAO;IACjB,wBAAwB;IACxB,QAAQ,IAAI;IACZ,wBAAwB;IACxB,IAAI,IAAI;IACR,+BAA+B;IAC/B,aAAa,IAAI;IACjB,gCAAgC;IAChC,YAAY,IAAI;IAChB,4DAA4D;IAC5D,gBAAgB,KAAK;IACrB,sCAAsC;IACtC,aAAa,KAAK;CACnB;AAED,qBAAa,UAAU;IAMnB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,iBAAiB,CAAC;IAT5B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAqC;gBAG1C,UAAU,EAAE,WAAW,EACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,YAAA;IAGpC;;;OAGG;IACI,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAQjE;;;OAGG;IACI,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKnC;;;;;OAKG;IACU,IAAI,CACf,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtD,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC;IAQvB;;OAEG;YACW,eAAe;IAwB7B;;OAEG;YACW,oBAAoB;IAqBlC;;OAEG;IACU,WAAW,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC;IAmBvB,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,SAAS;CAQlB"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SmsService = exports.SmsType = void 0;
4
+ const SmsResponse_1 = require("../responses/SmsResponse");
5
+ const VersionInfo_1 = require("../VersionInfo");
6
+ var SmsType;
7
+ (function (SmsType) {
8
+ /** 160 character SMS */
9
+ SmsType[SmsType["STANDARD"] = 1] = "STANDARD";
10
+ /** 918 character SMS */
11
+ SmsType[SmsType["LONG"] = 5] = "LONG";
12
+ /** 70 character Turkish SMS */
13
+ SmsType[SmsType["TURKISH_SHORT"] = 6] = "TURKISH_SHORT";
14
+ /** 402 character Turkish SMS */
15
+ SmsType[SmsType["TURKISH_LONG"] = 7] = "TURKISH_LONG";
16
+ /** 155 character Turkish SMS / 894 character Turkish SMS */
17
+ SmsType[SmsType["TURKISH_STANDARD"] = 12] = "TURKISH_STANDARD";
18
+ /** 402 character International SMS */
19
+ SmsType[SmsType["INTERNATIONAL"] = 13] = "INTERNATIONAL";
20
+ })(SmsType || (exports.SmsType = SmsType = {}));
21
+ class SmsService {
22
+ constructor(httpClient, username, password, companyCode, defaultOriginator) {
23
+ this.httpClient = httpClient;
24
+ this.username = username;
25
+ this.password = password;
26
+ this.companyCode = companyCode;
27
+ this.defaultOriginator = defaultOriginator;
28
+ this.sendDateTime = '';
29
+ this.endDateTime = '';
30
+ this.smsType = SmsType.TURKISH_STANDARD;
31
+ }
32
+ /**
33
+ * Schedule SMS to be sent at specific date/time
34
+ * @param sendDateTime Format: ddmmyyyyhhmm
35
+ */
36
+ schedule(sendDateTime, endDateTime) {
37
+ this.sendDateTime = sendDateTime;
38
+ if (endDateTime) {
39
+ this.endDateTime = endDateTime;
40
+ }
41
+ return this;
42
+ }
43
+ /**
44
+ * Set SMS type
45
+ * @param type SMS type to use for sending
46
+ */
47
+ setType(type) {
48
+ this.smsType = type;
49
+ return this;
50
+ }
51
+ /**
52
+ * Send SMS to single or multiple recipients
53
+ * @param recipients Phone number(s) or object with number->message pairs
54
+ * @param message Message text (required if recipients is string or array)
55
+ * @param originator Sender name (3-11 characters, no Turkish chars)
56
+ */
57
+ async send(recipients, message, originator) {
58
+ if (Array.isArray(recipients) || typeof recipients === 'string') {
59
+ return this.sendSameMessage(recipients, message, originator);
60
+ }
61
+ else {
62
+ return this.sendMultipleMessages(recipients, originator);
63
+ }
64
+ }
65
+ /**
66
+ * Send same message to multiple recipients
67
+ */
68
+ async sendSameMessage(recipients, message, originator) {
69
+ const numbers = Array.isArray(recipients) ? recipients.join(',') : recipients;
70
+ const senderName = originator || this.defaultOriginator;
71
+ const xmlData = this.buildSingleMessageXml(this.username, this.password, this.companyCode, senderName, message, numbers, this.smsType, this.sendDateTime, this.endDateTime);
72
+ const response = await this.httpClient.post('SendSmsMany.aspx', xmlData);
73
+ return new SmsResponse_1.SmsResponse(response.getBody(), response.getStatusCode());
74
+ }
75
+ /**
76
+ * Send different messages to different recipients
77
+ */
78
+ async sendMultipleMessages(recipients, originator) {
79
+ const senderName = originator || this.defaultOriginator;
80
+ const xmlData = this.buildMultiMessageXml(this.username, this.password, this.companyCode, senderName, recipients, this.smsType, this.sendDateTime, this.endDateTime);
81
+ const response = await this.httpClient.post('SendSmsMulti.aspx', xmlData);
82
+ return new SmsResponse_1.SmsResponse(response.getBody(), response.getStatusCode());
83
+ }
84
+ /**
85
+ * Send SMS via HTTP GET method
86
+ */
87
+ async sendViaHttp(phoneNumber, message, originator, tip, type) {
88
+ const params = {
89
+ user: this.username,
90
+ password: this.password,
91
+ to: phoneNumber,
92
+ text: this.sanitizeMessage(message),
93
+ origin: originator || this.defaultOriginator,
94
+ tip: tip || '',
95
+ type: type || ''
96
+ };
97
+ if (this.httpClient.get) {
98
+ const response = await this.httpClient.get('services/SendSmsGet.aspx', params);
99
+ return new SmsResponse_1.SmsResponse(response.getBody(), response.getStatusCode());
100
+ }
101
+ else {
102
+ throw new Error('HTTP GET method not supported by this client');
103
+ }
104
+ }
105
+ buildSingleMessageXml(username, password, companyCode, originator, message, numbers, type, startDate, endDate) {
106
+ return `<?xml version="1.0" encoding="UTF-8"?>
107
+ <MainmsgBody>
108
+ <UserName>${this.escapeXml(username)}</UserName>
109
+ <PassWord>${this.escapeXml(password)}</PassWord>
110
+ <CompanyCode>${this.escapeXml(companyCode)}</CompanyCode>
111
+ <Type>${type}</Type>
112
+ <Developer></Developer>
113
+ <Originator><![CDATA[${originator}]]></Originator>
114
+ <Version>ayyildiz-node-${VersionInfo_1.VersionInfo.string()}</Version>
115
+ <Mesgbody><![CDATA[${message}]]></Mesgbody>
116
+ <Numbers>${numbers}</Numbers>
117
+ <SDate>${startDate}</SDate>
118
+ <EDate>${endDate}</EDate>
119
+ </MainmsgBody>`;
120
+ }
121
+ buildMultiMessageXml(username, password, companyCode, originator, recipients, type, startDate, endDate) {
122
+ const messages = Object.entries(recipients)
123
+ .map(([number, message]) => `
124
+ <Message>
125
+ <Mesgbody><![CDATA[${message}]]></Mesgbody>
126
+ <Number>${number}</Number>
127
+ <SDate>${startDate}</SDate>
128
+ <EDate>${endDate}</EDate>
129
+ </Message>`)
130
+ .join('');
131
+ return `<?xml version="1.0" encoding="UTF-8"?>
132
+ <MainmsgBody>
133
+ <UserName>${this.escapeXml(username)}</UserName>
134
+ <PassWord>${this.escapeXml(password)}</PassWord>
135
+ <CompanyCode>${this.escapeXml(companyCode)}</CompanyCode>
136
+ <Type>${type}</Type>
137
+ <Developer></Developer>
138
+ <Version>ayyildiz-node-${VersionInfo_1.VersionInfo.string()}</Version>
139
+ <Originator><![CDATA[${originator}]]></Originator>
140
+ <Messages>
141
+ ${messages}
142
+ </Messages>
143
+ </MainmsgBody>`;
144
+ }
145
+ sanitizeMessage(message) {
146
+ // Replace Turkish characters for HTTP API
147
+ return message
148
+ .replace(/İ/g, 'I')
149
+ .replace(/ı/g, 'i')
150
+ .replace(/Ğ/g, 'G')
151
+ .replace(/ğ/g, 'g')
152
+ .replace(/Ü/g, 'U')
153
+ .replace(/ü/g, 'u')
154
+ .replace(/Ş/g, 'S')
155
+ .replace(/ş/g, 's')
156
+ .replace(/Ö/g, 'O')
157
+ .replace(/ö/g, 'o')
158
+ .replace(/Ç/g, 'C')
159
+ .replace(/ç/g, 'c');
160
+ }
161
+ escapeXml(text) {
162
+ return text
163
+ .replace(/&/g, '&amp;')
164
+ .replace(/</g, '&lt;')
165
+ .replace(/>/g, '&gt;')
166
+ .replace(/"/g, '&quot;')
167
+ .replace(/'/g, '&apos;');
168
+ }
169
+ }
170
+ exports.SmsService = SmsService;
171
+ //# sourceMappingURL=SmsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmsService.js","sourceRoot":"","sources":["../../src/services/SmsService.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@muhammedaksam/ayyildiz-node",
3
+ "version": "0.1.1",
4
+ "description": "Ayyıldız Mobile Node.js SDK",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "LICENSE.md",
10
+ "README.md"
11
+ ],
12
+ "keywords": [
13
+ "ayyildiz",
14
+ "ayyildizmobile",
15
+ "verify",
16
+ "sms",
17
+ "api",
18
+ "sdk",
19
+ "api-client",
20
+ "typescript",
21
+ "nodejs",
22
+ "javascript"
23
+ ],
24
+ "author": "Muhammed Mustafa AKŞAM <info@muhammedaksam.com.tr> (https://github.com/muhammedaksam)",
25
+ "license": "MIT",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/muhammedaksam/ayyildiz-node.git"
29
+ },
30
+ "bugs": {
31
+ "url": "https://github.com/muhammedaksam/ayyildiz-node/issues"
32
+ },
33
+ "homepage": "https://github.com/muhammedaksam/ayyildiz-node#readme",
34
+ "dependencies": {
35
+ "axios": "^1.10.0"
36
+ },
37
+ "devDependencies": {
38
+ "@eslint/js": "^9.30.1",
39
+ "@types/jest": "^30.0.0",
40
+ "@types/node": "^24.0.12",
41
+ "@typescript-eslint/eslint-plugin": "^8.36.0",
42
+ "@typescript-eslint/parser": "^8.36.0",
43
+ "eslint": "^9.30.1",
44
+ "jest": "^30.0.4",
45
+ "prettier": "^3.6.2",
46
+ "ts-jest": "^29.4.0",
47
+ "typescript": "^5.8.3"
48
+ },
49
+ "scripts": {
50
+ "build": "tsc",
51
+ "test": "jest",
52
+ "test:watch": "jest --watch",
53
+ "test:coverage": "jest --coverage",
54
+ "lint": "eslint src --ext .ts",
55
+ "lint:fix": "eslint src --ext .ts --fix",
56
+ "format": "prettier --write \"src/**/*.ts\" \"*.{js,json,md}\"",
57
+ "format:check": "prettier --check \"src/**/*.ts\" \"*.{js,json,md}\"",
58
+ "clean": "rm -rf dist",
59
+ "prebuild": "pnpm run clean",
60
+ "check-all": "pnpm run lint && pnpm run format:check && pnpm run test"
61
+ }
62
+ }