Changes in api
- Api functions can define an HTTP method to use to call them. "405 Method Not Allowed" is returned on error - Api function that modify data accepts only POST as method. - A list of HTTP return code related exception is added - Api functions throw HTTP exceptions instead of return false or die() - api_call() catches HTTP exceptions and return error message with corret HTTP response code - api_format_items() returns also item activities count (# of like/dislike etc) - api/friendica/photos/list return more info about photos. xml format added. - api/friendica/photo/detail return more info, links to all sizes, no data except if 'size' parameter is passed. xml format added. - new api api/friendica/activity/<verb> and api/friendica/activity/un<verb> to add or remove like/dislike/attend status
This commit is contained in:
parent
835ad28d83
commit
6b60560ea2
5 changed files with 771 additions and 446 deletions
105
include/HTTPExceptions.php
Normal file
105
include/HTTPExceptions.php
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?php
|
||||
/**
|
||||
* Throwable exceptions to return HTTP status code
|
||||
*
|
||||
* This list of Exception has be extracted from
|
||||
* here http://racksburg.com/choosing-an-http-status-code/
|
||||
*/
|
||||
|
||||
class HTTPException extends Exception {
|
||||
var $httpcode = 200;
|
||||
var $httpdesc = "";
|
||||
public function __construct($message="", $code = 0, Exception $previous = null) {
|
||||
if ($this->httpdesc=="") {
|
||||
$this->httpdesc = preg_replace("|([a-z])([A-Z])|",'$1 $2', str_replace("Exception","",get_class($this)));
|
||||
}
|
||||
parent::__construct($message, $code, $previous);
|
||||
}
|
||||
}
|
||||
|
||||
// 4xx
|
||||
class TooManyRequestsException extends HTTPException {
|
||||
var $httpcode = 429;
|
||||
}
|
||||
|
||||
class UnauthorizedException extends HTTPException {
|
||||
var $httpcode = 401;
|
||||
}
|
||||
|
||||
class ForbiddenException extends HTTPException {
|
||||
var $httpcode = 403;
|
||||
}
|
||||
|
||||
class NotFoundException extends HTTPException {
|
||||
var $httpcode = 404;
|
||||
}
|
||||
|
||||
class GoneException extends HTTPException {
|
||||
var $httpcode = 410;
|
||||
}
|
||||
|
||||
class MethodNotAllowedException extends HTTPException {
|
||||
var $httpcode = 405;
|
||||
}
|
||||
|
||||
class NonAcceptableException extends HTTPException {
|
||||
var $httpcode = 406;
|
||||
}
|
||||
|
||||
class LenghtRequiredException extends HTTPException {
|
||||
var $httpcode = 411;
|
||||
}
|
||||
|
||||
class PreconditionFailedException extends HTTPException {
|
||||
var $httpcode = 412;
|
||||
}
|
||||
|
||||
class UnsupportedMediaTypeException extends HTTPException {
|
||||
var $httpcode = 415;
|
||||
}
|
||||
|
||||
class ExpetationFailesException extends HTTPException {
|
||||
var $httpcode = 417;
|
||||
}
|
||||
|
||||
class ConflictException extends HTTPException {
|
||||
var $httpcode = 409;
|
||||
}
|
||||
|
||||
class UnprocessableEntityException extends HTTPException {
|
||||
var $httpcode = 422;
|
||||
}
|
||||
|
||||
class ImATeapotException extends HTTPException {
|
||||
var $httpcode = 418;
|
||||
var $httpdesc = "I'm A Teapot";
|
||||
}
|
||||
|
||||
class BadRequestException extends HTTPException {
|
||||
var $httpcode = 400;
|
||||
}
|
||||
|
||||
// 5xx
|
||||
|
||||
class ServiceUnavaiableException extends HTTPException {
|
||||
var $httpcode = 503;
|
||||
}
|
||||
|
||||
class BadGatewayException extends HTTPException {
|
||||
var $httpcode = 502;
|
||||
}
|
||||
|
||||
class GatewayTimeoutException extends HTTPException {
|
||||
var $httpcode = 504;
|
||||
}
|
||||
|
||||
class NotImplementedException extends HTTPException {
|
||||
var $httpcode = 501;
|
||||
}
|
||||
|
||||
class InternalServerErrorException extends HTTPException {
|
||||
var $httpcode = 500;
|
||||
}
|
||||
|
||||
|
||||
|
581
include/api.php
581
include/api.php
File diff suppressed because it is too large
Load diff
21
view/templates/api_photo_detail_xml.tpl
Normal file
21
view/templates/api_photo_detail_xml.tpl
Normal file
|
@ -0,0 +1,21 @@
|
|||
|
||||
<photo>
|
||||
<id>{{$photo.id}}</id>
|
||||
<created>{{$photo.created}}</created>
|
||||
<edited>{{$photo.edited}}</edited>
|
||||
<title>{{$photo.title}}</title>
|
||||
<desc>{{$photo.desc}}</desc>
|
||||
<album>{{$photo.album}}</album>
|
||||
<filename>{{$photo.filename}}</filename>
|
||||
<type>{{$photo.type}}</type>
|
||||
<height>{{$photo.height}}</height>
|
||||
<width>{{$photo.width}}</width>
|
||||
<datasize>{{$photo.datasize}}</datasize>
|
||||
<profile>1</profile>
|
||||
<url>{{foreach $photo.link as $scale => $url}}
|
||||
<link type="{{$photo.type}}" scale="{{$scale}}" href="{{$url}}" />
|
||||
{{/foreach}}</url>
|
||||
{{if $photo.data}}
|
||||
<data encode="base64">{{$photo.data}}</data>
|
||||
{{/if}}
|
||||
</photo>
|
5
view/templates/api_photos_list_xml.tpl
Normal file
5
view/templates/api_photos_list_xml.tpl
Normal file
|
@ -0,0 +1,5 @@
|
|||
|
||||
<photos type="array">
|
||||
{{foreach $photos as $photo}}
|
||||
<photo id="{{$photo.id}}" album="{{$photo.album}}" filename="{{$photo.filename}}" type="{{$photo.type}}">{{$photo.thumb}}</photo>
|
||||
{{/foreach}}</photos>
|
|
@ -1,5 +1,7 @@
|
|||
|
||||
<statuses type="array" xmlns:statusnet="http://status.net/schema/api/1/">
|
||||
<statuses type="array"
|
||||
xmlns:statusnet="http://status.net/schema/api/1/"
|
||||
xmlns:friendica="http://friendi.ca/schema/api/1/">
|
||||
{{foreach $statuses as $status}} <status>
|
||||
<text>{{$status.text}}</text>
|
||||
<truncated>{{$status.truncated}}</truncated>
|
||||
|
@ -17,5 +19,8 @@
|
|||
<coordinates>{{$status.coordinates}}</coordinates>
|
||||
<place>{{$status.place}}</place>
|
||||
<contributors>{{$status.contributors}}</contributors>
|
||||
<friendica:activities>{{foreach $status.friendica_activities as $k=>$v}}
|
||||
<friendica:{{$k}}>{{$v}}</friendica:{{$k}}>
|
||||
{{/foreach}}</friendica:activities>
|
||||
</status>
|
||||
{{/foreach}}</statuses>
|
||||
|
|
Loading…
Reference in a new issue