From a7b97a1fa2b9550ecd65619c288a7aa019ff9746 Mon Sep 17 00:00:00 2001 From: Doug Friedman Date: Sun, 27 Mar 2016 12:50:13 -0400 Subject: [PATCH] add support for execute anonymous via tooling api --- simple_salesforce/api.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/simple_salesforce/api.py b/simple_salesforce/api.py index 4abd248d..e9143802 100644 --- a/simple_salesforce/api.py +++ b/simple_salesforce/api.py @@ -140,6 +140,24 @@ def __init__( version=self.sf_version)) self.apex_url = ('https://{instance}/services/apexrest/' .format(instance=self.sf_instance)) + self.tooling_url = ('{base}tooling/').format(base=self.base_url) + + def execanon(self, apex_string): + """Executes a string of Apex code. + """ + url = self.tooling_url + "executeAnonymous/" + params = {'anonymousBody': apex_string} + result = self.request.get(url, headers=self.headers, params=params) + if result.status_code != 200: + raise SalesforceGeneralError(url, + 'executeAnonymous', + result.status_code, + result.content) + json_result = result.json(object_pairs_hook=OrderedDict) + if len(json_result) == 0: + return None + else: + return json_result def describe(self): """Describes all available objects