@eso-status/live-services 1.0.7 → 2.0.0-dev.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/LICENSE.md +1 -1
- package/README.md +70 -70
- package/lib/connector.d.ts +10 -0
- package/lib/connector.js +21 -0
- package/lib/const.d.ts +10 -0
- package/lib/const.js +49 -0
- package/lib/index.d.ts +6 -11
- package/lib/index.js +30 -65
- package/lib/interface/esoStatusRawData.interface.d.ts +46 -0
- package/lib/interface/esoStatusRawData.interface.js +3 -0
- package/lib/interface/rawAssociation.interface.d.ts +10 -0
- package/lib/interface/rawAssociation.interface.js +3 -0
- package/lib/interface/remoteData.interface.d.ts +21 -0
- package/lib/interface/remoteData.interface.js +3 -0
- package/lib/type/remoteRaw.type.d.ts +4 -0
- package/lib/type/remoteRaw.type.js +3 -0
- package/lib/type/remoteRawSlug.type.d.ts +4 -0
- package/lib/type/remoteRawSlug.type.js +3 -0
- package/lib/type/remoteRawStatus.type.d.ts +4 -0
- package/lib/type/remoteRawStatus.type.js +3 -0
- package/lib/type/remoteResultCode.type.d.ts +4 -0
- package/lib/type/remoteResultCode.type.js +3 -0
- package/lib/type/remoteResultMessage.type.d.ts +4 -0
- package/lib/type/remoteResultMessage.type.js +3 -0
- package/lib/type/sourceUrl.type.d.ts +4 -0
- package/lib/type/sourceUrl.type.js +3 -0
- package/package.json +82 -33
- package/lib/classes/LiveServicesElement.d.ts +0 -46
- package/lib/classes/LiveServicesElement.js +0 -83
- package/lib/connectors/LiveServicesConnector.d.ts +0 -54
- package/lib/connectors/LiveServicesConnector.js +0 -138
package/LICENSE.md
CHANGED
package/README.md
CHANGED
|
@@ -1,119 +1,119 @@
|
|
|
1
1
|
# eso-status/live-services
|
|
2
|
+
|
|
3
|
+
[](https://sonarcloud.io/summary/new_code?id=eso-status_live-services)
|
|
4
|
+
[](https://sonarcloud.io/summary/new_code?id=eso-status_live-services)
|
|
5
|
+
[](https://sonarcloud.io/summary/new_code?id=eso-status_live-services)
|
|
6
|
+
[](https://sonarcloud.io/summary/new_code?id=eso-status_live-services)
|
|
7
|
+
[](https://sonarcloud.io/summary/new_code?id=eso-status_live-services)
|
|
8
|
+
[](https://sonarcloud.io/summary/new_code?id=eso-status_live-services)
|
|
9
|
+
[](https://sonarcloud.io/summary/new_code?id=eso-status_live-services)
|
|
10
|
+
|
|
2
11
|
[](https://www.npmjs.com/package/@eso-status/live-services)
|
|
3
12
|
[](https://github.com/eso-status/live-services/blob/master/LICENSE.md)
|
|
4
13
|
<img src="https://img.shields.io/npm/dt/@eso-status/live-services" alt="Downloads" />
|
|
5
|
-
[](https://lgtm.com/projects/g/eso-status/live-services/context:javascript)
|
|
6
14
|
<img src="https://img.shields.io/node/v/@eso-status/live-services" alt="Node version" />
|
|
15
|
+
|
|
7
16
|
[](https://github.com/eso-status/live-services/actions/workflows/CI.yaml)
|
|
8
|
-
[](https://github.com/eso-status/live-services/actions/workflows/CD.yaml)
|
|
9
18
|
|
|
10
|
-
eso-status/live-services is a library for
|
|
19
|
+
eso-status/live-services is a library for retrieving and formatting data, which can be found at [https://live-services.elderscrollsonline.com/status/realms](https://live-services.elderscrollsonline.com/status/realms).
|
|
11
20
|
|
|
12
21
|
## Table of Contents
|
|
13
|
-
- [
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
22
|
+
- [Install](#install)
|
|
23
|
+
- [Usage](#usage)
|
|
24
|
+
- [Return exemple](#return-exemple)
|
|
16
25
|
|
|
17
|
-
###
|
|
26
|
+
### Install
|
|
18
27
|
```shell
|
|
19
28
|
npm i @eso-status/live-services
|
|
20
29
|
```
|
|
21
30
|
|
|
22
|
-
###
|
|
23
|
-
- TypeScript
|
|
24
|
-
```typescript
|
|
25
|
-
import { RawEsoStatus } from '@eso-status/types';
|
|
26
|
-
import { LiveServices } from "@eso-status/live-services";
|
|
27
|
-
|
|
28
|
-
LiveServices.getData().then((data: RawEsoStatus[]): void => {
|
|
29
|
-
|
|
30
|
-
}).catch((error: Error): void => {
|
|
31
|
-
|
|
32
|
-
});
|
|
33
|
-
```
|
|
34
|
-
- JavaScript
|
|
31
|
+
### Usage
|
|
35
32
|
```javascript
|
|
36
|
-
|
|
33
|
+
import LiveServices from '@eso-status/live-services';
|
|
34
|
+
import { EsoStatusRawData } from '@eso-status/types';
|
|
37
35
|
|
|
38
|
-
LiveServices.getData()
|
|
39
|
-
|
|
40
|
-
}).catch(function (error) {
|
|
41
|
-
|
|
42
|
-
});
|
|
36
|
+
const esoStatusRawDataList: EsoStatusRawData[] = await LiveServices.getData();
|
|
43
37
|
```
|
|
44
|
-
|
|
45
|
-
### Returned data format ?
|
|
38
|
+
### Return exemple
|
|
46
39
|
```text
|
|
47
40
|
[
|
|
48
41
|
{
|
|
49
|
-
|
|
50
|
-
raw:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
slugs: [ 'server_pc_eu' ],
|
|
42
|
+
source: 'https://live-services.elderscrollsonline.com/status/realms',
|
|
43
|
+
raw: '"The Elder Scrolls Online (EU)":"UP"',
|
|
44
|
+
slug: 'server_pc_eu',
|
|
45
|
+
type: 'server',
|
|
54
46
|
support: 'pc',
|
|
55
47
|
zone: 'eu',
|
|
56
|
-
status: 'up'
|
|
48
|
+
status: 'up',
|
|
49
|
+
rawSlug: 'The Elder Scrolls Online (EU)',
|
|
50
|
+
rawStatus: 'UP'
|
|
57
51
|
},
|
|
58
52
|
{
|
|
59
|
-
|
|
60
|
-
raw:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
slugs: [ 'server_pc_na' ],
|
|
53
|
+
source: 'https://live-services.elderscrollsonline.com/status/realms',
|
|
54
|
+
raw: '"The Elder Scrolls Online (NA)":"UP"',
|
|
55
|
+
slug: 'server_pc_na',
|
|
56
|
+
type: 'server',
|
|
64
57
|
support: 'pc',
|
|
65
58
|
zone: 'na',
|
|
66
|
-
status: 'up'
|
|
59
|
+
status: 'up',
|
|
60
|
+
rawSlug: 'The Elder Scrolls Online (NA)',
|
|
61
|
+
rawStatus: 'UP'
|
|
67
62
|
},
|
|
68
63
|
{
|
|
69
|
-
|
|
70
|
-
raw:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
slugs: [ 'server_ps_eu' ],
|
|
64
|
+
source: 'https://live-services.elderscrollsonline.com/status/realms',
|
|
65
|
+
raw: '"The Elder Scrolls Online (PS4 - EU)":"UP"',
|
|
66
|
+
slug: 'server_ps_eu',
|
|
67
|
+
type: 'server',
|
|
74
68
|
support: 'ps',
|
|
75
69
|
zone: 'eu',
|
|
76
|
-
status: 'up'
|
|
70
|
+
status: 'up',
|
|
71
|
+
rawSlug: 'The Elder Scrolls Online (PS4 - EU)',
|
|
72
|
+
rawStatus: 'UP'
|
|
77
73
|
},
|
|
78
74
|
{
|
|
79
|
-
|
|
80
|
-
raw:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
slugs: [ 'server_ps_na' ],
|
|
75
|
+
source: 'https://live-services.elderscrollsonline.com/status/realms',
|
|
76
|
+
raw: '"The Elder Scrolls Online (PS4 - US)":"UP"',
|
|
77
|
+
slug: 'server_ps_na',
|
|
78
|
+
type: 'server',
|
|
84
79
|
support: 'ps',
|
|
85
80
|
zone: 'na',
|
|
86
|
-
status: 'up'
|
|
81
|
+
status: 'up',
|
|
82
|
+
rawSlug: 'The Elder Scrolls Online (PS4 - US)',
|
|
83
|
+
rawStatus: 'UP'
|
|
87
84
|
},
|
|
88
85
|
{
|
|
89
|
-
|
|
90
|
-
raw:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
slugs: [ 'server_pc_pts' ],
|
|
86
|
+
source: 'https://live-services.elderscrollsonline.com/status/realms',
|
|
87
|
+
raw: '"The Elder Scrolls Online (PTS)":"UP"',
|
|
88
|
+
slug: 'server_pc_pts',
|
|
89
|
+
type: 'server',
|
|
94
90
|
support: 'pc',
|
|
95
91
|
zone: 'pts',
|
|
96
|
-
status: 'up'
|
|
92
|
+
status: 'up',
|
|
93
|
+
rawSlug: 'The Elder Scrolls Online (PTS)',
|
|
94
|
+
rawStatus: 'UP'
|
|
97
95
|
},
|
|
98
96
|
{
|
|
99
|
-
|
|
100
|
-
raw:
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
slugs: [ 'server_xbox_eu' ],
|
|
97
|
+
source: 'https://live-services.elderscrollsonline.com/status/realms',
|
|
98
|
+
raw: '"The Elder Scrolls Online (XBox - EU)":"UP"',
|
|
99
|
+
slug: 'server_xbox_eu',
|
|
100
|
+
type: 'server',
|
|
104
101
|
support: 'xbox',
|
|
105
102
|
zone: 'eu',
|
|
106
|
-
status: 'up'
|
|
103
|
+
status: 'up',
|
|
104
|
+
rawSlug: 'The Elder Scrolls Online (XBox - EU)',
|
|
105
|
+
rawStatus: 'UP'
|
|
107
106
|
},
|
|
108
107
|
{
|
|
109
|
-
|
|
110
|
-
raw:
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
slugs: [ 'server_xbox_na' ],
|
|
108
|
+
source: 'https://live-services.elderscrollsonline.com/status/realms',
|
|
109
|
+
raw: '"The Elder Scrolls Online (XBox - US)":"UP"',
|
|
110
|
+
slug: 'server_xbox_na',
|
|
111
|
+
type: 'server',
|
|
114
112
|
support: 'xbox',
|
|
115
113
|
zone: 'na',
|
|
116
|
-
status: 'up'
|
|
114
|
+
status: 'up',
|
|
115
|
+
rawSlug: 'The Elder Scrolls Online (XBox - US)',
|
|
116
|
+
rawStatus: 'UP'
|
|
117
117
|
}
|
|
118
118
|
]
|
|
119
119
|
```
|
package/lib/connector.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const axios_1 = require("axios");
|
|
4
|
+
const const_1 = require("./const");
|
|
5
|
+
/**
|
|
6
|
+
* Class for retrieving information from announcements
|
|
7
|
+
*/
|
|
8
|
+
class Connector {
|
|
9
|
+
/**
|
|
10
|
+
* Method for retrieving remote content via a URL
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
13
|
+
static async getRemoteContent() {
|
|
14
|
+
const response = await axios_1.default.get(const_1.LiveServicesURL);
|
|
15
|
+
return response?.status === 200 && !!response?.data
|
|
16
|
+
? JSON.stringify(response?.data)
|
|
17
|
+
: '';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.default = Connector;
|
|
21
|
+
//# sourceMappingURL=connector.js.map
|
package/lib/const.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RawAssociation } from './interface/rawAssociation.interface';
|
|
2
|
+
import { SourceUrl } from './type/sourceUrl.type';
|
|
3
|
+
/**
|
|
4
|
+
* URL serving as source for retrieving maintenance announcements
|
|
5
|
+
*/
|
|
6
|
+
export declare const LiveServicesURL: SourceUrl;
|
|
7
|
+
/**
|
|
8
|
+
* Association between raw data and its support and zone
|
|
9
|
+
*/
|
|
10
|
+
export declare const rawSupportZoneAssociations: RawAssociation[];
|
package/lib/const.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rawSupportZoneAssociations = exports.LiveServicesURL = void 0;
|
|
4
|
+
const types_1 = require("@eso-status/types");
|
|
5
|
+
/**
|
|
6
|
+
* URL serving as source for retrieving maintenance announcements
|
|
7
|
+
*/
|
|
8
|
+
exports.LiveServicesURL = 'https://live-services.elderscrollsonline.com/status/realms';
|
|
9
|
+
/**
|
|
10
|
+
* Association between raw data and its support and zone
|
|
11
|
+
*/
|
|
12
|
+
exports.rawSupportZoneAssociations = [
|
|
13
|
+
{
|
|
14
|
+
raw: 'The Elder Scrolls Online (EU)',
|
|
15
|
+
support: types_1.PcSupport,
|
|
16
|
+
zone: types_1.EuZone,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
raw: 'The Elder Scrolls Online (NA)',
|
|
20
|
+
support: types_1.PcSupport,
|
|
21
|
+
zone: types_1.NaZone,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
raw: 'The Elder Scrolls Online (PS4 - EU)',
|
|
25
|
+
support: types_1.PsSupport,
|
|
26
|
+
zone: types_1.EuZone,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
raw: 'The Elder Scrolls Online (PS4 - US)',
|
|
30
|
+
support: types_1.PsSupport,
|
|
31
|
+
zone: types_1.NaZone,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
raw: 'The Elder Scrolls Online (PTS)',
|
|
35
|
+
support: types_1.PcSupport,
|
|
36
|
+
zone: types_1.PtsZone,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
raw: 'The Elder Scrolls Online (XBox - EU)',
|
|
40
|
+
support: types_1.XboxSupport,
|
|
41
|
+
zone: types_1.EuZone,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
raw: 'The Elder Scrolls Online (XBox - US)',
|
|
45
|
+
support: types_1.XboxSupport,
|
|
46
|
+
zone: types_1.NaZone,
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
//# sourceMappingURL=const.js.map
|
package/lib/index.d.ts
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EsoStatusRawData } from './interface/esoStatusRawData.interface';
|
|
2
2
|
/**
|
|
3
|
-
* Class
|
|
3
|
+
* Class for retrieving announcement information
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
5
|
+
export default class LiveServices {
|
|
6
6
|
/**
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* @static
|
|
11
|
-
*
|
|
12
|
-
* @return Promise<RawEsoStatus[]> Live Services elements
|
|
13
|
-
*/
|
|
14
|
-
static getData(): Promise<RawEsoStatus[]>;
|
|
7
|
+
* Method for retrieving announcement information
|
|
8
|
+
*/
|
|
9
|
+
static getData(): Promise<EsoStatusRawData[]>;
|
|
15
10
|
}
|
package/lib/index.js
CHANGED
|
@@ -1,72 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
|
|
40
|
-
|
|
3
|
+
const types_1 = require("@eso-status/types");
|
|
4
|
+
const const_1 = require("./const");
|
|
5
|
+
const connector_1 = require("./connector");
|
|
41
6
|
/**
|
|
42
|
-
* Class
|
|
7
|
+
* Class for retrieving announcement information
|
|
43
8
|
*/
|
|
44
|
-
|
|
45
|
-
function LiveServices() {
|
|
46
|
-
}
|
|
9
|
+
class LiveServices {
|
|
47
10
|
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
11
|
+
* Method for retrieving announcement information
|
|
12
|
+
*/
|
|
13
|
+
static async getData() {
|
|
14
|
+
const remoteContent = await connector_1.default.getRemoteContent();
|
|
15
|
+
const returnList = [];
|
|
16
|
+
if (!remoteContent) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
const json = JSON.parse(remoteContent);
|
|
20
|
+
const_1.rawSupportZoneAssociations.forEach((raw) => {
|
|
21
|
+
returnList.push({
|
|
22
|
+
source: const_1.LiveServicesURL,
|
|
23
|
+
raw: `"${raw.raw}":"${json.zos_platform_response.response[raw.raw]}"`,
|
|
24
|
+
slug: `${types_1.ServerType}_${raw.support}_${raw.zone}`,
|
|
25
|
+
type: types_1.ServerType,
|
|
26
|
+
support: raw.support,
|
|
27
|
+
zone: raw.zone,
|
|
28
|
+
status: (json.zos_platform_response.response[raw.raw]?.toLowerCase()),
|
|
29
|
+
rawSlug: raw.raw,
|
|
30
|
+
rawStatus: json.zos_platform_response.response[raw.raw],
|
|
67
31
|
});
|
|
68
32
|
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
exports.
|
|
33
|
+
return returnList;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.default = LiveServices;
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ServerTypeType, Slug, Status, Support, Zone } from '@eso-status/types';
|
|
2
|
+
import { RemoteRawStatus } from '../type/remoteRawStatus.type';
|
|
3
|
+
import { RemoteRawSlug } from '../type/remoteRawSlug.type';
|
|
4
|
+
import { RemoteRaw } from '../type/remoteRaw.type';
|
|
5
|
+
import { SourceUrl } from '../type/sourceUrl.type';
|
|
6
|
+
/**
|
|
7
|
+
* Raw data of an ESO server/service status
|
|
8
|
+
*/
|
|
9
|
+
export interface EsoStatusRawData {
|
|
10
|
+
/**
|
|
11
|
+
* URL of the data source
|
|
12
|
+
*/
|
|
13
|
+
source: SourceUrl;
|
|
14
|
+
/**
|
|
15
|
+
* Raw data used to identify the server/service and its status
|
|
16
|
+
*/
|
|
17
|
+
raw: RemoteRaw;
|
|
18
|
+
/**
|
|
19
|
+
* Status of the server/service
|
|
20
|
+
*/
|
|
21
|
+
status: Status;
|
|
22
|
+
/**
|
|
23
|
+
* Raw data used to identify the status
|
|
24
|
+
*/
|
|
25
|
+
rawStatus?: RemoteRawStatus;
|
|
26
|
+
/**
|
|
27
|
+
* Slug of the server/service
|
|
28
|
+
*/
|
|
29
|
+
slug: Slug;
|
|
30
|
+
/**
|
|
31
|
+
* Raw data used to identify the slug
|
|
32
|
+
*/
|
|
33
|
+
rawSlug: RemoteRawSlug;
|
|
34
|
+
/**
|
|
35
|
+
* Type of the server/service
|
|
36
|
+
*/
|
|
37
|
+
type: ServerTypeType;
|
|
38
|
+
/**
|
|
39
|
+
* Support of the server/service
|
|
40
|
+
*/
|
|
41
|
+
support: Support;
|
|
42
|
+
/**
|
|
43
|
+
* Zone of the server/service
|
|
44
|
+
*/
|
|
45
|
+
zone: Zone;
|
|
46
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Support, Zone } from '@eso-status/types';
|
|
2
|
+
import { RemoteRawSlug } from '../type/remoteRawSlug.type';
|
|
3
|
+
/**
|
|
4
|
+
* Structure of an association between a server, its support, and its zone
|
|
5
|
+
*/
|
|
6
|
+
export interface RawAssociation {
|
|
7
|
+
raw: RemoteRawSlug;
|
|
8
|
+
support: Support;
|
|
9
|
+
zone: Zone;
|
|
10
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { RemoteResultMessage } from '../type/remoteResultMessage.type';
|
|
2
|
+
import { RemoteResultCode } from '../type/remoteResultCode.type';
|
|
3
|
+
import { RemoteRawStatus } from '../type/remoteRawStatus.type';
|
|
4
|
+
/**
|
|
5
|
+
* Structure of the data returned by the API
|
|
6
|
+
*/
|
|
7
|
+
export interface RemoteData {
|
|
8
|
+
zos_platform_response: {
|
|
9
|
+
response: {
|
|
10
|
+
'The Elder Scrolls Online (EU)': RemoteRawStatus;
|
|
11
|
+
'The Elder Scrolls Online (NA)': RemoteRawStatus;
|
|
12
|
+
'The Elder Scrolls Online (PS4 - EU)': RemoteRawStatus;
|
|
13
|
+
'The Elder Scrolls Online (PS4 - US)': RemoteRawStatus;
|
|
14
|
+
'The Elder Scrolls Online (PTS)': RemoteRawStatus;
|
|
15
|
+
'The Elder Scrolls Online (XBox - EU)': RemoteRawStatus;
|
|
16
|
+
'The Elder Scrolls Online (XBox - US)': RemoteRawStatus;
|
|
17
|
+
};
|
|
18
|
+
result_code: RemoteResultCode;
|
|
19
|
+
result_message: RemoteResultMessage;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Different raw data from announcements
|
|
3
|
+
*/
|
|
4
|
+
export type RemoteRaw = '"The Elder Scrolls Online (EU)":"UP"' | '"The Elder Scrolls Online (EU)":"DOWN"' | '"The Elder Scrolls Online (NA)":"UP"' | '"The Elder Scrolls Online (NA)":"DOWN"' | '"The Elder Scrolls Online (PS4 - EU)":"UP"' | '"The Elder Scrolls Online (PS4 - EU)":"DOWN"' | '"The Elder Scrolls Online (PS4 - US)":"UP"' | '"The Elder Scrolls Online (PS4 - US)":"DOWN"' | '"The Elder Scrolls Online (XBox - EU)":"UP"' | '"The Elder Scrolls Online (XBox - EU)":"DOWN"' | '"The Elder Scrolls Online (XBox - US)":"UP"' | '"The Elder Scrolls Online (XBox - US)":"DOWN"' | '"The Elder Scrolls Online (PTS)":"UP"' | '"The Elder Scrolls Online (PTS)":"DOWN"';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Different slugs of announcements
|
|
3
|
+
*/
|
|
4
|
+
export type RemoteRawSlug = 'The Elder Scrolls Online (EU)' | 'The Elder Scrolls Online (NA)' | 'The Elder Scrolls Online (PS4 - EU)' | 'The Elder Scrolls Online (PS4 - US)' | 'The Elder Scrolls Online (PTS)' | 'The Elder Scrolls Online (XBox - EU)' | 'The Elder Scrolls Online (XBox - US)';
|
package/package.json
CHANGED
|
@@ -1,61 +1,110 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eso-status/live-services",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Library
|
|
3
|
+
"version": "2.0.0-dev.1",
|
|
4
|
+
"description": "Library for retrieving and formatting data, which can be found at https://live-services.elderscrollsonline.com/status/realms",
|
|
5
|
+
"author": "@dov118 <contact@dov118.dev> (https://dov118.dev)",
|
|
5
6
|
"main": "lib/index.js",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
"lint": "eslint tests src --ext .ts",
|
|
9
|
-
"lint:fix": "eslint tests src --ext .ts --fix",
|
|
10
|
-
"build": "rm -R -f lib/* && tsc",
|
|
11
|
-
"test": "jest",
|
|
12
|
-
"start": "node .",
|
|
13
|
-
"dev": "npm run lint && npm run build && npm run start",
|
|
14
|
-
"watch": "nodemon --exec npm run dev"
|
|
15
|
-
},
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"engineStrict": true,
|
|
16
9
|
"files": [
|
|
17
|
-
"lib/
|
|
18
|
-
"lib/
|
|
19
|
-
"lib/
|
|
20
|
-
"lib/
|
|
10
|
+
"lib/interface/esoStatusRawData.interface.d.ts",
|
|
11
|
+
"lib/interface/esoStatusRawData.interface.js",
|
|
12
|
+
"lib/interface/rawAssociation.interface.d.ts",
|
|
13
|
+
"lib/interface/rawAssociation.interface.js",
|
|
14
|
+
"lib/interface/remoteData.interface.d.ts",
|
|
15
|
+
"lib/interface/remoteData.interface.js",
|
|
16
|
+
"lib/type/remoteRaw.type.d.ts",
|
|
17
|
+
"lib/type/remoteRaw.type.js",
|
|
18
|
+
"lib/type/remoteRawSlug.type.d.ts",
|
|
19
|
+
"lib/type/remoteRawSlug.type.js",
|
|
20
|
+
"lib/type/remoteRawStatus.type.d.ts",
|
|
21
|
+
"lib/type/remoteRawStatus.type.js",
|
|
22
|
+
"lib/type/remoteResultCode.type.d.ts",
|
|
23
|
+
"lib/type/remoteResultCode.type.js",
|
|
24
|
+
"lib/type/remoteResultMessage.type.d.ts",
|
|
25
|
+
"lib/type/remoteResultMessage.type.js",
|
|
26
|
+
"lib/type/sourceUrl.type.d.ts",
|
|
27
|
+
"lib/type/sourceUrl.type.js",
|
|
28
|
+
"lib/connector.d.ts",
|
|
29
|
+
"lib/connector.js",
|
|
30
|
+
"lib/const.d.ts",
|
|
31
|
+
"lib/const.js",
|
|
21
32
|
"lib/index.d.ts",
|
|
22
33
|
"lib/index.js",
|
|
23
|
-
".npmrc",
|
|
34
|
+
".npmrc,",
|
|
24
35
|
"LICENSE.md",
|
|
25
36
|
"package.json",
|
|
26
37
|
"README.md"
|
|
27
38
|
],
|
|
28
|
-
"engineStrict": true,
|
|
29
39
|
"engines": {
|
|
30
|
-
"node": "
|
|
40
|
+
"node": "^18.18.0 || ^20.0.0"
|
|
31
41
|
},
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/eso-status/live-services/issues"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://github.com/eso-status/live-services#readme",
|
|
32
46
|
"repository": {
|
|
33
47
|
"type": "git",
|
|
34
48
|
"url": "git@github.com:eso-status/live-services.git"
|
|
35
49
|
},
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
50
|
+
"scripts": {
|
|
51
|
+
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
52
|
+
"lint": "eslint \"{src,test}/**/*.ts\"",
|
|
53
|
+
"lint:fix": "eslint \"{src,test}/**/*.ts\" --fix",
|
|
54
|
+
"build": "rm -R -f lib/* && tsc --project tsconfig.build.json",
|
|
55
|
+
"dev": "npm run build && node .",
|
|
56
|
+
"watch": "nodemon --exec npm run dev",
|
|
57
|
+
"test": "npm run build && jest --runInBand --setupFiles",
|
|
58
|
+
"test:watch": "jest --runInBand --watch --setupFiles",
|
|
59
|
+
"test:cov": "jest --runInBand --coverage --setupFiles",
|
|
60
|
+
"prepare": "husky"
|
|
61
|
+
},
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"@eso-status/types": "2.0.0-dev.12",
|
|
64
|
+
"axios": "1.7.7"
|
|
40
65
|
},
|
|
41
|
-
"homepage": "https://github.com/eso-status/live-services#readme",
|
|
42
66
|
"devDependencies": {
|
|
43
|
-
"@eso-status/types": "1.0.7",
|
|
44
67
|
"@types/jest": "29.5.12",
|
|
45
|
-
"@types/node": "22.5.1",
|
|
46
|
-
"@typescript-eslint/eslint-plugin": "7.18.0",
|
|
47
|
-
"@typescript-eslint/parser": "7.18.0",
|
|
48
|
-
"@typescript-eslint/typescript-estree": "7.18.0",
|
|
49
68
|
"eslint": "8.57.0",
|
|
50
69
|
"eslint-config-airbnb-base": "15.0.0",
|
|
51
|
-
"eslint-
|
|
52
|
-
"eslint-
|
|
70
|
+
"eslint-config-airbnb-typescript": "18.0.0",
|
|
71
|
+
"eslint-config-prettier": "9.1.0",
|
|
72
|
+
"eslint-plugin-jest": "28.8.3",
|
|
73
|
+
"eslint-plugin-prettier": "5.2.1",
|
|
74
|
+
"eslint-plugin-sonarjs": "2.0.2",
|
|
75
|
+
"eslint-plugin-unused-imports": "4.1.3",
|
|
76
|
+
"husky": "9.1.5",
|
|
53
77
|
"jest": "29.7.0",
|
|
54
78
|
"nodemon": "3.1.4",
|
|
79
|
+
"prettier": "3.3.3",
|
|
55
80
|
"ts-jest": "29.2.5",
|
|
56
81
|
"typescript": "5.5.4"
|
|
57
82
|
},
|
|
58
|
-
"
|
|
59
|
-
"
|
|
83
|
+
"jest": {
|
|
84
|
+
"moduleFileExtensions": [
|
|
85
|
+
"js",
|
|
86
|
+
"json",
|
|
87
|
+
"ts"
|
|
88
|
+
],
|
|
89
|
+
"rootDir": "./",
|
|
90
|
+
"testRegex": ".*\\.e2e-spec\\.ts|.*\\.spec\\.ts$",
|
|
91
|
+
"transform": {
|
|
92
|
+
"^.+\\.ts$": "ts-jest"
|
|
93
|
+
},
|
|
94
|
+
"collectCoverageFrom": [
|
|
95
|
+
"src/**/*.ts"
|
|
96
|
+
],
|
|
97
|
+
"coverageDirectory": "./coverage",
|
|
98
|
+
"testEnvironment": "node",
|
|
99
|
+
"setupFiles": [
|
|
100
|
+
"dotenv/config"
|
|
101
|
+
],
|
|
102
|
+
"moduleDirectories": [
|
|
103
|
+
"node_modules",
|
|
104
|
+
"src"
|
|
105
|
+
],
|
|
106
|
+
"modulePaths": [
|
|
107
|
+
"<rootDir>"
|
|
108
|
+
]
|
|
60
109
|
}
|
|
61
110
|
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Support, Slug, Status, Zone } from '@eso-status/types';
|
|
2
|
-
/**
|
|
3
|
-
* Class with methode for LiveServices element
|
|
4
|
-
*/
|
|
5
|
-
export default class LiveServicesElement {
|
|
6
|
-
/**
|
|
7
|
-
* Methode used to get slug of raw slug
|
|
8
|
-
*
|
|
9
|
-
* @public
|
|
10
|
-
* @static
|
|
11
|
-
*
|
|
12
|
-
* @param rawSlug string Raw slug
|
|
13
|
-
* @return Slug Slug
|
|
14
|
-
*/
|
|
15
|
-
static getSlug(rawSlug: string): Slug;
|
|
16
|
-
/**
|
|
17
|
-
* Methode used to get support of slug
|
|
18
|
-
*
|
|
19
|
-
* @public
|
|
20
|
-
* @static
|
|
21
|
-
*
|
|
22
|
-
* @param slug Slug Slug
|
|
23
|
-
* @return Support Support of slug
|
|
24
|
-
*/
|
|
25
|
-
static getSupport(slug: Slug): Support;
|
|
26
|
-
/**
|
|
27
|
-
* Methode used to get zone of slug
|
|
28
|
-
*
|
|
29
|
-
* @public
|
|
30
|
-
* @static
|
|
31
|
-
*
|
|
32
|
-
* @param slug Slug Slug
|
|
33
|
-
* @return Zone Zone of slug
|
|
34
|
-
*/
|
|
35
|
-
static getZone(slug: Slug): Zone;
|
|
36
|
-
/**
|
|
37
|
-
* Methode used to get status of raw status
|
|
38
|
-
*
|
|
39
|
-
* @public
|
|
40
|
-
* @static
|
|
41
|
-
*
|
|
42
|
-
* @param rawStatus string Raw status
|
|
43
|
-
* @return Status Status of raw data
|
|
44
|
-
*/
|
|
45
|
-
static getStatus(rawStatus: string): Status;
|
|
46
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* Class with methode for LiveServices element
|
|
5
|
-
*/
|
|
6
|
-
var LiveServicesElement = /** @class */ (function () {
|
|
7
|
-
function LiveServicesElement() {
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Methode used to get slug of raw slug
|
|
11
|
-
*
|
|
12
|
-
* @public
|
|
13
|
-
* @static
|
|
14
|
-
*
|
|
15
|
-
* @param rawSlug string Raw slug
|
|
16
|
-
* @return Slug Slug
|
|
17
|
-
*/
|
|
18
|
-
LiveServicesElement.getSlug = function (rawSlug) {
|
|
19
|
-
switch (rawSlug) {
|
|
20
|
-
case 'The Elder Scrolls Online (NA)':
|
|
21
|
-
return 'server_pc_na';
|
|
22
|
-
case 'The Elder Scrolls Online (EU)':
|
|
23
|
-
return 'server_pc_eu';
|
|
24
|
-
case 'The Elder Scrolls Online (XBox - US)':
|
|
25
|
-
return 'server_xbox_na';
|
|
26
|
-
case 'The Elder Scrolls Online (XBox - EU)':
|
|
27
|
-
return 'server_xbox_eu';
|
|
28
|
-
case 'The Elder Scrolls Online (PS4 - US)':
|
|
29
|
-
return 'server_ps_na';
|
|
30
|
-
case 'The Elder Scrolls Online (PS4 - EU)':
|
|
31
|
-
return 'server_ps_eu';
|
|
32
|
-
case 'The Elder Scrolls Online (PTS)':
|
|
33
|
-
return 'server_pc_pts';
|
|
34
|
-
default:
|
|
35
|
-
return 'undefined';
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Methode used to get support of slug
|
|
40
|
-
*
|
|
41
|
-
* @public
|
|
42
|
-
* @static
|
|
43
|
-
*
|
|
44
|
-
* @param slug Slug Slug
|
|
45
|
-
* @return Support Support of slug
|
|
46
|
-
*/
|
|
47
|
-
LiveServicesElement.getSupport = function (slug) {
|
|
48
|
-
return slug.split('_')[1];
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* Methode used to get zone of slug
|
|
52
|
-
*
|
|
53
|
-
* @public
|
|
54
|
-
* @static
|
|
55
|
-
*
|
|
56
|
-
* @param slug Slug Slug
|
|
57
|
-
* @return Zone Zone of slug
|
|
58
|
-
*/
|
|
59
|
-
LiveServicesElement.getZone = function (slug) {
|
|
60
|
-
return slug.split('_')[2];
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* Methode used to get status of raw status
|
|
64
|
-
*
|
|
65
|
-
* @public
|
|
66
|
-
* @static
|
|
67
|
-
*
|
|
68
|
-
* @param rawStatus string Raw status
|
|
69
|
-
* @return Status Status of raw data
|
|
70
|
-
*/
|
|
71
|
-
LiveServicesElement.getStatus = function (rawStatus) {
|
|
72
|
-
switch (rawStatus) {
|
|
73
|
-
case 'UP':
|
|
74
|
-
return 'up';
|
|
75
|
-
case 'DOWN':
|
|
76
|
-
return 'down';
|
|
77
|
-
default:
|
|
78
|
-
return 'undefined';
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
return LiveServicesElement;
|
|
82
|
-
}());
|
|
83
|
-
exports.default = LiveServicesElement;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { RawEsoStatus } from '@eso-status/types';
|
|
2
|
-
/**
|
|
3
|
-
* Connector used to get data from https://live-services.elderscrollsonline.com/status/realms
|
|
4
|
-
*/
|
|
5
|
-
export default class LiveServicesConnector {
|
|
6
|
-
/**
|
|
7
|
-
* URL to get remote content
|
|
8
|
-
*
|
|
9
|
-
* @public
|
|
10
|
-
* @static
|
|
11
|
-
*
|
|
12
|
-
* @return string URL to get remote content
|
|
13
|
-
*/
|
|
14
|
-
static url: string;
|
|
15
|
-
/**
|
|
16
|
-
* Methode used to get raw content of the remote website
|
|
17
|
-
*
|
|
18
|
-
* @public
|
|
19
|
-
* @static
|
|
20
|
-
*
|
|
21
|
-
* @return Promise<string> Raw content of the remote website
|
|
22
|
-
*/
|
|
23
|
-
static getRemoteContent(): Promise<string>;
|
|
24
|
-
/**
|
|
25
|
-
* Methode used to select raw content containing eso servers status information
|
|
26
|
-
*
|
|
27
|
-
* @public
|
|
28
|
-
* @static
|
|
29
|
-
*
|
|
30
|
-
* @param remoteContent Raw content of the remote website
|
|
31
|
-
* @return string Raw content containing eso servers status information
|
|
32
|
-
*/
|
|
33
|
-
static getFilterContent(remoteContent: string): string;
|
|
34
|
-
/**
|
|
35
|
-
* Methode used to get list of each raw information
|
|
36
|
-
*
|
|
37
|
-
* @public
|
|
38
|
-
* @static
|
|
39
|
-
*
|
|
40
|
-
* @param filteredContent string Raw content containing eso servers status information
|
|
41
|
-
* @return RawEsoStatus[] List of each information
|
|
42
|
-
*/
|
|
43
|
-
static changeFilterContentForList(filteredContent: string): RawEsoStatus[];
|
|
44
|
-
/**
|
|
45
|
-
* Methode used to get last eso status server with data
|
|
46
|
-
*
|
|
47
|
-
* @public
|
|
48
|
-
* @static
|
|
49
|
-
*
|
|
50
|
-
* @param lastRawData ServiceAlertsInterface[] Raw eso server status list sorted by date
|
|
51
|
-
* @return RawEsoStatus[] Last eso status server with data
|
|
52
|
-
*/
|
|
53
|
-
static getData(lastRawData: RawEsoStatus[]): RawEsoStatus[];
|
|
54
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
var LiveServicesElement_1 = require("../classes/LiveServicesElement");
|
|
40
|
-
var axios = require('axios');
|
|
41
|
-
/**
|
|
42
|
-
* Connector used to get data from https://live-services.elderscrollsonline.com/status/realms
|
|
43
|
-
*/
|
|
44
|
-
var LiveServicesConnector = /** @class */ (function () {
|
|
45
|
-
function LiveServicesConnector() {
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Methode used to get raw content of the remote website
|
|
49
|
-
*
|
|
50
|
-
* @public
|
|
51
|
-
* @static
|
|
52
|
-
*
|
|
53
|
-
* @return Promise<string> Raw content of the remote website
|
|
54
|
-
*/
|
|
55
|
-
LiveServicesConnector.getRemoteContent = function () {
|
|
56
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
57
|
-
var response;
|
|
58
|
-
return __generator(this, function (_a) {
|
|
59
|
-
switch (_a.label) {
|
|
60
|
-
case 0: return [4 /*yield*/, axios.get(LiveServicesConnector.url)];
|
|
61
|
-
case 1:
|
|
62
|
-
response = _a.sent();
|
|
63
|
-
if ((response === null || response === void 0 ? void 0 : response.status) !== 200) {
|
|
64
|
-
throw new Error("Bad response ".concat(response === null || response === void 0 ? void 0 : response.status, " (").concat(response === null || response === void 0 ? void 0 : response.data, ")"));
|
|
65
|
-
}
|
|
66
|
-
else if (!(response === null || response === void 0 ? void 0 : response.data)) {
|
|
67
|
-
throw new Error("Empty response ".concat(response === null || response === void 0 ? void 0 : response.status, " (").concat(response === null || response === void 0 ? void 0 : response.data, ")"));
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
return [2 /*return*/, JSON.stringify(response === null || response === void 0 ? void 0 : response.data)];
|
|
71
|
-
}
|
|
72
|
-
return [2 /*return*/];
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
/**
|
|
78
|
-
* Methode used to select raw content containing eso servers status information
|
|
79
|
-
*
|
|
80
|
-
* @public
|
|
81
|
-
* @static
|
|
82
|
-
*
|
|
83
|
-
* @param remoteContent Raw content of the remote website
|
|
84
|
-
* @return string Raw content containing eso servers status information
|
|
85
|
-
*/
|
|
86
|
-
LiveServicesConnector.getFilterContent = function (remoteContent) {
|
|
87
|
-
var _a, _b;
|
|
88
|
-
return JSON.stringify((_b = (_a = JSON.parse(remoteContent)) === null || _a === void 0 ? void 0 : _a.zos_platform_response) === null || _b === void 0 ? void 0 : _b.response);
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* Methode used to get list of each raw information
|
|
92
|
-
*
|
|
93
|
-
* @public
|
|
94
|
-
* @static
|
|
95
|
-
*
|
|
96
|
-
* @param filteredContent string Raw content containing eso servers status information
|
|
97
|
-
* @return RawEsoStatus[] List of each information
|
|
98
|
-
*/
|
|
99
|
-
LiveServicesConnector.changeFilterContentForList = function (filteredContent) {
|
|
100
|
-
return Object.entries(JSON.parse(filteredContent)).map(function (item) { return ({
|
|
101
|
-
sources: [LiveServicesConnector.url],
|
|
102
|
-
raw: [item[0], String(item[1])],
|
|
103
|
-
rawSlug: item[0],
|
|
104
|
-
rawStatus: String(item[1]),
|
|
105
|
-
}); });
|
|
106
|
-
};
|
|
107
|
-
/**
|
|
108
|
-
* Methode used to get last eso status server with data
|
|
109
|
-
*
|
|
110
|
-
* @public
|
|
111
|
-
* @static
|
|
112
|
-
*
|
|
113
|
-
* @param lastRawData ServiceAlertsInterface[] Raw eso server status list sorted by date
|
|
114
|
-
* @return RawEsoStatus[] Last eso status server with data
|
|
115
|
-
*/
|
|
116
|
-
LiveServicesConnector.getData = function (lastRawData) {
|
|
117
|
-
return lastRawData.map(function (item) {
|
|
118
|
-
var _a, _b;
|
|
119
|
-
var newItem = item;
|
|
120
|
-
newItem.slugs = [LiveServicesElement_1.default.getSlug((_a = newItem.rawSlug) !== null && _a !== void 0 ? _a : '')];
|
|
121
|
-
newItem.support = LiveServicesElement_1.default.getSupport(newItem.slugs[0]);
|
|
122
|
-
newItem.zone = LiveServicesElement_1.default.getZone(newItem.slugs[0]);
|
|
123
|
-
newItem.status = LiveServicesElement_1.default.getStatus((_b = newItem.rawStatus) !== null && _b !== void 0 ? _b : '');
|
|
124
|
-
return newItem;
|
|
125
|
-
});
|
|
126
|
-
};
|
|
127
|
-
/**
|
|
128
|
-
* URL to get remote content
|
|
129
|
-
*
|
|
130
|
-
* @public
|
|
131
|
-
* @static
|
|
132
|
-
*
|
|
133
|
-
* @return string URL to get remote content
|
|
134
|
-
*/
|
|
135
|
-
LiveServicesConnector.url = 'https://live-services.elderscrollsonline.com/status/realms';
|
|
136
|
-
return LiveServicesConnector;
|
|
137
|
-
}());
|
|
138
|
-
exports.default = LiveServicesConnector;
|