YourHttpService

YourHttpService is an example of common HTTP utilities that might be required while building a partner package. All user gateway API classes will be different based on your needs. However, we've provided a template that you can use to help create your own.
Available in: All Salesforce Billing Editions

1public with sharing class YourHttpService {
2    // ============================================================================
3    // CONSTANT 
4    // ============================================================================
5    
6    // ============================================================================
7    // STATIC VARIABLES
8    // ============================================================================
9    
10    private static YourHttpService httpServiceInstance;
11    
12    // ============================================================================
13    // VARIABLES
14    // ============================================================================
15    
16    private HttpResponse httpResponse;
17    private Map<String,String> mapOfHeaderParameter = new Map<String,String>();
18    private enum Method {GET, POST}
19
20    /**
21    * @name getInstance
22    * @description get an Instance of Service class
23    * @params NA
24    * @return Http Service Class Instance
25    * @remark 
26    * @change
27    */ 
28    public static YourHttpService getInstance() 
29    {
30        if (NULL == httpServiceInstance) 
31        {
32            httpServiceInstance =  new YourHttpService();  
33        }
34        return httpServiceInstance;
35    }
36    
37    /**
38    * @name get
39    * @description Get Method to get a HTTP request
40    * @param endPoint
41    * @return 
42    * @remark 
43    * @change
44    */    
45    public void get(String endPoint) 
46    {
47        send(newRequest(Method.GET, endPoint));
48    }
49    
50    /**
51    * @name post
52    * @description Post Method to Post a HTTP request
53    * @param endPoint and requestBody
54    * @return 
55    * @exception
56    * @remark 
57    * @change
58    */ 
59    public void post(String endPoint, String requestBody)
60    {
61        send(newRequest(Method.POST, endPoint, requestBody));
62    }
63    
64    /**
65    * @name addHeader
66    * @description addHeader Methods to add all the defualt Header's required fo rthe request
67    * @param name and value
68    * @return 
69    * @exception
70    * @remark 
71    * @change
72    */
73    public void addHeader(String name, String value)
74    {
75        mapOfHeaderParameter.put(name, value);
76    }
77    
78    /**
79    * @name setHeader
80    * @description setHeader Methods to set setHeader for the request
81    * @param request
82    * @return 
83    */
84    private void setHeader(HttpRequest request) 
85    {
86        for(String headerValue : mapOfHeaderParameter.keySet())
87        {
88            request.setHeader(headerValue, mapOfHeaderParameter.get(headerValue));
89        }
90    }
91    
92    /**
93    * @name setAuthorizationHeader
94    * @description setAuthorizationHeader Methods to set Authorization Header for the request
95    * @param userName and password
96    * @return 
97    */
98    public void setAuthorizationHeader(String userName,String password) 
99    {
100        if(String.isNotBlank(userName) && String.isNotBlank(password))
101        {
102            Blob headerValue = blob.valueOf(userName + ':' + password);
103            String authorizationHeader = 'Basic ' + EncodingUtil.base64Encode(headerValue);
104            addHeader('Authorization', authorizationHeader);
105        }
106    }
107    
108    /**
109    * @name setTokenisationHeader
110    * @description setTokenisationHeader Methods to set Tokenisation Header for the request
111    * @param userName and password
112    * @return 
113    */
114    public void setTokenisationHeader(String userName,String password) 
115    {
116        if(String.isNotBlank(userName) && String.isNotBlank(password))
117        {
118            Blob headerValue = blob.valueOf(userName + ':' + password);
119            String tokenisationHeader = 'Basic ' + EncodingUtil.base64Encode(headerValue);
120            addHeader('Tokenisation', tokenisationHeader);
121        }
122    }
123    
124    /**
125    * @name newRequest
126    * @description newRequest Methods to make a new request
127    * @param method and endPoint
128    * @return newRequest
129    * @exception
130    */
131    private HttpRequest newRequest(Method method, String endPoint)
132    {
133        return newRequest(method, endPoint, NULL);
134    }
135    
136    /**
137    * @name newRequest
138    * @description newRequest Methods to make a new request
139    * @param method, endPoint and requestBody
140    * @return request
141    * @exception
142    */
143    private HttpRequest newRequest(Method method, String endPoint, String requestBody) 
144    {
145        HttpRequest request = new HttpRequest();
146        request.setMethod(Method.name());
147        setHeader(request);
148        request.setEndpoint(endPoint);
149        if (String.isNotBlank(requestBody)) 
150        {
151            request.setBody(requestBody);
152        }   
153        request.setTimeout(120000);
154        return request;
155    }
156    
157    /**
158    * @name send
159    * @description send Methods to send a request
160    * @param request
161    * @return 
162    * @exception Throws Exception
163    */
164    private void send(HttpRequest request) 
165    {
166        try 
167        {
168            httpResponse = new Http().send(request);
169        }
170        catch(Exception e) 
171        {
172          throw e;    
173        }
174    }
175    
176    /**
177    * @name getResponse
178    * @description getResponse Method to get the Response
179    * @param NA
180    * @return httpResponse
181    * @exception
182    */
183    public HttpResponse getResponse()
184    {
185        return httpResponse;
186    }
187    
188    /**
189    * @name getResponseToString
190    * @description getResponse Method to get the Response
191    * @param NA
192    * @return getResponse
193    * @exception
194    */
195    public String getResponseToString()
196    {
197        return getResponse().toString();
198    }
199    
200}