Legoktm has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/394407 )
Change subject: [WIP] Use PoolCounter to rate limit requests to the ORES service
......................................................................
[WIP] Use PoolCounter to rate limit requests to the ORES service
Change-Id: Id7a58e9ef0d136a86bde7902f795cda6d9a14721
---
M includes/Api.php
1 file changed, 31 insertions(+), 4 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ORES
refs/changes/07/394407/1
diff --git a/includes/Api.php b/includes/Api.php
index 7543d1d..e64ce11 100644
--- a/includes/Api.php
+++ b/includes/Api.php
@@ -19,8 +19,10 @@
use FormatJson;
use MediaWiki\Logger\LoggerFactory;
use MWHttpRequest;
+use PoolCounterWorkViaCallback;
use RequestContext;
use RuntimeException;
+use Status;
use WebRequest;
/**
@@ -88,14 +90,39 @@
$url = $this->getUrl();
$params['format'] = 'json';
$url = wfAppendQuery( $url, $params );
- $logger->debug( "Requesting: {$url}" );
- $req = MWHttpRequest::factory( $url,
$this->getMWHttpRequestOptions(), __METHOD__ );
- $status = $req->execute();
+ $options = $this->getMWHttpRequestOptions();
+ $work = new PoolCounterWorkViaCallback(
+ 'ORES',
+ sha1( $url ),
+ [
+ 'doWork' => function() use ( $url, $options,
$logger ) {
+ $logger->debug( "Requesting: {$url}" );
+ $req = MWHttpRequest::factory(
+ $url,
+ $options,
+ __METHOD__
+ );
+ $status = $req->execute();
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+
+ return Status::newGood(
$req->getContent() );
+ },
+ 'error' => function( Status $status ) {
+ // Pass through
+ return $status;
+ },
+ ]
+ );
+
+ /** @var Status $status */
+ $status = $work->execute();
if ( !$status->isOK() ) {
throw new RuntimeException( "Failed to make ORES
request to [{$url}], "
. $status->getMessage()->text() );
}
- $json = $req->getContent();
+ $json = $status->getValue();
$logger->debug( "Raw response: {$json}" );
$data = FormatJson::decode( $json, true );
if ( !$data || !empty( $data['error'] ) ) {
--
To view, visit https://gerrit.wikimedia.org/r/394407
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id7a58e9ef0d136a86bde7902f795cda6d9a14721
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ORES
Gerrit-Branch: master
Gerrit-Owner: Legoktm <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits