]> CyberLeo.Net >> Repos - Github/YOURLS.git/blob - yourls-api.php
Allow registering of custom API actions. Weeeeeeee.
[Github/YOURLS.git] / yourls-api.php
1 <?php\r
2 define( 'YOURLS_API', true );\r
3 require_once( dirname( __FILE__ ) . '/includes/load-yourls.php' );\r
4 yourls_maybe_require_auth();\r
5 \r
6 $action = ( isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : null );\r
7 \r
8 yourls_do_action( 'api', $action );\r
9         \r
10 switch( $action ) {\r
11 \r
12         // Shorten a URL\r
13         case 'shorturl':\r
14                 $url = ( isset( $_REQUEST['url'] ) ? $_REQUEST['url'] : '' );\r
15                 $keyword = ( isset( $_REQUEST['keyword'] ) ? $_REQUEST['keyword'] : '' );\r
16                 $title = ( isset( $_REQUEST['title'] ) ? $_REQUEST['title'] : '' );\r
17                 $return = yourls_add_new_link( $url, $keyword, $title );\r
18                 $return['simple'] = ( isset( $return['shorturl'] ) ? $return['shorturl'] : '' ); // This one will be used in case output mode is 'simple'\r
19                 $return['callback'] = ( isset( $_REQUEST['callback'] ) ? $_REQUEST['callback'] : '' );\r
20                 unset( $return['html'] ); // in API mode, no need for our internal HTML output\r
21                 break;\r
22         \r
23         // Stats about links (XX top, bottom, last, rand)\r
24         case 'stats':\r
25                 $filter = ( isset( $_REQUEST['filter'] ) ? $_REQUEST['filter'] : '' );\r
26                 $limit = ( isset( $_REQUEST['limit'] ) ? $_REQUEST['limit'] : '' );\r
27                 $start = ( isset( $_REQUEST['start'] ) ? $_REQUEST['start'] : '' );\r
28                 $return = yourls_api_stats( $filter, $limit, $start );\r
29                 $return['callback'] = $_REQUEST['callback'];\r
30                 break;\r
31         \r
32         // Just the global counts of shorturls and clicks\r
33         case "db-stats":\r
34                 $return = yourls_api_db_stats();\r
35                 $return['callback'] = $_REQUEST['callback'];\r
36                 break;\r
37 \r
38         // Stats for a shorturl\r
39         case 'url-stats':\r
40                 $shorturl = ( isset( $_REQUEST['shorturl'] ) ? $_REQUEST['shorturl'] : '' );\r
41                 $return = yourls_api_url_stats( $shorturl );\r
42                 $return['callback'] = $_REQUEST['callback'];\r
43                 break;\r
44 \r
45         // Expand a short link\r
46         case 'expand':\r
47                 $shorturl = ( isset( $_REQUEST['shorturl'] ) ? $_REQUEST['shorturl'] : '' );\r
48                 $return = yourls_api_expand( $shorturl );\r
49                 $return['callback'] = $_REQUEST['callback'];\r
50                 break;\r
51         \r
52         // Unknown action parameter\r
53         default:\r
54                 // Check if we have a custom action, return default otherwise\r
55                 $return = yourls_apply_filter( 'api_action_' . $action, false );\r
56                 if ( false === $return ) {\r
57                         $return = array(\r
58                                 'errorCode' => 400,\r
59                                 'message'   => 'Unknown or missing "action" parameter',\r
60                                 'simple'    => 'Unknown or missing "action" parameter',\r
61                         );\r
62                 }\r
63 }\r
64 \r
65 $format = ( isset( $_REQUEST['format'] ) ? $_REQUEST['format'] : 'xml' );\r
66 \r
67 yourls_api_output( $format, $return );\r
68 \r
69 die();