- Notifications
You must be signed in to change notification settings - Fork 34
Open
Description
We are interested in using this library but all API calls swallow and hide Exceptions which prevents us from knowing what error occurred.
Example: https://github.com/SiftScience/sift-php/blob/master/lib/SiftClient.php#L105-L114:
public function track($event, $properties, $opts = array()) { // ... try { $request = new SiftRequest( $path, SiftRequest::POST, $opts['timeout'], $opts['version'], array( 'body' => $properties, 'params' => $params )); return $request->send(); } catch (Exception $e) { return null; } }In other words, can the try/catch within each API method be removed? Example:
public function track($event, $properties, $opts = array()) { $this->mergeArguments($opts, array( 'return_score' => false, 'return_action' => false, 'return_workflow_status' => false, 'abuse_types' => array(), 'path' => NULL, 'timeout' => $this->timeout, 'version' => $this->version )); $this->validateArgument($event, 'event', 'string'); $this->validateArgument($properties, 'properties', 'array'); $path = $opts['path']; if (!$path) { $path = self::restApiUrl($opts['version']); } $properties['$api_key'] = $this->api_key; $properties['$type'] = $event; $params = array(); if ($opts['return_score']) $params['return_score'] = 'true'; if ($opts['return_action']) $params['return_action'] = 'true'; if ($opts['return_workflow_status']) $params['return_workflow_status'] = 'true'; if ($opts['abuse_types']) $params['abuse_types'] = implode(',', $opts['abuse_types']); $request = new SiftRequest( $path, SiftRequest::POST, $opts['timeout'], $opts['version'], array( 'body' => $properties, 'params' => $params )); return $request->send(); }If so, then library adopters can be in charge of handling exceptions as per their unique requirements:
// User code try { $client->track($event, $properties); } catch (\Exception $e) { // Adopter handles here ... }Unfortunately, we must know when and why exceptions occur so cannot use this library for that simple reason.
tiagobutzke
Metadata
Metadata
Assignees
Labels
No labels