Get auth key function

parent 3b2d3832
Βιβλιοθήκη και πρόγραμμα κατανάλωσης
====================================
# Οδηγίες
Αντιγράψτε το αρχείο `settings.php.dist` σε ένα νέο αρχείο `settings.php` και
τροποποιήστε αναλόγως, για παράδειγμα εισάγοντας το όνομα χρήστη που σας έχει
αποδοθεί.
# Πρόγραμμα επίδειξης
Για την επίδειξη των διαθέσιμων λειτουργιών έχει αναπτυχθεί πρόγραμμα
[index.php](index.php) που μπορείτε να εκτελέσετε από τη γραμμή εντολών.
Το πρόγραμμα δέχεται τις παρακάτω παραμέτρους:
```
Χρήση: index.php [--list] [--listshow] [--send <file>] [--show <hashid>] [--get <hashid>] [--save <hashid>]
list: λίστα hashids των εγγράφων
listshow: λίστα αρχείων
send <file>: καταχώρηση πρωτοκόλλου με αποστολή του αρχείου file
show <hash>: αναλυτικές πληροφορίες αρχείου με δεδομένο hashid
get <hash>: λήψη αρχείου με δεδομένο hashid
save <hash>: λήψη και αποθήκευση αρχείου με δεδομένο hashid
στον τρέχοντα φάκελο και με το όνομα αρχείου που επιστρέφεται
```
<?php
// barebone app - autoload classes from src/ dir
spl_autoload_register(function ($class_name) {
$class_name_parts = explode('\\', $class_name);
$class_filename = __DIR__ . '/src/' . end($class_name_parts) . '.php';
if (file_exists($class_filename)) {
include $class_filename;
if (class_exists($class_name)) {
return true;
}
}
return false;
});
use Gr\Gov\Minedu\Osteam\App;
$settings = require(__DIR__ . '/settings.php');
$app = new App($settings);
$app->setDebug(true);
/**
* Λήψη παραμέτρων καθορισμού λειτουργίας από τη γραμμή εντολών
*/
$options = getopt('', ['send:', 'list', 'listshow', 'show:', 'get:', 'save:']);
$send = isset($options['send']);
$list = isset($options['list']) || isset($options['listshow']);
$listdetails = isset($options['listshow']);
$show = isset($options['show']);
$get = isset($options['get']) || isset($options['save']);
$save = isset($options['save']);
/**
* Έλεγχος παραμέτρων
*/
if (!$send && !$list && !$show && !$get) {
echo "Χρήση: {$argv[0]} [--list] [--listshow] [--send <file>] [--show <hashid>] [--get <hashid>] [--save <hashid>]", PHP_EOL,
" list: λίστα hashids των εγγράφων", PHP_EOL,
" listshow: λίστα αρχείων", PHP_EOL,
" send <file>: καταχώρηση πρωτοκόλλου με αποστολή του αρχείου file", PHP_EOL,
" show <hash>: αναλυτικές πληροφορίες αρχείου με δεδομένο hashid", PHP_EOL,
" get <hash>: λήψη αρχείου με δεδομένο hashid", PHP_EOL,
" save <hash>: λήψη και αποθήκευση αρχείου με δεδομένο hashid", PHP_EOL,
" στον τρέχοντα φάκελο και με το όνομα αρχείου που επιστρέφεται", PHP_EOL,
exit(0);
}
if ($send) {
echo "Έλεγχος για το αρχείο {$options['send']}... ";
if (is_readable($options['send'])) {
$file = base64_encode(file_get_contents($options['send']));
if ($file === false) {
echo PHP_EOL, "ΛΑΘΟΣ: Αδυναμία κωδικοποίησης του αρχείου.", PHP_EOL;
}
echo "OK", PHP_EOL;
} else {
echo PHP_EOL, "ΛΑΘΟΣ: Το αρχείο δεν είναι αναγνώσιμο.", PHP_EOL;
exit(-1);
}
}
/**
* If any work is to be done, an api key is required
*/
echo "Ανάκτηση API key...", PHP_EOL;
try {
$apikey = $app->getApiKey();
echo "Το API key είναι: ", $apikey, PHP_EOL;
} catch (\Exception $e) {
echo 'ΛΑΘΟΣ: Αδυναμία ανάκτησης API key. ', PHP_EOL, $e->getMessage(), PHP_EOL;
exit(-1);
}
echo "Done.", PHP_EOL;
exit(0);
<?php
return [
// username and password to authenticate
'username' => 'test',
'password' => '123456',
// sender id for test lookups
'sender_id' => 100000001
];
<?php
//
namespace Gr\Gov\Minedu\Osteam;
use Gr\Gov\Minedu\Osteam\Client;
/**
* Description of app
*
* @author spapad
*/
class App
{
private $client = null;
private $_settings = [];
private $_debug = false;
/**
*
* @param array $settings is an array of configuration parameters
*/
function __construct($settings = [])
{
$this->_settings = array_merge($this->_settings, $settings);
$this->client = new Client();
}
protected function setting($name)
{
return (isset($this->_settings["$name"]) ?
$this->_settings["$name"] :
null);
}
/**
*
* @return string The api key
* @throws \Swagger\Client\ApiException
*/
public function getApiKey()
{
// debug?
$payload = json_encode([
'username' => $this->setting('username'),
'password' => $this->setting('password')
]);
$response = json_decode($this->client->pauth($payload));
return $response->apiKey;
}
public function searchDocuments($apikey = null)
{
}
public function getDocData($hashid, $apikey = null)
{
}
public function submit($submission_data, $apikey = null)
{
}
public function getPdf($hashid, $apikey = null)
{
}
public function savePdf($hashid, $apikey = null)
{
}
/**
* Try to return the object fields in a hash array
*
* @param object $resultobj The object
* @return type
*/
public function apiResultObjAsArray($resultobj)
{
$result = [];
if (method_exists($resultobj, 'getters')) {
$getters = $resultobj->getters();
foreach ($getters as $property => $callfunc) {
$result[$property] = $resultobj->$callfunc();
}
}
return $result;
}
public function setDebug($debug = true)
{
$this->_debug = ($debug === true);
return;
}
}
<?php
/*
*
*/
namespace Gr\Gov\Minedu\Osteam;
use Exception;
/**
* Description of Client
*
* @author spapad
*/
class Client
{
private $_debug = false;
private $_settings = [
'base_uri' => 'https://protocoltest.minedu.gov.gr:443/openpapyros/api'
];
public function __construct($settings = [])
{
$this->_settings = array_merge($this->_settings, $settings);
}
public function pauth($payload)
{
$result = $this->put("{$this->_settings['base_uri']}/pauthenticate/pauth", $payload, [
"Content-Type: application/json",
"Accept: application/json",
]
);
return $result;
}
protected function setCommonCurlOptions($ch, $uri, $headers)
{
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, "OSTEAM barebone php client");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
if ($this->_debug === true) {
curl_setopt($ch, CURLOPT_VERBOSE, true);
}
}
public function put($uri, $payload, $headers = [])
{
$ch = curl_init();
$this->setCommonCurlOptions($ch, $uri, $headers);
// curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
if (curl_errno($ch)) {
throw new Exception("Λάθος κατά την κλήση του {$uri}. Curl error: " . curl_error($ch) . " Curl info: ", var_export(curl_getinfo($ch), true));
}
if (intval(($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) / 100) != 2) {
// πραγματοποιήθηκε κλήση αλλά δεν ήταν "επιτυχής"
throw new Exception("Αποτυχημένη κλήση. HTTP STATUS {$http_code}. Η απάντηση ήταν: {$result}", $http_code);
}
curl_close($ch);
return $result;
}
public function post($uri, $payload, $headers = [])
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo "Error posting to {$uri}. Curl error: " . curl_error($ch) . " Curl info: ", var_export(curl_getinfo($ch), true);
if (curl_errno($ch)) {
throw new Exception("Error posting to {$uri}. Curl error: " . curl_error($ch) . " Curl info: ", var_export(curl_getinfo($ch), true));
}
curl_close($ch);
return $result;
}
public function setDebug($debug = true)
{
$this->_debug = ($debug === true);
return;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment