1
1
<?php
2
2
3
3
namespace Parasut ;
4
+
4
5
use Exception ;
5
6
6
7
class Client
7
8
{
8
- public $ BASE_URL = 'https://api.parasut.com ' ;
9
- public $ version = " v4 " ;
9
+ public $ BASE_URL = 'https://api.parasut.com ' ;
10
+ public $ version = ' v4 ' ;
10
11
public $ config ;
11
12
public $ access_token ;
12
13
public $ company_id ;
14
+ public $ file = 'token.ini ' ;
13
15
14
16
public function __construct ($ config )
15
17
{
16
18
$ this ->config = $ config ;
17
19
$ this ->company_id = $ this ->config ['company_id ' ];
18
20
$ this ->checkTokens ();
21
+ if (function_exists ('storage_path ' )) {
22
+ $ this ->file = storage_path ('app/parasut/token.ini ' );
23
+ }
19
24
}
20
25
21
26
public function checkTokens ()
22
27
{
23
- $ tokens = parse_ini_file ('token.ini ' );
24
- if (!isset ($ tokens ['access_token ' ]) || !isset ($ tokens ['created_at ' ])) {
28
+ try {
29
+ $ tokens = parse_ini_file ($ this ->file );
30
+ } catch (\Exception $ e ) {
31
+ unlink ($ this ->file );
32
+ }
33
+
34
+ if (! isset ($ tokens ['access_token ' ]) || ! isset ($ tokens ['created_at ' ])) {
25
35
return $ this ->authorize ();
26
36
}
27
- if (time () - (int )$ tokens ['created_at ' ] > 7200 ) {
37
+ if (time () - (int ) $ tokens ['created_at ' ] > 7200 ) {
28
38
return $ this ->authorize ();
29
39
}
30
40
$ this ->access_token = $ tokens ['access_token ' ];
41
+
31
42
return $ tokens ;
32
43
}
33
44
@@ -37,28 +48,17 @@ public function authorize()
37
48
$ resp = $ this ->authWithPassword ();
38
49
}
39
50
40
- if (isset ($ resp ["access_token " ])) {
41
- $ file = 'token.ini ' ;
42
- $ token = "" ;
51
+ if (isset ($ resp ['access_token ' ])) {
52
+ $ token = '' ;
43
53
foreach ($ resp as $ key => $ value ) {
44
- $ token .= $ key ." = " .$ value ."\n" ;
54
+ $ token .= $ key .' = ' .$ value ."\n" ;
45
55
}
46
- file_put_contents ($ file , $ token );
56
+ file_put_contents ($ this -> file , $ token );
47
57
48
58
$ this ->access_token = $ resp ['access_token ' ];
49
59
}
50
- return false ;
51
- }
52
60
53
- private function authWithPassword ()
54
- {
55
- $ path = $ this ->BASE_URL ."/oauth/token " ;
56
- return $ this ->request (
57
- $ path ,
58
- $ this ->config ,
59
- 'POST ' ,
60
- true
61
- );
61
+ return false ;
62
62
}
63
63
64
64
public function call ($ class )
@@ -68,19 +68,20 @@ public function call($class)
68
68
69
69
public function request ($ path , $ params = null , $ method = 'POST ' , $ fullPath = false )
70
70
{
71
- $ headers = [];
71
+ $ headers = [];
72
72
$ headers [] = 'Accept: application/json ' ;
73
73
$ headers [] = 'Content-Type: application/json ' ;
74
- $ headers [] = 'Authorization: Bearer ' . $ this ->access_token ;
74
+ $ headers [] = 'Authorization: Bearer ' . $ this ->access_token ;
75
75
76
76
$ ch = curl_init ();
77
- if (is_array ($ params ) && $ method == " GET " && count ($ params ) > 0 ) {
78
- $ path .= '? ' . http_build_query ($ params );
77
+ if (is_array ($ params ) && $ method == ' GET ' && count ($ params ) > 0 ) {
78
+ $ path .= '? ' . http_build_query ($ params );
79
79
}
80
+
80
81
if ($ fullPath ) {
81
82
curl_setopt ($ ch , CURLOPT_URL , $ path );
82
83
} else {
83
- curl_setopt ($ ch , CURLOPT_URL , $ this ->BASE_URL ." / " .$ this ->version ." / " .$ this ->company_id ." / " .$ path );
84
+ curl_setopt ($ ch , CURLOPT_URL , $ this ->BASE_URL .' / ' .$ this ->version .' / ' .$ this ->company_id .' / ' .$ path );
84
85
}
85
86
86
87
curl_setopt ($ ch , CURLOPT_HTTPHEADER , $ headers );
@@ -91,7 +92,7 @@ public function request($path, $params = null, $method = 'POST', $fullPath = fal
91
92
curl_setopt ($ ch , CURLOPT_HEADER , false );
92
93
switch ($ method ) {
93
94
case 'PUT ' :
94
- curl_setopt ($ ch , CURLOPT_CUSTOMREQUEST , " PUT " );
95
+ curl_setopt ($ ch , CURLOPT_CUSTOMREQUEST , ' PUT ' );
95
96
curl_setopt ($ ch , CURLOPT_POSTFIELDS , http_build_query ($ params ));
96
97
break ;
97
98
case 'POST ' :
@@ -133,4 +134,16 @@ public function request($path, $params = null, $method = 'POST', $fullPath = fal
133
134
break ;
134
135
}
135
136
}
137
+
138
+ private function authWithPassword ()
139
+ {
140
+ $ path = $ this ->BASE_URL .'/oauth/token ' ;
141
+
142
+ return $ this ->request (
143
+ $ path ,
144
+ $ this ->config ,
145
+ 'POST ' ,
146
+ true
147
+ );
148
+ }
136
149
}
0 commit comments