Skip to content

Commit caedd2b

Browse files
authored
Check out headers for API requests / QBWEBSDK-621
1 parent 220f861 commit caedd2b

File tree

6 files changed

+69
-5
lines changed

6 files changed

+69
-5
lines changed

quickblox.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/QB-ChatSpec.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1858,7 +1858,6 @@ function createNormalMessageViaRESTAndReceiveItTest(params, msgExtension, dialog
18581858
});
18591859

18601860
QB_RECEIVER.chat.onMessageListener = function(userId, receivedMessage) {
1861-
console.info('TESTTS2');
18621861
expect(userId).toEqual(QBUser1.id);
18631862
expect(receivedMessage).toBeDefined();
18641863
expect(receivedMessage.id).not.toBeNull();

spec/QB-HelpersSpec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ describe('Helpers', function() {
1717
QB.init(CREDENTIALS.appId, CREDENTIALS.authKey, CREDENTIALS.authSecret, CONFIG);
1818
});
1919

20+
it('can get OS information', function(){
21+
const env = QB._getOS();
22+
23+
expect(env).toEqual(jasmine.any(String));
24+
});
25+
2026
it('can generate user\'s jid', function() {
2127
var userJid = QB.chat.helpers.getUserJid(5, appId);
2228

src/qbMain.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ QuickBlox.prototype = {
2525
* */
2626
buildNumber: config.buildNumber,
2727

28+
_getOS: Utils.getOS.bind(Utils),
29+
2830
/**
2931
* @memberof QB
3032
* @param {Number | String} appIdOrToken - Application ID (from your admin panel) or Session Token.

src/qbProxy.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,20 @@ ServiceProxy.prototype = {
104104
};
105105
}
106106

107-
if (isQBRequest && qbSessionToken) {
107+
if (isQBRequest) {
108108
if (!qbRequest.headers) {
109109
qbRequest.headers = {};
110110
}
111111

112-
qbRequest.headers['QB-Token'] = qbSessionToken;
113-
qbRequest.headers['QB-SDK'] = 'JS ' + config.version + ' - Server';
112+
// TODO: include QB-OS header in Access-Control-Allow-Headers;
113+
// Now gets error 'Request header field QB-OS is not allowed by Access-Control-Allow-Headers in preflight response'
114+
// qbRequest.headers['QB-OS'] = Utils.getOS();
115+
116+
qbRequest.headers['QB-SDK'] = 'JS ' + config.version + ' - Client';
117+
118+
if(qbSessionToken) {
119+
qbRequest.headers['QB-Token'] = qbSessionToken;
120+
}
114121
}
115122

116123
if (config.timeout) {

src/qbUtils.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ var isBrowser = typeof window !== "undefined",
1111

1212
if (!isBrowser && !isNativeScript) {
1313
var fs = require('fs');
14+
var os = require('os');
1415
}
1516

1617
// The object for type MongoDB.Bson.ObjectId
@@ -37,6 +38,55 @@ var Utils = {
3738
'node': isNode
3839
};
3940
},
41+
42+
_getOSInfoFromNodeJS: function() {
43+
return os.platform();
44+
},
45+
46+
_getOSInfoFromBrowser: function() {
47+
return window.navigator.userAgent;
48+
},
49+
50+
getOS: function() {
51+
var self = this;
52+
var osName = 'An unknown OS';
53+
54+
var OS_LIST = [
55+
{
56+
osName:'Windows',
57+
codeNames:['Windows', 'win32']
58+
},
59+
{
60+
osName:'Linux',
61+
codeNames:['Linux', 'linux']
62+
},
63+
{
64+
osName:'macOS',
65+
codeNames:['Mac OS', 'darwin']
66+
}
67+
];
68+
69+
var platformInfo;
70+
71+
if(self.getEnv().browser) {
72+
platformInfo = self._getOSInfoFromBrowser();
73+
} else if(self.getEnv().node) {
74+
platformInfo = self._getOSInfoFromNodeJS();
75+
}
76+
77+
OS_LIST.forEach( function(osInfo) {
78+
osInfo.codeNames.forEach( function(codeName) {
79+
var index = platformInfo.indexOf(codeName);
80+
81+
if(index !== -1) {
82+
osName = osInfo.osName;
83+
}
84+
});
85+
});
86+
87+
return osName;
88+
},
89+
4090
safeCallbackCall: function() {
4191
var listenerString = arguments[0].toString(),
4292
listenerName = listenerString.split('(')[0].split(' ')[1],

0 commit comments

Comments
 (0)