API: Forwards-compatibility for ApiTokens
authorBrad Jorsch <bjorsch@wikimedia.org>
Wed, 4 Nov 2015 20:31:19 +0000 (15:31 -0500)
committerBrad Jorsch <bjorsch@wikimedia.org>
Wed, 4 Nov 2015 20:31:19 +0000 (15:31 -0500)
To make it easier for stuff to transition, allow action=tokens to return
the new types that action=query&meta=tokens supports.

Change-Id: I83887e555d54978b392933b4a3f6dada7ed00793

includes/api/ApiTokens.php

index 4d7fc5a..f92526d 100644 (file)
@@ -73,6 +73,19 @@ class ApiTokens extends ApiBase {
                        $types[$name] = array( 'ApiQueryInfo', 'get' . ucfirst( $name ) . 'Token' );
                }
                Hooks::run( 'ApiTokensGetTokenTypes', array( &$types ) );
+
+               // For forwards-compat, copy any token types from ApiQueryTokens that
+               // we don't already have something for.
+               $user = $this->getUser();
+               $request = $this->getRequest();
+               foreach ( ApiQueryTokens::getTokenTypeSalts() as $name => $salt ) {
+                       if ( !isset( $types[$name] ) ) {
+                               $types[$name] = function () use ( $salt, $user, $request ) {
+                                       return $user->getEditToken( $salt, $request );
+                               };
+                       }
+               }
+
                ksort( $types );
 
                return $types;