1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
package org.openecomp.sdc.toscaparser.api.utils;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.openecomp.sdc.toscaparser.api.common.ExceptionCollector;
public class UrlUtils {
public static boolean validateUrl(String sUrl) {
// Validates whether the given path is a URL or not
// If the given path includes a scheme (http, https, ftp, ...) and a net
// location (a domain name such as www.github.com) it is validated as a URL
try {
URL url = new URL(sUrl);
if(url.getProtocol().equals("file")) {
return true;
}
return url.getAuthority() != null;
}
catch(MalformedURLException e) {
return false;
}
}
public static String joinUrl(String sUrl,String relativePath) {
// Builds a new URL from the given URL and the relative path
// Example:
// url: http://www.githib.com/openstack/heat
// relative_path: heat-translator
// - joined: http://www.githib.com/openstack/heat-translator
if(!validateUrl(sUrl)) {
ExceptionCollector.appendException(String.format(
"ValueError: The URL \"%s\" is malformed",sUrl));
}
try {
URL base = new URL(sUrl);
return (new URL(base,relativePath)).toString();
}
catch(MalformedURLException e) {
ExceptionCollector.appendException(String.format(
"ValueError: Joining URL \"%s\" and relative path \"%s\" caused an exception",sUrl,relativePath));
return sUrl;
}
}
public static boolean isUrlAccessible(String sUrl) {
// Validates whether the given URL is accessible
// Returns true if the get call returns a 200 response code.
// Otherwise, returns false.
try {
HttpURLConnection connection = (HttpURLConnection) new URL(sUrl).openConnection();
connection.setRequestMethod("HEAD");
int responseCode = connection.getResponseCode();
return responseCode == 200;
}
catch(IOException e) {
return false;
}
}
}
/*python
from six.moves.urllib.parse import urljoin
from six.moves.urllib.parse import urlparse
from toscaparser.common.exception import ExceptionCollector
from toscaparser.utils.gettextutils import _
try:
# Python 3.x
import urllib.request as urllib2
except ImportError:
# Python 2.x
import urllib2
class UrlUtils(object):
@staticmethod
def validate_url(path):
"""Validates whether the given path is a URL or not.
If the given path includes a scheme (http, https, ftp, ...) and a net
location (a domain name such as www.github.com) it is validated as a
URL.
"""
parsed = urlparse(path)
if parsed.scheme == 'file':
# If the url uses the file scheme netloc will be ""
return True
else:
return bool(parsed.scheme) and bool(parsed.netloc)
@staticmethod
def join_url(url, relative_path):
"""Builds a new URL from the given URL and the relative path.
Example:
url: http://www.githib.com/openstack/heat
relative_path: heat-translator
- joined: http://www.githib.com/openstack/heat-translator
"""
if not UrlUtils.validate_url(url):
ExceptionCollector.appendException(
ValueError(_('"%s" is not a valid URL.') % url))
return urljoin(url, relative_path)
@staticmethod
def url_accessible(url):
"""Validates whether the given URL is accessible.
Returns true if the get call returns a 200 response code.
Otherwise, returns false.
"""
return urllib2.urlopen(url).getcode() == 200
*/
|