1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.search.backend.smo.internal;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.net.HttpURLConnection;
24 import java.net.URL;
25 import java.nio.charset.StandardCharsets;
26 import java.util.Map;
27 import java.util.Scanner;
28
29 import org.apache.maven.search.backend.smo.SmoSearchTransport;
30
31
32
33
34 public class UrlConnectionSmoSearchTransport implements SmoSearchTransport {
35 @Override
36 public String fetch(String serviceUri, Map<String, String> headers) throws IOException {
37 HttpURLConnection httpConnection = (HttpURLConnection) new URL(serviceUri).openConnection();
38 httpConnection.setInstanceFollowRedirects(false);
39 for (Map.Entry<String, String> entry : headers.entrySet()) {
40 httpConnection.setRequestProperty(entry.getKey(), entry.getValue());
41 }
42 int httpCode = httpConnection.getResponseCode();
43 if (httpCode == HttpURLConnection.HTTP_OK) {
44 try (InputStream inputStream = httpConnection.getInputStream()) {
45 try (Scanner scanner = new Scanner(inputStream, StandardCharsets.UTF_8.name())) {
46 return scanner.useDelimiter("\\A").next();
47 }
48 }
49 } else {
50 throw new IOException("Unexpected response code: " + httpCode);
51 }
52 }
53 }