Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SalesforceCaseGenerator by
Revision 13:1e06a3a4740d, committed 2014-09-26
- Comitter:
- ansond
- Date:
- Fri Sep 26 04:34:41 2014 +0000
- Parent:
- 12:8603f9ff1336
- Child:
- 14:f9847b7d314a
- Commit message:
- revamped to use new salesforce interface
Changed in this revision
--- a/MbedJSONValue.lib Wed Sep 24 18:52:45 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/users/ansond/code/MbedJSONValue/#02d251fdacfd
--- a/SalesForceCaseGenerator.cpp Wed Sep 24 18:52:45 2014 +0000
+++ b/SalesForceCaseGenerator.cpp Fri Sep 26 04:34:41 2014 +0000
@@ -1,5 +1,7 @@
/* Copyright C2014 ARM, MIT License
*
+ * Author: Doug Anson (doug.anson@arm.com)
+ *
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files the "Software", to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, publish, distribute,
@@ -16,32 +18,31 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
- #include "Definitions.h"
#include "SalesForceCaseGenerator.h"
- #include "MbedJSONValue.h"
+
+ // Logging
+ #define LOG(...) { if (this->logger() != NULL) { this->logger()->log(__VA_ARGS__); } }
+ #define LOG_CONSOLE(...) { if (this->logger() != NULL) { this->logger()->logConsole(__VA_ARGS__); } }
// constructor
- SalesForceCaseGenerator::SalesForceCaseGenerator(ErrorHandler *logger,void *transport) {
- this->m_logger = logger;
- this->m_http = (HTTPClient *)transport;
+ SalesForceCaseGenerator::SalesForceCaseGenerator(HTTPClient *http,Logger *logger) : SalesforceInterface(http,logger) {
}
// destructor
SalesForceCaseGenerator::~SalesForceCaseGenerator() {
}
- // create a case through APEX
- bool SalesForceCaseGenerator::createCase(char *subject,char *description,char *condition,int temperature,char *latitude,char *longitude) {
+ // Create an anonymous Case instance
+ bool SalesForceCaseGenerator::createAnonymousCase(char *subject,char *description,char *condition,int temperature,char *latitude,char *longitude) {
bool success = false;
// data buffer and result buffer
- char result[MAX_BUFFER_LENGTH+1];
- memset(result,0,MAX_BUFFER_LENGTH+1);
+ ALLOC_BUFFER(result);
- // set addl header information
+ // set addl header information needed for annonymous acceptance (only)
char headers[] = "User-Agent: curl/7.33.0\nAccept: */*\n" ;
- // build the new Salesforce.com report
+ // build the new case to issue to Salesforce.com
MbedJSONValue report;
report["subject"] = subject;
report["description"] = description;
@@ -51,48 +52,36 @@
report["longitude"] = longitude;
// covert to the HTTP data types
- char data[MAX_BUFFER_LENGTH+1];
- memset(data,0,MAX_BUFFER_LENGTH+1);
+ ALLOC_BUFFER(data);
strcpy(data,report.serialize().c_str());
- this->m_logger->log("Case JSON: %s",data);
+ LOG_CONSOLE("Case JSON: %s",data);
+
+ // prepare the result buffer
HTTPJson new_case(data,strlen(data)+1);
HTTPText http_result(result,MAX_BUFFER_LENGTH);
+
+ // set headers
+ this->http()->setHeader(headers) ;
+
+ // for anonymous case generation, we simply use the raw HTTP interface and POST...
+ LOG_CONSOLE("Posting Case...");
+ HTTPResult ret = this->http()->post(DF_CASE_GEN_URL,new_case,&http_result,7500);
+ if (ret == HTTP_OK) {
+ LOG_CONSOLE("Parsing Reply...");
- this->m_http->setHeader(headers) ;
- this->m_http->setSSLversion(1) ; /* TLSv1.0 */
-
- // POST the case and check the response
- this->m_logger->log("Posting new Case...");
- this->m_logger->blinkTransportTxLED();
- int ret = this->m_http->post(DF_CASE_GEN_URL,new_case,&http_result,7500);
- if (!ret) {
- this->m_logger->log("Parsing Reply...");
+ // we are looking for { "status": "ok" }...
success = this->contains(result,"status","ok");
- this->m_logger->blinkTransportRxLED();
- if (success)
- this->m_logger->log("Case generation SUCCESS");
- else
- this->m_logger->log("Case generation FAILED: %s",result);
+ if (success) {
+ LOG_CONSOLE("Case post: SUCCESS");
+ }
+ else {
+ LOG_CONSOLE("Case post: FAILED: status: %d http status: %d error: %s",ret,this->http()->getHTTPResponseCode(),result);
+ }
}
else {
- this->m_logger->log("Failed to post case (%d) (%s)",ret,result);
+ LOG_CONSOLE("Case post: FAILED: status: %d http status: %d error: %s",ret,this->http()->getHTTPResponseCode(),result);
}
// return our status
return success;
- }
-
- // look for a specific key value pair in a json message
- bool SalesForceCaseGenerator::contains(char *json,char *key,char *value) {
- bool has_it = false;
-
- if (json != NULL && key != NULL && value != NULL) {
- // parse the json and look for a specific <key,value> pair...
- MbedJSONValue parsed;
- parse(parsed,json);
- char *answer = (char *)parsed[key].get<std::string>().c_str();
- if (strcmp(answer,value) == 0) has_it = true;
- }
-
- return has_it;
}
\ No newline at end of file
--- a/SalesForceCaseGenerator.h Wed Sep 24 18:52:45 2014 +0000
+++ b/SalesForceCaseGenerator.h Fri Sep 26 04:34:41 2014 +0000
@@ -1,5 +1,7 @@
/* Copyright C2014 ARM, MIT License
*
+ * Author: Doug Anson (doug.anson@arm.com)
+ *
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files the "Software", to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, publish, distribute,
@@ -19,25 +21,15 @@
#ifndef _SALESFORCE_CASE_GENERATOR_H_
#define _SALESFORCE_CASE_GENERATOR_H_
- #include "HTTPClient.h"
- #include "ErrorHandler.h"
+ #include "SalesforceInterface.h"
- class SalesForceCaseGenerator {
- private:
- HTTPClient *m_http;
- ErrorHandler *m_logger;
-
+ class SalesForceCaseGenerator : public SalesforceInterface {
public:
- SalesForceCaseGenerator(ErrorHandler *logger,void *transport);
+ SalesForceCaseGenerator(HTTPClient *http,Logger *logger);
virtual ~SalesForceCaseGenerator();
- // create a case (via APEX)
- bool createCase(char *subject, char *description, char *condition, int temperature, char *latitude, char *longitude);
-
- protected:
-
- private:
- bool contains(char *json,char *key,char *value);
+ // Create an anonymous Case instance
+ bool createAnonymousCase(char *subject, char *description, char *condition, int temperature, char *latitude, char *longitude);
};
#endif // _SALESFORCE_CASE_GENERATOR_H_
\ No newline at end of file
