Selaa lähdekoodia

Loading the version now

Andy Baugh 5 vuotta sitten
vanhempi
sitoutus
b51e70e5f5
3 muutettua tiedostoa jossa 53 lisäystä ja 3 poistoa
  1. 26 2
      cgi/api.cgi
  2. 15 1
      js/pgupgrade.js
  3. 12 0
      lib/Troglodyne/API/Postgres.pm

+ 26 - 2
cgi/api.cgi

@@ -18,14 +18,38 @@ sub run {
     # Process the args
     my $args = Troglodyne::CGI::get_args();
 
+    # XXX Validation plz
+
+    # Load route code
+    my $namespace = "Troglodyne::API::$args->{'module'}";
+    my ( $loaded, $err, $coderef );
+    {
+        local $@;
+        $loaded = eval {
+            Cpanel::LoadModule::Custom::load_perl_module($namespace);
+        };
+        $err = $@;
+        $coderef = $namespace->can($args->{'function'});
+    }
+
     # Get back the datastruct from the called module.
+    # Yeah, yeah, I know. String eval. XXX
     my $ret = {
         'metadata' => {
             'input_args' => $args,
         },
-        'data' => {},
-        'result' => 1,
     };
+    if( $loaded && $coderef ) {
+        my $data = $coderef->();
+        $ret->{'data'} = $data;
+        $ret->{'result'} = 1;
+    } elsif( !$coderef ) {
+        $ret->{'error'} = "No such function '$args->{'function'}' in $namespace";
+        $ret->{'result'} = 0;
+    } else {
+        $ret->{'error'} = $err;
+        $ret->{'result'} = 0;
+    }
 
     # Emit the JSON
     print "Content-type: application/json\r\n\r\n";

+ 15 - 1
js/pgupgrade.js

@@ -1 +1,15 @@
-console.log("Loaded");
+function versionHandler () {
+    console.log(this.responseText);
+    var obj = JSON.parse(this.responseText);
+    console.log(obj);
+    if(obj.result === 1) {
+        document.getElementById('psqlVersion').innerHTML = obj.data.version.major + '.' + obj.data.version.minor;
+    } else {
+        console.log(obj.error);
+    }
+}
+
+var oReq = new XMLHttpRequest();
+oReq.addEventListener("load", versionHandler);
+oReq.open("GET", "api.cgi?module=Postgres&function=get_server_version");
+oReq.send();

+ 12 - 0
lib/Troglodyne/API/Postgres.pm

@@ -0,0 +1,12 @@
+package Troglodyne::API::Postgres;
+
+use strict;
+use warnings;
+
+sub get_server_version {
+    require Cpanel::PostgresUtils;
+    my @ver_arr = ( Cpanel::PostgresUtils::get_version() );
+    return { 'version' => { 'major' => $ver_arr[0], 'minor' => $ver_arr[1] } };
+}
+
+1;