/** * Submit this draft paste to the Pastebin API. * @param \Brush\Accounts\Developer $developer The developer account to use to send the request. * @return \Brush\Pastes\Paste The created paste. */ public function paste(Developer $developer) { // throw on any errors $this->validate(); // create the request $pastebin = new ApiRequest($developer, self::ENDPOINT); $pastebin->setOption('paste'); $this->addTo($pastebin->getRequest(), $developer); // send and create a paste from this draft return Paste::fromPasted($pastebin->send(), $this); }
/** * Remove this paste from Pastebin. * @param \Brush\Accounts\Developer $developer The developer account to use for the request. * @throws \Brush\Exceptions\ValidationException If this paste does not have an owner * (e.g. it was retrieved via the trending pastes API). */ public function delete(Developer $developer) { // we can only delete pastes for which an Account is set if (!$this->hasOwner()) { throw new ValidationException('A paste must have an owner to be deleted.'); } $pastebin = new ApiRequest($developer, self::DELETE_ENDPOINT); $pastebin->setOption('delete'); $request = $pastebin->getRequest(); $this->getOwner()->sign($request, $developer); $request->getVariables()->set('api_paste_key', $this->getKey()); $pastebin->send(); }
/** * Retrieve a user's information from their account. * @param \Brush\Accounts\Account $account The account whose corresponding information to retrieve. * @param \Brush\Accounts\Developer $developer The developer account to use for the request. * @return \Brush\Accounts\User A user instance containing the account's information. */ public static final function fromAccount(Account $account, Developer $developer) { $key = $account->getCacheKey($developer); if (self::getCache()->isCached($key)) { // user cache hit return self::getCache()->get($key); } $pastebin = new ApiRequest($developer, self::ENDPOINT); $pastebin->setOption('userdetails'); $account->sign($pastebin->getRequest(), $developer); $user = self::fromXml(ApiRequest::toElement($pastebin->send())); self::getCache()->set($key, $user); return $user; }
/** * Get the 18 currently trending pastes. * @param \Brush\Accounts\Developer $developer The developer account to use for the request. * @return \Brush\Pastes\Paste[] Trending pastes. */ public static function getPastes(Developer $developer) { $pastebin = new ApiRequest($developer, self::ENDPOINT); $pastebin->setOption('trends'); return Paste::parsePastes($pastebin->send()); }
/** * Retrieve pastes created by this account in descending order of date created. * @param \Brush\Accounts\Developer $developer The developer account to use for the request. * @param int $limit The maximum number of pastes to retrieve. 1 <= $number <= 1000. Defaults to 50. * @throws \Brush\Exceptions\ArgumentException If the number of pastes is outside the allowed range. * @return \Brush\Pastes\Paste[] This account's pastes, up to the limit. */ public function getPastes(Developer $developer, $limit = 50) { // check 1 <= $number <= 1000 if ($limit < 1 || $limit > 1000) { throw new ArgumentException('The number of pastes must be in the range 1 to 1000 inclusive.'); } $pastebin = new ApiRequest($developer, self::PASTES_ENDPOINT); $pastebin->setOption('list'); $request = $pastebin->getRequest(); $this->sign($request, $developer); $request->getVariables()->set('api_results_limit', $limit); return Paste::parsePastes($pastebin->send(), $this); }