View Javadoc
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   * @author kai
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 }