Subversion Repositories SmartDukaan

Rev

Rev 22337 | Rev 22341 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
21557 ashik.ali 1
package com.spice.profitmandi.common.web.client;
2
 
3
import java.io.BufferedReader;
4
import java.io.IOException;
5
import java.io.InputStream;
6
import java.io.InputStreamReader;
22215 ashik.ali 7
import java.io.UnsupportedEncodingException;
22337 amit.gupta 8
import java.net.URLEncoder;
22215 ashik.ali 9
import java.util.ArrayList;
10
import java.util.List;
21557 ashik.ali 11
import java.util.Map;
12
import java.util.Set;
13
 
14
import org.apache.http.HttpResponse;
22215 ashik.ali 15
import org.apache.http.NameValuePair;
21557 ashik.ali 16
import org.apache.http.client.ClientProtocolException;
17
import org.apache.http.client.HttpClient;
22215 ashik.ali 18
import org.apache.http.client.entity.UrlEncodedFormEntity;
21557 ashik.ali 19
import org.apache.http.client.methods.HttpGet;
22215 ashik.ali 20
import org.apache.http.client.methods.HttpPost;
21
import org.apache.http.client.methods.HttpUriRequest;
21557 ashik.ali 22
import org.apache.http.impl.client.HttpClients;
22215 ashik.ali 23
import org.apache.http.message.BasicNameValuePair;
21557 ashik.ali 24
import org.slf4j.Logger;
25
import org.slf4j.LoggerFactory;
26
import org.springframework.http.HttpStatus;
27
import org.springframework.web.util.UriComponentsBuilder;
28
 
29
import com.spice.profitmandi.common.ResponseCodeHolder;
30
import com.spice.profitmandi.common.enumuration.SchemeType;
31
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
32
 
33
public class RestClient {
34
 
35
	private static final Logger LOGGER = LoggerFactory.getLogger(RestClient.class);
36
 
37
	private HttpClient httpClient;
38
	private SchemeType scheme;
39
	private String hostName;
40
	private int port;
41
	private final String url;
22215 ashik.ali 42
	//private HttpHeaders headers;
21557 ashik.ali 43
	public RestClient(SchemeType scheme, String hostName, int port){
44
		this.scheme = scheme;
45
		this.hostName = hostName;
46
		this.port = port;
47
		this.url = scheme.getValue()==null ? SchemeType.HTTP.toString() : scheme.getValue()  + hostName + ":" + port + "/";
22215 ashik.ali 48
		//this.headers = new HttpHeaders();
21557 ashik.ali 49
		this.httpClient = HttpClients.createDefault();
22215 ashik.ali 50
		//headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
21557 ashik.ali 51
	}
52
	public SchemeType getScheme() {
53
		return scheme;
54
	}
55
	public String getHostName() {
56
		return hostName;
57
	}
58
	public int getPort() {
59
		return port;
60
	}
61
	public String getUrl() {
62
		return url;
63
	}
22215 ashik.ali 64
	public String get(String uri, Map<String, String> params, Map<String, String> headers)
21557 ashik.ali 65
		throws ProfitMandiBusinessException{
66
		UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url + uri);
67
		Set<String> keys = params.keySet();
68
		for(String key : keys){
22339 amit.gupta 69
			builder.queryParam(key, URLEncoder.encode(params.get(key)));
21557 ashik.ali 70
		}
71
		HttpGet request = new HttpGet(builder.build().toUri());
22215 ashik.ali 72
		for(Map.Entry<String, String> entry : headers.entrySet()){
22339 amit.gupta 73
			request.setHeader(entry.getKey(), entry.getValue());
22215 ashik.ali 74
		}
75
		return this.execute(request);
76
	}
22233 amit.gupta 77
 
78
	public String get(String uri, Map<String, String> params)
79
			throws ProfitMandiBusinessException{
80
		UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url + uri);
81
		Set<String> keys = params.keySet();
82
		for(String key : keys){
22339 amit.gupta 83
			builder.queryParam(key, URLEncoder.encode(params.get(key)));
22233 amit.gupta 84
		}
85
		HttpGet request = new HttpGet(builder.build().toUri());
86
		return this.execute(request);
87
	}
22215 ashik.ali 88
 
89
	public String execute(HttpUriRequest request)
90
			throws ProfitMandiBusinessException{
91
		LOGGER.info("Connecting to server at url {}",request.getURI());
21557 ashik.ali 92
		try {
93
			HttpResponse response = httpClient.execute(request);
94
			String responseString = this.toString(response.getEntity().getContent());
22215 ashik.ali 95
			LOGGER.info("Got response from server with responseCode {} and responseBody {}", response.getStatusLine().getStatusCode(), responseString);
21557 ashik.ali 96
			if(response.getStatusLine().getStatusCode() == HttpStatus.OK.value()){
97
				return responseString;
98
			}else{
22215 ashik.ali 99
				throw new ProfitMandiBusinessException("", "", "GE_1005");
21557 ashik.ali 100
			}
101
		} catch (ClientProtocolException e) {
22215 ashik.ali 102
			LOGGER.error("Client Error : ",e);
103
			throw new RuntimeException(ResponseCodeHolder.getMessage("GE_1006"));
21557 ashik.ali 104
		} catch (IOException e) {
22215 ashik.ali 105
			LOGGER.error("IO Error : ", e);
106
			throw new RuntimeException(ResponseCodeHolder.getMessage("GE_1006"));
21557 ashik.ali 107
		}
108
	}
22215 ashik.ali 109
 
110
	public String post(String uri, Map<String, String> params, Map<String, String> headers)
111
			throws ProfitMandiBusinessException{
112
		UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url + uri);
113
		List<NameValuePair> bodyParameters = new ArrayList<NameValuePair>();
114
		for(Map.Entry<String, String> entry : params.entrySet()){
115
			bodyParameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
116
		}
117
 
118
		LOGGER.info("Body Parameters {}", params);
119
		HttpPost request = new HttpPost(builder.build().toUri());
120
		for(Map.Entry<String, String> entry : headers.entrySet()){
121
			request.setHeader(entry.getKey(), entry.getValue());
122
		}
123
 
124
		try{
125
			request.setEntity(new UrlEncodedFormEntity(bodyParameters));
126
		}catch (UnsupportedEncodingException unsupportedEncodingException) {
127
			LOGGER.error("Encoding error : ", unsupportedEncodingException);
128
			throw new RuntimeException(ResponseCodeHolder.getMessage("GE_1006"));
129
		}
130
 
131
 
132
		return this.execute(request);
133
 
134
	}
135
 
21557 ashik.ali 136
	private String toString(InputStream inputStream){
137
		BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
138
		StringBuilder responseString = new StringBuilder();
139
		String line = null;
140
		try {
141
			while((line = reader.readLine()) != null){
142
				responseString.append(line);
143
			}
144
			inputStream.close();
145
		} catch (IOException e) {
146
			throw new RuntimeException();
147
		}
148
		return responseString.toString();
149
	}
150
}