1 package de.juplo.facebook.client;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.OutputStream;
7 import java.net.URI;
8 import java.nio.charset.StandardCharsets;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11 import org.springframework.http.HttpHeaders;
12 import org.springframework.http.HttpMethod;
13 import org.springframework.http.HttpStatus;
14 import org.springframework.http.client.ClientHttpRequest;
15 import org.springframework.http.client.ClientHttpRequestFactory;
16 import org.springframework.http.client.ClientHttpResponse;
17
18
19
20
21
22
23
24 public class MockClientHttpRequestFactory implements ClientHttpRequestFactory
25 {
26 private static final Logger log =
27 LoggerFactory.getLogger(MockClientHttpRequestFactory.class);
28
29 private HttpStatus status = HttpStatus.OK;
30 private HttpHeaders headers = new HttpHeaders();
31 private String body = "";
32
33
34 @Override
35 public ClientHttpRequest createRequest(URI uri, HttpMethod method) throws IOException
36 {
37 return new MockClientHttpRequest(uri, method);
38 }
39
40 public void setStatus(HttpStatus status)
41 {
42 this.status = status;
43 }
44
45 public void setHeaders(HttpHeaders headers)
46 {
47 this.headers = headers;
48 }
49
50 public void addHeader(String name, String value)
51 {
52 headers.add(name, value);
53 }
54
55 public void setBody(String body)
56 {
57 log.trace(body);
58 this.body = body;
59 }
60
61
62 class MockClientHttpRequest implements ClientHttpRequest
63 {
64 private final URI uri;
65 private final HttpMethod method;
66
67
68 public MockClientHttpRequest(URI uri, HttpMethod method)
69 {
70 this.uri = uri;
71 this.method = method;
72 }
73
74
75 @Override
76 public ClientHttpResponse execute() throws IOException
77 {
78 return new MockClientHttpResponse();
79 }
80
81 @Override
82 public HttpMethod getMethod()
83 {
84 return method;
85 }
86
87 @Override
88 public URI getURI()
89 {
90 return uri;
91 }
92
93 @Override
94 public HttpHeaders getHeaders()
95 {
96 return headers;
97 }
98
99 @Override
100 public OutputStream getBody() throws IOException
101 {
102 throw new UnsupportedOperationException("Not supported yet.");
103 }
104 }
105
106
107 class MockClientHttpResponse implements ClientHttpResponse
108 {
109 @Override
110 public HttpStatus getStatusCode() throws IOException
111 {
112 return status;
113 }
114
115 @Override
116 public int getRawStatusCode() throws IOException
117 {
118 return status.value();
119 }
120
121 @Override
122 public String getStatusText() throws IOException
123 {
124 return status.getReasonPhrase();
125 }
126
127 @Override
128 public void close()
129 {
130 }
131
132 @Override
133 public InputStream getBody() throws IOException
134 {
135 return new ByteArrayInputStream(body.getBytes(StandardCharsets.UTF_8));
136 }
137
138 @Override
139 public HttpHeaders getHeaders()
140 {
141 return headers;
142 }
143 }
144 }