Version 5.1 - All the GraphQL #32
@ -20,7 +20,9 @@
|
|||||||
$.get('/public/templates/anime-ajax-search-results.html', tempHtml => {
|
$.get('/public/templates/anime-ajax-search-results.html', tempHtml => {
|
||||||
$('#search').on('keypress', AnimeClient.throttle(250, function(e) {
|
$('#search').on('keypress', AnimeClient.throttle(250, function(e) {
|
||||||
let query = encodeURIComponent($(this).val());
|
let query = encodeURIComponent($(this).val());
|
||||||
console.log($(this).val());
|
if (query === '') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
search(tempHtml, query);
|
search(tempHtml, query);
|
||||||
}));
|
}));
|
||||||
|
@ -244,8 +244,6 @@ class Anime extends BaseController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Update an anime item
|
* Update an anime item
|
||||||
*
|
|
||||||
* @return boolean|null
|
|
||||||
*/
|
*/
|
||||||
public function update()
|
public function update()
|
||||||
{
|
{
|
||||||
@ -253,6 +251,15 @@ class Anime extends BaseController {
|
|||||||
$this->outputJSON($response['body'], $response['statusCode']);
|
$this->outputJSON($response['body'], $response['statusCode']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an anime from the list
|
||||||
|
*/
|
||||||
|
public function delete()
|
||||||
|
{
|
||||||
|
$response = $this->model->update($this->request->post->get());
|
||||||
|
$this->outputJSON($response['body'], $response['statusCode']);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View details of an anime
|
* View details of an anime
|
||||||
*
|
*
|
||||||
|
@ -178,5 +178,18 @@ class API extends BaseModel {
|
|||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dummy function that should be abstract. Is not abstract because
|
||||||
|
* this class is used concretely for authorizing API calls
|
||||||
|
*
|
||||||
|
* @TODO Refactor, and make this abstract
|
||||||
|
* @param string $status
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function _get_list_from_api($status)
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// End of BaseApiModel.php
|
// End of BaseApiModel.php
|
@ -74,6 +74,33 @@ class Anime extends API {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an anime from a list
|
||||||
|
*
|
||||||
|
* @param array $data
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function delete($data)
|
||||||
|
{
|
||||||
|
$auth = $this->container->get('auth');
|
||||||
|
if ( ! $auth->is_authenticated() || ! array_key_exists('id', $data))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$id = $data['id'];
|
||||||
|
$data['auth_token'] = $auth->get_auth_token();
|
||||||
|
|
||||||
|
$response = $this->client->post("libraries/{$id}/remove", [
|
||||||
|
'form_params' => $data
|
||||||
|
]);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'statusCode' => $response->getStatusCode(),
|
||||||
|
'body' => Json::decode($response->getBody(), TRUE)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the full set of anime lists
|
* Get the full set of anime lists
|
||||||
*
|
*
|
||||||
|
@ -50,7 +50,7 @@ class Manga extends API {
|
|||||||
*/
|
*/
|
||||||
protected $base_url = "https://hummingbird.me/";
|
protected $base_url = "https://hummingbird.me/";
|
||||||
|
|
||||||
protected function _auth_json_call($type, $url, $json)
|
protected function _manga_api_call($type, $url, $json=null)
|
||||||
{
|
{
|
||||||
$token = $this->container->get('auth')
|
$token = $this->container->get('auth')
|
||||||
->get_auth_token();
|
->get_auth_token();
|
||||||
@ -65,10 +65,16 @@ class Manga extends API {
|
|||||||
]);
|
]);
|
||||||
$cookieJar->setCookie($cookie_data);
|
$cookieJar->setCookie($cookie_data);
|
||||||
|
|
||||||
$result = $this->client->request(strtoupper($type), $url, [
|
$config = [
|
||||||
'cookies' => $cookieJar,
|
'cookies' => $cookieJar
|
||||||
'json' => $json
|
];
|
||||||
]);
|
|
||||||
|
if ( ! is_null($json))
|
||||||
|
{
|
||||||
|
$config['json'] = $json;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->client->request(strtoupper($type), $url, $config);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'statusCode' => $result->getStatusCode(),
|
'statusCode' => $result->getStatusCode(),
|
||||||
@ -90,7 +96,7 @@ class Manga extends API {
|
|||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
return $this->_auth_json_call('post', 'manga_library_entries', $object);
|
return $this->_manga_api_call('post', 'manga_library_entries', $object);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -103,7 +109,7 @@ class Manga extends API {
|
|||||||
{
|
{
|
||||||
$id = $data['id'];
|
$id = $data['id'];
|
||||||
|
|
||||||
return $this->_auth_json_call(
|
return $this->_manga_api_call(
|
||||||
'put',
|
'put',
|
||||||
"manga_library_entries/{$id}",
|
"manga_library_entries/{$id}",
|
||||||
['manga_library_entry' => $data]
|
['manga_library_entry' => $data]
|
||||||
@ -120,27 +126,7 @@ class Manga extends API {
|
|||||||
{
|
{
|
||||||
$id = $data['id'];
|
$id = $data['id'];
|
||||||
|
|
||||||
$token = $this->container->get('auth')
|
return $this->_manga_api_call('delete', "manga_library_entries/{$id}");
|
||||||
->get_auth_token();
|
|
||||||
|
|
||||||
// Set the token cookie, with the authentication token
|
|
||||||
// from the auth class.
|
|
||||||
$cookieJar = $this->cookieJar;
|
|
||||||
$cookie_data = new SetCookie([
|
|
||||||
'Name' => 'token',
|
|
||||||
'Value' => $token,
|
|
||||||
'Domain' => 'hummingbird.me'
|
|
||||||
]);
|
|
||||||
$cookieJar->setCookie($cookie_data);
|
|
||||||
|
|
||||||
$result = $this->delete("manga_library_entries/{$id}", [
|
|
||||||
'cookies' => $cookieJar,
|
|
||||||
]);
|
|
||||||
|
|
||||||
return [
|
|
||||||
'statusCode' => $result->getStatusCode(),
|
|
||||||
'body' => $result->getBody()
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -39,6 +39,12 @@ class RoutingBase {
|
|||||||
*/
|
*/
|
||||||
protected $routes;
|
protected $routes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Route configuration options
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $route_config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
@ -48,8 +54,9 @@ class RoutingBase {
|
|||||||
{
|
{
|
||||||
$this->container = $container;
|
$this->container = $container;
|
||||||
$this->config = $container->get('config');
|
$this->config = $container->get('config');
|
||||||
$this->base_routes = $this->config->get('routes');
|
$base_routes = $this->config->get('routes');
|
||||||
$this->routes = $this->base_routes['routes'];
|
$this->routes = $base_routes['routes'];
|
||||||
|
$this->route_config = $base_routes['route_config'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -60,7 +67,7 @@ class RoutingBase {
|
|||||||
*/
|
*/
|
||||||
public function __get($key)
|
public function __get($key)
|
||||||
{
|
{
|
||||||
$routing_config = $this->base_routes['route_config'];
|
$routing_config =& $this->route_config;
|
||||||
|
|
||||||
if (array_key_exists($key, $routing_config))
|
if (array_key_exists($key, $routing_config))
|
||||||
{
|
{
|
||||||
|
@ -23,8 +23,8 @@ class Json {
|
|||||||
* Encode data in json format
|
* Encode data in json format
|
||||||
*
|
*
|
||||||
* @param mixed $data
|
* @param mixed $data
|
||||||
* @param int $options=0
|
* @param int $options
|
||||||
* @param int $depth=512
|
* @param int $depth
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public static function encode($data, $options = 0, $depth = 512)
|
public static function encode($data, $options = 0, $depth = 512)
|
||||||
|
@ -144,6 +144,10 @@ class MockBaseApiModel extends BaseApiModel {
|
|||||||
use MockInjectionTrait;
|
use MockInjectionTrait;
|
||||||
protected $base_url = 'https://httpbin.org/';
|
protected $base_url = 'https://httpbin.org/';
|
||||||
|
|
||||||
|
protected function _get_list_from_api($status)
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class TestAnimeModel extends AnimeModel {
|
class TestAnimeModel extends AnimeModel {
|
||||||
|
Loading…
Reference in New Issue
Block a user