Legoktm has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/225224

Change subject: [WIP] mediawiki.api: Make it easy to set the Api-user-agent 
header
......................................................................

[WIP] mediawiki.api: Make it easy to set the Api-user-agent header

The API supports a custom 'Api-user-agent' header for situations when
the 'User-agent' header cannot be overridden, like in browsers.

This makes it easier for various modules and gadgets to set this header:

  var api = new mw.Api( { useragent: 'my.cool.module' } );

Compared to:
  var api = new mw.Api( {
    ajax: {
      headers: {
        'Api-user-agent': 'my.cool.module'
      }
    }
  } );

which will make the entries in the ApiFeatureUsage log more useful.

Change-Id: I28bbe751a671dbb8469f392fff1392eb35f17c3e
---
M resources/src/mediawiki.api/mediawiki.api.js
1 file changed, 16 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/24/225224/1

diff --git a/resources/src/mediawiki.api/mediawiki.api.js 
b/resources/src/mediawiki.api/mediawiki.api.js
index 0b57907..1cd9adc 100644
--- a/resources/src/mediawiki.api/mediawiki.api.js
+++ b/resources/src/mediawiki.api/mediawiki.api.js
@@ -17,8 +17,15 @@
 
                                timeout: 30 * 1000, // 30 seconds
 
-                               dataType: 'json'
-                       }
+                               dataType: 'json',
+
+                               headers: {}
+                       },
+
+                       // Will be set as the 'Api-user-agent' header
+                       // Should be set to something that will make it easy to 
identify
+                       // the caller
+                       useragent: 'mediawiki.api'
                },
 
                // Keyed by ajax url and symbolic name for the individual 
request
@@ -78,6 +85,13 @@
 
                options.parameters = $.extend( {}, defaultOptions.parameters, 
options.parameters );
                options.ajax = $.extend( {}, defaultOptions.ajax, options.ajax 
);
+               if ( !options.ajax.headers['Api-user-agent'] ) {
+                       if ( options.useragent && 
!/^[!#$%&'*+\-.0-9A-Za-z^_`|~]+$/.test( options.useragent ) ) {
+                               // FIXME this regex doesn't allow spaces
+                               throw new Error( 'Invalid useragent provided, 
only 0-9, A-z, !#$%&\'*+-.^_|~` allowed' );
+                       }
+                       options.ajax.headers['Api-user-agent'] = 
options.useragent || defaultOptions.useragent;
+               }
 
                this.defaults = options;
        };

-- 
To view, visit https://gerrit.wikimedia.org/r/225224
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I28bbe751a671dbb8469f392fff1392eb35f17c3e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Legoktm <legoktm.wikipe...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to