Skip to content

Commit

Permalink
Change structure
Browse files Browse the repository at this point in the history
  • Loading branch information
jdoyle65 committed Feb 24, 2016
1 parent ff1a092 commit 533b02b
Show file tree
Hide file tree
Showing 7 changed files with 459 additions and 45 deletions.
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
],
"require": {
"php": ">=5.4.0",
"curl/curl": "1.3.0"
"curl/curl": "1.3.0",
"nesbot/carbon": "1.21.0"
},
"require-dev": {
"phpunit/phpunit": "~4.0|~5.0",
Expand Down
57 changes: 33 additions & 24 deletions src/Sifter/Sifter.php
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php namespace Sifter;

use Curl\Curl;
use Sifter\Model\Project;

class Sifter
{
private $apiBaseUrl;
private $apiHeaders;
private $curl;

private $PROJECTS_URL = 'projects/';
Expand Down Expand Up @@ -62,31 +62,40 @@ public function allProjects()
$this->curl->get($url);

if ($this->curl->error) {
throw new \Exception('cURL GET failed with code '.$this->curl->error_code);
throw new \Exception('cURL GET failed with code ' . $this->curl->error_code);
} else {
$projects = [];
$json = json_decode($this->curl->response);
if ( ! isset($json->projects) || ! is_array($json->projects)) {
throw new Exception('Projects were not returned');
} else {
foreach ($json->projects as $project) {
$projects[] = new Project(
$project->name,
$project->primary_company_name,
$project->archived,
$project->url,
$project->issues_url,
$project->milestones_url,
$project->api_url,
$project->api_issues_url,
$project->api_milestones_url,
$project->api_categories_url,
$project->api_people_url
);
}

return $projects;
$projects = $this->jsonToProjects(json_decode($this->curl->response));
return $projects;
}
}


/*
* HELPER FUNCTIONS
*/

private function jsonToProjects($json)
{
$projects = [];
if ( ! isset($json->projects) || ! is_array($json->projects)) {
throw new \Exception('Projects were not returned');
} else {
foreach ($json->projects as $project) {
$projects[] = new Project(
$project->name,
$project->primary_company_name,
$project->archived,
$project->url,
$project->issues_url,
$project->milestones_url,
$project->api_url,
$project->api_issues_url,
$project->api_milestones_url,
$project->api_categories_url,
$project->api_people_url
);
}
return $projects;
}
}

Expand Down
199 changes: 199 additions & 0 deletions src/Sifter/model/Issue.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
<?php namespace Sifter\Model;

use Carbon\Carbon;

class Issue {

private $number;
private $categoryName;
private $priority;
private $subject;
private $description;
private $milestoneName;
private $openerName;
private $openerNmail;
private $assigneeName;
private $assigneeNmail;
private $status;
private $commentCount;
private $attachmentCount;
private $createdAt;
private $updatedAt;
private $url;
private $apiUrl;

private $curl;

/**
* Issue constructor.
* @param $number
* @param $categoryName
* @param $priority
* @param $subject
* @param $description
* @param $milestoneName
* @param $openerName
* @param $openerNmail
* @param $assigneeName
* @param $assigneeNmail
* @param $status
* @param $commentCount
* @param $attachmentCount
* @param $createdAt
* @param $updatedAt
* @param $url
* @param $apiUrl
*/
public function __construct($number, $categoryName, $priority, $subject, $description, $milestoneName, $openerName, $openerNmail, $assigneeName, $assigneeNmail, $status, $commentCount, $attachmentCount, $createdAt, $updatedAt, $url, $apiUrl)
{
$this->number = $number;
$this->categoryName = $categoryName;
$this->priority = $priority;
$this->subject = $subject;
$this->description = $description;
$this->milestoneName = $milestoneName;
$this->openerName = $openerName;
$this->openerNmail = $openerNmail;
$this->assigneeName = $assigneeName;
$this->assigneeNmail = $assigneeNmail;
$this->status = $status;
$this->commentCount = $commentCount;
$this->attachmentCount = $attachmentCount;
$this->createdAt = new Carbon($createdAt);
$this->updatedAt = new Carbon($updatedAt);
$this->url = $url;
$this->apiUrl = $apiUrl;
}

/**
* @return mixed
*/
public function getNumber()
{
return $this->number;
}

/**
* @return mixed
*/
public function getCategoryName()
{
return $this->categoryName;
}

/**
* @return mixed
*/
public function getPriority()
{
return $this->priority;
}

/**
* @return mixed
*/
public function getSubject()
{
return $this->subject;
}

/**
* @return mixed
*/
public function getDescription()
{
return $this->description;
}

/**
* @return mixed
*/
public function getMilestoneName()
{
return $this->milestoneName;
}

/**
* @return mixed
*/
public function getOpenerName()
{
return $this->openerName;
}

/**
* @return mixed
*/
public function getOpenerNmail()
{
return $this->openerNmail;
}

/**
* @return mixed
*/
public function getAssigneeName()
{
return $this->assigneeName;
}

/**
* @return mixed
*/
public function getAssigneeNmail()
{
return $this->assigneeNmail;
}

/**
* @return mixed
*/
public function getStatus()
{
return $this->status;
}

/**
* @return mixed
*/
public function getCommentCount()
{
return $this->commentCount;
}

/**
* @return mixed
*/
public function getAttachmentCount()
{
return $this->attachmentCount;
}

/**
* @return mixed
*/
public function getCreatedAt()
{
return $this->createdAt->copy();
}

/**
* @return mixed
*/
public function getUpdatedAt()
{
return $this->updatedAt->copy();
}

/**
* @return mixed
*/
public function getUrl()
{
return $this->url;
}




}
8 changes: 5 additions & 3 deletions src/Sifter/Project.php → src/Sifter/model/Project.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
<?php namespace Sifter;
<?php namespace Sifter\Model;

use Sifter\Resource\IssuesResource;
use Sifter\SifterCurl;

class Project {
private $name;
Expand Down Expand Up @@ -100,8 +103,7 @@ public function issues() {
if($curl->error) {
throw new \Exception('cURL GET failed with code '.$curl->error_code);
} else {
// TODO: Create an IssueResults class and return that (should contain list of Issues as well as other info such as 'page'
return json_decode($curl->response);
return IssuesResource::issuesResourceFromJson($curl->response);
}
}

Expand Down
Loading

0 comments on commit 533b02b

Please sign in to comment.