Build fix. We need to escape the path or http.request would fail.
[WebKit.git] / Websites / perf.webkit.org / tools / js / remote.js
index 5245025..d251019 100644 (file)
@@ -17,19 +17,37 @@ class RemoteAPI {
     {
         let scheme = this._server.scheme;
         let port = this._server.port;
-        let portSuffix = (scheme == 'http' && port == 80) || (scheme == 'https' && port == 443) ? '' : `:${port}`;
+        let portSuffix = this._server.port == this._server.defaultPort ? '' : `:${port}`;
         if (path.charAt(0) != '/')
             path = '/' + path;
-        return `${scheme}://${this._server.host}portSuffix${path}`;
+        return `${scheme}://${this._server.host}${portSuffix}${path}`;
     }
 
     configure(server)
     {
         assert(server.scheme === 'http' || server.scheme === 'https');
-        assert.equal(typeof(server.host), 'string');
-        assert(!server.port || typeof(server.port) == 'number');
-        assert(!server.auth || typeof(server.auth) == 'object');
-        this._server = server;
+        assert.equal(typeof(server.host), 'string', 'host should be a string');
+        assert(!server.port || typeof(server.port) == 'number', 'port should be a number');
+
+        let auth = null;
+        if (server.auth) {
+            assert.equal(typeof(server.auth), 'object', 'auth should be a dictionary with username and password as keys');
+            assert.equal(typeof(server.auth.username), 'string', 'auth should contain a string username');
+            assert.equal(typeof(server.auth.password), 'string', 'auth should contain a string password');
+            auth = {
+                username: server.auth.username,
+                password: server.auth.password,
+            };
+        }
+
+        const defaultPort = server.scheme == 'http' ? 80 : 443;
+        this._server = {
+            scheme: server.scheme,
+            host: server.host,
+            port: server.port || defaultPort,
+            defaultPort: defaultPort,
+            auth: auth,
+        };
     }
 
     getJSON(path)
@@ -72,10 +90,10 @@ class RemoteAPI {
         return new Promise(function (resolve, reject) {
             let options = {
                 hostname: server.host,
-                port: server.port || 80,
+                port: server.port,
                 auth: server.auth ? server.auth.username + ':' + server.auth.password : null,
                 method: method,
-                path: path,
+                path: escape(path),
             };
 
             let request = (server.scheme == 'http' ? http : https).request(options, function (response) {