-
Notifications
You must be signed in to change notification settings - Fork 0
/
EAPI.class.php
100 lines (75 loc) · 3.22 KB
/
EAPI.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
class EAPI {
public $url;
public $clientCode;
public $username;
public $password;
// Sends POST request to API
public function sendRequest($request, $parameters = array()){
// Check if all nessecary parameters are set up
if(!$this->url OR !$this->clientCode OR !$this->username OR !$this->password)
return false;
// Include clientcode and request name to POST parameters
$parameters['request'] = $request;
$parameters['clientCode'] = $this->clientCode;
// Get session KEY
if($request != "verifyUser"){
$parameters['sessionKey'] = $this->getSessionKey($keyRequestResult);
// Instead of a KEY we got an array which contains error code, let's return in
if(!$parameters['sessionKey'])
return $keyRequestResult;
}
// Prepare POST request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_HEADER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
// call POST request
if(curl_exec($ch) === false)
return false;
// get response content
$content = curl_multi_getcontent($ch);
curl_close($ch);
// remove heders
list($header1,$header2,$body) = explode("\r\n\r\n",$content,3);
// return response body
return $body;
}
private function getSessionKey(&$result) {
// Session KEY is active, return active KEY
if($_SESSION['EAPISessionKey'][$this->username]
AND $_SESSION['EAPISessionKeyExpires'][$this->username] > time())
return $_SESSION['EAPISessionKey'][$this->username];
// New session KEY must be obtained
else {
// Perform API request to get session KEY
$result = $this->sendRequest("verifyUser",
array("username" => $this->username, "password" => $this->password) );
// Json response into PHP array
$response = json_decode($result, true);
// Session KEY was successfully received
if($response['records'][0]['sessionKey']) {
// Set session KEY in client session and set KEY expiration time
$_SESSION['EAPISessionKey'][$this->username] =
$response['records'][0]['sessionKey'];
$_SESSION['EAPISessionKeyExpires'][$this->username] =
time() + $response['records'][0]['sessionLength'] - 30;
// Return obtained new session KEY
return $_SESSION['EAPISessionKey'][$this->username];
}
// Session KEY was not received
else {
// Return API response which includes error code
unset($_SESSION['EAPISessionKey'][$this->username]);
return false;
}
}
}
}
?>