Skip to content

Commit

Permalink
Merge pull request #4 from HiccupInsurance/mailchimp-api-update
Browse files Browse the repository at this point in the history
Mailchimp api update
  • Loading branch information
gusdecool authored Oct 29, 2018
2 parents 504d984 + 49209a0 commit 463c99e
Showing 1 changed file with 74 additions and 2 deletions.
76 changes: 74 additions & 2 deletions src/Api/MemberApi.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,79 @@ public function subscribe(string $listId, Member $member): Member
'/%s/lists/%s/members/%s',
MailChimpConfig::VERSION,
$listId,
md5($member->getEmailAddress())
md5(strtolower($member->getEmailAddress()))
),
[
'body' => $this->serializer->serialize($member, 'json')
]
);

/** @var $successResponse Member */
$successResponse = $this->serializer->deserialize((string) $response->getBody(), Member::class, 'json');

return $successResponse;
}

/**
* Re Subscribe a member
*
* @param string $listId
* @param Member $member
* @return Member
* @throws ValidationFailedException
* @throws ClientException
*/
public function reSubscribe(string $listId, Member $member): Member
{
$errors = $this->validator->validate($member);

if (count($errors) > 0) {
throw new ValidationFailedException(get_class($member), $errors);
}

$member->setStatus(Member::STATUS_PENDING);

$response = $this->client->patch(
sprintf(
'/%s/lists/%s/members/%s',
MailChimpConfig::VERSION,
$listId,
md5(strtolower($member->getEmailAddress()))
),
[
'body' => $this->serializer->serialize($member, 'json')
]
);

/** @var $successResponse Member */
$successResponse = $this->serializer->deserialize((string) $response->getBody(), Member::class, 'json');

return $successResponse;
}

/**
* Get Subscribed member info
*
* @param string $listId
* @param Member $member
* @return Member
* @throws ValidationFailedException
* @throws ClientException
*/
public function getStatus(string $listId, Member $member): Member
{
$errors = $this->validator->validate($member);

if (count($errors) > 0) {
throw new ValidationFailedException(get_class($member), $errors);
}

$response = $this->client->get(
sprintf(
'/%s/lists/%s/members/%s',
MailChimpConfig::VERSION,
$listId,
md5(strtolower($member->getEmailAddress()))
),
[
'body' => $this->serializer->serialize($member, 'json')
Expand Down Expand Up @@ -114,7 +186,7 @@ public function unsubscribe(string $listId, Member $member): Member
'/%s/lists/%s/members/%s',
MailChimpConfig::VERSION,
$listId,
md5($member->getEmailAddress())
md5(strtolower($member->getEmailAddress()))
),
[
'body' => $this->serializer->serialize($member, 'json')
Expand Down

0 comments on commit 463c99e

Please sign in to comment.