diff --git a/Budibase/Budibase.php b/Budibase/Budibase.php new file mode 100644 index 0000000000..831e42fe9e --- /dev/null +++ b/Budibase/Budibase.php @@ -0,0 +1,68 @@ +jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set + } + + public function test() + { + $attrs = [ + "headers" => [ + "x-budibase-api-key" => $this->config->apikey + ], + ]; + $test = parent::appTest($this->url('metrics'), $attrs); + echo $test->status; + } + + public function decodeResponse($response) + { + $response = explode(PHP_EOL, $response); + $data = []; + foreach ($response as $x) { + $y = explode(' ', $x); + if (is_array($y) && count($y) == 2) { + $data[$y[0]] = $y[1]; + } + } + return $data; + } + + public function livestats() + { + $attrs = [ + "headers" => [ + "x-budibase-api-key" => $this->config->apikey + ], + ]; + $status = 'inactive'; + $res = parent::execute($this->url('metrics'), $attrs); + $info = $this->decodeResponse($res->getBody()); + + $data = [ + "total" => $info['budibase_tenant_app_count'], + "active" => $info['budibase_tenant_production_app_count'] + ]; + if ($info['budibase_quota_limit_automations'] > 0) { + $status = "active"; + } + + return parent::getLiveStats($status, $data); + } + + public function url($endpoint) + { + $api_url = parent::normaliseurl($this->config->url, true) . "api/public/v1/" . $endpoint; + return $api_url; + } +} diff --git a/Budibase/app.json b/Budibase/app.json new file mode 100644 index 0000000000..b83cebf261 --- /dev/null +++ b/Budibase/app.json @@ -0,0 +1,29 @@ +{ + "appid": "6c51d4f37f544b0327d327d1bade045a7809a4d9", + "name": "Budibase", + "website": "https://budibase.com/", + "license": "GNU General Public License v3.0 or later", + "description": "Budibase is an open-source low-code platform that saves engineers 100s of hours building forms, portals, and approval apps, securely.", + "enhanced": true, + "tile_background": "dark", + "icon": "budibase.png", + "config": { + "type": "apikey", + "stat1": { + "name": "Total Apps", + "url": ":url:api/public/v1/metrics", + "key": "budibase_tenant_app_count", + "filter": "none", + "updateOnChange": "no", + "suffix": "" + }, + "stat2": { + "name": "Active Apps", + "url": ":url:api/public/v1/metrics", + "key": "budibase_tenant_production_app_count", + "filter": "none", + "updateOnChange": "no", + "suffix": "" + } + } +} \ No newline at end of file diff --git a/Budibase/budibase.png b/Budibase/budibase.png new file mode 100644 index 0000000000..d9330eed3c Binary files /dev/null and b/Budibase/budibase.png differ diff --git a/Budibase/config.blade.php b/Budibase/config.blade.php new file mode 100644 index 0000000000..70930e3202 --- /dev/null +++ b/Budibase/config.blade.php @@ -0,0 +1,14 @@ +

{{ __('app.apps.config') }} ({{ __('app.optional') }}) @include('items.enable')

+
+
+ + {!! Form::text('config[override_url]', isset($item) ? $item->getconfig()->override_url : null, ['placeholder' => __('app.apps.override'), 'id' => 'override_url', 'class' => 'form-control']) !!} +
+
+ + {!! Form::text('config[apikey]', isset($item) ? $item->getconfig()->apikey : null, ['placeholder' => __('app.apps.apikey'), 'data-config' => 'apikey', 'class' => 'form-control config-item']) !!} +
+
+ +
+
\ No newline at end of file diff --git a/Budibase/livestats.blade.php b/Budibase/livestats.blade.php new file mode 100644 index 0000000000..c4e708a8dc --- /dev/null +++ b/Budibase/livestats.blade.php @@ -0,0 +1,10 @@ + \ No newline at end of file