From 31ffaced481b3d46587e20003ef39978d6a3a027 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 8 Aug 2018 09:38:51 +0200 Subject: [PATCH] Fix issue with API: the client requested 'list' instead of 'update' for updating gist and the update controller found bad gist --- src/Gist/Api/Client.php | 2 +- src/Gist/Controller/ApiController.php | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Gist/Api/Client.php b/src/Gist/Api/Client.php index 82ed6cd..ca17817 100644 --- a/src/Gist/Api/Client.php +++ b/src/Gist/Api/Client.php @@ -88,7 +88,7 @@ class Client extends BaseClient public function update($gist, $content) { $response = $this->post( - str_replace('{gist}', $gist, $this->mergeApiKey(self::LIST)), + str_replace('{gist}', $gist, $this->mergeApiKey(self::UPDATE)), array( 'form_params' => array( 'form' => array( diff --git a/src/Gist/Controller/ApiController.php b/src/Gist/Controller/ApiController.php index 89e18e1..283a616 100644 --- a/src/Gist/Controller/ApiController.php +++ b/src/Gist/Controller/ApiController.php @@ -158,12 +158,16 @@ class ApiController extends Controller return $this->invalidMethodResponse('POST method is required.'); } - $gist = GistQuery::create() - ->filterByCipher(false) - ->filterById((int) $gist) - ->_or() - ->filterByFile($gist) - ->findOne(); + $query = GistQuery::create() + ->filterByCipher(false); + + if (ctype_digit($gist)) { + $query->filterById((int) $gist); + } else { + $query->filterByFile($gist); + } + + $gist = $query->findOne(); if (!$gist) { return $this->invalidRequestResponse('Invalid Gist');