#About
This is part of my customized .bashrc
that I use daily for help with Salesforce work
#Prerequisites Install the following utilities
- jq - A super handy json parser
- xmllint - An xml linter and parser
- jsforce - A great tool for working with Salesforce on the commandline
- Make sure you install it with
npm -g install jsforce
#Installation
- Copy the contents of
.bashrc_sfdc
to your$HOME
directory - Add the snippet to your
.bashrc
to include it
NOTE: I put this in a separate file so that I can keep it out of source control and keep it on my work machine. There is no technical reason to separate them so you can put it all in one file if desired.
#Configuration
- Update the
export
lines to contain your usernames and passwords - Add new environments by following the pattern of
SFDC_{NAME}_USER
andSFDC_{NAME}_PASS
- Add new jsforce aliases for each environment easier use
#Usage
This method logs in via the Salesforce SOAP endpoint and set the SFDC_SESSIONID
and SFDC_SERVERURL
variables for later use
This method calls APEX REST methods via cURL.
Apex Definition
@RestResource(urlMapping='/myClass/case/*')
global with sharing class REST_MyClass_Case {
@HttpGet
global static Case getCase() {
Case c = null;
String caseNumber = RestContext.request.params.get('caseNumber');
List<Case> cases = [
select Subject
from Case
where CaseNumber = :caseNumber
];
if (cases.size() != 1) {
RestContext.response.statusCode = 404;
RestContext.response.addHeader('Message', 'Unable to find case by number');
} else {
c = cases.get(0);
}
}
}
Get case in production
sfdc_curl "/myClass/case/?caseNumber=012345"
Get case in dev
sfdc_curl "/myClass/case/?caseNumber=012345" dev
##getObject Get case in production
getObject Case 50011000003bJSJAA2
Get case in dev
getObject Case 50011000003bJSJAA2 dev
##getObjectByParent Get comments for case in production
getObjectByParent CaseComment Parent 50011000003bJSJAA2
Get comments for case in dev
getObjectByParent CaseComment Parent 50011000003bJSJAA2 dev