vtb-appit 0.0.21 → 0.0.22

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.
@@ -1,12 +1,15 @@
1
1
  const https = require('https');
2
2
  const fs = require("fs");
3
3
  const pth = require("path");
4
+ const { resolve } = require('path');
4
5
 
5
6
  class AppitBaseTransformer {
6
7
  constructor()
7
8
  {
8
9
  const data = JSON.parse(fs.readFileSync(pth.join(__dirname, '../../assets/travelplan.json'), {encoding: 'utf8' }));
9
10
  this.travelplan = JSON.parse(JSON.stringify(data));
11
+
12
+ this.token = JSON.parse(fs.readFileSync(pth.join(__dirname, '../../assets/token.json'), {encoding: 'utf8' }));
10
13
  }
11
14
 
12
15
  labels()
@@ -105,6 +108,73 @@ class AppitBaseTransformer {
105
108
  return result;
106
109
  }
107
110
 
111
+ async tsData()
112
+ {
113
+ return new Promise(resolve => {
114
+ const jwt = await this.fetchTSJWT();
115
+ const tokenDecodablePart = jwt.split('.')[1];
116
+ const decoded = JSON.parse(Buffer.from(tokenDecodablePart, 'base64').toString());
117
+ const endPath = '/dynamicdata/';
118
+
119
+ let req = https.request({
120
+ headers: {
121
+ 'Authorization': jwt
122
+ },
123
+ hostname: decoded['https://visualtourbuilder.com/app_metadata'].baseUrl.replace('https://', '').replace(/.app\/.*/, '.app'),
124
+ path: decoded['https://visualtourbuilder.com/app_metadata'].baseUrl.replace(/.*?.app/, '') + endPath,
125
+ method: 'GET'
126
+ }, (r) => {
127
+ let data = '';
128
+
129
+ r.on('data', (d) => { data += d; });
130
+
131
+ r.on('end', () => {
132
+ let res = JSON.parse(data);
133
+ resolve(res);
134
+ });
135
+ });
136
+ req.end();
137
+ })
138
+ }
139
+
140
+ fetchTSJWT()
141
+ {
142
+ return new Promise(resolve => {
143
+ const data = JSON.stringify({
144
+ query: `{
145
+ tsJWT {
146
+ jwt
147
+ }
148
+ }`,
149
+ });
150
+
151
+ const options = {
152
+ hostname: 'vtb-global-vtb-gateway-z7stqwbrxa-ew.a.run.app',
153
+ path: '/graphql',
154
+ port: 443,
155
+ method: 'POST',
156
+ headers: {
157
+ 'Content-Type': 'application/json',
158
+ 'Content-Length': data.length,
159
+ 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2dGJDb25maWciOnsiYXV0b1JlY2FsYyI6ZmFsc2UsImNsaWVudElkIjoidHNnaXR0ZXN0IiwiY29tcGFjdEdsdWVTZWdtZW50Ijp0cnVlLCJjdXN0b21HbHVlSWRlbnRpZmllcnMiOiJbOV0iLCJkZWZhdWx0Rm9sZFNlZ21lbnRzIjpmYWxzZSwiZGVmYXVsdFNlZ21lbnQiOiJEZWZhdWx0IiwiZGVmYXVsdFN1YnRpdGxlU29ydCI6ImFzYztwcmljZWFzYyIsImRpc2FibGVBZGRFbGVtZW50IjpmYWxzZSwiZGlzYWJsZUNvY2twaXRWaWV3IjpmYWxzZSwiZGlzYWJsZURvY3VtZW50VmlldyI6ZmFsc2UsImRpc2FibGVFeHRyYUZpZWxkc092ZXJyaWRlIjpmYWxzZSwiZGlzYWJsZUdpYXRhIjpmYWxzZSwiZGlzYWJsZUl0aW5lcmFyeU5pZ2h0c0VkaXQiOnRydWUsImRpc2FibGVKc29uVmlldyI6ZmFsc2UsImRpc2FibGVNYXBWaWV3IjpmYWxzZSwiZGlzYWJsZVBhcnRpY2lwYW50TW9kaWZpY2F0aW9uIjpmYWxzZSwiZGlzYWJsZVNlZ21lbnROaWdodHNFZGl0Ijp0cnVlLCJkaXNhYmxlVGVtcGxhdGVWaWV3IjpmYWxzZSwiZGlzYWJsZVVuYWxsb2NhdGVkTmlnaHRzV2FybmluZyI6ZmFsc2UsImRpc2FibGVVbml0RWRpdCI6ZmFsc2UsImRpc2FibGVVcGRhdGVDdXJyZW5jeUV4Y2hhbmdlUmF0ZSI6ZmFsc2UsImVuYWJsZUFpcnRyYWRlSW1wb3J0UE5SIjp0cnVlLCJlbmFibGVBbml4ZSI6dHJ1ZSwiZW5hYmxlQXV0b1NhdmUiOmZhbHNlLCJlbmFibGVEYXlUZXh0cyI6dHJ1ZSwiZW5hYmxlRGVzdHkiOnRydWUsImVuYWJsZU1vdmVNdWx0aXBsZVBhcnRpY2lwYW50c0RpYWxvZyI6ZmFsc2UsImVuYWJsZU92ZXJ3cml0ZUdlbmVyYWxJbmZvVGVtcGxhdGUiOnRydWUsImVuYWJsZVByZWZpbGxEZXBhcnRtZW50U2VhcmNoIjpmYWxzZSwiZm9vdGVyQ29udGVudCI6IiIsImdyaWRWaWV3U2V0dGluZ3MiOnsiY29sdW1uVmlzaWJpbGl0eSI6eyJDb3N0IjoiYWx3YXlzIiwiQ29zdCBFVVIiOiJhbHdheXMiLCJDb3N0IEVVUiBQYXJ0aWNpcGFudHMiOiJhZHZhbmNlZCIsIkNvc3QgRVVSIFBlciBVbml0IjoiYWR2YW5jZWQiLCJDb3N0IFBhcnRpY2lwYW50cyI6ImFkdmFuY2VkIiwiQ29zdCBQZXIgVW5pdCI6ImFkdmFuY2VkIiwiQ3VyIjoiYWx3YXlzIiwiRXhjaCBSYXRlIjoiYWx3YXlzIiwiTWFyZ2luICUiOiJhbHdheXMiLCJTYWxlcyBFVVIgUGFydGljaXBhbnRzIjoiYWx3YXlzIiwiU2FsZXMgRVVSIFBlciBVbml0IjoiYWR2YW5jZWQiLCJTYWxlc3ByaWNlIEVVUiI6ImFsd2F5cyIsIlN1YnRpdGxlIjoiYWR2YW5jZWQiLCJUZXN0IjoiYWx3YXlzIn0sImV4dHJhIjp7ImhlYWRlck5hbWUiOiJEaXQgSXMgRWVuIFRlc3QiLCJ2YXJpYWJsZU5hbWUiOiJ0ZXN0TmFtZSJ9fSwibG9ja0RlcGFydG1lbnQiOmZhbHNlLCJsb2dnaW5nIjpmYWxzZSwibG9nbyI6IiIsIm1hbnVhbENhbGNCeURlZmF1bHQiOmZhbHNlLCJuaWNlVXJsIjoicmVpc3Zvb3JzdGVsLnRyYXZlbHNwaXJpdC5ubCIsIm5pZ2h0c09ubHkiOmZhbHNlLCJvdmVyd3JpdGVHZW5lcmFsSW5mb1RlbXBsYXRlIjpmYWxzZSwicHJvZHVjdGlvbiI6dHJ1ZSwicHJvdmlkZXJOYW1lcyI6WyJFUFMiLCJIT1RFTEJFRFMiXSwicXVpY2tFeHRyYUZpZWxkRWRpdCI6eyI3Ijp7IjE0Ijp7IjQwIjp7IndpZHRoIjoiMjAwcHgifSwiNDEiOnsid2lkdGgiOiIyMDBweCJ9LCI1NiI6eyJ3aWR0aCI6IjIwMHB4In0sIjU3Ijp7IndpZHRoIjoiMjAwcHgifSwiNTgiOnsid2lkdGgiOiIyMDBweCJ9LCI2MCI6eyJ3aWR0aCI6IjIwMHB4In0sIjk4Ijp7IndpZHRoIjoiMjAwcHgifX0sImFsbCI6eyI5OCI6eyJ3aWR0aCI6IjIwMHB4In19fSwiYWxsIjp7ImFsbCI6eyI0MCI6eyJ3aWR0aCI6IjIwMHB4In0sIjc1Ijp7IndpZHRoIjoiMjAwcHgifX19fSwic21hcnRNb2RlIjp0cnVlLCJzdHJpa2luZyI6eyJPcHZhbGxlbmQiOiIycHggZGFzaGVkICMwMDAwZmYiLCJWVEIgVGVzdCI6IjJweCBkYXNoZWQgI2ZmMDAwMCJ9fSwidnRiSWQiOiI3Njg1MzQ3MDg3ODA0OTg5NDUiLCJlbnYiOiJ1c2VmdWwtY29yYWwtdmlyZ2llIiwiaWF0IjoxNjU0NjA4Nzc3LCJleHAiOjE2NTQ2NTE5NzcsImF1ZCI6IlZUQiIsImlzcyI6InVzZWZ1bC1jb3JhbC12aXJnaWUifQ.nZKDKxFdPJYWt3DWpH8T-uhOucmr4Fk96UVKgsnu8Ik',
160
+ 'User-Agent': 'Node',
161
+ },
162
+ };
163
+
164
+ const req = https.request(options, (res) => {
165
+ let data = '';
166
+
167
+ res.on('data', (d) => {
168
+ data += d;
169
+ });
170
+
171
+ res.on('end', () => {
172
+ resolve(JSON.parse(data).data.tsJWT.jwt);
173
+ });
174
+ });
175
+ })
176
+ }
177
+
108
178
  async mediaToBase64(media)
109
179
  {
110
180
  let promises = [];
package/appit.js CHANGED
@@ -4,9 +4,10 @@ const https = require('https');
4
4
 
5
5
  class Appit {
6
6
 
7
- constructor(transformer)
7
+ constructor(transformer, options)
8
8
  {
9
9
  this.transformer = transformer;
10
+ this.options = options;
10
11
 
11
12
  this.historyPath = pth.join(__dirname, '../../assets/history.json');
12
13
 
@@ -48,6 +49,10 @@ class Appit {
48
49
  {
49
50
  if(!await this.login()) return false;
50
51
 
52
+ if(this.options && this.options.tsData) {
53
+ this.transformer.tsData = this.transformer.tsData();
54
+ }
55
+
51
56
  await this.excursion();
52
57
  await this.labels();
53
58
  await this.places();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vtb-appit",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {