@short.io/client-node 1.0.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.
- package/.eslintignore +1 -0
- package/.eslintrc.cjs +3 -0
- package/README.md +50 -0
- package/dist/index.js +412 -0
- package/dist/index.js.map +1 -0
- package/dist/test/domain/createDomain.js +5 -0
- package/dist/test/domain/createDomain.js.map +1 -0
- package/dist/test/domain/getDomains.js +5 -0
- package/dist/test/domain/getDomains.js.map +1 -0
- package/dist/test/getLinks.js +5 -0
- package/dist/test/getLinks.js.map +1 -0
- package/dist/test/link/archiveLink.js +5 -0
- package/dist/test/link/archiveLink.js.map +1 -0
- package/dist/test/link/createLink.js +5 -0
- package/dist/test/link/createLink.js.map +1 -0
- package/dist/test/link/createLinkBulk.js +14 -0
- package/dist/test/link/createLinkBulk.js.map +1 -0
- package/dist/test/link/createLinkCountry.js +8 -0
- package/dist/test/link/createLinkCountry.js.map +1 -0
- package/dist/test/link/createLinkPublic.js +5 -0
- package/dist/test/link/createLinkPublic.js.map +1 -0
- package/dist/test/link/createLinkRegions.js +9 -0
- package/dist/test/link/createLinkRegions.js.map +1 -0
- package/dist/test/link/deleteLink.js +5 -0
- package/dist/test/link/deleteLink.js.map +1 -0
- package/dist/test/link/deleteLinkCountry.js +5 -0
- package/dist/test/link/deleteLinkCountry.js.map +1 -0
- package/dist/test/link/deleteLinkRegion.js +8 -0
- package/dist/test/link/deleteLinkRegion.js.map +1 -0
- package/dist/test/link/getLinkCountry.js +5 -0
- package/dist/test/link/getLinkCountry.js.map +1 -0
- package/dist/test/link/getLinkInfoByOriginalURL.js +5 -0
- package/dist/test/link/getLinkInfoByOriginalURL.js.map +1 -0
- package/dist/test/link/getLinkInfoByPath.js +5 -0
- package/dist/test/link/getLinkInfoByPath.js.map +1 -0
- package/dist/test/link/getLinkQRCode.js +5 -0
- package/dist/test/link/getLinkQRCode.js.map +1 -0
- package/dist/test/link/getLinkRegions.js +5 -0
- package/dist/test/link/getLinkRegions.js.map +1 -0
- package/dist/test/link/getLinks.js +5 -0
- package/dist/test/link/getLinks.js.map +1 -0
- package/dist/test/link/getOpenGraph.js +5 -0
- package/dist/test/link/getOpenGraph.js.map +1 -0
- package/dist/test/link/updateLink.js +8 -0
- package/dist/test/link/updateLink.js.map +1 -0
- package/dist/test/link/updateOpenGraph.js +5 -0
- package/dist/test/link/updateOpenGraph.js.map +1 -0
- package/dist/test/statistics/clear.js +5 -0
- package/dist/test/statistics/clear.js.map +1 -0
- package/dist/test/statistics/getByDomain.js +7 -0
- package/dist/test/statistics/getByDomain.js.map +1 -0
- package/dist/test/statistics/getByDomainPost.js +10 -0
- package/dist/test/statistics/getByDomainPost.js.map +1 -0
- package/dist/test/statistics/getByLink.js +7 -0
- package/dist/test/statistics/getByLink.js.map +1 -0
- package/dist/test/statistics/getByLinkPost.js +7 -0
- package/dist/test/statistics/getByLinkPost.js.map +1 -0
- package/dist/test/statistics/getLastClicks.js +8 -0
- package/dist/test/statistics/getLastClicks.js.map +1 -0
- package/dist/test/statistics/getLinkClicks.js +7 -0
- package/dist/test/statistics/getLinkClicks.js.map +1 -0
- package/dist/test/statistics/getLinkClicksByPathDates.js +13 -0
- package/dist/test/statistics/getLinkClicksByPathDates.js.map +1 -0
- package/dist/test/statistics/getTopByColumn.js +8 -0
- package/dist/test/statistics/getTopByColumn.js.map +1 -0
- package/dist/test/statistics/getTopByInterval.js +8 -0
- package/dist/test/statistics/getTopByInterval.js.map +1 -0
- package/dist/types/common.js +2 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/domain.js +2 -0
- package/dist/types/domain.js.map +1 -0
- package/dist/types/link.js +2 -0
- package/dist/types/link.js.map +1 -0
- package/dist/types/statistics.js +2 -0
- package/dist/types/statistics.js.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +35 -0
- package/src/index.ts +774 -0
- package/src/test/domain/createDomain.ts +5 -0
- package/src/test/domain/getDomains.ts +5 -0
- package/src/test/link/archiveLink.ts +5 -0
- package/src/test/link/createLink.ts +5 -0
- package/src/test/link/createLinkBulk.ts +18 -0
- package/src/test/link/createLinkCountry.ts +8 -0
- package/src/test/link/createLinkPublic.ts +9 -0
- package/src/test/link/createLinkRegions.ts +9 -0
- package/src/test/link/deleteLink.ts +5 -0
- package/src/test/link/deleteLinkCountry.ts +5 -0
- package/src/test/link/deleteLinkRegion.ts +8 -0
- package/src/test/link/getLinkCountry.ts +5 -0
- package/src/test/link/getLinkInfoByOriginalURL.ts +5 -0
- package/src/test/link/getLinkInfoByPath.ts +5 -0
- package/src/test/link/getLinkQRCode.ts +5 -0
- package/src/test/link/getLinkRegions.ts +5 -0
- package/src/test/link/getLinks.ts +5 -0
- package/src/test/link/getOpenGraph.ts +5 -0
- package/src/test/link/updateLink.ts +8 -0
- package/src/test/link/updateOpenGraph.ts +5 -0
- package/src/test/statistics/clear.ts +5 -0
- package/src/test/statistics/getByDomain.ts +7 -0
- package/src/test/statistics/getByDomainPost.ts +10 -0
- package/src/test/statistics/getByLink.ts +7 -0
- package/src/test/statistics/getByLinkPost.ts +7 -0
- package/src/test/statistics/getLastClicks.ts +8 -0
- package/src/test/statistics/getLinkClicks.ts +7 -0
- package/src/test/statistics/getLinkClicksByPathDates.ts +17 -0
- package/src/test/statistics/getTopByColumn.ts +8 -0
- package/src/test/statistics/getTopByInterval.ts +8 -0
- package/src/types/common.ts +11 -0
- package/src/types/domain.ts +44 -0
- package/src/types/link.ts +159 -0
- package/src/types/statistics.ts +242 -0
- package/tsconfig.json +19 -0
package/.eslintignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dist
|
package/.eslintrc.cjs
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Short.io Node.js SDK
|
|
2
|
+
|
|
3
|
+
The Short.io Node.js official SDK client is a library that allows you to integrate [short.io](https://short.io) URL shortening and link management API with your Node.js application in an easy and elegant way.
|
|
4
|
+
|
|
5
|
+
## API reference
|
|
6
|
+
|
|
7
|
+
See the [API docs](https://developers.short.io/reference) for more information.
|
|
8
|
+
|
|
9
|
+
## Installing
|
|
10
|
+
|
|
11
|
+
To install this package, type:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm i @short.io/client-node
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Getting Started
|
|
18
|
+
|
|
19
|
+
First you need to get your API key from the Short.io dashboard in the [Integrations & API](https://app.short.io/settings/integrations/api-key) section.
|
|
20
|
+
This SDK contains methods for working with links, domains and statistics. Import the Shortio class:
|
|
21
|
+
|
|
22
|
+
```js
|
|
23
|
+
import { Shortio } from "shortio";
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
Then create an instance of the Shortio class, and pass your API key as the first parameter:
|
|
29
|
+
|
|
30
|
+
```js
|
|
31
|
+
const shortio = new Shortio("YOUR_API_KEY");
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
To get the domain list, you can use the following code:
|
|
35
|
+
|
|
36
|
+
```js
|
|
37
|
+
const domains = await shortio.domain.list();
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Get the link list of the first domain above:
|
|
41
|
+
|
|
42
|
+
```js
|
|
43
|
+
const links = await shortio.link.list(domains[0].id);
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Get the link statistics of the first link above:
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
const stats = await shortio.statistics.getByLink(links[0].idString);
|
|
50
|
+
```
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
export class Shortio {
|
|
2
|
+
apiKey;
|
|
3
|
+
baseApiUrl = "https://api.short.io";
|
|
4
|
+
baseStatisticsUrl = "https://api-v2.short.cm/statistics";
|
|
5
|
+
constructor(apiKey) {
|
|
6
|
+
this.apiKey = apiKey;
|
|
7
|
+
}
|
|
8
|
+
link = {
|
|
9
|
+
list: async (domainId, options) => {
|
|
10
|
+
let queryString = `domain_id=${domainId}`;
|
|
11
|
+
if (options) {
|
|
12
|
+
for (const param in options) {
|
|
13
|
+
queryString += `&${param}=${options[param]}`;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const linksRes = await fetch(`${this.baseApiUrl}/api/links?${queryString}`, {
|
|
17
|
+
method: "GET",
|
|
18
|
+
headers: {
|
|
19
|
+
"Content-Type": "application/json",
|
|
20
|
+
Authorization: this.apiKey,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
const linksData = await linksRes.json();
|
|
24
|
+
return linksData;
|
|
25
|
+
},
|
|
26
|
+
getByPath: async (hostname, path) => {
|
|
27
|
+
const queryString = `domain=${hostname}&path=${path}`;
|
|
28
|
+
const linkInfoRes = await fetch(`${this.baseApiUrl}/links/expand?${queryString}`, {
|
|
29
|
+
method: "GET",
|
|
30
|
+
headers: {
|
|
31
|
+
"Content-Type": "application/json",
|
|
32
|
+
Authorization: this.apiKey,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
const linkInfo = await linkInfoRes.json();
|
|
36
|
+
return linkInfo;
|
|
37
|
+
},
|
|
38
|
+
getByOriginalURL: async (hostname, originalURL) => {
|
|
39
|
+
const queryString = `domain=${hostname}&originalURL=${originalURL}`;
|
|
40
|
+
const linkInfoRes = await fetch(`${this.baseApiUrl}/links/by-original-url?${queryString}`, {
|
|
41
|
+
method: "GET",
|
|
42
|
+
headers: {
|
|
43
|
+
"Content-Type": "application/json",
|
|
44
|
+
Authorization: this.apiKey,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
const linkInfo = await linkInfoRes.json();
|
|
48
|
+
return linkInfo;
|
|
49
|
+
},
|
|
50
|
+
create: async (hostname, originalURL, options) => {
|
|
51
|
+
const linkRes = await fetch(`${this.baseApiUrl}/links`, {
|
|
52
|
+
method: "POST",
|
|
53
|
+
headers: {
|
|
54
|
+
"Content-Type": "application/json",
|
|
55
|
+
Authorization: this.apiKey,
|
|
56
|
+
},
|
|
57
|
+
body: JSON.stringify({
|
|
58
|
+
domain: hostname,
|
|
59
|
+
originalURL,
|
|
60
|
+
...options,
|
|
61
|
+
}),
|
|
62
|
+
});
|
|
63
|
+
const link = await linkRes.json();
|
|
64
|
+
return link;
|
|
65
|
+
},
|
|
66
|
+
createPublic: async (hostname, originalURL, publicAPIKey, options) => {
|
|
67
|
+
const linkRes = await fetch(`${this.baseApiUrl}/links/public`, {
|
|
68
|
+
method: "POST",
|
|
69
|
+
headers: {
|
|
70
|
+
"Content-Type": "application/json",
|
|
71
|
+
Authorization: publicAPIKey,
|
|
72
|
+
},
|
|
73
|
+
body: JSON.stringify({
|
|
74
|
+
domain: hostname,
|
|
75
|
+
originalURL,
|
|
76
|
+
...options,
|
|
77
|
+
}),
|
|
78
|
+
});
|
|
79
|
+
const link = await linkRes.json();
|
|
80
|
+
return link;
|
|
81
|
+
},
|
|
82
|
+
bulkCreate: async (hostname, links, allowDuplicates = false) => {
|
|
83
|
+
const linkRes = await fetch(`${this.baseApiUrl}/links/bulk`, {
|
|
84
|
+
method: "POST",
|
|
85
|
+
headers: {
|
|
86
|
+
"Content-Type": "application/json",
|
|
87
|
+
Authorization: this.apiKey,
|
|
88
|
+
},
|
|
89
|
+
body: JSON.stringify({
|
|
90
|
+
domain: hostname,
|
|
91
|
+
links,
|
|
92
|
+
allowDuplicates,
|
|
93
|
+
}),
|
|
94
|
+
});
|
|
95
|
+
const link = await linkRes.json();
|
|
96
|
+
return link;
|
|
97
|
+
},
|
|
98
|
+
archive: async (linkIdString) => {
|
|
99
|
+
const res = await fetch(`${this.baseApiUrl}/links/archive`, {
|
|
100
|
+
method: "POST",
|
|
101
|
+
headers: {
|
|
102
|
+
"Content-Type": "application/json",
|
|
103
|
+
Authorization: this.apiKey,
|
|
104
|
+
},
|
|
105
|
+
body: JSON.stringify({
|
|
106
|
+
link_id: linkIdString,
|
|
107
|
+
}),
|
|
108
|
+
});
|
|
109
|
+
const linkArchiveRes = await res.json();
|
|
110
|
+
return linkArchiveRes;
|
|
111
|
+
},
|
|
112
|
+
update: async (linkIdString, options) => {
|
|
113
|
+
const res = await fetch(`${this.baseApiUrl}/links/${linkIdString}`, {
|
|
114
|
+
method: "POST",
|
|
115
|
+
headers: {
|
|
116
|
+
"Content-Type": "application/json",
|
|
117
|
+
Authorization: this.apiKey,
|
|
118
|
+
},
|
|
119
|
+
body: JSON.stringify(options),
|
|
120
|
+
});
|
|
121
|
+
const linkUpdateRes = await res.json();
|
|
122
|
+
return linkUpdateRes;
|
|
123
|
+
},
|
|
124
|
+
delete: async (linkIdString) => {
|
|
125
|
+
const res = await fetch(`${this.baseApiUrl}/links/${linkIdString}`, {
|
|
126
|
+
method: "DELETE",
|
|
127
|
+
headers: {
|
|
128
|
+
"Content-Type": "application/json",
|
|
129
|
+
Authorization: this.apiKey,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
const linkDeleteRes = await res.json();
|
|
133
|
+
return linkDeleteRes;
|
|
134
|
+
},
|
|
135
|
+
generateQRCode: async (linkIdString, options) => {
|
|
136
|
+
const res = await fetch(`${this.baseApiUrl}/links/qr/${linkIdString}`, {
|
|
137
|
+
method: "POST",
|
|
138
|
+
headers: {
|
|
139
|
+
"Content-Type": "application/json",
|
|
140
|
+
Authorization: this.apiKey,
|
|
141
|
+
},
|
|
142
|
+
body: JSON.stringify(options),
|
|
143
|
+
});
|
|
144
|
+
const buffer = Buffer.from(await res.arrayBuffer());
|
|
145
|
+
return buffer;
|
|
146
|
+
},
|
|
147
|
+
getOpenGraph: async (domainId, linkIdString) => {
|
|
148
|
+
const res = await fetch(`${this.baseApiUrl}/links/opengraph/${domainId}/${linkIdString}`, {
|
|
149
|
+
method: "GET",
|
|
150
|
+
headers: {
|
|
151
|
+
"Content-Type": "application/json",
|
|
152
|
+
Authorization: this.apiKey,
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
const openGraphData = await res.json();
|
|
156
|
+
return openGraphData;
|
|
157
|
+
},
|
|
158
|
+
updateOpenGraph: async (domainId, linkIdString, newOpenGraphData) => {
|
|
159
|
+
const res = await fetch(`${this.baseApiUrl}/links/opengraph/${domainId}/${linkIdString}`, {
|
|
160
|
+
method: "PUT",
|
|
161
|
+
headers: {
|
|
162
|
+
"Content-Type": "application/json",
|
|
163
|
+
Authorization: this.apiKey,
|
|
164
|
+
},
|
|
165
|
+
body: JSON.stringify(newOpenGraphData),
|
|
166
|
+
});
|
|
167
|
+
const openGraphData = await res.json();
|
|
168
|
+
return openGraphData;
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
domain = {
|
|
172
|
+
list: async () => {
|
|
173
|
+
const domainsRes = await fetch(`${this.baseApiUrl}/api/domains`, {
|
|
174
|
+
method: "GET",
|
|
175
|
+
headers: {
|
|
176
|
+
"Content-Type": "application/json",
|
|
177
|
+
Authorization: this.apiKey,
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
const domains = await domainsRes.json();
|
|
181
|
+
return domains;
|
|
182
|
+
},
|
|
183
|
+
create: async (hostname, options) => {
|
|
184
|
+
const domainsRes = await fetch(`${this.baseApiUrl}/domains`, {
|
|
185
|
+
method: "POST",
|
|
186
|
+
headers: {
|
|
187
|
+
"Content-Type": "application/json",
|
|
188
|
+
Authorization: this.apiKey,
|
|
189
|
+
},
|
|
190
|
+
body: JSON.stringify({
|
|
191
|
+
hostname,
|
|
192
|
+
...options,
|
|
193
|
+
}),
|
|
194
|
+
});
|
|
195
|
+
const domain = await domainsRes.json();
|
|
196
|
+
return domain;
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
linkCountry = {
|
|
200
|
+
list: async (linkIdString) => {
|
|
201
|
+
const res = await fetch(`${this.baseApiUrl}/link_country/${linkIdString}`, {
|
|
202
|
+
method: "GET",
|
|
203
|
+
headers: {
|
|
204
|
+
"Content-Type": "application/json",
|
|
205
|
+
Authorization: this.apiKey,
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
const linkCountries = await res.json();
|
|
209
|
+
return linkCountries;
|
|
210
|
+
},
|
|
211
|
+
create: async (linkIdString, options) => {
|
|
212
|
+
const res = await fetch(`${this.baseApiUrl}/link_country/${linkIdString}`, {
|
|
213
|
+
method: "POST",
|
|
214
|
+
headers: {
|
|
215
|
+
"Content-Type": "application/json",
|
|
216
|
+
Authorization: this.apiKey,
|
|
217
|
+
},
|
|
218
|
+
body: JSON.stringify(options),
|
|
219
|
+
});
|
|
220
|
+
const linkCountry = await res.json();
|
|
221
|
+
return linkCountry;
|
|
222
|
+
},
|
|
223
|
+
delete: async (linkIdString, country) => {
|
|
224
|
+
const res = await fetch(`${this.baseApiUrl}/link_country/${linkIdString}/${country}`, {
|
|
225
|
+
method: "DELETE",
|
|
226
|
+
headers: {
|
|
227
|
+
"Content-Type": "application/json",
|
|
228
|
+
Authorization: this.apiKey,
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
const linkCountryDeleteRes = await res.json();
|
|
232
|
+
return linkCountryDeleteRes;
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
linkRegion = {
|
|
236
|
+
list: async (linkIdString) => {
|
|
237
|
+
const res = await fetch(`${this.baseApiUrl}/link_region/${linkIdString}`, {
|
|
238
|
+
method: "GET",
|
|
239
|
+
headers: {
|
|
240
|
+
"Content-Type": "application/json",
|
|
241
|
+
Authorization: this.apiKey,
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
const linkRegions = await res.json();
|
|
245
|
+
return linkRegions;
|
|
246
|
+
},
|
|
247
|
+
create: async (linkIdString, options) => {
|
|
248
|
+
const res = await fetch(`${this.baseApiUrl}/link_region/${linkIdString}`, {
|
|
249
|
+
method: "POST",
|
|
250
|
+
headers: {
|
|
251
|
+
"Content-Type": "application/json",
|
|
252
|
+
Authorization: this.apiKey,
|
|
253
|
+
},
|
|
254
|
+
body: JSON.stringify(options),
|
|
255
|
+
});
|
|
256
|
+
const linkRegion = await res.json();
|
|
257
|
+
return linkRegion;
|
|
258
|
+
},
|
|
259
|
+
delete: async (linkIdString, options) => {
|
|
260
|
+
const res = await fetch(`${this.baseApiUrl}/link_region/${linkIdString}/${options.country}/${options.region}`, {
|
|
261
|
+
method: "DELETE",
|
|
262
|
+
headers: {
|
|
263
|
+
"Content-Type": "application/json",
|
|
264
|
+
Authorization: this.apiKey,
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
const linkRegionDeleteRes = await res.json();
|
|
268
|
+
return linkRegionDeleteRes;
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
statistics = {
|
|
272
|
+
getByLink: async (linkIdString, options) => {
|
|
273
|
+
let queryString = "";
|
|
274
|
+
if (options) {
|
|
275
|
+
for (const param in options) {
|
|
276
|
+
queryString += `&${param}=${options[param]}`;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
const res = await fetch(`${this.baseStatisticsUrl}/link/${linkIdString}${queryString ? "?" + queryString : ""}`, {
|
|
280
|
+
method: "GET",
|
|
281
|
+
headers: {
|
|
282
|
+
"Content-Type": "application/json",
|
|
283
|
+
Authorization: this.apiKey,
|
|
284
|
+
},
|
|
285
|
+
});
|
|
286
|
+
const statistics = await res.json();
|
|
287
|
+
return statistics;
|
|
288
|
+
},
|
|
289
|
+
getByLinkPost: async (linkIdString, options) => {
|
|
290
|
+
const res = await fetch(`${this.baseStatisticsUrl}/link/${linkIdString}`, {
|
|
291
|
+
method: "POST",
|
|
292
|
+
headers: {
|
|
293
|
+
"Content-Type": "application/json",
|
|
294
|
+
Authorization: this.apiKey,
|
|
295
|
+
},
|
|
296
|
+
body: JSON.stringify(options),
|
|
297
|
+
});
|
|
298
|
+
const statistics = await res.json();
|
|
299
|
+
return statistics;
|
|
300
|
+
},
|
|
301
|
+
getByDomain: async (domainId, options) => {
|
|
302
|
+
let queryString = "";
|
|
303
|
+
if (options) {
|
|
304
|
+
for (const param in options) {
|
|
305
|
+
queryString += `&${param}=${options[param]}`;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}${queryString ? "?" + queryString : ""}`, {
|
|
309
|
+
method: "GET",
|
|
310
|
+
headers: {
|
|
311
|
+
"Content-Type": "application/json",
|
|
312
|
+
Authorization: this.apiKey,
|
|
313
|
+
},
|
|
314
|
+
});
|
|
315
|
+
const statistics = await res.json();
|
|
316
|
+
return statistics;
|
|
317
|
+
},
|
|
318
|
+
getByDomainPost: async (domainId, options) => {
|
|
319
|
+
const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}`, {
|
|
320
|
+
method: "POST",
|
|
321
|
+
headers: {
|
|
322
|
+
"Content-Type": "application/json",
|
|
323
|
+
Authorization: this.apiKey,
|
|
324
|
+
},
|
|
325
|
+
body: JSON.stringify(options),
|
|
326
|
+
});
|
|
327
|
+
const statistics = await res.json();
|
|
328
|
+
return statistics;
|
|
329
|
+
},
|
|
330
|
+
getLinkClicks: async (domainId, options) => {
|
|
331
|
+
let queryString = "";
|
|
332
|
+
for (const param in options) {
|
|
333
|
+
queryString += `&${param}=${options[param]}`;
|
|
334
|
+
}
|
|
335
|
+
const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/link_clicks${queryString ? "?" + queryString : ""}`, {
|
|
336
|
+
method: "GET",
|
|
337
|
+
headers: {
|
|
338
|
+
"Content-Type": "application/json",
|
|
339
|
+
Authorization: this.apiKey,
|
|
340
|
+
},
|
|
341
|
+
});
|
|
342
|
+
const statistics = await res.json();
|
|
343
|
+
return statistics;
|
|
344
|
+
},
|
|
345
|
+
getLinkClicksByPathDates: async (domainId, pathsDates, options) => {
|
|
346
|
+
let queryString = "";
|
|
347
|
+
if (options) {
|
|
348
|
+
for (const param in options) {
|
|
349
|
+
queryString += `&${param}=${options[param]}`;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/link_clicks${queryString ? "?" + queryString : ""}`, {
|
|
353
|
+
method: "POST",
|
|
354
|
+
headers: {
|
|
355
|
+
"Content-Type": "application/json",
|
|
356
|
+
Authorization: this.apiKey,
|
|
357
|
+
},
|
|
358
|
+
body: JSON.stringify({ pathsDates }),
|
|
359
|
+
});
|
|
360
|
+
const statistics = await res.json();
|
|
361
|
+
return statistics;
|
|
362
|
+
},
|
|
363
|
+
getTopByColumn: async (domainId, column, options) => {
|
|
364
|
+
const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/top`, {
|
|
365
|
+
method: "POST",
|
|
366
|
+
headers: {
|
|
367
|
+
"Content-Type": "application/json",
|
|
368
|
+
Authorization: this.apiKey,
|
|
369
|
+
},
|
|
370
|
+
body: JSON.stringify({ column, ...options }),
|
|
371
|
+
});
|
|
372
|
+
const statistics = await res.json();
|
|
373
|
+
return statistics;
|
|
374
|
+
},
|
|
375
|
+
getTopByInterval: async (domainId, column, options) => {
|
|
376
|
+
const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/top_by_interval`, {
|
|
377
|
+
method: "POST",
|
|
378
|
+
headers: {
|
|
379
|
+
"Content-Type": "application/json",
|
|
380
|
+
Authorization: this.apiKey,
|
|
381
|
+
},
|
|
382
|
+
body: JSON.stringify({ column, ...options }),
|
|
383
|
+
});
|
|
384
|
+
const statistics = await res.json();
|
|
385
|
+
return statistics;
|
|
386
|
+
},
|
|
387
|
+
getLastClicks: async (domainId, options) => {
|
|
388
|
+
const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/last_clicks`, {
|
|
389
|
+
method: "POST",
|
|
390
|
+
headers: {
|
|
391
|
+
"Content-Type": "application/json",
|
|
392
|
+
Authorization: this.apiKey,
|
|
393
|
+
},
|
|
394
|
+
body: JSON.stringify(options),
|
|
395
|
+
});
|
|
396
|
+
const statistics = await res.json();
|
|
397
|
+
return statistics;
|
|
398
|
+
},
|
|
399
|
+
clear: async (domainId) => {
|
|
400
|
+
const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/statistics`, {
|
|
401
|
+
method: "DELETE",
|
|
402
|
+
headers: {
|
|
403
|
+
"Content-Type": "application/json",
|
|
404
|
+
Authorization: this.apiKey,
|
|
405
|
+
},
|
|
406
|
+
});
|
|
407
|
+
const deleteRes = await res.json();
|
|
408
|
+
return deleteRes;
|
|
409
|
+
},
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ErrorResBody, StatusResBody, SuccessResBody } from \"./types/common.js\";\nimport { Domain, DomainCreateOptions } from \"./types/domain.js\";\nimport {\n DeleteLinkRes,\n GetLinkQRCodeOptions,\n Link,\n LinkBulkCreateOptions,\n LinkCountry,\n LinkCountryCreateOptions,\n LinkCreateOptions,\n LinkListOptions,\n LinkOpenGraphData,\n LinkRegion,\n LinkRegionCreateOptions,\n LinkRegionDeleteOptions,\n LinksAndCount,\n LinkUpdateOptions,\n LinkWithUser,\n UpdateLinkErrorRes,\n} from \"./types/link.js\";\nimport {\n Column,\n DomainStatistics,\n FilterOptions,\n GetLastClicksOptions,\n GetStatisticsOptions,\n IncludeExcludeOptions,\n LastClicksRes,\n LinkClicks,\n LinkIds,\n LinkStatistics,\n PathClicks,\n PathDate,\n StartEndDate,\n TopByColumnOptions,\n TopByIntervalOptions,\n TopByIntervalRes,\n TopColumnRes,\n} from \"./types/statistics.js\";\n\nexport class Shortio {\n private readonly baseApiUrl = \"https://api.short.io\";\n private readonly baseStatisticsUrl = \"https://api-v2.short.cm/statistics\";\n\n constructor(private readonly apiKey: string) {}\n\n public readonly link = {\n /**\n * Fetch links for a given domain id.\n * By default it returns 150 links, this behavior can be changed by passing limit option.\n * API reference: https://developers.short.io/reference/apilinksget\n * @param domainId Domain id\n * @param options Options for the request\n * @returns Links, total link count and the next page token for pagination\n */\n list: async (domainId: Domain[\"id\"], options?: LinkListOptions): Promise<LinksAndCount | ErrorResBody> => {\n let queryString = `domain_id=${domainId}`;\n if (options) {\n for (const param in options) {\n queryString += `&${param}=${options[param as keyof LinkListOptions]}`;\n }\n }\n const linksRes = await fetch(`${this.baseApiUrl}/api/links?${queryString}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const linksData = await linksRes.json();\n return linksData;\n },\n\n /**\n * Fetch link info by path.\n * API reference: https://developers.short.io/reference/linksexpandbydomainandpathget\n * @param hostname Domain hostname\n * @param path Path of the link\n * @returns Link details\n */\n getByPath: async (hostname: Domain[\"hostname\"], path: Link[\"path\"]): Promise<Link | ErrorResBody> => {\n const queryString = `domain=${hostname}&path=${path}`;\n const linkInfoRes = await fetch(`${this.baseApiUrl}/links/expand?${queryString}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const linkInfo = await linkInfoRes.json();\n return linkInfo;\n },\n\n /**\n * Fetch link info by original URL.\n * API reference: https://developers.short.io/reference/linksbyoriginalurlbydomainandoriginalurlget\n * @param hostname Domain hostname\n * @param originalURL Original URL of the link\n * @returns Link details\n */\n getByOriginalURL: async (\n hostname: Domain[\"hostname\"],\n originalURL: Link[\"originalURL\"],\n ): Promise<Link | ErrorResBody> => {\n const queryString = `domain=${hostname}&originalURL=${originalURL}`;\n const linkInfoRes = await fetch(`${this.baseApiUrl}/links/by-original-url?${queryString}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const linkInfo = await linkInfoRes.json();\n return linkInfo;\n },\n\n /**\n * Shorten a URL and create a new short link. If parameter \"path\" in the options is omitted, it\ngenerates path by algorithm, chosen in domain settings.\n * API reference: https://developers.short.io/reference/linkspost\n * @param hostname Domain hostname\n * @param originalURL Original URL of the link\n * @param options Options for the request\n */\n create: async (\n hostname: Domain[\"hostname\"],\n originalURL: Link[\"originalURL\"],\n options?: LinkCreateOptions,\n ): Promise<Link | ErrorResBody> => {\n const linkRes = await fetch(`${this.baseApiUrl}/links`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify({\n domain: hostname,\n originalURL,\n ...options,\n }),\n });\n const link = await linkRes.json();\n return link;\n },\n\n /**\n * Shorten a URL with public key and create a new short link. If parameter \"path\" in the options is omitted, it generates path by algorithm, chosen in domain settings.\n * API reference: https://developers.short.io/reference/linkspostpublic\n * @param hostname Domain hostname\n * @param originalURL Original URL of the link\n * @param publicAPIKey Public API key\n * @param options Options for the request\n * @returns Shortened link\n */\n createPublic: async (\n hostname: Domain[\"hostname\"],\n originalURL: Link[\"originalURL\"],\n publicAPIKey: string,\n options?: LinkCreateOptions,\n ): Promise<Link | (SuccessResBody & ErrorResBody)> => {\n const linkRes = await fetch(`${this.baseApiUrl}/links/public`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: publicAPIKey,\n },\n body: JSON.stringify({\n domain: hostname,\n originalURL,\n ...options,\n }),\n });\n const link = await linkRes.json();\n return link;\n },\n\n /**\n * Shorten links in bulk. Method accepts up to 1000 links in one API call.\n * API reference: https://developers.short.io/reference/linksbulkpost\n * @param hostname Domain hostname\n * @param links Links to be shortened\n * @param allowDuplicates Allow duplicate links\n * @returns Shortened links\n */\n bulkCreate: async (\n hostname: Domain[\"hostname\"],\n links: LinkBulkCreateOptions[],\n allowDuplicates = false,\n ): Promise<(Link & SuccessResBody)[] | (SuccessResBody & ErrorResBody & StatusResBody)> => {\n const linkRes = await fetch(`${this.baseApiUrl}/links/bulk`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify({\n domain: hostname,\n links,\n allowDuplicates,\n }),\n });\n const link = await linkRes.json();\n return link;\n },\n\n /**\n * Archive link by its id string.\n * API reference: https://developers.short.io/reference/archivelink\n * @param linkIdString Link id string\n */\n archive: async (linkIdString: Link[\"idString\"]): Promise<SuccessResBody | ErrorResBody> => {\n const res = await fetch(`${this.baseApiUrl}/links/archive`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify({\n link_id: linkIdString,\n }),\n });\n const linkArchiveRes = await res.json();\n return linkArchiveRes;\n },\n\n /**\n * Update existing link.\n * API reference: https://developers.short.io/reference/linksbylinkidpost\n * @param linkIdString Link id string\n * @param options Options for the request\n * @returns Updated link with a user details\n */\n update: async (\n linkIdString: Link[\"idString\"],\n options: LinkUpdateOptions,\n ): Promise<LinkWithUser | UpdateLinkErrorRes> => {\n const res = await fetch(`${this.baseApiUrl}/links/${linkIdString}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify(options),\n });\n const linkUpdateRes = await res.json();\n return linkUpdateRes;\n },\n\n /**\n * Delete link by its id string.\n * API reference: https://developers.short.io/reference/linksbylinkiddelete\n * @param linkIdString Link id string\n * @returns Deleted link id string\n */\n delete: async (linkIdString: Link[\"idString\"]): Promise<DeleteLinkRes | ErrorResBody> => {\n const res = await fetch(`${this.baseApiUrl}/links/${linkIdString}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const linkDeleteRes = await res.json();\n return linkDeleteRes;\n },\n\n /**\n * Generate QR code for a link.\n * API reference: https://developers.short.io/reference/qrcodebylinkidpost\n * @param linkIdString Link id string\n * @param options Options for the request\n * @returns QR code image\n */\n generateQRCode: async (\n linkIdString: Link[\"idString\"],\n options?: GetLinkQRCodeOptions,\n ): Promise<ErrorResBody | Buffer> => {\n const res = await fetch(`${this.baseApiUrl}/links/qr/${linkIdString}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify(options),\n });\n const buffer = Buffer.from(await res.arrayBuffer());\n return buffer;\n },\n\n /**\n * Get Open Graph data for a link.\n * API reference: https://developers.short.io/reference/opengraphbydomainidandlinkidget\n * @param domainId Domain id\n * @param linkIdString Link id string\n * @returns Open Graph data\n */\n getOpenGraph: async (\n domainId: Domain[\"id\"],\n linkIdString: Link[\"idString\"],\n ): Promise<LinkOpenGraphData | ErrorResBody> => {\n const res = await fetch(`${this.baseApiUrl}/links/opengraph/${domainId}/${linkIdString}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const openGraphData = await res.json();\n return openGraphData;\n },\n\n /**\n * Update Open Graph data for a link.\n * API reference: https://developers.short.io/reference/opengraphbydomainidandlinkidpost\n * @param domainId Domain id\n * @param linkIdString Link id string\n * @param newOpenGraphData updated Open Graph data\n * @returns Updated Open Graph data\n */\n updateOpenGraph: async (\n domainId: Domain[\"id\"],\n linkIdString: Link[\"idString\"],\n newOpenGraphData: LinkOpenGraphData,\n ): Promise<LinkOpenGraphData | ErrorResBody> => {\n const res = await fetch(`${this.baseApiUrl}/links/opengraph/${domainId}/${linkIdString}`, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify(newOpenGraphData),\n });\n const openGraphData = await res.json();\n return openGraphData;\n },\n };\n\n public readonly domain = {\n /**\n * Fetch all user domains.\n * API reference: https://developers.short.io/reference/apidomainsget\n * @returns List of domains\n */\n list: async (): Promise<Domain[] | ErrorResBody> => {\n const domainsRes = await fetch(`${this.baseApiUrl}/api/domains`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const domains = await domainsRes.json();\n return domains;\n },\n\n /**\n * Create a new domain and add it to your short.io account.\n * API reference: https://developers.short.io/reference/domainspost\n */\n create: async (hostname: Domain[\"hostname\"], options?: DomainCreateOptions): Promise<Domain | ErrorResBody> => {\n const domainsRes = await fetch(`${this.baseApiUrl}/domains`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify({\n hostname,\n ...options,\n }),\n });\n const domain = await domainsRes.json();\n return domain;\n },\n };\n\n public readonly linkCountry = {\n /**\n * Returns list of country rules for a given link\n * API reference: https://developers.short.io/reference/linkcountrybylinkidget\n * @param linkIdString Link id string\n * @returns List of link country rules\n */\n list: async (linkIdString: Link[\"idString\"]): Promise<LinkCountry[] | ErrorResBody> => {\n const res = await fetch(`${this.baseApiUrl}/link_country/${linkIdString}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const linkCountries = await res.json();\n return linkCountries;\n },\n\n /**\n * Create country rule for a given link\n * API reference: https://developers.short.io/reference/linkcountrybylinkidpost\n * @param linkIdString Link id string\n * @param options Options for the request\n * @returns Created link country rule\n */\n create: async (\n linkIdString: Link[\"idString\"],\n options: LinkCountryCreateOptions,\n ): Promise<LinkCountry | ErrorResBody> => {\n const res = await fetch(`${this.baseApiUrl}/link_country/${linkIdString}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify(options),\n });\n const linkCountry = await res.json();\n return linkCountry;\n },\n\n /**\n * Delete country rule for a given link\n * API reference: https://developers.short.io/reference/linkcountrybylinkidandcountrydelete\n * @param linkIdString Link id string\n * @param country Country code\n * @returns Empty response body\n */\n delete: async (\n linkIdString: Link[\"idString\"],\n country: LinkCountry[\"country\"],\n ): Promise<SuccessResBody | ErrorResBody> => {\n const res = await fetch(`${this.baseApiUrl}/link_country/${linkIdString}/${country}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const linkCountryDeleteRes = await res.json();\n return linkCountryDeleteRes;\n },\n };\n\n public readonly linkRegion = {\n /**\n * Returns list of region rules for a given link\n * API reference: https://developers.short.io/reference/linkregionbylinkidget\n * @param linkIdString Link id string\n * @returns List of link region rules\n */\n list: async (linkIdString: Link[\"idString\"]): Promise<LinkRegion[] | ErrorResBody> => {\n const res = await fetch(`${this.baseApiUrl}/link_region/${linkIdString}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const linkRegions = await res.json();\n return linkRegions;\n },\n\n /**\n * Create region rule for a given link\n * API reference: https://developers.short.io/reference/linkregionbylinkidpost\n * @param linkIdString Link id string\n * @param options Options for the request\n * @returns Created link region rule\n */\n create: async (\n linkIdString: Link[\"idString\"],\n options: LinkRegionCreateOptions,\n ): Promise<LinkRegion | ErrorResBody> => {\n const res = await fetch(`${this.baseApiUrl}/link_region/${linkIdString}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify(options),\n });\n const linkRegion = await res.json();\n return linkRegion;\n },\n\n /**\n * Delete region rule for a given link\n * API reference: https://developers.short.io/reference/linkregionregionbylinkidandcountrydelete\n * @param linkIdString Link id string\n * @param options Options for the request\n * @returns Empty response body\n */\n delete: async (\n linkIdString: Link[\"idString\"],\n options: LinkRegionDeleteOptions,\n ): Promise<SuccessResBody | ErrorResBody> => {\n const res = await fetch(\n `${this.baseApiUrl}/link_region/${linkIdString}/${options.country}/${options.region}`,\n {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n },\n );\n const linkRegionDeleteRes = await res.json();\n return linkRegionDeleteRes;\n },\n };\n\n public readonly statistics = {\n /**\n * Return link statistics\n * API reference: https://developers.short.io/reference/getlinklinkid\n * @param linkIdString Link id string\n * @param options Options for the request\n * @returns Link statistics\n */\n getByLink: async (\n linkIdString: Link[\"idString\"],\n options?: GetStatisticsOptions,\n ): Promise<LinkStatistics | ErrorResBody> => {\n let queryString = \"\";\n if (options) {\n for (const param in options) {\n queryString += `&${param}=${options[param as keyof GetStatisticsOptions]}`;\n }\n }\n const res = await fetch(\n `${this.baseStatisticsUrl}/link/${linkIdString}${queryString ? \"?\" + queryString : \"\"}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n },\n );\n const statistics = await res.json();\n return statistics;\n },\n\n /**\n * Return link statistics. The same as getByLink(), but uses POST method and sends all parameters in the body including filter parameters (include and exclude)\n * API reference: https://developers.short.io/reference/postlinklinkid\n * @param linkIdString Link id string\n * @param options Options for the request\n * @returns Link statistics\n */\n getByLinkPost: async (\n linkIdString: Link[\"idString\"],\n options?: GetStatisticsOptions & {\n include?: FilterOptions;\n exclude?: FilterOptions;\n },\n ): Promise<LinkStatistics | ErrorResBody> => {\n const res = await fetch(`${this.baseStatisticsUrl}/link/${linkIdString}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify(options),\n });\n const statistics = await res.json();\n return statistics;\n },\n\n /**\n * Return domain statistics\n * API reference: https://developers.short.io/reference/getdomaindomainid\n * @param domainId Domain id\n * @param options Options for the request\n * @returns Domain statistics\n */\n getByDomain: async (\n domainId: Domain[\"id\"],\n options?: GetStatisticsOptions,\n ): Promise<DomainStatistics | ErrorResBody> => {\n let queryString = \"\";\n if (options) {\n for (const param in options) {\n queryString += `&${param}=${options[param as keyof GetStatisticsOptions]}`;\n }\n }\n const res = await fetch(\n `${this.baseStatisticsUrl}/domain/${domainId}${queryString ? \"?\" + queryString : \"\"}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n },\n );\n const statistics = await res.json();\n return statistics;\n },\n\n /**\n * Return domain statistics. The same as getByDomain(), but uses POST method and sends all parameters in the body including filter parameters (include and exclude)\n * API reference: https://developers.short.io/reference/postdomaindomainid\n * @param domainId Domain id\n * @param options Options for the request\n * @returns Domain statistics\n */\n getByDomainPost: async (\n domainId: Domain[\"id\"],\n options?: GetStatisticsOptions & IncludeExcludeOptions,\n ): Promise<DomainStatistics | ErrorResBody> => {\n const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify(options),\n });\n const statistics = await res.json();\n return statistics;\n },\n\n /**\n * Gets link clicks for link ids\n * API reference: https://developers.short.io/reference/getdomaindomainidlink_clicks\n * @param domainId Domain id\n * @param options Options for the request. Ids is a string with comma separated link id strings\n * @returns Link clicks for requested links\n */\n getLinkClicks: async (\n domainId: Domain[\"id\"],\n options: StartEndDate & LinkIds,\n ): Promise<LinkClicks | ErrorResBody> => {\n let queryString = \"\";\n for (const param in options) {\n queryString += `&${param}=${options[param as keyof (StartEndDate & LinkIds)]}`;\n }\n const res = await fetch(\n `${this.baseStatisticsUrl}/domain/${domainId}/link_clicks${queryString ? \"?\" + queryString : \"\"}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n },\n );\n const statistics = await res.json();\n return statistics;\n },\n\n /**\n * Gets link clicks for link paths and dates in the body\n * API reference: https://developers.short.io/reference/postdomaindomainidlink_clicks\n * @param domainId Domain id\n * @param options Options for the request\n * @returns Link clicks for requested links\n */\n getLinkClicksByPathDates: async (\n domainId: Domain[\"id\"],\n pathsDates: PathDate[],\n options?: StartEndDate,\n ): Promise<PathClicks | ErrorResBody> => {\n let queryString = \"\";\n if (options) {\n for (const param in options) {\n queryString += `&${param}=${options[param as keyof StartEndDate]}`;\n }\n }\n const res = await fetch(\n `${this.baseStatisticsUrl}/domain/${domainId}/link_clicks${queryString ? \"?\" + queryString : \"\"}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify({ pathsDates }),\n },\n );\n const statistics = await res.json();\n return statistics;\n },\n\n /**\n * Get top values of specified column, ordered by clicks desc\n * API reference: https://developers.short.io/reference/postdomaindomainidtop\n * @param domainId Domain id\n * @param column Column to get top values for\n * @param options Options for the request\n * @returns Top values of specified column for the domain\n */\n getTopByColumn: async (\n domainId: Domain[\"id\"],\n column: Column,\n options?: TopByColumnOptions,\n ): Promise<TopColumnRes[]> => {\n const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/top`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify({ column, ...options }),\n });\n const statistics = await res.json();\n return statistics;\n },\n\n /**\n * Get values by interval and counts for specified column\n * @param domainId Domain id\n * @param column Column to get top values for\n * @param options Options for the request\n * @returns Values by interval and counts for specified column\n */\n getTopByInterval: async (\n domainId: Domain[\"id\"],\n column: Column,\n options?: TopByIntervalOptions,\n ): Promise<TopByIntervalRes[] | ErrorResBody> => {\n const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/top_by_interval`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify({ column, ...options }),\n });\n const statistics = await res.json();\n return statistics;\n },\n\n /**\n * Get list of latest raw clicks\n * API reference: https://developers.short.io/reference/postdomaindomainidlast_clicks\n * @param domainId Domain id\n * @param options Options for the request\n * @returns List of latest raw clicks\n */\n getLastClicks: async (\n domainId: Domain[\"id\"],\n options?: GetLastClicksOptions,\n ): Promise<LastClicksRes | ErrorResBody> => {\n const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/last_clicks`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n body: JSON.stringify(options),\n });\n const statistics = await res.json();\n return statistics;\n },\n\n /**\n * Clear statistics of specified domain\n * API reference: https://developers.short.io/reference/deletedomaindomainidstatistics\n * @param domainId Domain id\n * @returns Empty response body\n */\n clear: async (domainId: Domain[\"id\"]): Promise<SuccessResBody | ErrorResBody> => {\n const res = await fetch(`${this.baseStatisticsUrl}/domain/${domainId}/statistics`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: this.apiKey,\n },\n });\n const deleteRes = await res.json();\n return deleteRes;\n },\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDomain.js","sourceRoot":"","sources":["../../../src/test/domain/createDomain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACnD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/D,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC","sourcesContent":["import { Shortio } from \"../../index.js\";\n\nconst shortio = new Shortio(\"sk_Kd5g7v8CEsgoH2oE\");\nconst newDomain = await shortio.domain.create(\"test-test.com\");\nconsole.log(\"file: getDomains.ts:5 ::: domains:\", newDomain);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDomains.js","sourceRoot":"","sources":["../../../src/test/domain/getDomains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACnD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC5C,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC","sourcesContent":["import { Shortio } from \"../../index.js\";\n\nconst shortio = new Shortio(\"sk_Kd5g7v8CEsgoH2oE\");\nconst domains = await shortio.domain.list();\nconsole.log(\"file: getDomains.ts:5 ::: domains:\", domains);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLinks.js","sourceRoot":"","sources":["../../src/test/getLinks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACzD,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnD,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC","sourcesContent":["import { Shortio } from \"../index.js\";\n\nconst shortIOClient = new Shortio(\"sk_Kd5g7v8CEsgoH2oE\");\nconst links = await shortIOClient.getLinks(293848);\nconsole.log(\"file: getLinks.ts:5 ::: links:\", links);\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Shortio } from "../../index.js";
|
|
2
|
+
const shortio = new Shortio("sk_Kd5g7v8CEsgoH2oE");
|
|
3
|
+
const archiveRes = await shortio.link.archive("lnk_1eru_9dCPkohgosF");
|
|
4
|
+
console.log("file: archiveLink.ts:5 ::: archiveRes:", archiveRes);
|
|
5
|
+
//# sourceMappingURL=archiveLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archiveLink.js","sourceRoot":"","sources":["../../../src/test/link/archiveLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACnD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACtE,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAC","sourcesContent":["import { Shortio } from \"../../index.js\";\n\nconst shortio = new Shortio(\"sk_Kd5g7v8CEsgoH2oE\");\nconst archiveRes = await shortio.link.archive(\"lnk_1eru_9dCPkohgosF\");\nconsole.log(\"file: archiveLink.ts:5 ::: archiveRes:\", archiveRes);\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Shortio } from "../../index.js";
|
|
2
|
+
const shortio = new Shortio("sk_Kd5g7v8CEsgoH2oE");
|
|
3
|
+
const newLink = await shortio.link.create("rybak.link", "https://example.com/long--long--url");
|
|
4
|
+
console.log("file: createLink.ts:5 ::: newLink:", newLink);
|
|
5
|
+
//# sourceMappingURL=createLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createLink.js","sourceRoot":"","sources":["../../../src/test/link/createLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACnD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,qCAAqC,CAAC,CAAC;AAC/F,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC","sourcesContent":["import { Shortio } from \"../../index.js\";\n\nconst shortio = new Shortio(\"sk_Kd5g7v8CEsgoH2oE\");\nconst newLink = await shortio.link.create(\"rybak.link\", \"https://example.com/long--long--url\");\nconsole.log(\"file: createLink.ts:5 ::: newLink:\", newLink);\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Shortio } from "../../index.js";
|
|
2
|
+
const shortio = new Shortio("sk_Kd5g7v8CEsgoH2oE");
|
|
3
|
+
const newLinks = await shortio.link.bulkCreate("rybak.link", [
|
|
4
|
+
{
|
|
5
|
+
originalURL: "https://developers.short.io/reference/linksbulkpost",
|
|
6
|
+
path: "shortio/linkbulkcreate",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
originalURL: "https://developers.short.io/reference/archivelink",
|
|
10
|
+
path: "shortio/linkarchive",
|
|
11
|
+
},
|
|
12
|
+
]);
|
|
13
|
+
console.log("file: createLinkBulk.ts:14 ::: newLinks:", newLinks);
|
|
14
|
+
//# sourceMappingURL=createLinkBulk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createLinkBulk.js","sourceRoot":"","sources":["../../../src/test/link/createLinkBulk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAC1C,YAAY,EACZ;IACI;QACI,WAAW,EAAE,qDAAqD;QAClE,IAAI,EAAE,wBAAwB;KACjC;IACD;QACI,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,qBAAqB;KAC9B;CACJ,CAEJ,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["import { Shortio } from \"../../index.js\";\n\nconst shortio = new Shortio(\"sk_Kd5g7v8CEsgoH2oE\");\nconst newLinks = await shortio.link.bulkCreate(\n \"rybak.link\",\n [\n {\n originalURL: \"https://developers.short.io/reference/linksbulkpost\",\n path: \"shortio/linkbulkcreate\",\n },\n {\n originalURL: \"https://developers.short.io/reference/archivelink\",\n path: \"shortio/linkarchive\",\n },\n ],\n // true,\n);\nconsole.log(\"file: createLinkBulk.ts:14 ::: newLinks:\", newLinks);\n"]}
|