Add demo task, and declare composer info

This commit is contained in:
Lance Edgar 2023-05-15 17:24:31 -05:00
parent b832fc3604
commit 7e0de111c8
4 changed files with 7090 additions and 27 deletions

26
composer.json Normal file
View file

@ -0,0 +1,26 @@
{
"name": "rattail/corepos-demo-poser",
"description": "Poser demo for CORE-POS",
"license": "GPL-3.0-or-later",
"authors": [
{
"name": "Lance Edgar",
"email": "lance@edbob.org"
}
],
"require": {
"wikimedia/composer-merge-plugin": "^2.1",
"rattail/posterior": "^0.1.1"
},
"extra": {
"merge-plugin": {
"require": [
"../IS4C/composer.json"
]
}
},
"config": {
"component-dir": "../IS4C/fannie/src/javascript/composer-components",
"vendor-dir": "../IS4C/vendor"
}
}

6987
composer.lock generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,33 +1,29 @@
<?php
/*******************************************************************************
Copyright 2014 Whole Foods Co-op
This file is part of IT CORE.
IT CORE is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
IT CORE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
in the file license.txt along with IT CORE; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*********************************************************************************/
/**
*/
class PoserDemo extends COREPOS\Fannie\API\FanniePlugin
{
public $plugin_description = 'Plugin to demo Poser customization';
public $plugin_settings = array(
'Foo' => array('default'=>'Bar', 'label'=>'Foo',
'description'=>'Some important foo-related setting'),
);
public $plugin_settings = [
'PoserDemoTailboneAPIURL' => [
'label' => 'Tailbone API URL',
'description' => 'Base URL for Tailbone API (usually ends with /api)',
],
'PoserDemoTailboneAPIToken' => [
'label' => 'Tailbone API Token',
'description' => 'User auth token for use with Tailbone API',
],
'PoserDemoTailboneAPIVerifySSL' => [
'label' => 'Verify SSL',
'description' => 'Validate SSL cert used by Tailbone API?',
'options' => [
"Yes, validate the SSL cert" => 'true',
"No, do not validate the SSL cert (SHOULD ONLY BE USED FOR TESTING!)" => 'false',
],
'default'=>'true',
],
];
}

View file

@ -0,0 +1,54 @@
<?php
class PoserDemoTask extends FannieTask
{
public $name = 'Poser Demo';
public $description = 'Demo command that tries to connect to
Tailbone API, and reports success/failure.
NOTE: This task is provided by the PoserDemo plugin;
please see that for settings to control behavior.';
public $default_schedule = array(
'min' => 0,
'hour' => 5,
'day' => '*',
'month' => '*',
'weekday' => '*',
);
public function run()
{
$this->cronMsg("hello from PoserDemo!", FannieLogger::INFO);
$settings = $this->config->get('PLUGIN_SETTINGS');
$url = $settings['PoserDemoTailboneAPIURL'];
if (!$url) {
$this->cronMsg("must define the Tailbone API URL", FannieLogger::ERROR);
return;
}
$token = $settings['PoserDemoTailboneAPIToken'];
if (!$token) {
$this->cronMsg("must define the Tailbone API token", FannieLogger::ERROR);
return;
}
$verifySSL = $settings['PoserDemoTailboneAPIVerifySSL'] === 'false' ? false : true;
$posterior = new \Rattail\Posterior\Client($url, $token, $verifySSL);
try {
$response = $posterior->get('/about');
} catch (Exception $e) {
$this->cronMsg($e, FannieLogger::ERROR);
return;
}
$body = $response->getBody();
$this->cronMsg("response body was: $body", FannieLogger::INFO);
print("$body\n");
}
}