Code Monkey home page Code Monkey logo

emmaphp's Introduction

##Emma API Wrapper (PHP)

A PHP wrapper for Emma's API.

Running the tests Build Status

Update tests/Bootstrap.php with your account id and api keys.

phpunit --bootstrap tests/Bootstrap.php tests

Examples

Wrapper includes methods to help with performing HTTP requests to Emma's public API

Instantiation

require 'src/Emma.php';
$account_id = 123456; // Replace with your account id
$public_key = 'ec6936852ca7a4136fdc'; // Replace with your public key
$private_key = '63bfa55a2b5e3554db4c'; // Replace with your private key
$emma = new Emma($account_id, $public_key, $private_key);

GET Request

// Returns an array of all members
$req = $emma->myMembers();
echo json_decode($req);

Pagination

// Returns a count of all members
$req = $emma->myMembers(array('count' => true));
echo json_decode($req);
// Returns an array of members with specific offset
$req = $emma->myMembers(array('start' => 5, 'end' => 75));
echo json_decode($req);

POST Request

// Returns The member_id of the new or updated member, whether the member was added or an existing member was updated, and the status of the member. The status will be reported as ‘a’ (active), ‘e’ (error), or ‘o’ (optout).
try {
	$member = array();
	$member['email'] = '[email protected]';
	$member['fields'] = array('first_name' => 'bob', 'last_name' => 'saget');
	$req = $emma->membersAddSingle($member);
	echo json_decode($req);
} catch(Emma_Invalid_Response_Exception $e) {
	exit($e->getMessage());
}

PUT Request

// Returns True if the member was updated successfully
try {
	$member = array();
	$member['email'] = '[email protected]';
	$member['fields'] = array('first_name' => 'Betty', 'last_name' => 'Sue');
	$member['status_to'] = 'a';
	$req = $emma->membersUpdateSingle(111, $member);
	echo json_decode($req);
} catch(Emma_Invalid_Response_Exception $e) {
	exit($e->getMessage());
}

DELETE Request

// Returns True if the member is deleted.
try {
	$req = $emma->membersRemoveSingle(111);
	echo json_decode($req);
} catch(Emma_Invalid_Response_Exception $e) {
	exit($e->getMessage());
}

emmaphp's People

Contributors

bwanamaker avatar dennismonsewicz avatar dwlorimer avatar jbynum avatar zacharydraper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

emmaphp's Issues

[Feature] Composer support

Auto-loading via composer is a valuable tool for building integrations. Some of the requirements to make this work:

  • refactor to support PHP Namespaces (necessary for autoloading to work properly)
  • update the testing suite to use namespaces (current tests are failing)
  • composer init to complete license, description, keywords, etc.

Emma's API expects "true", but is given "1"

I found this while trying to get a member count. If I use $emma->myMembers(array('count' => true)), the boolean value is converted to a 1 by http_build_query. Unfortunately, the Emma API seems to be expecting ?count=true or ?count=false (not ?count=1), so it ignores this parameter, and the response is an array of the first 500 members instead of an integer count.

Using $emma->myMembers(array('count' => 'true')) solves the issue. So, you should probably update the documentation OR we should see if Emma can change their API to check for any boolean value. Let me know if you have any questions.

$this->_postData is not cleared after each request

I am instantiating the Emma class once and then making several API calls. I noticed some errors due to leftover data in $this->_postData after each request. I resolved the issue by adding $this->_postData = array(); before curl_close($ch);

I have also added $this->_params = array(); before curl_close($ch); to be safe.

Parameters are not merged correctly

In 'protected function get', the preserved parameters ($this->_params) is merged after the provided parameters ($params).

This makes it impossible to correctly use pagination without modifying this function.

The correction would be to merge the provided parameters after the preserved parameters.

The same applies for post, put, and delete functions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.