use of org.apache.http.client.utils.URIBuilder in project jabref by JabRef.
the class MathSciNet method getURLForEntry.
/**
* We use MR Lookup (http://www.ams.org/mrlookup) instead of the usual search since this tool is also available
* without subscription and, moreover, is optimized for finding a publication based on partial information.
*/
@Override
public URL getURLForEntry(BibEntry entry) throws URISyntaxException, MalformedURLException, FetcherException {
URIBuilder uriBuilder = new URIBuilder("http://www.ams.org/mrlookup");
uriBuilder.addParameter("format", "bibtex");
entry.getFieldOrAlias(FieldName.TITLE).ifPresent(title -> uriBuilder.addParameter("ti", title));
entry.getFieldOrAlias(FieldName.AUTHOR).ifPresent(author -> uriBuilder.addParameter("au", author));
entry.getFieldOrAlias(FieldName.JOURNAL).ifPresent(journal -> uriBuilder.addParameter("jrnl", journal));
entry.getFieldOrAlias(FieldName.YEAR).ifPresent(year -> uriBuilder.addParameter("year", year));
return uriBuilder.build().toURL();
}
use of org.apache.http.client.utils.URIBuilder in project jabref by JabRef.
the class MedlineFetcher method getURLForID.
@Override
public URL getURLForID(String identifier) throws URISyntaxException, MalformedURLException, FetcherException {
URIBuilder uriBuilder = new URIBuilder(ID_URL);
uriBuilder.addParameter("db", "pubmed");
uriBuilder.addParameter("retmode", "xml");
uriBuilder.addParameter("id", identifier);
return uriBuilder.build().toURL();
}
use of org.apache.http.client.utils.URIBuilder in project opennms by OpenNMS.
the class HttpCollector method buildGetMethod.
private static HttpGet buildGetMethod(final URI uri, final HttpCollectorAgent collectorAgent) {
URI uriWithQueryString = null;
List<NameValuePair> queryParams = buildRequestParameters(collectorAgent);
try {
final StringBuilder query = new StringBuilder();
query.append(URLEncodedUtils.format(queryParams, StandardCharsets.UTF_8));
if (uri.getQuery() != null && !uri.getQuery().trim().isEmpty()) {
if (query.length() > 0) {
query.append("&");
}
query.append(uri.getQuery());
}
final URIBuilder ub = new URIBuilder(uri);
if (query.length() > 0) {
final List<NameValuePair> params = URLEncodedUtils.parse(query.toString(), StandardCharsets.UTF_8);
if (!params.isEmpty()) {
ub.setParameters(params);
}
}
uriWithQueryString = ub.build();
return new HttpGet(uriWithQueryString);
} catch (URISyntaxException e) {
LOG.warn(e.getMessage(), e);
return new HttpGet(uri);
}
}
use of org.apache.http.client.utils.URIBuilder in project opennms by OpenNMS.
the class HttpPostMonitor method poll.
/**
* {@inheritDoc}
*
* Poll the specified address for service availability.
*
* During the poll an attempt is made to execute the named method (with optional input) connect on the specified port. If
* the exec on request is successful, the banner line generated by the
* interface is parsed and if the banner text indicates that we are talking
* to Provided that the interface's response is valid we set the service
* status to SERVICE_AVAILABLE and return.
*/
public PollStatus poll(MonitoredService svc, Map<String, Object> parameters) {
// Process parameters
TimeoutTracker tracker = new TimeoutTracker(parameters, DEFAULT_RETRY, DEFAULT_TIMEOUT);
// Port
int port = ParameterMap.getKeyedInteger(parameters, PARAMETER_PORT, DEFAULT_PORT);
// URI
String strURI = ParameterMap.getKeyedString(parameters, PARAMETER_URI, DEFAULT_URI);
// Username
String strUser = ParameterMap.getKeyedString(parameters, PARAMETER_USERNAME, null);
// Password
String strPasswd = ParameterMap.getKeyedString(parameters, PARAMETER_PASSWORD, null);
// BannerMatch
String strBannerMatch = ParameterMap.getKeyedString(parameters, PARAMETER_BANNER, null);
// Scheme
String strScheme = ParameterMap.getKeyedString(parameters, PARAMETER_SCHEME, DEFAULT_SCHEME);
// Payload
String strPayload = ParameterMap.getKeyedString(parameters, PARAMETER_PAYLOAD, null);
// Mimetype
String strMimetype = ParameterMap.getKeyedString(parameters, PARAMETER_MIMETYPE, DEFAULT_MIMETYPE);
// Charset
String strCharset = ParameterMap.getKeyedString(parameters, PARAMETER_CHARSET, DEFAULT_CHARSET);
// SSLFilter
boolean boolSSLFilter = ParameterMap.getKeyedBoolean(parameters, PARAMETER_SSLFILTER, DEFAULT_SSLFILTER);
// Get the address instance.
InetAddress ipAddr = svc.getAddress();
final String hostAddress = InetAddressUtils.str(ipAddr);
LOG.debug("poll: address = {}, port = {}, {}", hostAddress, port, tracker);
// Give it a whirl
PollStatus serviceStatus = PollStatus.unavailable();
for (tracker.reset(); tracker.shouldRetry() && !serviceStatus.isAvailable(); tracker.nextAttempt()) {
HttpClientWrapper clientWrapper = null;
try {
tracker.startAttempt();
clientWrapper = HttpClientWrapper.create().setConnectionTimeout(tracker.getSoTimeout()).setSocketTimeout(tracker.getSoTimeout()).setRetries(DEFAULT_RETRY);
if (boolSSLFilter) {
clientWrapper.trustSelfSigned(strScheme);
}
HttpEntity postReq;
if (strUser != null && strPasswd != null) {
clientWrapper.addBasicCredentials(strUser, strPasswd);
}
try {
postReq = new StringEntity(strPayload, ContentType.create(strMimetype, strCharset));
} catch (final UnsupportedCharsetException e) {
serviceStatus = PollStatus.unavailable("Unsupported encoding encountered while constructing POST body " + e);
break;
}
URIBuilder ub = new URIBuilder();
ub.setScheme(strScheme);
ub.setHost(hostAddress);
ub.setPort(port);
ub.setPath(strURI);
LOG.debug("HttpPostMonitor: Constructed URL is {}", ub);
HttpPost post = new HttpPost(ub.build());
post.setEntity(postReq);
CloseableHttpResponse response = clientWrapper.execute(post);
LOG.debug("HttpPostMonitor: Status Line is {}", response.getStatusLine());
if (response.getStatusLine().getStatusCode() > 399) {
LOG.info("HttpPostMonitor: Got response status code {}", response.getStatusLine().getStatusCode());
LOG.debug("HttpPostMonitor: Received server response: {}", response.getStatusLine());
LOG.debug("HttpPostMonitor: Failing on bad status code");
serviceStatus = PollStatus.unavailable("HTTP(S) Status code " + response.getStatusLine().getStatusCode());
break;
}
LOG.debug("HttpPostMonitor: Response code is valid");
double responseTime = tracker.elapsedTimeInMillis();
HttpEntity entity = response.getEntity();
InputStream responseStream = entity.getContent();
String Strresponse = IOUtils.toString(responseStream);
if (Strresponse == null)
continue;
LOG.debug("HttpPostMonitor: banner = {}", Strresponse);
LOG.debug("HttpPostMonitor: responseTime= {}ms", responseTime);
// Could it be a regex?
if (!Strings.isNullOrEmpty(strBannerMatch) && strBannerMatch.startsWith("~")) {
if (!Strresponse.matches(strBannerMatch.substring(1))) {
serviceStatus = PollStatus.unavailable("Banner does not match Regex '" + strBannerMatch + "'");
break;
} else {
serviceStatus = PollStatus.available(responseTime);
}
} else {
if (Strresponse.indexOf(strBannerMatch) > -1) {
serviceStatus = PollStatus.available(responseTime);
} else {
serviceStatus = PollStatus.unavailable("Did not find expected Text '" + strBannerMatch + "'");
break;
}
}
} catch (final URISyntaxException e) {
final String reason = "URISyntaxException for URI: " + strURI + " " + e.getMessage();
LOG.debug(reason, e);
serviceStatus = PollStatus.unavailable(reason);
break;
} catch (final Exception e) {
final String reason = "Exception: " + e.getMessage();
LOG.debug(reason, e);
serviceStatus = PollStatus.unavailable(reason);
break;
} finally {
IOUtils.closeQuietly(clientWrapper);
}
}
// return the status of the service
return serviceStatus;
}
use of org.apache.http.client.utils.URIBuilder in project opennms by OpenNMS.
the class WebMonitor method poll.
/**
* {@inheritDoc}
*/
@Override
public PollStatus poll(MonitoredService svc, Map<String, Object> map) {
PollStatus pollStatus = PollStatus.unresponsive();
HttpClientWrapper clientWrapper = HttpClientWrapper.create();
try {
final String hostAddress = InetAddressUtils.str(svc.getAddress());
URIBuilder ub = new URIBuilder();
ub.setScheme(ParameterMap.getKeyedString(map, "scheme", DEFAULT_SCHEME));
ub.setHost(hostAddress);
ub.setPort(ParameterMap.getKeyedInteger(map, "port", DEFAULT_PORT));
ub.setPath(ParameterMap.getKeyedString(map, "path", DEFAULT_PATH));
String queryString = ParameterMap.getKeyedString(map, "queryString", null);
if (queryString != null && !queryString.trim().isEmpty()) {
final List<NameValuePair> params = URLEncodedUtils.parse(queryString, StandardCharsets.UTF_8);
if (!params.isEmpty()) {
ub.setParameters(params);
}
}
final HttpGet getMethod = new HttpGet(ub.build());
clientWrapper.setConnectionTimeout(ParameterMap.getKeyedInteger(map, "timeout", DEFAULT_TIMEOUT)).setSocketTimeout(ParameterMap.getKeyedInteger(map, "timeout", DEFAULT_TIMEOUT));
final String userAgent = ParameterMap.getKeyedString(map, "user-agent", DEFAULT_USER_AGENT);
if (userAgent != null && !userAgent.trim().isEmpty()) {
clientWrapper.setUserAgent(userAgent);
}
final String virtualHost = ParameterMap.getKeyedString(map, "virtual-host", hostAddress);
if (virtualHost != null && !virtualHost.trim().isEmpty()) {
clientWrapper.setVirtualHost(virtualHost);
}
if (ParameterMap.getKeyedBoolean(map, "http-1.0", false)) {
clientWrapper.setVersion(HttpVersion.HTTP_1_0);
}
for (final Object okey : map.keySet()) {
final String key = okey.toString();
if (key.matches("header_[0-9]+$")) {
final String headerName = ParameterMap.getKeyedString(map, key, null);
final String headerValue = ParameterMap.getKeyedString(map, key + "_value", null);
getMethod.setHeader(headerName, headerValue);
}
}
if (ParameterMap.getKeyedBoolean(map, "use-ssl-filter", false)) {
clientWrapper.trustSelfSigned(ParameterMap.getKeyedString(map, "scheme", DEFAULT_SCHEME));
}
if (ParameterMap.getKeyedBoolean(map, "auth-enabled", false)) {
clientWrapper.addBasicCredentials(ParameterMap.getKeyedString(map, "auth-user", DEFAULT_USER), ParameterMap.getKeyedString(map, "auth-password", DEFAULT_PASSWORD));
if (ParameterMap.getKeyedBoolean(map, "auth-preemptive", true)) {
clientWrapper.usePreemptiveAuth();
}
}
LOG.debug("getMethod parameters: {}", getMethod);
CloseableHttpResponse response = clientWrapper.execute(getMethod);
int statusCode = response.getStatusLine().getStatusCode();
String statusText = response.getStatusLine().getReasonPhrase();
String expectedText = ParameterMap.getKeyedString(map, "response-text", null);
LOG.debug("returned results are:");
if (!inRange(ParameterMap.getKeyedString(map, "response-range", DEFAULT_HTTP_STATUS_RANGE), statusCode)) {
pollStatus = PollStatus.unavailable(statusText);
} else {
pollStatus = PollStatus.available();
}
if (expectedText != null) {
String responseText = EntityUtils.toString(response.getEntity());
if (expectedText.charAt(0) == '~') {
if (!responseText.matches(expectedText.substring(1))) {
pollStatus = PollStatus.unavailable("Regex Failed");
} else
pollStatus = PollStatus.available();
} else {
if (expectedText.equals(responseText))
pollStatus = PollStatus.available();
else
pollStatus = PollStatus.unavailable("Did not find expected Text");
}
}
} catch (IOException e) {
LOG.info(e.getMessage());
pollStatus = PollStatus.unavailable(e.getMessage());
} catch (URISyntaxException e) {
LOG.info(e.getMessage());
pollStatus = PollStatus.unavailable(e.getMessage());
} catch (GeneralSecurityException e) {
LOG.error("Unable to set SSL trust to allow self-signed certificates", e);
pollStatus = PollStatus.unavailable("Unable to set SSL trust to allow self-signed certificates");
} catch (Throwable e) {
LOG.error("Unexpected exception while running " + getClass().getName(), e);
pollStatus = PollStatus.unavailable("Unexpected exception: " + e.getMessage());
} finally {
IOUtils.closeQuietly(clientWrapper);
}
return pollStatus;
}
Aggregations