Add session to cache with both hostname and address.
[cyberduck.git] / source / ch / cyberduck / core / HostUrlProvider.java
blob545d6d510895ff4f8d85375572d401ebbf88fa5e
1 package ch.cyberduck.core;
3 /*
4 * Copyright (c) 2002-2013 David Kocher. All rights reserved.
5 * http://cyberduck.ch/
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * Bug fixes, suggestions and comments should be sent to feedback@cyberduck.ch
20 import ch.cyberduck.core.idna.PunycodeConverter;
22 import org.apache.commons.lang3.StringUtils;
24 /**
25 * @version $Id$
27 public class HostUrlProvider {
29 private boolean username;
31 private boolean path;
33 public HostUrlProvider() {
34 this(true, false);
37 public HostUrlProvider(final boolean username) {
38 this(username, false);
41 public HostUrlProvider(final boolean username, final boolean path) {
42 this.username = username;
43 this.path = path;
46 /**
47 * @return URL
49 public String get(final Host host) {
50 final String base = String.format("%s://%s%s%s",
51 host.getProtocol().getScheme().toString(),
52 username && StringUtils.isNotEmpty(host.getCredentials().getUsername()) ? String.format("%s@", host.getCredentials().getUsername()) : "",
53 new PunycodeConverter().convert(host.getHostname()),
54 host.getPort() != host.getProtocol().getScheme().getPort() ? String.format(":%d", host.getPort()) : "");
55 if(path) {
56 if(StringUtils.isNotBlank(host.getDefaultPath())) {
57 return String.format("%s%s", base, PathNormalizer.normalize(host.getDefaultPath()));
60 return base;