summaryrefslogtreecommitdiff
path: root/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/Parser.php
diff options
context:
space:
mode:
Diffstat (limited to 'bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/Parser.php')
-rw-r--r--bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/Parser.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/Parser.php b/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/Parser.php
new file mode 100644
index 00000000..da83e39e
--- /dev/null
+++ b/bin/reevotech/vendor/addwiki/mediawiki-api/src/Service/Parser.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace Mediawiki\Api\Service;
+
+use GuzzleHttp\Promise\PromiseInterface;
+use Mediawiki\Api\SimpleRequest;
+use Mediawiki\DataModel\PageIdentifier;
+
+/**
+ * @access private
+ *
+ * @author Addshore
+ */
+class Parser extends Service {
+
+ /**
+ * @param PageIdentifier $pageIdentifier
+ *
+ * @return array the parse result (raw from the api)
+ */
+ public function parsePage( PageIdentifier $pageIdentifier ) {
+ return $this->parsePageAsync( $pageIdentifier )->wait();
+ }
+
+ /**
+ * @param PageIdentifier $pageIdentifier
+ *
+ * @return PromiseInterface of array the parse result (raw from the api)
+ */
+ public function parsePageAsync( PageIdentifier $pageIdentifier ) {
+ $params = [];
+ if ( $pageIdentifier->getId() !== null ) {
+ $params['pageid'] = $pageIdentifier->getId();
+ } elseif ( $pageIdentifier->getTitle() !== null ) {
+ $params['page'] = $pageIdentifier->getTitle()->getText();
+ } else {
+ throw new \RuntimeException( 'No way to identify page' );
+ }
+
+ $promise = $this->api->getRequestAsync( new SimpleRequest( 'parse', $params ) );
+
+ return $promise->then( function ( $result ) {
+ return $result['parse'];
+ } );
+ }
+
+}