diff --git a/Readme.md b/Readme.md
index 43eb7b3..b621e8d 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,7 +1,72 @@
# Httpex
-Apex library for HTTP callouts.
+Apex library for HTTP callouts.
+## Usage
+You can use it with variety of request methods, authentication types or contexts.
+
+### Request methods
+Library is able to execute GET, POST, PUT, PATCH, DELET, HEAD.
+POST example:
+```
+Object result = new HttpClientAura(
+ new HttpClientProviderAuthProvider('SampleAuthProviderName'))
+ .post('https://foo.com'
+ + '/v1/resource/baz/post'
+ , '{"fizz":"buzz"}');
+```
+
+### Authentication types
+Library supports several authentication schemes - AuthProvider, Named credentials, Cookie based authentication or basic username/password authentication, for example:
+```
+static Object postQuxByParams(String params){
+ return
+ new HttpClientAura(
+ new HttpClientProviderBasic('admin', 'hunter2'))
+ .post('https://foo.com'
+ + '/v2/qux/post',
+ params);
+ }
+```
+
+### Contexts
+
+#### Usage in Lightning server side controllers
+Library provides basic catching of errors and reporting them via AuraHandledException that is readable on client side. Example call:
+```
+@AuraEnabled public static Object getFoo() {
+ return
+ new HttpClientAura(
+ new HttpClientProviderNamedCredentials('SampleNamedCredential'))
+ .get('https://foo.com'
+ + '/v3/resource/foo/get');
+ }
+```
+
+#### Usage elsewhere
+```
+new HttpClient(
+ new HttpClientProviderAuthProvider('SampleAuthProviderName'))
+ .get('https://foo.com'
+ + '/v1/resource/foo/get');
+```
+
+#### Calling internal API's
+```
+final static String endpoint = '/services/data/';
+final static String apiVersion = 'v43.0';
+final static String query = '/tooling/query?q=';
+final static String param = 'SELECT Description, EndpointUrl, FullName, IsActive, ManageableState, NamespacePrefix, ProtocolMismatch, SiteName, Metadata FROM RemoteProxy';
+final static String sobjectApi = '/tooling/sobjects/RemoteProxy/';
+@AuraEnabled public static Object Query(){
+ HttpClientProviderSelf self = new HttpClientProviderSelf();
+ return new HttpClientAura(self)
+ .get(self.getBaseUrl() + endpoint + apiVersion + query + EncodingUtil.urlEncode(param, 'UTF-8'));
+}
+```
+
+See more at https://github.com/metacursion/RemoteSitesService
+
-
\ No newline at end of file
+
diff --git a/src/classes/HttpCalloutException.cls b/src/classes/HttpCalloutException.cls
old mode 100644
new mode 100755
diff --git a/src/classes/HttpCalloutException.cls-meta.xml b/src/classes/HttpCalloutException.cls-meta.xml
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClient.cls b/src/classes/HttpClient.cls
old mode 100644
new mode 100755
index 6d0e38e..473f41f
--- a/src/classes/HttpClient.cls
+++ b/src/classes/HttpClient.cls
@@ -1,40 +1,41 @@
-public with sharing class HttpClient {
-
- public ICredentialsProvider credentials { get; set; }
+public with sharing virtual class HttpClient {
+ final static Integer CALLOUT_TIMEOUT = 20000;
+ public HttpClientProviderInterface credentials { get; set; }
public HttpClient(){}
- public HttpClient(ICredentialsProvider credentials) {
+ public HttpClient(HttpClientProviderInterface credentials) {
this.credentials = credentials;
}
- public HttpResponse get(String endpoint) {
+ public virtual Object get(String endpoint) {
return callout(endpoint, '', 'GET');
}
- public HttpResponse post(String endpoint, String payload) {
+ public virtual Object post(String endpoint, String payload) {
return callout(endpoint, payload, 'POST');
}
- public HttpResponse put(String endpoint, String payload) {
+ public virtual Object put(String endpoint, String payload) {
return callout(endpoint, payload, 'PUT');
}
- public HttpResponse patch(String endpoint, String payload) {
+ public virtual Object patch(String endpoint, String payload) {
return callout(endpoint, payload, 'PATCH');
}
- public HttpResponse del(String endpoint) {
+ public virtual Object del(String endpoint) {
return callout(endpoint, '', 'DELETE');
}
- public HttpResponse head(String endpoint) {
+ public virtual Object head(String endpoint) {
return callout(endpoint, '', 'HEAD');
}
public HttpResponse callout(String endpoint, String payload, String method) {
Http http = new Http();
HttpRequest request = new HttpRequest();
+ request.setTimeout(CALLOUT_TIMEOUT);
request.setEndpoint(endpoint);
request.setMethod(method);
if(new String[]{'POST', 'PATCH', 'PUT'}.contains( method )){
@@ -43,15 +44,18 @@ public with sharing class HttpClient {
}
if(credentials != null) {
- if(credentials instanceof NamedCredentialsProvider) {
+ if(credentials instanceof HttpClientProviderNamedCredentials) {
endpoint = endpoint.startsWith('/') ? endpoint : '/' + endpoint;
request.setEndpoint(credentials.getHeader() + endpoint);
- }
- else {
+ } else if(credentials instanceof HttpClientProviderCookie) {
+ request.setHeader('Cookie', credentials.getHeader());
+ } else if(credentials instanceof HttpClientProviderBearer) {
+ request.setHeader('Authorization', credentials.getHeader());
+ } else {
request.setHeader('Authorization', credentials.getHeader());
}
}
return http.send(request);
}
-}
+}
\ No newline at end of file
diff --git a/src/classes/HttpClient.cls-meta.xml b/src/classes/HttpClient.cls-meta.xml
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClientAura.cls b/src/classes/HttpClientAura.cls
new file mode 100644
index 0000000..f66fef9
--- /dev/null
+++ b/src/classes/HttpClientAura.cls
@@ -0,0 +1,76 @@
+public class HttpClientAura extends HttpClient {
+ public HttpClientAura(HttpClientProviderInterface credentials) {
+ super.credentials = credentials;
+ }
+ public override Object get(String endpoint) {
+ try {
+ return parse((HttpResponse)super.get(endpoint));
+ } catch( Exception e ){
+ AuraHandledException ex = new AuraHandledException( e.getMessage() );
+ ex.setMessage( e.getMessage() );
+ throw ex;
+ }
+ }
+ public override Object post(String endpoint, String payload) {
+ try {
+ return parse((HttpResponse)super.post(endpoint, payload));
+ } catch( Exception e ){
+ AuraHandledException ex = new AuraHandledException( e.getMessage() );
+ ex.setMessage( e.getMessage() );
+ throw ex;
+ }
+ }
+ public override Object put(String endpoint, String payload) {
+ try {
+ return parse((HttpResponse)super.put(endpoint, payload));
+ } catch( Exception e ){
+ AuraHandledException ex = new AuraHandledException( e.getMessage() );
+ ex.setMessage( e.getMessage() );
+ throw ex;
+ }
+ }
+ public override Object patch(String endpoint, String payload) {
+ try {
+ return parse((HttpResponse)super.patch(endpoint, payload));
+ } catch( Exception e ){
+ AuraHandledException ex = new AuraHandledException( e.getMessage() );
+ ex.setMessage( e.getMessage() );
+ throw ex;
+ }
+ }
+ public override Object del(String endpoint) {
+ try {
+ return parse((HttpResponse)super.del(endpoint));
+ } catch( Exception e ){
+ AuraHandledException ex = new AuraHandledException( e.getMessage() );
+ ex.setMessage( e.getMessage() );
+ throw ex;
+ }
+ }
+ public override Object head(String endpoint) {
+ try {
+ return parse((HttpResponse)super.head(endpoint));
+ } catch( Exception e ){
+ AuraHandledException ex = new AuraHandledException( e.getMessage() );
+ ex.setMessage( e.getMessage() );
+ throw ex;
+ }
+ }
+ public Object parse(HttpResponse response){
+ if ( response.getStatusCode() < 300 ) {
+ try {
+ return JSON.deserializeUntyped( response.getBody() );
+ } catch( Exception e ){
+ AuraHandledException ex = new AuraHandledException( e.getMessage() );
+ ex.setMessage( e.getMessage() );
+ throw ex;
+ }
+ } else {
+ System.debug(LoggingLevel.ERROR, response.getBody());
+ String error = response.getStatusCode() + ': ' + response.getStatus();
+ AuraHandledException ex = new AuraHandledException(error);
+ ex.setMessage( error );
+ throw ex;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/classes/BasicProvider.cls-meta.xml b/src/classes/HttpClientAura.cls-meta.xml
similarity index 100%
rename from src/classes/BasicProvider.cls-meta.xml
rename to src/classes/HttpClientAura.cls-meta.xml
diff --git a/src/classes/HttpClientBasicMock.cls b/src/classes/HttpClientBasicMock.cls
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClientBasicMock.cls-meta.xml b/src/classes/HttpClientBasicMock.cls-meta.xml
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClientMock.cls b/src/classes/HttpClientMock.cls
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClientMock.cls-meta.xml b/src/classes/HttpClientMock.cls-meta.xml
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClientNamedCredentialsMock.cls b/src/classes/HttpClientNamedCredentialsMock.cls
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClientNamedCredentialsMock.cls-meta.xml b/src/classes/HttpClientNamedCredentialsMock.cls-meta.xml
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClientOAuthMock.cls b/src/classes/HttpClientOAuthMock.cls
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClientOAuthMock.cls-meta.xml b/src/classes/HttpClientOAuthMock.cls-meta.xml
old mode 100644
new mode 100755
diff --git a/src/classes/HttpClientProviderAuthProvider.cls b/src/classes/HttpClientProviderAuthProvider.cls
new file mode 100644
index 0000000..ad76982
--- /dev/null
+++ b/src/classes/HttpClientProviderAuthProvider.cls
@@ -0,0 +1,27 @@
+public class HttpClientProviderAuthProvider implements HttpClientProviderInterface {
+ private String authProviderId { get; set; }
+ private String authProviderType { get; set; }
+
+ public HttpClientProviderAuthProvider(String authProviderName) {
+ AuthProvider[] providers = [
+ SELECT
+ Id,
+ ProviderType
+ FROM AuthProvider
+ WHERE FriendlyName =: authProviderName];
+ if( providers.isEmpty() ){
+ throw new QueryException('No such Auth Provider '+ authProviderName + ' has been found.');
+ } else {
+ this.authProviderId = providers[0].Id;
+ if(providers[0].ProviderType == 'OpenIdConnect'){
+ this.authProviderType = 'Open Id Connect';
+ } else {
+ this.authProviderType = providers[0].ProviderType;
+ }
+ }
+
+ }
+ public String getHeader() {
+ return 'Bearer ' + Auth.AuthToken.getAccessToken(authProviderId, authProviderType);
+ }
+}
\ No newline at end of file
diff --git a/src/classes/ICredentialsProvider.cls-meta.xml b/src/classes/HttpClientProviderAuthProvider.cls-meta.xml
similarity index 100%
rename from src/classes/ICredentialsProvider.cls-meta.xml
rename to src/classes/HttpClientProviderAuthProvider.cls-meta.xml
diff --git a/src/classes/BasicProvider.cls b/src/classes/HttpClientProviderBasic.cls
old mode 100644
new mode 100755
similarity index 69%
rename from src/classes/BasicProvider.cls
rename to src/classes/HttpClientProviderBasic.cls
index edb0e9b..505910d
--- a/src/classes/BasicProvider.cls
+++ b/src/classes/HttpClientProviderBasic.cls
@@ -1,9 +1,9 @@
-public class BasicProvider implements ICredentialsProvider {
+public class HttpClientProviderBasic implements HttpClientProviderInterface {
private String username { get; set; }
private String password { get; set; }
- public BasicProvider(String username, String password) {
+ public HttpClientProviderBasic(String username, String password) {
this.username = username;
this.password = password;
}
diff --git a/src/classes/NamedCredentialsProvider.cls-meta.xml b/src/classes/HttpClientProviderBasic.cls-meta.xml
old mode 100644
new mode 100755
similarity index 100%
rename from src/classes/NamedCredentialsProvider.cls-meta.xml
rename to src/classes/HttpClientProviderBasic.cls-meta.xml
diff --git a/src/classes/HttpClientProviderBearer.cls b/src/classes/HttpClientProviderBearer.cls
new file mode 100644
index 0000000..b6b2966
--- /dev/null
+++ b/src/classes/HttpClientProviderBearer.cls
@@ -0,0 +1,12 @@
+public class HttpClientProviderBearer implements HttpClientProviderInterface {
+
+ private String token { get; set; }
+
+ public HttpClientProviderBearer(String token) {
+ this.token = token;
+ }
+
+ public String getHeader() {
+ return 'Bearer ' + token;
+ }
+}
\ No newline at end of file
diff --git a/src/classes/OAuthProvider.cls-meta.xml b/src/classes/HttpClientProviderBearer.cls-meta.xml
similarity index 100%
rename from src/classes/OAuthProvider.cls-meta.xml
rename to src/classes/HttpClientProviderBearer.cls-meta.xml
diff --git a/src/classes/HttpClientProviderCookie.cls b/src/classes/HttpClientProviderCookie.cls
new file mode 100644
index 0000000..278f757
--- /dev/null
+++ b/src/classes/HttpClientProviderCookie.cls
@@ -0,0 +1,21 @@
+/**
+ * Created by heyoo on 10/07/18.
+ */
+
+public class HttpClientProviderCookie implements HttpClientProviderInterface {
+
+ private Map cookies { get; set; }
+
+ public HttpClientProviderCookie(Map cookies) {
+ this.cookies = cookies;
+ }
+
+ public String getHeader() {
+ String cookie = '';
+ for(String i: this.cookies.keySet()){
+ cookie += i+':'+cookies.get(i);
+ }
+ return 'Cookie: ' + cookie;
+ }
+
+}
\ No newline at end of file
diff --git a/src/classes/HttpClientProviderCookie.cls-meta.xml b/src/classes/HttpClientProviderCookie.cls-meta.xml
new file mode 100644
index 0000000..800e53c
--- /dev/null
+++ b/src/classes/HttpClientProviderCookie.cls-meta.xml
@@ -0,0 +1,5 @@
+
+
+ 43.0
+ Active
+
diff --git a/src/classes/HttpClientProviderInterface.cls b/src/classes/HttpClientProviderInterface.cls
new file mode 100755
index 0000000..1ae5a7c
--- /dev/null
+++ b/src/classes/HttpClientProviderInterface.cls
@@ -0,0 +1,3 @@
+public interface HttpClientProviderInterface {
+ String getHeader();
+}
\ No newline at end of file
diff --git a/src/classes/HttpClientProviderInterface.cls-meta.xml b/src/classes/HttpClientProviderInterface.cls-meta.xml
new file mode 100755
index 0000000..800e53c
--- /dev/null
+++ b/src/classes/HttpClientProviderInterface.cls-meta.xml
@@ -0,0 +1,5 @@
+
+
+ 43.0
+ Active
+
diff --git a/src/classes/NamedCredentialsProvider.cls b/src/classes/HttpClientProviderNamedCredentials.cls
old mode 100644
new mode 100755
similarity index 54%
rename from src/classes/NamedCredentialsProvider.cls
rename to src/classes/HttpClientProviderNamedCredentials.cls
index 04e9ac6..01b7ff9
--- a/src/classes/NamedCredentialsProvider.cls
+++ b/src/classes/HttpClientProviderNamedCredentials.cls
@@ -1,8 +1,8 @@
-public class NamedCredentialsProvider implements ICredentialsProvider {
+public class HttpClientProviderNamedCredentials implements HttpClientProviderInterface {
private String namedCredentials { get; set; }
- public NamedCredentialsProvider(String namedCredentialsName) {
+ public HttpClientProviderNamedCredentials(String namedCredentialsName) {
this.namedCredentials = namedCredentialsName;
}
diff --git a/src/classes/HttpClientProviderNamedCredentials.cls-meta.xml b/src/classes/HttpClientProviderNamedCredentials.cls-meta.xml
new file mode 100755
index 0000000..800e53c
--- /dev/null
+++ b/src/classes/HttpClientProviderNamedCredentials.cls-meta.xml
@@ -0,0 +1,5 @@
+
+
+ 43.0
+ Active
+
diff --git a/src/classes/OAuthProvider.cls b/src/classes/HttpClientProviderOAuth.cls
old mode 100644
new mode 100755
similarity index 88%
rename from src/classes/OAuthProvider.cls
rename to src/classes/HttpClientProviderOAuth.cls
index 6cdccfd..704bf2b
--- a/src/classes/OAuthProvider.cls
+++ b/src/classes/HttpClientProviderOAuth.cls
@@ -1,10 +1,10 @@
-public class OAuthProvider implements ICredentialsProvider {
+public class HttpClientProviderOAuth implements HttpClientProviderInterface {
public String accessToken { get; set; }
public String authenticationUrl { get; set; }
private Map authParameters { get; set; }
- public OAuthProvider(String authenticationUrl, Map authParameters) {
+ public HttpClientProviderOAuth(String authenticationUrl, Map authParameters) {
this.authenticationUrl = authenticationUrl;
this.authParameters = authParameters;
}
diff --git a/src/classes/HttpClientProviderOAuth.cls-meta.xml b/src/classes/HttpClientProviderOAuth.cls-meta.xml
new file mode 100755
index 0000000..800e53c
--- /dev/null
+++ b/src/classes/HttpClientProviderOAuth.cls-meta.xml
@@ -0,0 +1,5 @@
+
+
+ 43.0
+ Active
+
diff --git a/src/classes/HttpClientProviderSelf.cls b/src/classes/HttpClientProviderSelf.cls
new file mode 100644
index 0000000..9cb89fd
--- /dev/null
+++ b/src/classes/HttpClientProviderSelf.cls
@@ -0,0 +1,15 @@
+public class HttpClientProviderSelf implements HttpClientProviderInterface {
+ static String[] ref { get; set; }
+ public String getHeader() {
+ return 'Bearer ' + ref[0];
+ }
+ public String getBaseUrl() {
+ ref = Page.HttpClientProviderSelf.getContent().toString().split(';');
+ return ref[1];
+ }
+ public String salesforceBaseUrl {
+ get {
+ return System.Url.getSalesforceBaseUrl().toExternalForm();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/classes/HttpClientProviderSelf.cls-meta.xml b/src/classes/HttpClientProviderSelf.cls-meta.xml
new file mode 100644
index 0000000..800e53c
--- /dev/null
+++ b/src/classes/HttpClientProviderSelf.cls-meta.xml
@@ -0,0 +1,5 @@
+
+
+ 43.0
+ Active
+
diff --git a/src/classes/HttpClientTests.cls b/src/classes/HttpClientTests.cls
old mode 100644
new mode 100755
index a276ceb..0710744
--- a/src/classes/HttpClientTests.cls
+++ b/src/classes/HttpClientTests.cls
@@ -22,7 +22,7 @@ public class HttpClientTests {
HttpClient client = new HttpClient();
// Act
- HttpResponse res = client.post(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.post(ENDPOINT, PAYLOAD_REQUEST);
// Assert
System.assertEquals(null, client.credentials);
@@ -35,13 +35,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientBasicMock('POST'));
- HttpClient client = new HttpClient(new BasicProvider(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
+ HttpClient client = new HttpClient(new HttpClientProviderBasic(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
// Act
- HttpResponse res = client.post(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.post(ENDPOINT, PAYLOAD_REQUEST);
// Assert
- System.assert(client.credentials instanceof BasicProvider);
+ System.assert(client.credentials instanceof HttpClientProviderBasic);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -52,16 +52,16 @@ public class HttpClientTests {
Test.setMock(HttpCalloutMock.class, new HttpClientOAuthMock('POST'));
HttpClient client = new HttpClient(
- new OAuthProvider(AUTH_OAUTH_ENDPOINT, new Map{
+ new HttpClientProviderOAuth(AUTH_OAUTH_ENDPOINT, new Map{
'clientId' => 'clientId_value',
'clientSecret' => 'clientSecret_value'
}));
// Act
- HttpResponse res = client.post(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res =(HttpResponse) client.post(ENDPOINT, PAYLOAD_REQUEST);
// Assert
- System.assert(client.credentials instanceof OAuthProvider);
+ System.assert(client.credentials instanceof HttpClientProviderOAuth);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
System.assertEquals(2, Limits.getCallouts());
@@ -72,13 +72,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientNamedCredentialsMock('POST'));
- HttpClient client = new HttpClient(new NamedCredentialsProvider(AUTH_NAMEDCREDENTIALS_NAME));
+ HttpClient client = new HttpClient(new HttpClientProviderNamedCredentials(AUTH_NAMEDCREDENTIALS_NAME));
// Act
- HttpResponse res = client.post(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.post(ENDPOINT, PAYLOAD_REQUEST);
// Assert
- System.assert(client.credentials instanceof NamedCredentialsProvider);
+ System.assert(client.credentials instanceof HttpClientProviderNamedCredentials);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -90,7 +90,7 @@ public class HttpClientTests {
HttpClient client = new HttpClient();
// Act
- HttpResponse res = client.put(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.put(ENDPOINT, PAYLOAD_REQUEST);
// Assert
System.assertEquals(null, client.credentials);
@@ -103,13 +103,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientBasicMock('PUT'));
- HttpClient client = new HttpClient(new BasicProvider(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
+ HttpClient client = new HttpClient(new HttpClientProviderBasic(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
// Act
- HttpResponse res = client.put(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.put(ENDPOINT, PAYLOAD_REQUEST);
// Assert
- System.assert(client.credentials instanceof BasicProvider);
+ System.assert(client.credentials instanceof HttpClientProviderBasic);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -120,16 +120,16 @@ public class HttpClientTests {
Test.setMock(HttpCalloutMock.class, new HttpClientOAuthMock('PUT'));
HttpClient client = new HttpClient(
- new OAuthProvider(AUTH_OAUTH_ENDPOINT, new Map{
+ new HttpClientProviderOAuth(AUTH_OAUTH_ENDPOINT, new Map{
'clientId' => 'clientId_value',
'clientSecret' => 'clientSecret_value'
}));
// Act
- HttpResponse res = client.put(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.put(ENDPOINT, PAYLOAD_REQUEST);
// Assert
- System.assert(client.credentials instanceof OAuthProvider);
+ System.assert(client.credentials instanceof HttpClientProviderOAuth);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
System.assertEquals(2, Limits.getCallouts());
@@ -140,13 +140,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientNamedCredentialsMock('PUT'));
- HttpClient client = new HttpClient(new NamedCredentialsProvider(AUTH_NAMEDCREDENTIALS_NAME));
+ HttpClient client = new HttpClient(new HttpClientProviderNamedCredentials(AUTH_NAMEDCREDENTIALS_NAME));
// Act
- HttpResponse res = client.put(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.put(ENDPOINT, PAYLOAD_REQUEST);
// Assert
- System.assert(client.credentials instanceof NamedCredentialsProvider);
+ System.assert(client.credentials instanceof HttpClientProviderNamedCredentials);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -158,7 +158,7 @@ public class HttpClientTests {
HttpClient client = new HttpClient();
// Act
- HttpResponse res = client.patch(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res =(HttpResponse) client.patch(ENDPOINT, PAYLOAD_REQUEST);
// Assert
System.assertEquals(null, client.credentials);
@@ -171,13 +171,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientBasicMock('PATCH'));
- HttpClient client = new HttpClient(new BasicProvider(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
+ HttpClient client = new HttpClient(new HttpClientProviderBasic(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
// Act
- HttpResponse res = client.patch(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.patch(ENDPOINT, PAYLOAD_REQUEST);
// Assert
- System.assert(client.credentials instanceof BasicProvider);
+ System.assert(client.credentials instanceof HttpClientProviderBasic);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -188,16 +188,16 @@ public class HttpClientTests {
Test.setMock(HttpCalloutMock.class, new HttpClientOAuthMock('PATCH'));
HttpClient client = new HttpClient(
- new OAuthProvider(AUTH_OAUTH_ENDPOINT, new Map{
+ new HttpClientProviderOAuth(AUTH_OAUTH_ENDPOINT, new Map{
'clientId' => 'clientId_value',
'clientSecret' => 'clientSecret_value'
}));
// Act
- HttpResponse res = client.patch(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.patch(ENDPOINT, PAYLOAD_REQUEST);
// Assert
- System.assert(client.credentials instanceof OAuthProvider);
+ System.assert(client.credentials instanceof HttpClientProviderOAuth);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
System.assertEquals(2, Limits.getCallouts());
@@ -208,13 +208,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientNamedCredentialsMock('PATCH'));
- HttpClient client = new HttpClient(new NamedCredentialsProvider(AUTH_NAMEDCREDENTIALS_NAME));
+ HttpClient client = new HttpClient(new HttpClientProviderNamedCredentials(AUTH_NAMEDCREDENTIALS_NAME));
// Act
- HttpResponse res = client.patch(ENDPOINT, PAYLOAD_REQUEST);
+ HttpResponse res = (HttpResponse) client.patch(ENDPOINT, PAYLOAD_REQUEST);
// Assert
- System.assert(client.credentials instanceof NamedCredentialsProvider);
+ System.assert(client.credentials instanceof HttpClientProviderNamedCredentials);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -226,7 +226,7 @@ public class HttpClientTests {
HttpClient client = new HttpClient();
// Act
- HttpResponse res = client.get(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.get(ENDPOINT);
// Assert
System.assertEquals(null, client.credentials);
@@ -239,13 +239,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientBasicMock('GET'));
- HttpClient client = new HttpClient(new BasicProvider(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
+ HttpClient client = new HttpClient(new HttpClientProviderBasic(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
// Act
- HttpResponse res = client.get(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.get(ENDPOINT);
// Assert
- System.assert(client.credentials instanceof BasicProvider);
+ System.assert(client.credentials instanceof HttpClientProviderBasic);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -256,16 +256,16 @@ public class HttpClientTests {
Test.setMock(HttpCalloutMock.class, new HttpClientOAuthMock('GET'));
HttpClient client = new HttpClient(
- new OAuthProvider(AUTH_OAUTH_ENDPOINT, new Map{
+ new HttpClientProviderOAuth(AUTH_OAUTH_ENDPOINT, new Map{
'clientId' => 'clientId_value',
'clientSecret' => 'clientSecret_value'
}));
// Act
- HttpResponse res = client.get(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.get(ENDPOINT);
// Assert
- System.assert(client.credentials instanceof OAuthProvider);
+ System.assert(client.credentials instanceof HttpClientProviderOAuth);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
System.assertEquals(2, Limits.getCallouts());
@@ -276,13 +276,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientNamedCredentialsMock('GET'));
- HttpClient client = new HttpClient(new NamedCredentialsProvider(AUTH_NAMEDCREDENTIALS_NAME));
+ HttpClient client = new HttpClient(new HttpClientProviderNamedCredentials(AUTH_NAMEDCREDENTIALS_NAME));
// Act
- HttpResponse res = client.get(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.get(ENDPOINT);
// Assert
- System.assert(client.credentials instanceof NamedCredentialsProvider);
+ System.assert(client.credentials instanceof HttpClientProviderNamedCredentials);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -294,7 +294,7 @@ public class HttpClientTests {
HttpClient client = new HttpClient();
// Act
- HttpResponse res = client.del(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.del(ENDPOINT);
// Assert
System.assertEquals(null, client.credentials);
@@ -307,13 +307,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientBasicMock('DELETE'));
- HttpClient client = new HttpClient(new BasicProvider(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
+ HttpClient client = new HttpClient(new HttpClientProviderBasic(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
// Act
- HttpResponse res = client.del(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.del(ENDPOINT);
// Assert
- System.assert(client.credentials instanceof BasicProvider);
+ System.assert(client.credentials instanceof HttpClientProviderBasic);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -324,16 +324,16 @@ public class HttpClientTests {
Test.setMock(HttpCalloutMock.class, new HttpClientOAuthMock('DELETE'));
HttpClient client = new HttpClient(
- new OAuthProvider(AUTH_OAUTH_ENDPOINT, new Map{
+ new HttpClientProviderOAuth(AUTH_OAUTH_ENDPOINT, new Map{
'clientId' => 'clientId_value',
'clientSecret' => 'clientSecret_value'
}));
// Act
- HttpResponse res = client.del(ENDPOINT);
+ HttpResponse res =(HttpResponse) client.del(ENDPOINT);
// Assert
- System.assert(client.credentials instanceof OAuthProvider);
+ System.assert(client.credentials instanceof HttpClientProviderOAuth);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
System.assertEquals(2, Limits.getCallouts());
@@ -344,13 +344,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientNamedCredentialsMock('DELETE'));
- HttpClient client = new HttpClient(new NamedCredentialsProvider(AUTH_NAMEDCREDENTIALS_NAME));
+ HttpClient client = new HttpClient(new HttpClientProviderNamedCredentials(AUTH_NAMEDCREDENTIALS_NAME));
// Act
- HttpResponse res = client.del(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.del(ENDPOINT);
// Assert
- System.assert(client.credentials instanceof NamedCredentialsProvider);
+ System.assert(client.credentials instanceof HttpClientProviderNamedCredentials);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -362,7 +362,7 @@ public class HttpClientTests {
HttpClient client = new HttpClient();
// Act
- HttpResponse res = client.head(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.head(ENDPOINT);
// Assert
System.assertEquals(null, client.credentials);
@@ -375,13 +375,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientBasicMock('HEAD'));
- HttpClient client = new HttpClient(new BasicProvider(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
+ HttpClient client = new HttpClient(new HttpClientProviderBasic(AUTH_BASIC_USERNAME, AUTH_BASIC_PASSWORD));
// Act
- HttpResponse res = client.head(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.head(ENDPOINT);
// Assert
- System.assert(client.credentials instanceof BasicProvider);
+ System.assert(client.credentials instanceof HttpClientProviderBasic);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
@@ -392,16 +392,16 @@ public class HttpClientTests {
Test.setMock(HttpCalloutMock.class, new HttpClientOAuthMock('HEAD'));
HttpClient client = new HttpClient(
- new OAuthProvider(AUTH_OAUTH_ENDPOINT, new Map{
+ new HttpClientProviderOAuth(AUTH_OAUTH_ENDPOINT, new Map{
'clientId' => 'clientId_value',
'clientSecret' => 'clientSecret_value'
}));
// Act
- HttpResponse res = client.head(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.head(ENDPOINT);
// Assert
- System.assert(client.credentials instanceof OAuthProvider);
+ System.assert(client.credentials instanceof HttpClientProviderOAuth);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
System.assertEquals(2, Limits.getCallouts());
@@ -412,13 +412,13 @@ public class HttpClientTests {
// Arange
Test.setMock(HttpCalloutMock.class, new HttpClientNamedCredentialsMock('HEAD'));
- HttpClient client = new HttpClient(new NamedCredentialsProvider(AUTH_NAMEDCREDENTIALS_NAME));
+ HttpClient client = new HttpClient(new HttpClientProviderNamedCredentials(AUTH_NAMEDCREDENTIALS_NAME));
// Act
- HttpResponse res = client.head(ENDPOINT);
+ HttpResponse res = (HttpResponse) client.head(ENDPOINT);
// Assert
- System.assert(client.credentials instanceof NamedCredentialsProvider);
+ System.assert(client.credentials instanceof HttpClientProviderNamedCredentials);
System.assertEquals(PAYLOAD_RESPONSE, res.getBody());
System.assertEquals(200, res.getStatusCode());
}
diff --git a/src/classes/HttpClientTests.cls-meta.xml b/src/classes/HttpClientTests.cls-meta.xml
old mode 100644
new mode 100755
diff --git a/src/classes/ICredentialsProvider.cls b/src/classes/ICredentialsProvider.cls
deleted file mode 100644
index f31c64d..0000000
--- a/src/classes/ICredentialsProvider.cls
+++ /dev/null
@@ -1,3 +0,0 @@
-public interface ICredentialsProvider {
- String getHeader();
-}
\ No newline at end of file
diff --git a/src/package.xml b/src/package.xml
index d184d1e..528612c 100644
--- a/src/package.xml
+++ b/src/package.xml
@@ -1,17 +1,22 @@
- HttpClient
HttpCalloutException
- ICredentialsProvider
- BasicProvider
- OAuthProvider
- NamedCredentialsProvider
- HttpClientTests
- HttpClientMock
- HttpClientOAuthMock
+ HttpClient
+ HttpClientAura
HttpClientBasicMock
+ HttpClientMock
+ NamedCredentialsProvider
HttpClientNamedCredentialsMock
+ HttpClientOAuthMock
+ HttpClientProviderAuthProvider
+ HttpClientProviderBasic
+ HttpClientProviderBearer
+ HttpClientProviderCookie
+ HttpClientProviderInterface
+ HttpClientProviderNamedCredentials
+ HttpClientProviderOAuth
+ HttpClientTests
ApexClass
43.0
diff --git a/src/pages/HttpClientProviderSelf.page b/src/pages/HttpClientProviderSelf.page
new file mode 100644
index 0000000..ed6e398
--- /dev/null
+++ b/src/pages/HttpClientProviderSelf.page
@@ -0,0 +1,3 @@
+
+ {!$Api.Session_ID + ';' + salesforceBaseUrl}
+
\ No newline at end of file
diff --git a/src/pages/HttpClientProviderSelf.page-meta.xml b/src/pages/HttpClientProviderSelf.page-meta.xml
new file mode 100644
index 0000000..4c4c0cf
--- /dev/null
+++ b/src/pages/HttpClientProviderSelf.page-meta.xml
@@ -0,0 +1,5 @@
+
+
+ 43.0
+
+