Salesforce.com interface to directly access Salesforce.com

Dependencies:   HTTPClient-SSL MbedJSONValue

Dependents:   df-2014-salesforce-hrm-k64f

Fork of SalesforceInterface by Doug Anson

Revision:
8:47db53cd5884
Parent:
7:97ea5ef906f7
Child:
9:a254fcd904be
--- a/SalesforceInterface.h	Sun Sep 21 07:08:51 2014 +0000
+++ b/SalesforceInterface.h	Mon Sep 22 04:28:02 2014 +0000
@@ -30,14 +30,25 @@
  
  // verbose debugging
  #if ENABLE_DEBUG_LOGGING
-    #define DEBUG(...) { this->logger()->logConsole(__VA_ARGS__); }
+    #define DEBUG(...)                  { this->logger()->logConsole(__VA_ARGS__); }
  #else
     #define DEBUG(...)
  #endif 
  
  // convenience macros
- #define  RESET_BUFFER(x)       memset(x,0,MAX_BUFFER_LENGTH+1)
- #define  ALLOC_BUFFER(x)       char x[MAX_BUFFER_LENGTH+1];RESET_BUFFER(x)
+ #define  DEFINE_BUFFER(x)              char x[MAX_BUFFER_LENGTH+1]
+ #define  RESET_BUFFER(x)               memset(x,0,MAX_BUFFER_LENGTH+1)
+ #define  ALLOC_BUFFER(x)               DEFINE_BUFFER(x);RESET_BUFFER(x)
+ 
+ #define  DEFINE_SML_BUFFER(x)          char x[MAX_SMALL_BUFFER_LENGTH+1]
+ #define  RESET_SML_BUFFER(x)           memset(x,0,MAX_SMALL_BUFFER_LENGTH+1)
+ #define  ALLOC_SML_BUFFER(x)           DEFINE_SML_BUFFER(x);RESET_SML_BUFFER(x)
+ 
+ // Default salesforce API version (must be in XX.Y format and must be a string)
+ #define SALESFORCE_API_VERSION_LENGTH  10
+ #ifndef SALESFORCE_API_VERSION
+    #define SALESFORCE_API_VERSION      "28.0"
+ #endif
  
  // HTTP Verbs
  typedef enum {
@@ -81,6 +92,8 @@
         HTTPResult       m_http_status;
         int              m_http_response_code;
         char             m_http_redirection_url[MAX_BUFFER_LENGTH+1];
+        char             m_salesforce_id[MAX_BUFFER_LENGTH+1];
+        char             m_salesforce_api[SALESFORCE_API_VERSION_LENGTH];
         
     public:
         // construction/destruction
@@ -91,19 +104,28 @@
         void setCredentials(char *username,char *password,char *client_id,char *client_secret);
         
         // get our ID structure from Salesforce
-        char *getSalesforceID(char *output_buffer,int output_buffer_length);
-                        
-        // invoke REST calls into Salesforce.com
-        char *invoke(const char *url,char *output_buffer,int output_buffer_len);                                                                               // defaults to GET
-        char *invoke(const char *url,const char *input_data,const int input_data_len,char *output_buffer,int output_buffer_len);                                           // defaults to POST with JSON input data type                                                                              // defaults to GET
-        char *invoke(const char *url,const InputDataTypes input_type,const char *input_data,const int input_data_len,char *output_buffer,int output_buffer_len);                  // defaults to POST with variable input data type
+        char *getSalesforceID();
+        bool haveSalesforceID();
+        
+        // set/get our salesforce API version
+        void setSalesforceAPIVersion(int version);
+        void setSalesforceAPIVersion(char *version);
+        char *getSalesforceAPIVersion();
+        
+        // QUERY: into Salesforce.com
+        char *query(char *query_str,char *output_buffer,int output_buffer_length);
+                     
+        // raw invocation of REST calls into Salesforce.com
+        char *invoke(const char *url,char *output_buffer,int output_buffer_len);                                                                                                        // defaults to GET
+        char *invoke(const char *url,const char *input_data,const int input_data_len,char *output_buffer,int output_buffer_len);                                                        // defaults to POST with JSON input data type                                                                              // defaults to GET
+        char *invoke(const char *url,const InputDataTypes input_type,const char *input_data,const int input_data_len,char *output_buffer,int output_buffer_len);                        // defaults to POST with variable input data type
         char *invoke(const char *url,const InputDataTypes input_type,const char *input_data,const int input_data_len,char *output_buffer,int output_buffer_len,const HttpVerb verb);    // full fidelity method
-        
-    private:
+ 
+ private:       
         // get our OAUTH Token
         void checkAndGetOauthToken();
         char *getOauthToken(char *output_buffer,int output_buffer_length);
-        
+     
         // convenience accessors
         ErrorHandler *logger();
         HTTPClient *http();
@@ -116,6 +138,15 @@
         void resetOauthToken();
         void fillOauthToken(char *token);
         bool validOauthToken();
+        
+        // get the specified URL from our Salesforce ID
+        char *getSalesforceURL(char *key,char *url_buffer,int url_buffer_length);
+        
+        // simple char array replacement (modifies input string!)
+        void replace(char *str,char orig_char,char new_char);
+        
+        // needed to replace substrings within std::string
+        void replace(string& line, string& oldString, string& newString);
  };
  
  #endif // _SALESFORCE_INTERFACE_H_
\ No newline at end of file