Skip to content

Commit

Permalink
Merge pull request #43 from basecrm/Frederick888-issue-40
Browse files Browse the repository at this point in the history
Allow clients to pass $raw option

Changes:

    Adds $option parameter (default array[]) to all the transitive callers of \BaseCRM\HttpClient::request() in Service classes
    Avoids casting/unwrapping responses when $options['raw'] is used
    Existing $option parameters are renamed to $params for the sake of consistency

Based on #41
  • Loading branch information
Jędrzej Dąbrowa authored Jan 31, 2019
2 parents b0687b3 + b2a54d0 commit 5b0c270
Show file tree
Hide file tree
Showing 24 changed files with 296 additions and 198 deletions.
6 changes: 4 additions & 2 deletions lib/AccountsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,13 @@ public function __construct(HttpClient $httpClient)
* Returns detailed information about your account
*
*
* @param array $options Additional request's options.
*
* @return array Resource object.
*/
public function self()
public function self(array $options = array())
{
list($code, $resource) = $this->httpClient->get("/accounts/self");
list($code, $resource) = $this->httpClient->get("/accounts/self", null, $options);
return $resource;
}
}
17 changes: 10 additions & 7 deletions lib/AssociatedContactsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,14 @@ public function __construct(HttpClient $httpClient)
* Returns all deal associated contacts
*
* @param integer $deal_id Unique identifier of a Deal
* @param array $options Search options
* @param array $params Search options
* @param array $options Additional request's options.
*
* @return array The list of AssociatedContacts for the first page, unless otherwise specified.
*/
public function all($deal_id, $options = [])
public function all($deal_id, $params = [], array $options = array())
{
list($code, $associated_contacts) = $this->httpClient->get("/deals/{$deal_id}/associated_contacts", $options);
list($code, $associated_contacts) = $this->httpClient->get("/deals/{$deal_id}/associated_contacts", $params, $options);
return $associated_contacts;
}

Expand All @@ -54,14 +55,15 @@ public function all($deal_id, $options = [])
*
* @param integer $deal_id Unique identifier of a Deal
* @param array $associatedContact This array's attributes describe the object to be created.
* @param array $options Additional request's options.
*
* @return array The resulting object representing created resource.
*/
public function create($deal_id, array $associatedContact)
public function create($deal_id, array $associatedContact, array $options = array())
{
$attributes = array_intersect_key($associatedContact, array_flip(self::$keysToPersist));

list($code, $createdAssociatedContact) = $this->httpClient->post("/deals/{$deal_id}/associated_contacts", $attributes);
list($code, $createdAssociatedContact) = $this->httpClient->post("/deals/{$deal_id}/associated_contacts", $attributes, $options);
return $createdAssociatedContact;
}

Expand All @@ -76,12 +78,13 @@ public function create($deal_id, array $associatedContact)
*
* @param integer $deal_id Unique identifier of a Deal
* @param integer $contact_id Unique identifier of a Contact
* @param array $options Additional request's options.
*
* @return boolean Status of the operation.
*/
public function destroy($deal_id, $contact_id)
public function destroy($deal_id, $contact_id, array $options = array())
{
list($code, $payload) = $this->httpClient->delete("/deals/{$deal_id}/associated_contacts/{$contact_id}");
list($code, $payload) = $this->httpClient->delete("/deals/{$deal_id}/associated_contacts/{$contact_id}", null, $options);
return $code == 204;
}
}
27 changes: 16 additions & 11 deletions lib/ContactsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,14 @@ public function __construct(HttpClient $httpClient)
*
* Returns all contacts available to the user according to the parameters provided
*
* @param array $options Search options
* @param array $params Search options
* @param array $options Additional request's options.
*
* @return array The list of Contacts for the first page, unless otherwise specified.
*/
public function all($options = [])
public function all($params = [], array $options = array())
{
list($code, $contacts) = $this->httpClient->get("/contacts", $options);
list($code, $contacts) = $this->httpClient->get("/contacts", $params, $options);
return $contacts;
}

Expand All @@ -52,15 +53,16 @@ public function all($options = [])
* A contact may represent a single individual or an organization
*
* @param array $contact This array's attributes describe the object to be created.
* @param array $options Additional request's options.
*
* @return array The resulting object representing created resource.
*/
public function create(array $contact)
public function create(array $contact, array $options = array())
{
$attributes = array_intersect_key($contact, array_flip(self::$keysToPersist));
if (isset($attributes['custom_fields']) && empty($attributes['custom_fields'])) unset($attributes['custom_fields']);

list($code, $createdContact) = $this->httpClient->post("/contacts", $attributes);
list($code, $createdContact) = $this->httpClient->post("/contacts", $attributes, $options);
return $createdContact;
}

Expand All @@ -73,12 +75,13 @@ public function create(array $contact)
* If the specified contact does not exist, the request will return an error
*
* @param integer $id Unique identifier of a Contact
* @param array $options Additional request's options.
*
* @return array Searched Contact.
*/
public function get($id)
public function get($id, array $options = array())
{
list($code, $contact) = $this->httpClient->get("/contacts/{$id}");
list($code, $contact) = $this->httpClient->get("/contacts/{$id}", null, $options);
return $contact;
}

Expand All @@ -94,15 +97,16 @@ public function get($id)
*
* @param integer $id Unique identifier of a Contact
* @param array $contact This array's attributes describe the object to be updated.
* @param array $options Additional request's options.
*
* @return array The resulting object representing updated resource.
*/
public function update($id, array $contact)
public function update($id, array $contact, array $options = array())
{
$attributes = array_intersect_key($contact, array_flip(self::$keysToPersist));
if (isset($attributes['custom_fields']) && empty($attributes['custom_fields'])) unset($attributes['custom_fields']);

list($code, $updatedContact) = $this->httpClient->put("/contacts/{$id}", $attributes);
list($code, $updatedContact) = $this->httpClient->put("/contacts/{$id}", $attributes, $options);
return $updatedContact;
}

Expand All @@ -116,12 +120,13 @@ public function update($id, array $contact)
* This operation cannot be undone
*
* @param integer $id Unique identifier of a Contact
* @param array $options Additional request's options.
*
* @return boolean Status of the operation.
*/
public function destroy($id)
public function destroy($id, array $options = array())
{
list($code, $payload) = $this->httpClient->delete("/contacts/{$id}");
list($code, $payload) = $this->httpClient->delete("/contacts/{$id}", null, $options);
return $code == 204;
}
}
27 changes: 16 additions & 11 deletions lib/DealSourcesService.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,14 @@ public function __construct(HttpClient $httpClient)
*
* Returns all deal sources available to the user according to the parameters provided
*
* @param array $options Search options
* @param array $params Search options
* @param array $options Additional request's options.
*
* @return array The list of DealSources for the first page, unless otherwise specified.
*/
public function all($options = [])
public function all($params = [], array $options = array())
{
list($code, $deal_sources) = $this->httpClient->get("/deal_sources", $options);
list($code, $deal_sources) = $this->httpClient->get("/deal_sources", $params, $options);
return $deal_sources;
}

Expand All @@ -54,14 +55,15 @@ public function all($options = [])
* </figure>
*
* @param array $dealSource This array's attributes describe the object to be created.
* @param array $options Additional request's options.
*
* @return array The resulting object representing created resource.
*/
public function create(array $dealSource)
public function create(array $dealSource, array $options = array())
{
$attributes = array_intersect_key($dealSource, array_flip(self::$keysToPersist));

list($code, $createdDealSource) = $this->httpClient->post("/deal_sources", $attributes);
list($code, $createdDealSource) = $this->httpClient->post("/deal_sources", $attributes, $options);
return $createdDealSource;
}

Expand All @@ -74,12 +76,13 @@ public function create(array $dealSource)
* If a source with the supplied unique identifier does not exist it returns an error
*
* @param integer $id Unique identifier of a DealSource
* @param array $options Additional request's options.
*
* @return array Searched DealSource.
*/
public function get($id)
public function get($id, array $options = array())
{
list($code, $deal_source) = $this->httpClient->get("/deal_sources/{$id}");
list($code, $deal_source) = $this->httpClient->get("/deal_sources/{$id}", null, $options);
return $deal_source;
}

Expand All @@ -96,14 +99,15 @@ public function get($id)
*
* @param integer $id Unique identifier of a DealSource
* @param array $dealSource This array's attributes describe the object to be updated.
* @param array $options Additional request's options.
*
* @return array The resulting object representing updated resource.
*/
public function update($id, array $dealSource)
public function update($id, array $dealSource, array $options = array())
{
$attributes = array_intersect_key($dealSource, array_flip(self::$keysToPersist));

list($code, $updatedDealSource) = $this->httpClient->put("/deal_sources/{$id}", $attributes);
list($code, $updatedDealSource) = $this->httpClient->put("/deal_sources/{$id}", $attributes, $options);
return $updatedDealSource;
}

Expand All @@ -117,12 +121,13 @@ public function update($id, array $dealSource)
* This operation cannot be undone
*
* @param integer $id Unique identifier of a DealSource
* @param array $options Additional request's options.
*
* @return boolean Status of the operation.
*/
public function destroy($id)
public function destroy($id, array $options = array())
{
list($code, $payload) = $this->httpClient->delete("/deal_sources/{$id}");
list($code, $payload) = $this->httpClient->delete("/deal_sources/{$id}", null, $options);
return $code == 204;
}
}
27 changes: 16 additions & 11 deletions lib/DealUnqualifiedReasonsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,14 @@ public function __construct(HttpClient $httpClient)
*
* Returns all deal unqualified reasons available to the user according to the parameters provided
*
* @param array $options Search options
* @param array $params Search options
* @param array $options Additional request's options.
*
* @return array The list of DealUnqualifiedReasons for the first page, unless otherwise specified.
*/
public function all($options = [])
public function all($params = [], array $options = array())
{
list($code, $deal_unqualified_reasons) = $this->httpClient->get("/deal_unqualified_reasons", $options);
list($code, $deal_unqualified_reasons) = $this->httpClient->get("/deal_unqualified_reasons", $params, $options);
return $deal_unqualified_reasons;
}

Expand All @@ -54,14 +55,15 @@ public function all($options = [])
* </figure>
*
* @param array $dealUnqualifiedReason This array's attributes describe the object to be created.
* @param array $options Additional request's options.
*
* @return array The resulting object representing created resource.
*/
public function create(array $dealUnqualifiedReason)
public function create(array $dealUnqualifiedReason, array $options = array())
{
$attributes = array_intersect_key($dealUnqualifiedReason, array_flip(self::$keysToPersist));

list($code, $createdDealUnqualifiedReason) = $this->httpClient->post("/deal_unqualified_reasons", $attributes);
list($code, $createdDealUnqualifiedReason) = $this->httpClient->post("/deal_unqualified_reasons", $attributes, $options);
return $createdDealUnqualifiedReason;
}

Expand All @@ -74,12 +76,13 @@ public function create(array $dealUnqualifiedReason)
* If a loss reason with the supplied unique identifier does not exist, it returns an error
*
* @param integer $id Unique identifier of a DealUnqualifiedReason
* @param array $options Additional request's options.
*
* @return array Searched DealUnqualifiedReason.
*/
public function get($id)
public function get($id, array $options = array())
{
list($code, $deal_unqualified_reason) = $this->httpClient->get("/deal_unqualified_reasons/{$id}");
list($code, $deal_unqualified_reason) = $this->httpClient->get("/deal_unqualified_reasons/{$id}", null, $options);
return $deal_unqualified_reason;
}

Expand All @@ -96,14 +99,15 @@ public function get($id)
*
* @param integer $id Unique identifier of a DealUnqualifiedReason
* @param array $dealUnqualifiedReason This array's attributes describe the object to be updated.
* @param array $options Additional request's options.
*
* @return array The resulting object representing updated resource.
*/
public function update($id, array $dealUnqualifiedReason)
public function update($id, array $dealUnqualifiedReason, array $options = array())
{
$attributes = array_intersect_key($dealUnqualifiedReason, array_flip(self::$keysToPersist));

list($code, $updatedDealUnqualifiedReason) = $this->httpClient->put("/deal_unqualified_reasons/{$id}", $attributes);
list($code, $updatedDealUnqualifiedReason) = $this->httpClient->put("/deal_unqualified_reasons/{$id}", $attributes, $options);
return $updatedDealUnqualifiedReason;
}

Expand All @@ -117,12 +121,13 @@ public function update($id, array $dealUnqualifiedReason)
* This operation cannot be undone
*
* @param integer $id Unique identifier of a DealUnqualifiedReason
* @param array $options Additional request's options.
*
* @return boolean Status of the operation.
*/
public function destroy($id)
public function destroy($id, array $options = array())
{
list($code, $payload) = $this->httpClient->delete("/deal_unqualified_reasons/{$id}");
list($code, $payload) = $this->httpClient->delete("/deal_unqualified_reasons/{$id}", null, $options);
return $code == 204;
}
}
Loading

0 comments on commit 5b0c270

Please sign in to comment.