jenkins-bot has submitted this change and it was merged.

Change subject: RESTBase: hook up Mathoid in RESTBase
......................................................................


RESTBase: hook up Mathoid in RESTBase

This PS adds the needed config changes to hook up Mathoid in RESTBase
for MW-Vagrant users.

Bug: T102030
Change-Id: Ibc53e1ac64942905f1c820dc5e3e11c90b646470
---
M puppet/modules/restbase/manifests/init.pp
M puppet/modules/restbase/templates/config.yaml.erb
2 files changed, 129 insertions(+), 25 deletions(-)

Approvals:
  BryanDavis: Looks good to me, approved
  Physikerwelt: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/puppet/modules/restbase/manifests/init.pp 
b/puppet/modules/restbase/manifests/init.pp
index eab2bcf..cf2c138 100644
--- a/puppet/modules/restbase/manifests/init.pp
+++ b/puppet/modules/restbase/manifests/init.pp
@@ -31,6 +31,11 @@
         default => 11042,
     }
 
+    $mathoid_port = defined(Class['mathoid']) ? {
+        true    => $::mathoid::port,
+        default => 10042,
+    }
+
     file { $dbdir:
         ensure => directory,
         owner  => 'www-data',
diff --git a/puppet/modules/restbase/templates/config.yaml.erb 
b/puppet/modules/restbase/templates/config.yaml.erb
index dc3f0b4..c3e4cec 100644
--- a/puppet/modules/restbase/templates/config.yaml.erb
+++ b/puppet/modules/restbase/templates/config.yaml.erb
@@ -4,7 +4,7 @@
   wmf-content-1.0.0: &wp/content/1.0.0
     swagger: '2.0'
     # swagger options, overriding the shared ones from the merged specs (?)
-    info:
+    info: &wp/content-info/1.0.0
       version: 1.0.0-beta
       title: Wikimedia REST API
       description: >
@@ -35,8 +35,9 @@
       - mediawiki/v1/content
       - mediawiki/v1/graphoid
       - mediawiki/v1/mobileapps
+      - media/v1/mathoid
     # - mediawiki/v1/revision-scoring
-    securityDefinitions:
+    securityDefinitions: &wp/content-security/1.0.0
       mediawiki_auth:
         description: Checks permissions using MW api
         type: apiKey
@@ -59,7 +60,7 @@
       title: Default MediaWiki sys API module
       version: 1.0.0
     paths:
-      /{module:table}:
+      /{module:table}: &wp/sys/table
         x-modules:
           # There can be multiple modules too per stanza, as long as the
           # exported symbols don't conflict. The operationIds from the spec
@@ -73,19 +74,19 @@
 
       /{module:page_revisions}: &wp/sys/page_revisions
         x-modules:
-            - name: page_revisions
-              version: 1.0.0
-              type: file
-
-      /{module:key_rev_value}: &wp/sys/key_rev_value
-        x-modules:
-          - name: key_rev_value
+          - name: page_revisions
             version: 1.0.0
             type: file
 
       /{module:key_value}: &wp/sys/key_value
         x-modules:
           - name: key_value
+            version: 1.0.0
+            type: file
+
+      /{module:key_rev_value}: &wp/sys/key_rev_value
+        x-modules:
+          - name: key_rev_value
             version: 1.0.0
             type: file
 
@@ -163,21 +164,105 @@
                       request:
                         uri: 
http://appservice.wmflabs.org/{domain}/v1/page/mobile-text/{title}
 
-#      /{module:revscore}:
-#        title: Simple revscore service wrapper
-#        x-modules:
-#          # Generic revision service interface; Expects requests of the form
-#          # /{title}/{revision}.
-#          # Specific interface documentation (content types etc) at public
-#          # entry point, although we might also want to enforce them
-#          # internally.
-#          - name: restbase-mod-service
-#            version: 1.0.0 # simple service module, to be shared
-#            options:
-#              storage:
-#                uri: 
/{domain}/sys/key_rev_value/revscore.scores/{title}/{revision}
-#              service:
-#                uri: http://revscore.wikimedia.org/{domain}/{title}/{revision}
+
+  global-content: &gb/content/1.0.0
+    swagger: '2.0'
+    info: *wp/content-info/1.0.0
+    securityDefinitions: *wp/content-security/1.0.0
+    x-subspecs:
+      - media/v1/mathoid
+
+
+  global-sys: &gb/sys/1.0.0
+    info:
+      title: global domain sys API module
+      version: 1.0.0
+    paths:
+      /{module:table}: *wp/sys/table
+      /{module:key_value}: *wp/sys/key_value
+      /{module:post_data}: *wp/sys/post_data
+      /{module:mathoid}/v1/request/{format}:
+        post:
+          x-request-handler:
+            - store:
+                request:
+                  method: put
+                  uri: /{domain}/sys/post_data/mathoid.request/
+                  body:
+                    q: '{$.request.body.q}'
+                    type: '{$$.default($.request.body.type, "tex")}'
+            - handle_req:
+                request:
+                  method: post
+                  uri: /{domain}/sys/mathoid/v1/handler/{format}
+                  headers:
+                    cache-control: '{cache-control}'
+                    x-resource-location: '{$.store.body}'
+                  body:
+                    q: '{$.request.body.q}'
+                    type: '{$$.default($.request.body.type, "tex")}'
+      /{module:mathoid}/v1/request/{format}/{hash}:
+        get:
+          x-setup-handler:
+            - init:
+                uri: /{domain}/sys/post_data/mathoid.request
+          x-request-handler:
+            - get_from_storage:
+                request:
+                  method: get
+                  uri: /{domain}/sys/post_data/mathoid.request/{hash}
+            - handle_req:
+                request:
+                  method: post
+                  uri: /{domain}/sys/mathoid/v1/handler/{format}
+                  headers:
+                    cache-control: '{cache-control}'
+                    x-resource-location: '{$.request.params.hash}'
+                  body: '{$.get_from_storage.body}'
+      /{module:mathoid}/v1/handler/{format}:
+        post:
+          x-setup-handler:
+            - init:
+                uri: /{domain}/sys/key_value/mathoid.data
+                body:
+                  keyType: string
+                  valueType: json
+          x-request-handler:
+            - check_storage:
+                request:
+                  method: get
+                  uri: 
/{domain}/sys/key_value/mathoid.data/{$.request.headers.x-resource-location}
+                  headers:
+                    cache-control: '{cache-control}'
+                return_if:
+                  status: '2xx'
+                return:
+                  status: 200
+                  headers: 
'{$$.merge($.check_storage.body.data[$.request.params.format].headers,$.check_storage.body.headers)}'
+                  body: 
'{$.check_storage.body.data[$.request.params.format].body}'
+                catch:
+                  status: 404
+            - mathoid:
+                request:
+                  method: post
+                  uri: http://localhost:<%= @mathoid_port %>/complete
+                  body:
+                    q: '{$.request.body.q}'
+                    type: '{$.request.body.type}'
+            - store:
+                request:
+                  method: put
+                  uri: 
/{domain}/sys/key_value/mathoid.data/{$.request.headers.x-resource-location}
+                  headers:
+                    content-type: application/json
+                  body:
+                    headers: '{$$.merge($.mathoid.headers, 
{"x-resource-location": $.request.headers.x-resource-location})}'
+                    data: '{$.mathoid.body}'
+                return:
+                  status: 200
+                  headers: 
'{$$.merge($.mathoid.body[$.request.params.format].headers,$$.merge($.mathoid.headers,
 {"x-resource-location": $.request.headers.x-resource-location}))}'
+                  body: '{$.mathoid.body[$.request.params.format].body}'
+
 
   wp-default-1.0.0: &wp/default/1.0.0
     x-subspecs:
@@ -189,11 +274,25 @@
             x-subspec: *wp/sys/1.0.0
 
 
+  global-default-1.0.0: &gb/default/1.0.0
+    x-subspecs:
+      - paths:
+          /{api:v1}:
+            x-subspec: *gb/content/1.0.0
+      - paths:
+          /{api:sys}:
+            x-subspec: *gb/sys/1.0.0
+
+
+# Swagger spec root.
 spec: &spec
   title: "The RESTBase root"
   # Some more general RESTBase info
   paths:
+    # locally-exposed domain
     /{domain:<%= @domain %>}: *wp/default/1.0.0
+    # global domain
+    /{domain:wikimedia.org}: *gb/default/1.0.0
 
 salt: secret
 default_page_size: 100

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ibc53e1ac64942905f1c820dc5e3e11c90b646470
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Mobrovac <mobro...@wikimedia.org>
Gerrit-Reviewer: BryanDavis <bda...@wikimedia.org>
Gerrit-Reviewer: Dduvall <dduv...@wikimedia.org>
Gerrit-Reviewer: Mobrovac <mobro...@wikimedia.org>
Gerrit-Reviewer: Physikerwelt <w...@physikerwelt.de>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to