1 package ca.uhn.hl7v2.hoh.encoder;
2
3 import static ca.uhn.hl7v2.hoh.util.StringUtils.*;
4
5 import java.io.UnsupportedEncodingException;
6 import java.nio.charset.StandardCharsets;
7
8 import ca.uhn.hl7v2.hoh.util.VersionLogger;
9 import ca.uhn.hl7v2.hoh.util.repackage.Base64;
10
11 public class Hl7OverHttpRequestEncoder extends AbstractHl7OverHttpEncoder {
12
13 private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(Hl7OverHttpRequestEncoder.class);
14 private String myHost;
15 private int myPort;
16
17 public Hl7OverHttpRequestEncoder() {
18 super();
19 }
20
21 public void setHost(String theHost) {
22 myHost = theHost;
23 }
24
25 public void setPort(int thePort) {
26 myPort = thePort;
27 }
28 private final boolean myAcceptGzip = false;
29
30 @Override
31 protected void addSpecificHeaders() {
32 if (isNotBlank(getUsername()) && isNotBlank(getPassword())) {
33 String authorizationUnescaped = defaultString(getUsername()) + ":" + defaultString(getPassword());
34 String encoded;
35 encoded = Base64.encodeBase64String(authorizationUnescaped.getBytes(StandardCharsets.ISO_8859_1));
36 getHeaders().put("Authorization", "Basic " + encoded);
37 }
38
39 if (myAcceptGzip) {
40 getHeaders().put("Accept-Encoding", "gzip");
41 }
42 getHeaders().put("User-Agent", "HAPI (HL7 over HTTP) Client " + VersionLogger.getVersion());
43
44 StringBuilder hostBuilder = new StringBuilder();
45 if (isNotBlank(myHost)) {
46 hostBuilder.append(myHost);
47 if (myPort > 0) {
48 hostBuilder.append(":");
49 hostBuilder.append(myPort);
50 } else {
51 ourLog.warn("Host has been set, but port has not");
52 }
53 getHeaders().put("Host", hostBuilder.toString());
54 } else {
55 ourLog.warn("Host has not been set");
56 }
57 }
58
59 @Override
60 protected void setActionLineAppropriately() {
61 setActionLine("POST " + getPath() + " HTTP/1.1");
62 }
63
64 }