Skip to content
Snippets Groups Projects
Commit a6914a10 authored by Σταύρος Παπαδάκης's avatar Σταύρος Παπαδάκης
Browse files

Get auth key function

parent 3b2d3832
No related branches found
No related tags found
No related merge requests found
settings.php
Βιβλιοθήκη και πρόγραμμα κατανάλωσης
====================================
# Οδηγίες
Αντιγράψτε το αρχείο `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;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment