Skip to content

Commit

Permalink
Merge pull request #361 from rakelley/absolute-urls-should-include-port
Browse files Browse the repository at this point in the history
All absolute url generation should include ports
  • Loading branch information
tobias-93 committed Dec 1, 2019
2 parents 01a4684 + 3bf453f commit 47554a9
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 7 deletions.
3 changes: 3 additions & 0 deletions Resources/.gitignore
@@ -0,0 +1,3 @@
node_modules/
yarn.lock
package-lock.json
6 changes: 3 additions & 3 deletions Resources/js/router.js
Expand Up @@ -295,13 +295,13 @@ class Router {
// Foo-bar!
url = this.context_.base_url + url;
if (route.requirements && ("_scheme" in route.requirements) && this.getScheme() != route.requirements["_scheme"]) {
url = route.requirements["_scheme"] + "://" + (host || this.getHost()) + url;
url = route.requirements["_scheme"] + "://" + (host || this.getHost()) + ('' === port ? '' : ':' + port) + url;
} else if ("undefined" !== typeof route.schemes && "undefined" !== typeof route.schemes[0] && this.getScheme() !== route.schemes[0]) {
url = route.schemes[0] + "://" + (host || this.getHost()) + url;
url = route.schemes[0] + "://" + (host || this.getHost()) + ('' === port ? '' : ':' + port) + url;
} else if (host && this.getHost() !== host + ('' === port ? '' : ':' + port)) {
url = this.getScheme() + "://" + host + ('' === port ? '' : ':' + port) + url;
} else if (absolute === true) {
url = this.getScheme() + "://" + this.getHost() + url;
url = this.getScheme() + "://" + this.getHost() + ('' === port ? '' : ':' + port) + url;
}

if (Object.keys(unusedParams).length > 0) {
Expand Down
41 changes: 41 additions & 0 deletions Resources/js/router.test.js
Expand Up @@ -183,6 +183,19 @@ function testGenerateUsesAbsoluteUrl() {
assertEquals('http://localhost/foo/bar', router.generate('homepage', [], true));
}

function testGenerateUsesAbsoluteUrlWithGivenPort() {
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http", port: "8000"}, {
homepage: {
tokens: [['text', '/bar']],
defaults: {},
requirements: {},
hosttokens: []
}
});

assertEquals('http://localhost:8000/foo/bar', router.generate('homepage', [], true));
}

function testGenerateUsesAbsoluteUrlWhenSchemeRequirementGiven() {
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http"}, {
homepage: {
Expand All @@ -196,6 +209,19 @@ function testGenerateUsesAbsoluteUrlWhenSchemeRequirementGiven() {
assertEquals('http://localhost/foo/bar', router.generate('homepage', [], true));
}

function testGenerateUsesAbsoluteUrlWithGivenPortWhenSchemeRequirementGiven() {
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http", port: "8080"}, {
homepage: {
tokens: [['text', '/bar']],
defaults: {},
requirements: {"_scheme": "http"},
hosttokens: []
}
});

assertEquals('http://localhost:8080/foo/bar', router.generate('homepage', [], true));
}

function testGenerateUsesAbsoluteUrlWhenSchemeGiven() {
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http"}, {
homepage: {
Expand All @@ -211,6 +237,21 @@ function testGenerateUsesAbsoluteUrlWhenSchemeGiven() {
assertEquals('http://localhost/foo/bar', router.generate('homepage', [], true));
}

function testGenerateUsesAbsoluteUrlWithGivenPortWhenSchemeGiven() {
var router = new fos.Router({base_url: '/foo', host: "localhost", scheme: "http", port:"1234"}, {
homepage: {
tokens: [['text', '/bar']],
defaults: {},
requirements: {},
hosttokens: [],
schemes: ['http'],
methods: []
}
});

assertEquals('http://localhost:1234/foo/bar', router.generate('homepage', [], true));
}

function testGenerateWithOptionalTrailingParam() {
var router = new fos.Router({base_url: ''}, {
posts: {
Expand Down
6 changes: 3 additions & 3 deletions Resources/public/js/router.js
Expand Up @@ -368,13 +368,13 @@ var Router = function () {
// Foo-bar!
url = this.context_.base_url + url;
if (route.requirements && "_scheme" in route.requirements && this.getScheme() != route.requirements["_scheme"]) {
url = route.requirements["_scheme"] + "://" + (host || this.getHost()) + url;
url = route.requirements["_scheme"] + "://" + (host || this.getHost()) + ('' === port ? '' : ':' + port) + url;
} else if ("undefined" !== typeof route.schemes && "undefined" !== typeof route.schemes[0] && this.getScheme() !== route.schemes[0]) {
url = route.schemes[0] + "://" + (host || this.getHost()) + url;
url = route.schemes[0] + "://" + (host || this.getHost()) + ('' === port ? '' : ':' + port) + url;
} else if (host && this.getHost() !== host + ('' === port ? '' : ':' + port)) {
url = this.getScheme() + "://" + host + ('' === port ? '' : ':' + port) + url;
} else if (absolute === true) {
url = this.getScheme() + "://" + this.getHost() + url;
url = this.getScheme() + "://" + this.getHost() + ('' === port ? '' : ':' + port) + url;
}

if (Object.keys(unusedParams).length > 0) {
Expand Down
2 changes: 1 addition & 1 deletion Resources/public/js/router.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 47554a9

Please sign in to comment.