Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenApi-Papyros-PHP-Clients
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
Σταύρος Παπαδάκης
OpenApi-Papyros-PHP-Clients
Commits
be7a05d8
Commit
be7a05d8
authored
Dec 22, 2016
by
Σταύρος Παπαδάκης
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sample PHP library and command line application
parent
ec2660e4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
471 additions
and
1 deletion
+471
-1
swagger-generated-php-client/SwaggerClient-php/app/README.md
swagger-generated-php-client/SwaggerClient-php/app/README.md
+165
-0
swagger-generated-php-client/SwaggerClient-php/app/index.php
swagger-generated-php-client/SwaggerClient-php/app/index.php
+146
-0
swagger-generated-php-client/SwaggerClient-php/app/settings.php.dist
...erated-php-client/SwaggerClient-php/app/settings.php.dist
+4
-1
swagger-generated-php-client/SwaggerClient-php/app/src/App.php
...er-generated-php-client/SwaggerClient-php/app/src/App.php
+156
-0
No files found.
swagger-generated-php-client/SwaggerClient-php/app/README.md
0 → 100644
View file @
be7a05d8
# Οδηγίες
Αντιγράψτε το αρχείο
`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
στον τρέχοντα φάκελο και με το όνομα αρχείου που επιστρέφεται
```
Το πρόγραμμα χρησιμοποιεί τη δοκιμαστική βιβλιοθήκη επίδειξης
[
Gr\Gov\Minedu\Osteam\App
](
src/App.php
)
.
# Βιβλιοθήκη
Η κλάση
[
Gr\Gov\Minedu\Osteam\App
](
src/App.php
)
αποτελεί τη δοκιμαστική
βιβλιοθήκη επίδειξςη η οποία καταναλώνει λειτουργίες που έχουν παραχθεί από το
[
swagger-codegen
](
https://github.com/swagger-api/swagger-codegen
)
, βασισμένες
στο σχετικό
[
swagger documentation
](
https://protocoltest.minedu.gov.gr/openpapyros/
)
.
>>>
Η δοκιμαστική βιβλιοθήκη επίδειξης περιλαμβάνει παραδείγματα αξιοποίησης όλων
των REST API κλήσεων του
[
minedu OpenApi της ΠΑΠΥΡΟΣ
](
https://git.minedu.gov.gr/itminedu/minedu-OpenApi-PapyrosDrivers
)
σε καμία περίπτωση όμως δεν αποτελεί πλήρως λειτουργική βιβλιοθήκη ή πλήρως
λειτουργική εφαρμογή.
>>>
## Παραδείγματα κλήσης
### Λίστα εγγράφων
```
sh
$
php index.php
--list
Ανάκτηση API key...
Το API key είναι:
---------------------
Ανάκτηση λίστας εγγράφων...
Λίστα εγγράφων:
Bl5BEZPKGztl2lcmtEWMgQ%3D%3D
r%2BhOqWinF8U%2FPKM6RDn45g%3D%3D
ai2nYtQPsm5iWacd1NEEYw%3D%3D
69t%2FYlgsEJjQMiWkPUFpFQ%3D%3D
XJL2Whs6%2FBsu6ObQ%2FpeMlw%3D%3D
QiQ8VaRYeItETkqP%2FKjTVQ%3D%3D
ELTKEUX%2B0FLyivlIm%2Bm0uw%3D%3D
OrDAz8L9tF0AGSGutQ0Hxw%3D%3D
lmyplemnNoaMR0W6TU0uqg%3D%3D
%2F%2FvoXi7pZMVHdFvVlTTLGQ%3D%3D
GHotM8CWL%2FvGPjabwzHhqg%3D%3D
NU6CEaLymbOjqzla1iSuyQ%3D%3D
22UMz%2B55qhqJhy2AL0Ihtg%3D%3D
vhX1LPAxgI8VTHpXrXzNIQ%3D%3D
Done.
```
### Πρωτοκόλληση εγγράφου
```
sh
$
php index.php
--send
/tmp/test-file.pdf
Έλεγχος για το αρχείο /tmp/test-file.pdf... OK
Ανάκτηση API key...
Το API key είναι:
---------------------
Αποστολή εγγράφου...
Η αποστολή ολοκληρώθηκε με ΑΡ.Π.: 180034
Αναλυτικά: Array
(
[
doc_id]
=>
abcdefghijk%2Bhauqejdhqq%3D%3D
[
protocol_year]
=>
2016
[
protocol_date]
=>
22/12/2016
[
protocol_number]
=>
180034
[
attachments]
=>
Array
(
)
)
Done.
```
### Λεπτομέρειες πρωτοκόλλου
```
sh
$
php index.php
--show
"abcdefghijk%2Bhauqejdhqq%3D%3D"
Ανάκτηση API key...
Το API key είναι:
---------------------
Λεπτομέρειες εγγράφου:
Array
(
[
id
]
=>
abcdefghijk%2Bhauqejdhqq%3D%3D
[
protocol_number]
=>
180034
[
protocol_date]
=>
22/12/2016
[
doc_type]
=>
7
[
sender]
=>
100000001
[
sender_protocol]
=>
[
sender_date_protocol]
=>
[
doc_category]
=>
20
[
theme]
=>
ΔΟΚΙΜΗ: Αυτοματοποιημένο κείμενο της 2016-12-22T10:51:52+02:00
[
ada]
=>
[
attached_docs_descr]
=>
ΔΟΚΙΜΗ: Αυτοματοποιημένο κείμενο περιγραφής 20161222101251
[
director]
=>
ΔΟΚΙΜΗ: Αυτοματοποιημένο κείμενο περιγραφής 20161222101251
[
attached_id]
=>
Array
(
)
)
Done.
```
### Πληροφορίες αρχείου
```
sh
$
php index.php
--get
"abcdefghijk%2Bhauqejdhqq%3D%3D"
Ανάκτηση API key...
Το API key είναι:
---------------------
Λεπτομέρειες εγγράφου:
Swagger
\C
lient
\M
odel
\D
ocumentDto Object
(
[
container:protected]
=>
Array
(
[
document]
=>
Swagger
\C
lient
\M
odel
\D
ocument Object
(
[
container:protected]
=>
Array
(
[
base64
]
=>
go
=
)
)
[
file_name]
=>
test-file.pdf
[
description]
=>
ΕΙΣ - 180034 - 2016
)
)
Done.
```
### Λήψη αρχείου
```
sh
$
php index.php
--save
"abcdefghijk%2Bhauqejdhqq%3D%3D"
Ανάκτηση API key...
Το API key είναι:
---------------------
Λεπτομέρειες αποθήκευσης εγγράφου:
Array
(
[
file_name]
=>
test-file.pdf
[
description]
=>
ΕΙΣ - 180034 - 2016
[
save]
=>
Αποθηκεύτηκε
)
Done.
```
και το αρχείο έχει αποθηκευτεί στο
`test-file.pdf`
swagger-generated-php-client/SwaggerClient-php/app/index.php
0 → 100644
View file @
be7a05d8
<?php
$autoloader
=
require_once
(
__DIR__
.
'/../vendor/autoload.php'
);
$autoloader
->
addPsr4
(
'Gr\\Gov\\Minedu\\Osteam\\'
,
__DIR__
.
'/src/'
);
$autoloader
->
addPsr4
(
'Swagger\\Client\\'
,
__DIR__
.
'/../lib/'
);
use
Gr\Gov\Minedu\Osteam\App
;
use
Swagger\Client\Model\DocumentDto
;
use
Swagger\Client\Model\Document
;
$settings
=
require
(
__DIR__
.
'/settings.php'
);
$app
=
new
App
(
$settings
);
/**
* Λήψη παραμέτρων καθορισμού λειτουργίας από τη γραμμή εντολών
*/
$options
=
getopt
(
''
,
[
'send:'
,
'list'
,
'listshow'
,
'show:'
,
'get:'
,
'save:'
]);
// s for send file, l for list protocols
$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
);
}
/**
* Αποστολή αρχείου για πρωτοκόλληση
*/
if
(
$send
)
{
echo
"Αποστολή εγγράφου..."
,
PHP_EOL
;
try
{
$submission_data
=
[
'theme'
=>
'ΔΟΚΙΜΗ: Αυτοματοποιημένο κείμενο της '
.
date
(
'c'
),
'description'
=>
'ΔΟΚΙΜΗ: Αυτοματοποιημένο κείμενο περιγραφής '
.
date
(
'Ymdhmi'
),
'doc_category'
=>
20
,
'main_doc'
=>
new
DocumentDto
([
'document'
=>
new
Document
([
"base64"
=>
$file
]
),
'file_name'
=>
$options
[
'send'
],
'description'
=>
"ΔΟΚΙΜΗ: Αποστολή δοκιμαστικού αρχείου
{
$options
[
'send'
]
}
"
]
)
// το παράδειγμα δεν περιλαμβάνει συνημμένα αρχεία
// και ορισμένες επιπλέον παραμέτρους
];
$doc_info
=
$app
->
submit
(
$submission_data
,
$apikey
);
echo
"Η αποστολή ολοκληρώθηκε με ΑΡ.Π.: "
,
$doc_info
->
getProtocolNumber
(),
PHP_EOL
;
echo
"Αναλυτικά: "
,
print_r
(
$app
->
apiResultObjAsArray
(
$doc_info
),
true
),
PHP_EOL
;
}
catch
(
\
Exception
$e
)
{
echo
'ΛΑΘΟΣ: Αδυναμία αποστολής εγγράφου. '
,
PHP_EOL
,
$e
->
getMessage
(),
PHP_EOL
;
exit
(
1
);
}
}
/**
* Λειτουργία λήψης λίστας των καταχωρημένων πρωτοκόλλων.
* Εάν έχει ζητηθεί επιστρέφονται και οι αναλυτικές πληροφορίες των εγγράφων.
*/
if
(
$list
)
{
echo
"Ανάκτηση λίστας εγγράφων..."
,
PHP_EOL
;
try
{
$doc_hash_ids
=
$app
->
searchDocuments
(
$apikey
);
if
(
$listdetails
)
{
$doc_details
=
array_map
(
function
(
$hashid
)
use
(
$app
,
$apikey
)
{
return
[
$app
->
apiResultObjAsArray
(
$app
->
getDocData
(
$hashid
,
$apikey
))
];
},
$doc_hash_ids
);
echo
"Λεπτομέρειες εγγράφων: "
,
PHP_EOL
,
print_r
(
$doc_details
,
true
),
PHP_EOL
;
}
else
{
echo
"Λίστα εγγράφων: "
,
PHP_EOL
,
implode
(
PHP_EOL
,
$doc_hash_ids
),
PHP_EOL
;
}
}
catch
(
\
Exception
$e
)
{
echo
'ΛΑΘΟΣ: Αδυναμία ανάκτησης λίστας εγγράφων. '
,
PHP_EOL
,
$e
->
getMessage
(),
PHP_EOL
;
exit
(
1
);
}
}
/**
* Λειτουργία ανάκτησης πληροφοριών αρχείου με δεδομένο hash id $options['show']
*/
if
(
$show
)
{
$doc_details
=
$app
->
apiResultObjAsArray
(
$app
->
getDocData
(
$options
[
'show'
],
$apikey
));
echo
"Λεπτομέρειες εγγράφου: "
,
PHP_EOL
,
print_r
(
$doc_details
,
true
),
PHP_EOL
;
}
/**
* Λειτουργία λήψης αρχείου με δεδομένο hash id $options['get']
*/
if
(
$get
)
{
if
(
$save
)
{
$doc_details
=
$app
->
savePdf
(
$options
[
'save'
],
$apikey
);
echo
"Λεπτομέρειες αποθήκευσης εγγράφου: "
,
PHP_EOL
,
print_r
(
$doc_details
,
true
),
PHP_EOL
;
}
else
{
$doc_details
=
$app
->
getPdf
(
$options
[
'get'
],
$apikey
);
echo
"Λεπτομέρειες εγγράφου: "
,
PHP_EOL
,
print_r
(
$doc_details
,
true
),
PHP_EOL
;
}
}
echo
"Done."
,
PHP_EOL
;
exit
(
0
);
swagger-generated-php-client/SwaggerClient-php/app/settings.php.dist
View file @
be7a05d8
<?php
return
[
// username and password to authenticate
'username'
=>
'test'
,
'password'
=>
'123456'
'password'
=>
'123456'
,
// sender id for test lookups
'senderId'
=>
'100000001'
];
swagger-generated-php-client/SwaggerClient-php/app/src/App.php
0 → 100644
View file @
be7a05d8
<?php
//
namespace
Gr\Gov\Minedu\Osteam
;
use
Swagger\Client\ApiClient
;
use
Swagger\Client\Api\DefaultApi
;
use
Swagger\Client\Api\IdApi
;
use
Swagger\Client\Model\Credentials
;
use
Swagger\Client\ApiException
;
use
Swagger\Client\Model\SearchModel
;
use
Swagger\Client\Model\Protocolin
;
use
Swagger\Client\Model\DocumentDto
;
use
Swagger\Client\Model\Document
;
use
Swagger\Client\Model\DocumentDataDto
;
use
Swagger\Client\Model\ProtocolNumber
;
/**
* Description of app
*
* @author spapad
*/
class
App
{
private
$_settings
=
[];
private
$_defaultApi
=
null
;
private
$_idApi
=
null
;
private
$_debug
=
false
;
/**
*
* @param array $settings is an array of configuration parameters
*/
function
__construct
(
$settings
=
[])
{
$this
->
_settings
=
array_merge
(
$this
->
_settings
,
$settings
);
}
protected
function
getDefaultApi
()
{
return
$this
->
_defaultApi
?
$this
->
_defaultApi
:
(
$this
->
_defaultApi
=
new
DefaultApi
());
}
protected
function
getIdApi
()
{
return
$this
->
_idApi
?
$this
->
_idApi
:
(
$this
->
_idApi
=
new
IdApi
());
}
/**
*
* @return string The api key
* @throws \Swagger\Client\ApiException
*/
public
function
getApiKey
()
{
$api_instance
=
$this
->
getDefaultApi
();
$apiClient
=
$api_instance
->
getApiClient
();
$apiClient
->
getConfig
()
->
setDebug
(
$this
->
_debug
);
$body
=
new
Credentials
(
$this
->
_settings
);
$result
=
$api_instance
->
pauth
(
$body
);
return
$result
->
getApiKey
();
}
public
function
searchDocuments
(
$apikey
=
null
)
{
$submission_data
=
[
// 'doc_type' => 20,
// 'start_date' => "2016-12-21T06:04:35.911Z",
// 'end_date' => "2015-12-01T06:04:35.911Z"
];
$api_instance
=
$this
->
getDefaultApi
();
$apiClient
=
$api_instance
->
getApiClient
();
$apiClient
->
getConfig
()
->
setDebug
(
$this
->
_debug
);
$apiClient
->
getConfig
()
->
addDefaultHeader
(
'api_key'
,
$apikey
===
null
?
$this
->
getApiKey
()
:
$apikey
);
$body
=
new
SearchModel
(
array_merge
(
$this
->
_settings
,
$submission_data
));
$result
=
$api_instance
->
searchDocuments
(
$body
);
return
$result
;
}
public
function
getDocData
(
$hashid
,
$apikey
=
null
)
{
$api_instance
=
$this
->
getDefaultApi
();
$apiClient
=
$api_instance
->
getApiClient
();
$apiClient
->
getConfig
()
->
setDebug
(
$this
->
_debug
);
$apiClient
->
getConfig
()
->
addDefaultHeader
(
'api_key'
,
$apikey
===
null
?
$this
->
getApiKey
()
:
$apikey
);
$result
=
$api_instance
->
getDocData
(
$hashid
);
return
$result
;
}
public
function
submit
(
$submission_data
,
$apikey
=
null
)
{
$api_instance
=
$this
->
getIdApi
();
$apiClient
=
$api_instance
->
getApiClient
();
$apiClient
->
getConfig
()
->
setDebug
(
$this
->
_debug
);
$apiClient
->
getConfig
()
->
addDefaultHeader
(
'api_key'
,
$apikey
===
null
?
$this
->
getApiKey
()
:
$apikey
);
$body
=
new
Protocolin
(
array_merge
(
$this
->
_settings
,
$submission_data
));
$result
=
$api_instance
->
postProtocol
(
$body
);
return
$result
;
}
public
function
getPdf
(
$hashid
,
$apikey
=
null
)
{
$api_instance
=
$this
->
getDefaultApi
();
$apiClient
=
$api_instance
->
getApiClient
();
$apiClient
->
getConfig
()
->
setDebug
(
$this
->
_debug
);
$apiClient
->
getConfig
()
->
addDefaultHeader
(
'api_key'
,
$apikey
===
null
?
$this
->
getApiKey
()
:
$apikey
);
$result
=
$api_instance
->
getPdf
(
$hashid
);
return
$result
;
}
public
function
savePdf
(
$hashid
,
$apikey
=
null
)
{
$result
=
$this
->
getPdf
(
$hashid
,
$apikey
=
null
);
$save
=
file_put_contents
(
$result
->
getFileName
(),
base64_decode
(
$result
->
getDocument
()
->
getBase64
()));
return
[
'file_name'
=>
$result
->
getFileName
(),
'description'
=>
$result
->
getDescription
(),
'save'
=>
(
$save
?
'Αποθηκεύτηκε'
:
'ΔΕΝ αποθηκεύθηκε'
)
];
}
/**
* Try to return the object fields in a hash array
*
* @param object $resultobj The object
* @return type
*/
public
function
apiResultObjAsArray
(
$resultobj
)
{
$class
=
get_class
(
$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
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment