diff --git a/.gitignore b/.gitignore index 3727f3e..f34971a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -/composer.phar -/index.php -/composer.lock -/vendor/ +/composer.phar +/index.php +/composer.lock +/vendor/ /.idea/ \ No newline at end of file diff --git a/composer.json b/composer.json index 214341d..174f9b0 100644 --- a/composer.json +++ b/composer.json @@ -10,5 +10,8 @@ "name": "Shikiryu", "email": "clement@desmidt.fr" } - ] + ], + "autoload": { + "psr-4": {"Shikiryu\\LBCReposter\\": "library/"} + } } diff --git a/library/Account.php b/library/Account.php index 655896c..e14ae0f 100644 --- a/library/Account.php +++ b/library/Account.php @@ -1,60 +1,80 @@ -client = $client; - $this->login = $login; - $this->password = $password; - } - - public function isConnected() - { - if (!$this->is_connected) { - $crawler = $this->client->request('GET', self::HOME_URL); - $this->is_connected = $crawler->filter('.loggedOut')->count() == 0; - } - return $this->is_connected; - } - - public function connect() - { - if (!$this->isConnected()) { - $crawler = $this->client->request('GET', self::LOGIN_URL); - $form = $crawler->selectButton('Se connecter')->form(); - $crawler = $this->client->submit($form, ['st_username' => $this->login, 'st_passwd' => $this->password]); - $this->is_connected = $crawler->filter('.account_userinfo')->count() > 0; - } - return $this->is_connected; - } - - public function getDeals() - { - $crawler = $this->client->request('GET', self::ACCOUNT_URL); -// $deals = $crawler->filter('#dashboard .list .element')->each() - } +client = $client; + $this->login = $login; + $this->password = $password; + } + + /** + * @return Client + */ + public function getClient() + { + return $this->client; + } + + public function isConnected() + { + if (!$this->is_connected) { + $crawler = $this->client->request('GET', self::HOME_URL); + $this->is_connected = $crawler->filter('.loggedOut')->count() == 0; + } + return $this->is_connected; + } + + public function connect() + { + if (!$this->isConnected()) { + $crawler = $this->client->request('GET', self::LOGIN_URL); + $form = $crawler->selectButton('Se connecter')->form(); + $crawler = $this->client->submit($form, ['st_username' => $this->login, 'st_passwd' => $this->password]); + $this->is_connected = $crawler->filter('.account_userinfo')->count() > 0; + } + return $this->is_connected; + } + + public function getDeals() + { + if ($this->isConnected()) { + $crawler = $this->client->request('GET', self::ACCOUNT_URL); + $deals = $crawler->filter('#dashboard .list .element')->each( + function ($node) { + return $node->filter('.detail .title')->each( + function ($n) { + return $n->filter('a')->first()->attr('href'); + } + ); + } + ); + return new Deals($this, $deals); + } + return new Deals($this, []); + } } \ No newline at end of file diff --git a/library/Deal.php b/library/Deal.php index c6f6d68..21359f9 100644 --- a/library/Deal.php +++ b/library/Deal.php @@ -1,8 +1,210 @@ -id = $id; + } + + public static function fromURL(Account $account, $url) + { + $client = $account->getClient(); + $crawler = $client->request('GET', $url); + $deal = new self(); + + } + + /** + * @return int + */ + public function getId() + { + return $this->id; + } + + /** + * @param int $id + * @return Deal + */ + public function setId($id) + { + $this->id = $id; + return $this; + } + + /** + * @return int + */ + public function getCategory() + { + return $this->category; + } + + /** + * @param int $category + * @return Deal + */ + public function setCategory($category) + { + $this->category = $category; + return $this; + } + + /** + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * @param string $type + * @return Deal + */ + public function setType($type) + { + $this->type = $type; + return $this; + } + + /** + * @return string + */ + public function getSubject() + { + return $this->subject; + } + + /** + * @param string $subject + * @return Deal + */ + public function setSubject($subject) + { + $this->subject = $subject; + return $this; + } + + /** + * @return string + */ + public function getBody() + { + return $this->body; + } + + /** + * @param string $body + * @return Deal + */ + public function setBody($body) + { + $this->body = $body; + return $this; + } + + /** + * @return float + */ + public function getPrice() + { + return $this->price; + } + + /** + * @param float $price + * @return Deal + */ + public function setPrice($price) + { + $this->price = $price; + return $this; + } + + /** + * @return mixed + */ + public function getImage0() + { + return $this->image0; + } + + /** + * @param mixed $image0 + * @return Deal + */ + public function setImage0($image0) + { + $this->image0 = $image0; + return $this; + } + + /** + * @return mixed + */ + public function getImage1() + { + return $this->image1; + } + + /** + * @param mixed $image1 + * @return Deal + */ + public function setImage1($image1) + { + $this->image1 = $image1; + return $this; + } + + /** + * @return mixed + */ + public function getImage2() + { + return $this->image2; + } + + /** + * @param mixed $image2 + * @return Deal + */ + public function setImage2($image2) + { + $this->image2 = $image2; + return $this; + } + + + } \ No newline at end of file diff --git a/library/Deals.php b/library/Deals.php index 3739594..55b2fac 100644 --- a/library/Deals.php +++ b/library/Deals.php @@ -1,8 +1,45 @@ -account, current(array_values($array))); + } + $deal = new Deal(); + foreach ($array as $name => $value) { + $method = sprintf('set%s', ucfirst($name)); + $deal->$method($value); + } + return $deal; + } + + public function __construct(Account $account, $input) + { + $this->account = $account; + if (is_array($input)) { + foreach ($input as $item) { + $this->append($item); + } + } + if ($input instanceof Deal) { + $this->append($input); + } + } + + public function append($value) + { + if (is_array($value)) { + parent::append($this->parseArray($value)); + } + if ($value instanceof Deal) { + parent::append($value); + } + } + } \ No newline at end of file