4 * Functions for the API
\r
8 * API function wrapper: Shorten a URL
\r
11 * @return array Result of API call
\r
13 function yourls_api_action_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 unset( $return['html'] ); // in API mode, no need for our internal HTML output
\r
20 return yourls_apply_filter( 'api_result_shorturl', $return );
\r
24 * API function wrapper: Stats about links (XX top, bottom, last, rand)
\r
27 * @return array Result of API call
\r
29 function yourls_api_action_stats() {
\r
30 $filter = ( isset( $_REQUEST['filter'] ) ? $_REQUEST['filter'] : '' );
\r
31 $limit = ( isset( $_REQUEST['limit'] ) ? $_REQUEST['limit'] : '' );
\r
32 $start = ( isset( $_REQUEST['start'] ) ? $_REQUEST['start'] : '' );
\r
33 return yourls_apply_filter( 'api_result_stats', yourls_api_stats( $filter, $limit, $start ) );
\r
37 * API function wrapper: Just the global counts of shorturls and clicks
\r
40 * @return array Result of API call
\r
42 function yourls_api_action_db_stats() {
\r
43 return yourls_apply_filter( 'api_result_db_stats', yourls_api_db_stats() );
\r
47 * API function wrapper: Stats for a shorturl
\r
50 * @return array Result of API call
\r
52 function yourls_api_action_url_stats() {
\r
53 $shorturl = ( isset( $_REQUEST['shorturl'] ) ? $_REQUEST['shorturl'] : '' );
\r
54 return yourls_apply_filter( 'api_result_url_stats', yourls_api_url_stats( $shorturl ) );
\r
58 * API function wrapper: Expand a short link
\r
61 * @return array Result of API call
\r
63 function yourls_api_action_expand() {
\r
64 $shorturl = ( isset( $_REQUEST['shorturl'] ) ? $_REQUEST['shorturl'] : '' );
\r
65 return yourls_apply_filter( 'api_result_expand', yourls_api_expand( $shorturl ) );
\r
69 * API function wrapper: return version numbers
\r
72 * @return array Result of API call
\r
74 function yourls_api_action_version() {
\r
75 $return['version'] = $return['simple'] = YOURLS_VERSION;
\r
76 if( isset( $_REQUEST['db'] ) && $_REQUEST['db'] == 1 )
\r
77 $return['db_version'] = YOURLS_DB_VERSION;
\r
78 return yourls_apply_filter( 'api_result_version', $return );
\r
81 // Return API result. Dies after this
\r
82 function yourls_api_output( $mode, $return ) {
\r
83 if( isset( $return['simple'] ) ) {
\r
84 $simple = $return['simple'];
\r
85 unset( $return['simple'] );
\r
88 yourls_do_action( 'pre_api_output', $mode, $return );
\r
92 header( 'Content-type: application/javascript' );
\r
93 echo $return['callback'] . '(' . json_encode( $return ) . ')';
\r
97 header( 'Content-type: application/json' );
\r
98 echo json_encode( $return );
\r
102 header( 'Content-type: application/xml' );
\r
103 echo yourls_xml_encode( $return );
\r
108 if( isset( $simple ) )
\r
113 yourls_do_action( 'api_output', $mode, $return );
\r
118 // Return array for API stat requests
\r
119 function yourls_api_stats( $filter = 'top', $limit = 10, $start = 0 ) {
\r
120 $return = yourls_get_stats( $filter, $limit, $start );
\r
121 $return['simple'] = 'Need either XML or JSON format for stats';
\r
122 $return['message'] = 'success';
\r
123 return yourls_apply_filter( 'api_stats', $return, $filter, $limit, $start );
\r
126 // Return array for counts of shorturls and clicks
\r
127 function yourls_api_db_stats() {
\r
129 'db-stats' => yourls_get_db_stats(),
\r
130 'statusCode' => 200,
\r
131 'simple' => 'Need either XML or JSON format for stats',
\r
132 'message' => 'success',
\r
135 return yourls_apply_filter( 'api_db_stats', $return );
\r
138 // Return array for API stat requests
\r
139 function yourls_api_url_stats( $shorturl ) {
\r
140 $keyword = str_replace( YOURLS_SITE . '/' , '', $shorturl ); // accept either 'http://ozh.in/abc' or 'abc'
\r
141 $keyword = yourls_sanitize_string( $keyword );
\r
143 $return = yourls_get_link_stats( $keyword );
\r
144 $return['simple'] = 'Need either XML or JSON format for stats';
\r
145 return yourls_apply_filter( 'api_url_stats', $return, $shorturl );
\r
148 // Expand short url to long url
\r
149 function yourls_api_expand( $shorturl ) {
\r
150 $keyword = str_replace( YOURLS_SITE . '/' , '', $shorturl ); // accept either 'http://ozh.in/abc' or 'abc'
\r
151 $keyword = yourls_sanitize_string( $keyword );
\r
153 $longurl = yourls_get_keyword_longurl( $keyword );
\r
157 'keyword' => $keyword,
\r
158 'shorturl' => YOURLS_SITE . "/$keyword",
\r
159 'longurl' => $longurl,
\r
160 'simple' => $longurl,
\r
161 'message' => 'success',
\r
162 'statusCode' => 200,
\r
166 'keyword' => $keyword,
\r
167 'simple' => 'not found',
\r
168 'message' => 'Error: short URL not found',
\r
169 'errorCode' => 404,
\r
173 return yourls_apply_filter( 'api_expand', $return, $shorturl );
\r