Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented optional url params #8

Merged
merged 1 commit into from
Oct 18, 2012
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 27 additions & 8 deletions IronMQ.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,9 @@ class IronMQ extends IronCore{
'api_version' => '1',
);

const LIST_QUEUES_PER_PAGE = 30;
const GET_MESSAGE_TIMEOUT = 60;

/**
* @param string|array $config_file_or_options
* Array of options or name of config file.
Expand Down Expand Up @@ -165,11 +168,22 @@ public function setProjectId($project_id) {
}
}

public function getQueues($page = 0){
/**
* Get list of message queues
*
* @param int $page
* Zero-indexed page to view
* @param int $per_page
* Number of queues per page
*/
public function getQueues($page = 0, $per_page = self::LIST_QUEUES_PER_PAGE) {
$url = "projects/{$this->project_id}/queues";
$params = array();
if($page > 0) {
$params['page'] = $page;
if($page !== 0) {
$params['page'] = (int) $page;
}
if($per_page !== self::LIST_QUEUES_PER_PAGE) {
$params['per_page'] = (int) $per_page;
}
$this->setJsonHeaders();
return self::json_decode($this->apiCall(self::GET, $url, $params));
Expand Down Expand Up @@ -261,14 +275,18 @@ public function postMessages($queue_name, $messages) {
*
* @param string $queue_name Queue name
* @param int $count
* @param int $timeout
* @return array|null array of messages or null
*/
public function getMessages($queue_name, $count=1) {
public function getMessages($queue_name, $count = 1, $timeout = self::GET_MESSAGE_TIMEOUT) {
$queue = rawurlencode($queue_name);
$url = "projects/{$this->project_id}/queues/$queue/messages";
$params = array();
if($count > 1) {
$params['n'] = $count;
if($count !== 1) {
$params['n'] = (int) $count;
}
if($timeout !== self::GET_MESSAGE_TIMEOUT) {
$params['timeout'] = (int) $timeout;
}
$this->setJsonHeaders();
$response = $this->apiCall(self::GET, $url, $params);
Expand All @@ -284,10 +302,11 @@ public function getMessages($queue_name, $count=1) {
* Get single message from queue
*
* @param string $queue_name Queue name
* @param int $timeout
* @return mixed|null single message or null
*/
public function getMessage($queue_name) {
$messages = $this->getMessages($queue_name, 1);
public function getMessage($queue_name, $timeout = self::GET_MESSAGE_TIMEOUT) {
$messages = $this->getMessages($queue_name, 1, $timeout);
if ($messages){
return $messages[0];
}else{
Expand Down