Skip to content

Commit 5a52c1d

Browse files
committed
Fix: Add getList, refactor and optimize
1 parent d5273f2 commit 5a52c1d

File tree

10 files changed

+291
-658
lines changed

10 files changed

+291
-658
lines changed

README.md

Lines changed: 111 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,204 +1,206 @@
1-
2-
31
# PHP Wrapper für PROFFIX REST-API
42

5-
Ein effizienter PHP Wrapper für die PROFFIX REST-API
3+
Ein effizienter PHP Wrapper für die PROFFIX REST-API.
64

75
![alt text](https://raw.githubusercontent.com/pitwch/php-wrapper-proffix-restapi/master/php-wrapper-proffix-rest.jpg "PHP Wrapper PROFFIX REST API")
86

9-
### Installation
10-
Der Wrapper kann entweder geklont oder via [Composer](https://getcomposer.org) installiert werden.
7+
## Installation
8+
9+
Der Wrapper kann via [Composer](https://getcomposer.org) installiert werden.
1110

1211
```php
1312
composer require pitwch/rest-api-wrapper-proffix-php
1413
```
1514

15+
## Konfiguration
1616

17-
#### Variante 1: Verwendung mit Composer (empfohlen)
18-
17+
### Initialisierung
1918

20-
Autoload RestAPIWrapperProffix class:
19+
Autoload der `RestAPIWrapperProffix` Klasse:
2120

2221
```php
2322
require __DIR__ . '/vendor/autoload.php';
2423

2524
use Pitwch\RestAPIWrapperProffix\Client;
26-
2725
```
2826

29-
30-
#### Konfiguration
31-
3227
Die Konfiguration wird dem Client mitgegeben:
3328

3429
| Konfiguration | Beispiel | Bemerkung |
3530
|------------------|----------------------------------------------------------------------------------|--------------------------------------------------|
36-
| url | https://myserver.ch:999 | URL der REST-API **ohne pxapi/v2/** |
37-
| apiDatabase | DEMO | Name der Datenbank |
38-
| apiUser | USR | Names des Benutzers |
39-
| apiPassword | b62cce2fe18f7a156a9c...0f0d7bd18d9e8a40be2e663017 | SHA256-Hash des Benutzerpasswortes |
40-
| apiModule | ADR,STU | Benötigte Module (mit Komma getrennt) |
41-
| options | array('key'=>'112a5a90...59028') | Optionen (Details unter Optionen) |
31+
| url | `https://myserver.ch:999` | URL der REST-API **ohne pxapi/v2/** |
32+
| apiDatabase | `DEMO` | Name der Datenbank |
33+
| apiUser | `USR` | Name des Benutzers |
34+
| apiPassword | `b62cce2fe18f7a156a9c...` | SHA256-Hash des Benutzerpasswortes |
35+
| apiModule | `ADR,STU` | Benötigte Module (mit Komma getrennt) |
36+
| options | `array('key'=>'112a5a90...')` | Optionen (Details unter Optionen) |
4237

38+
### Beispiel für die Initialisierung
4339

44-
Beispiel:
4540
```php
46-
4741
require __DIR__ . '/vendor/autoload.php';
4842

4943
use Pitwch\RestAPIWrapperProffix\Client;
5044

51-
$pxrest = new Client(
45+
$pxrest = new Client(
5246
'https://myserver.ch:999',
5347
'DEMO',
5448
'USR',
5549
'b62cce2fe18f7a156a9c719c57bebf0478a3d50f0d7bd18d9e8a40be2e663017',
5650
'ADR,STU',
57-
array('key'=>'112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028','limit'=>2));
58-
$adressen = $pxrest->get('ADR/Adresse',array('filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm'));;
51+
['key'=>'112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028','limit'=>2]
52+
);
53+
54+
$adressen = $pxrest->get('ADR/Adresse', ['filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'', 'depth'=>1, 'fields'=>'AdressNr,Name,GeaendertAm']);
5955
print_r($adressen);
6056
```
61-
### Optionen
57+
58+
## Optionen
6259

6360
Optionen sind **fakultativ** und werden in der Regel nicht benötigt:
6461

65-
| Option | Beispiel | Bemerkung |
66-
|------------------|------------------------------------------------------------------|----------------------------------------------------------------|
67-
| key | 112a5a90fe28b...242b10141254b4de59028 | API-Key als SHA256 - Hash (kann auch direkt mitgegeben werden) |
68-
| version | v2 | API-Version; Standard = v2 |
69-
| api_prefix | /pxapi/ | Prefix für die API; Standard = /pxapi/ |
70-
| login_endpoint | PRO/Login | Endpunkt für Login; Standard = PRO/Login |
71-
| user_agent | php-wrapper-proffix-restapi | User Agent; Standard = php-wrapper-proffix-restapi |
72-
| timeout | 15 | Timeout für Curl in Sekunden; Standard = 15 |
73-
| follow_redirects | true | Weiterleitungen der API folgen; Standard = false |
62+
| Option | Beispiel | Bemerkung |
63+
|------------------|----------------------------------------|----------------------------------------------------------------|
64+
| key | `112a5a90fe28b...` | API-Key als SHA256 - Hash (kann auch direkt mitgegeben werden) |
65+
| version | `v2` | API-Version; Standard = v2 |
66+
| api_prefix | `/pxapi/` | Prefix für die API; Standard = /pxapi/ |
67+
| login_endpoint | `PRO/Login` | Endpunkt für Login; Standard = PRO/Login |
68+
| user_agent | `php-wrapper-proffix-restapi` | User Agent; Standard = php-wrapper-proffix-restapi |
69+
| timeout | `15` | Timeout für Curl in Sekunden; Standard = 15 |
70+
| follow_redirects | `true` | Weiterleitungen der API folgen; Standard = false |
7471

75-
#### Methoden
72+
## Methoden
7673

74+
### Allgemeine Methoden (`get`, `put`, `post`, `delete`)
7775

7876
| Parameter | Typ | Bemerkung |
7977
|------------|--------|----------------------------------------------------------------------------------------------------------|
80-
| endpoint | string | Endpunkt der PROFFIX REST-API; z.B. ADR/Adresse,STU/Rapporte... |
81-
| data | array | Daten (werden automatisch in JSON konvertiert); z.B: array("Name"=>"Demo AG",...) |
82-
| parameters | array | Parameter gemäss [PROFFIX REST API Docs](http://www.proffix.net/Portals/0/content/REST%20API/index.html) |
83-
78+
| endpoint | `string` | Endpunkt der PROFFIX REST-API; z.B. `ADR/Adresse`, `STU/Rapporte`... |
79+
| data | `array` | Daten (werden automatisch in JSON konvertiert); z.B: `["Name"=>"Demo AG",...]` |
80+
| parameters | `array` | Parameter gemäss [PROFFIX REST API Docs](http://www.proffix.net/Portals/0/content/REST%20API/index.html) |
8481

8582
*Sonderzeichen in den Parametern müssen gegebenfalls mit Escape-Zeichen verwendet werden, z.B:*
8683

8784
```php
88-
//Escape ' with \'
89-
array('filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm')
85+
// Escape ' with \'
86+
$params = ['filter' => 'GeaendertAm>d\'2018-05-17 14:54:56\'', 'depth' => 1, 'fields' => 'AdressNr,Name,GeaendertAm'];
87+
$pxrest->get('ADR/Adresse', $params);
9088
```
9189

90+
#### Get / Query
9291

93-
Folgende unterschiedlichen Methoden sind mit dem Wrapper möglich:
94-
92+
```php
93+
// Einfache Abfrage
94+
$adresse = $pxrest->get("ADR/Adresse/1");
95+
echo $adresse->Name; // DEMO AG
9596

97+
// Abfrage mit Parametern
98+
$params = ['filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm','limit'=>5];
99+
$adressen = $pxrest->get("ADR/Adresse", $params);
100+
```
96101

97-
##### Get / Query
102+
#### Put / Update
98103

99104
```php
100-
//Einfache Abfrage
101-
$pxrest = new Client(...)
102-
$adresse = $pxrest->get("ADR/Adresse/1") //Legt Response als Objects in $adresse ab
103-
$adresse->Name //DEMO AG
104-
105-
/Abfrage mit Parametern
106-
$pxrest = new Client(...)
107-
$adresse = $pxrest->get("ADR/Adresse",array('filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm','limit'=>5))
108-
105+
$data = ["AdressNr"=>1, "Ort"=>"Zürich", "PLZ"=>8000, "EMail"=>"test@test.com"];
106+
$adresse = $pxrest->put("ADR/Adresse", $data);
109107
```
110108

111-
112-
##### Put / Update
109+
#### Post / Create
113110

114111
```php
115-
$pxrest = new Client(...)
116-
$data = array("AdressNr"=>1,"Ort"=>"Zürich","PLZ"=>8000,"EMail"=>"test@test.com");
117-
$adresse = $pxrest->put("ADR/Adresse",$data) //Sendet $data an Endpunkt ADR/Adresse
112+
$data = ["Ort"=>"Zürich", "PLZ"=>8000, "EMail"=>"test@test.com"];
113+
$neueAdresse = $pxrest->post("ADR/Adresse", $data);
118114
```
119115

120-
##### Post / Create
116+
#### Delete
121117

122118
```php
123-
$pxrest = new Client(...)
124-
$data = array("AdressNr"=>1,"Ort"=>"Zürich","PLZ"=>8000,"EMail"=>"test@test.com");
125-
$adresse = $pxrest->post("ADR/Adresse",$data) //Sendet $data an Endpunkt ADR/Adresse
119+
$response = $pxrest->delete("ADR/Adresse/42");
126120
```
127121

122+
### Spezifische Methoden
128123

129-
##### Response / Antwort
124+
#### `getList(int $listenr, array $body = [])`
130125

131-
Alle Methoden geben die Response als Array bzw. NULL (z.B. bei DELETE)
132-
Bei Fehlern wird `HttpClientException` mit Rückmeldung der PROFFIX REST-API ausgegeben.
126+
Generiert eine PROFFIX-Liste (z.B. ein PDF) und gibt das Ergebnis als `Response`-Objekt zurück, welches den rohen Dateiinhalt enthält.
133127

134-
Zudem lassen sich Zusatzinformationen zur Response wie folgt ausgeben:
128+
| Parameter | Typ | Bemerkung |
129+
|-----------|----------|------------------------------------------------------------------------------------------------------------------------------------------------|
130+
| `$listenr`| `int` | Die `ListeNr` der Liste, die generiert werden soll. |
131+
| `$body` | `array` | (Optional) Ein assoziatives Array mit Parametern für die Listengenerierung. **Wichtig:** Es muss mindestens ein leeres JSON-Objekt (`{}`) gesendet werden. |
135132

136-
```php
137-
$pxrest = new Client(...)
138-
$adresse = $pxrest->get("ADR/Adresse")
139-
140-
//Zusatzinformationen zum letzten Request
141-
$lastRequest = $pxrest->http->getRequest();
142-
$lastRequest->getUrl(); // Get requested URL (string).
143-
$lastRequest->getMethod(); // Get request method (string).
144-
$lastRequest->getParameters(); // Get request parameters (array).
145-
$lastRequest->getHeaders(); // Get request headers (array).
146-
$lastRequest->getBody(); // Get request body (JSON).
133+
*Beispiel:*
147134

135+
```php
136+
$listeNr = 1029; // Beispiel-ID für ADR_Adressliste.repx
137+
$pdfResponse = $pxrest->getList($listeNr);
148138

149-
//Zusatzinformationen zur letzten Response
150-
$lastResponse = $pxrest->http->getResponse();
151-
$lastResponse->getCode(); // Response code (int).
152-
$lastResponse->getHeaders(); // Response headers (array).
153-
$lastResponse->getBody(); // Response body (JSON).
139+
if ($pdfResponse->getCode() === 200) {
140+
file_put_contents('Adressliste.pdf', $pdfResponse->getBody());
141+
echo "Liste erfolgreich als Adressliste.pdf gespeichert.";
142+
}
154143
```
155144

145+
## Spezielle Endpunkte
156146

157-
#### Spezielle Endpunkte
158-
147+
### Info
159148

160-
##### Info
149+
Ruft Infos vom Endpunkt `PRO/Info` ab.
161150

162-
Ruft Infos vom Endpunkt **PRO/Info** ab.
163-
164-
*Hinweis: Dieser Endpunkt / Abfrage blockiert keine Lizenz*
151+
*Hinweis: Dieser Endpunkt / Abfrage blockiert keine Lizenz.*
165152

166153
```php
167-
$pxrest = new Client(...)
168-
169-
//Variante 1: API - Key direkt mitgeben
154+
// Variante 1: API-Key direkt mitgeben
170155
$info1 = $pxrest->info('112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028');
171156

172-
//Variante 2: API - Key aus Options verwenden (sofern dort hinterlegt)
157+
// Variante 2: API-Key aus Options verwenden (sofern dort hinterlegt)
173158
$info2 = $pxrest->info();
174159
```
175160

176-
##### Datenbank
161+
### Datenbank
162+
163+
Ruft Infos vom Endpunkt `PRO/Datenbank` ab.
164+
165+
```php
166+
$dbInfo = $pxrest->database();
167+
```
168+
169+
## Response / Antwort
177170

178-
Ruft Infos vom Endpunkt **PRO/Datenbank** ab.
171+
Alle Methoden geben die Response als Array bzw. `NULL` (z.B. bei `DELETE`) zurück. Bei Fehlern wird eine `HttpClientException` mit der Rückmeldung der PROFFIX REST-API geworfen.
179172

180-
*Hinweis: Dieser Endpunkt / Abfrage blockiert keine Lizenz*
173+
Zudem lassen sich Zusatzinformationen zur letzten Response wie folgt ausgeben:
174+
175+
### Letzter Request
181176

182177
```php
183-
$pxrest = new Client(...);
178+
$lastRequest = $pxrest->http->getRequest();
179+
$lastRequest->getUrl(); // Get requested URL (string).
180+
$lastRequest->getMethod(); // Get request method (string).
181+
$lastRequest->getParameters(); // Get request parameters (array).
182+
$lastRequest->getHeaders(); // Get request headers (array).
183+
$lastRequest->getBody(); // Get request body (JSON).
184+
```
184185

185-
//Variante 1: API - Key direkt mitgeben
186-
$datenbank1 = $pxrest->database('112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028');
187-
188-
//Variante 2: API - Key aus Options verwenden (sofern dort hinterlegt)
189-
$datenbank2 = $pxrest->database();
190-
```
191-
### Ausnahmen / Spezialfälle
186+
### Letzte Response
187+
188+
```php
189+
$lastResponse = $pxrest->http->getResponse();
190+
$lastResponse->getCode(); // Response code (int).
191+
$lastResponse->getHeaders(); // Response headers (array).
192+
$lastResponse->getBody(); // Response body (JSON).
193+
```
192194

193-
* Endpunkte welche Leerschläge enthalten können (z.B. LAG/Artikel/PC 7/Bestand) müssen mit rawurlencode() genutzt werden
195+
## Ausnahmen / Spezialfälle
194196

195-
### Weitere Beispiele
197+
* Endpunkte, welche Leerschläge enthalten (z.B. `LAG/Artikel/PC 7/Bestand`), müssen mit `rawurlencode()` genutzt werden.
196198

197-
Im Ordner [/examples](https://github.com/pitwch/php-wrapper-proffix-restapi/tree/master/examples) finden sich weitere,
198-
auskommentierte Beispiele.
199+
## Weitere Beispiele
199200

201+
Im Ordner [/examples](https://github.com/pitwch/php-wrapper-proffix-restapi/tree/master/examples) finden sich weitere auskommentierte Beispiele.
200202

201-
# Weitere Wrapper für die Proffix Rest-API
203+
## Weitere Wrapper für die Proffix Rest-API
202204

203-
- [Golang Wrapper für die Proffix Rest-API](https://github.com/pitwch/go-wrapper-proffix-restapi) :link:
204-
- [Dart Wrapper für die Proffix Rest-API](https://github.com/pitwch/dart_proffix_rest) :link:
205+
* [Golang Wrapper für die Proffix Rest-API](https://github.com/pitwch/go-wrapper-proffix-restapi)
206+
* [Dart Wrapper für die Proffix Rest-API](https://github.com/pitwch/dart_proffix_rest)

composer.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "pitwch/rest-api-wrapper-proffix-php",
33
"description": "PHP Wrapper for PROFFIX REST API",
44
"type": "library",
5-
"version": "1.9.1",
5+
"version": "1.9.2",
66
"homepage": "https://www.pitw.ch",
77
"license": "MIT",
88
"authors": [
@@ -28,8 +28,7 @@
2828
},
2929
"autoload-dev": {
3030
"psr-4": {
31-
"Pitwch\\RestAPIWrapperProffix\\Tests\\": "tests/RestAPIWrapperProffix/",
32-
"Pitwch\\RestAPIWrapperProffix\\Tests\\Integration\\": "tests/Integration/"
31+
"Pitwch\\RestAPIWrapperProffix\\Tests\\": "tests/"
3332
}
3433
}
3534
}

composer.lock

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)