Skip to content

Commit aebf848

Browse files
andrsvsrgmacbookproValodya
authored
API-3 - Extend API Info response (#250)
* API-3 - Extend API Info response * API-3 - Extend API Info response * API-3 - Extend API Info response * - upgrade modules * - upgrade modules --------- Co-authored-by: macbookpro <[email protected]> Co-authored-by: Vladimir Upirov <[email protected]>
1 parent 6f75c0a commit aebf848

File tree

12 files changed

+155
-121
lines changed

12 files changed

+155
-121
lines changed

package-lock.json

Lines changed: 23 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
"nyc": "^15.1.0",
8282
"request": "^2.88.2",
8383
"rimraf": "^3.0.2",
84-
"socket.io": "^2.3.0",
84+
"socket.io": "^2.5.1",
8585
"terser-webpack-plugin": "^2.3.8",
8686
"typescript": "^4.5.4",
8787
"watch": "^1.0.2",
@@ -90,8 +90,8 @@
9090
"webpack-cli": "^5.0.2"
9191
},
9292
"dependencies": {
93-
"@babel/runtime": "^7.21.5",
94-
"backendless-request": "^0.7.9",
95-
"backendless-rt-client": "0.3.0"
93+
"@babel/runtime": "^7.26.7",
94+
"backendless-request": "^0.8.0",
95+
"backendless-rt-client": "0.5.0"
9696
}
9797
}

src/index.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ class Backendless {
148148

149149
app.__removeService('LocalCache')
150150

151+
app.appInfoPromise()
152+
151153
const loggingConfig = Object.assign({ loadLevels: true, globalLevel: 'all', levels: {} }, config.logging)
152154

153155
if (app.__hasService('Logging')) {
@@ -166,6 +168,18 @@ class Backendless {
166168
return app
167169
}
168170

171+
appInfoPromise(reset) {
172+
if (reset || !this.__appInfoPromise) {
173+
this.__appInfoPromise = new Promise((resolve, reject) => {
174+
this.request.get({ url: this.urls.appInfo() })
175+
.then(resolve)
176+
.catch(reject)
177+
})
178+
}
179+
180+
return this.__appInfoPromise
181+
}
182+
169183
__hasService(name) {
170184
return !!this[`__${name}`]
171185
}

src/logging/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ export default class Logging {
3939
}
4040

4141
loadLoggingLevels() {
42-
this.app.request
43-
.get({ url: this.app.urls.loggingLevels() })
44-
.then(loggersList => {
42+
this.app.appInfoPromise()
43+
.then(appInfo => {
44+
const { loggers: loggersList } = appInfo
4545
const loggers = {}
4646

4747
loggersList.forEach(logger => {

src/rt.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,18 @@
1-
import Request from 'backendless-request'
21
import BackendlessRTClient from 'backendless-rt-client'
32

43
import Utils from './utils'
54

65
export const RTListeners = BackendlessRTClient.Listeners
76
export const RTScopeConnector = BackendlessRTClient.ScopeConnector
87

9-
function loadAppInfo(appPath) {
10-
return Request.get(`${appPath}/info`)
11-
}
12-
138
export default class RT extends BackendlessRTClient {
149
constructor(app) {
15-
const { appId, apiKey, appPath, debugMode } = app
10+
const { appId, apiKey, debugMode } = app
1611

1712
const clientId = Utils.uuid()
18-
const lookupPath = `${appPath}/rt/lookup`
1913

2014
super({
2115
appId: appId || undefined,
22-
lookupPath,
2316
debugMode,
2417
connectQuery() {
2518
const userToken = app.getCurrentUserToken()
@@ -31,10 +24,13 @@ export default class RT extends BackendlessRTClient {
3124
}
3225
},
3326

27+
hostResolver(){
28+
return app.appInfoPromise().then(({ rtURL }) => rtURL)
29+
},
30+
3431
socketConfigTransform: async socketConfig => {
3532
if (!appId) {
36-
const appInfo = await loadAppInfo(appPath)
37-
33+
const appInfo = await app.appInfoPromise()
3834
socketConfig.url = `${socketConfig.host}/${appInfo.appId}`
3935
socketConfig.options.path = `/${appInfo.appId}`
4036
socketConfig.options.query.apiKey = appInfo.apiKey

src/urls.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ export default class Urls {
77
return this.app.appPath
88
}
99

10+
// app info
11+
12+
appInfo() {
13+
return `${this.root()}/info`
14+
}
15+
1016
//automations
1117

1218
automation() {

test/unit/helpers/rt.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ export function createMockRTServer(appId = APP_ID) {
9595
socket.on(RTSocketEvents.SUB_ON, data => onMessage(RTSocketEvents.SUB_ON, data))
9696
socket.on(RTSocketEvents.SUB_OFF, data => onMessage(RTSocketEvents.SUB_OFF, data))
9797

98-
onMessage(RTSocketEvents.CONNECT, { apiKey, clientId, userToken: userToken === 'null' ? null : userToken })
98+
onMessage(RTSocketEvents.CONNECT, {
99+
apiKey, clientId, userToken: userToken === 'null' ? null : userToken, connectionId: socket.id
100+
})
99101
})
100102

101103
const emit = (type, data) => {

test/unit/specs/data/rt.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { expect } from 'chai'
22
import { describe, it } from 'mocha'
33

4-
import Backendless, { forTest, prepareMockRequest, createMockRTServer, Utils } from '../../helpers/sandbox'
4+
import Backendless, { forTest, createMockRTServer, Utils } from '../../helpers/sandbox'
55

66
describe('<Data> RT', function() {
77

@@ -11,6 +11,7 @@ describe('<Data> RT', function() {
1111

1212
const tableName = 'TEST_TABLE_NAME'
1313
const relationColumnName = 'TEST_REL_COLUMN_NAME'
14+
const rtURL = 'http://localhost:12345'
1415

1516
let rtClient
1617

@@ -20,7 +21,9 @@ describe('<Data> RT', function() {
2021
beforeEach(async () => {
2122
rtClient = await createMockRTServer()
2223

23-
prepareMockRequest(rtClient.host)
24+
Backendless.appInfoPromise = chai.spy(() =>
25+
Promise.resolve({ rtURL })
26+
)
2427

2528
dataStore = Backendless.Data.of(tableName)
2629
rtHandlers = dataStore.rt()

test/unit/specs/files/basic.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -689,14 +689,14 @@ describe('<Files> Basic', function() {
689689

690690
expect(req1).to.deep.include({
691691
method : 'POST',
692-
path : `${APP_PATH}/files/test/path/`,
692+
path : `${APP_PATH}/files/test/path`,
693693
headers: {},
694694
body : undefined
695695
})
696696

697697
expect(req2).to.deep.include({
698698
method : 'POST',
699-
path : `${APP_PATH}/files/test/path/`,
699+
path : `${APP_PATH}/files/test/path`,
700700
headers: {},
701701
body : undefined
702702
})

test/unit/specs/logging.js

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -570,16 +570,20 @@ describe('<Logging>', function() {
570570
})
571571

572572
it('should apply log levels to logging config', async () => {
573-
prepareMockRequest([
574-
{
575-
name : loggerName,
576-
level: 'FATAL'
577-
},
578-
{
579-
name : 'Global logger',
580-
level: 'ERROR'
581-
}
582-
])
573+
Backendless.appInfoPromise = chai.spy(() =>
574+
Promise.resolve({
575+
loggers: [
576+
{
577+
name : loggerName,
578+
level: 'FATAL'
579+
},
580+
{
581+
name : 'Global logger',
582+
level: 'ERROR'
583+
}
584+
]
585+
})
586+
)
583587

584588
Backendless.initApp({
585589
appId : APP_ID,
@@ -620,16 +624,20 @@ describe('<Logging>', function() {
620624
})
621625

622626
it('should ignore all logs when global is OFF', async () => {
623-
prepareMockRequest([
624-
{
625-
name : loggerName,
626-
level: 'INFO'
627-
},
628-
{
629-
name : 'Global logger',
630-
level: 'OFF'
631-
}
632-
])
627+
Backendless.appInfoPromise = chai.spy(() =>
628+
Promise.resolve({
629+
loggers: [
630+
{
631+
name : loggerName,
632+
level: 'INFO'
633+
},
634+
{
635+
name : 'Global logger',
636+
level: 'OFF'
637+
}
638+
]
639+
})
640+
)
633641

634642
Backendless.initApp({
635643
appId : APP_ID,

test/unit/specs/messaging/channel.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ describe('<Messaging> Channel', function() {
1111

1212
const channelName = 'TEST_CHANNEL_NAME'
1313
const message = 'TEST_MESSAGE'
14+
const rtURL = 'http://localhost:12345'
1415

1516
const fakeResult = { foo: 123 }
1617

@@ -22,7 +23,9 @@ describe('<Messaging> Channel', function() {
2223
beforeEach(async () => {
2324
rtClient = await createMockRTServer()
2425

25-
prepareMockRequest(rtClient.host)
26+
Backendless.appInfoPromise = chai.spy(() =>
27+
Promise.resolve({ rtURL })
28+
)
2629

2730
channel = Backendless.Messaging.subscribe(channelName)
2831

0 commit comments

Comments
 (0)