base_url = $base_url; $this->api_token = $api_token; } /** * REST API query helper * @param $ws_route * @param $url_params * @param $query_params * @param $body_params * @return array */ public function query($ws_route, $url_params, $query_params, $body_params) { list($ws_method, $ws_url) = explode(" ", trim($ws_route)); $query_string = http_build_query($query_params); foreach ($url_params as $url_param => $value) { $ws_url = str_replace('{'.$url_param.'}', $value, $ws_url); } $url = $this->base_url . $ws_url . "?" . $query_string; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ["Accept: ".$this::ws_accept, "Content-type: ".$this::ws_content_type]); curl_setopt($ch, CURLOPT_USERAGENT, $this::ws_user_agent); $ws_method = strtoupper($ws_method); if($ws_method !== "GET") { if($ws_method === "POST") { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, (json_encode($body_params))); } else { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $ws_method); } } curl_setopt($ch, CURLOPT_COOKIE, "LAABS-AUTH=".urlencode($this->api_token)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($ch); if ($res === false) { echo "curl error #" . curl_errno($ch) . " : " . curl_error($ch); die; } curl_close($ch); list($headers, $body) = explode("\r\n\r\n", $res); // PHP_EOL.PHP_EOL $headers = explode(PHP_EOL, $headers); $body2 = json_decode($body, true); if(json_last_error() === JSON_ERROR_NONE) { // content was really json $body = $body2; // use decoded content } return [$headers, $body]; } /** * get the file plan (organization structure) * @return array */ public function getFilePlan () { $ws_route = " get /filePlan/filePlan/Tree"; $url_params = []; $query_params = []; $body_params = []; list($headers, $body) = $this->query($ws_route, $url_params, $query_params, $body_params); return $body; } /** * get a user by its login * @param $login * @return array */ public function getUsersByLogin ($login) { $ws_route = " get /auth/userAccount/Search"; $url_params = []; $query_params = [ "query" => "accountName = '$login'", ]; $body_params = []; list($headers, $body) = $this->query($ws_route, $url_params, $query_params, $body_params); if(count($body) > 0) return $body[0]; else null; } /** * get the Lifecycle journal * @param string $eventType * @param string $objectClass * @param string $objectId * @param string $minDate * @param string $maxDate * @param string $org * @param number $maxResults * @return array */ public function getLifeCycleJournals ($eventType="", $objectClass="", $objectId="", $minDate="", $maxDate="", $org="", $maxResults=50) { $ws_route = "get /lifeCycle/event/Search"; $url_params = []; $query_params = [ "eventType" => $eventType, "objectClass" => $objectClass, "objectId" => $objectId, "minDate" => $minDate, "maxDate" => $maxDate, "org" => $org, "maxResults" => $maxResults, ]; $body_params = []; list($headers, $body) = $this->query($ws_route, $url_params, $query_params, $body_params); return $body; } /** * get the application journal * @param string $fromDate * @param string $toDate * @param string $event * @param string $accountId * @param string $status * @param string $term * @param number $maxResults * @return array */ public function getApplicationJournals ($fromDate="", $toDate="", $event="", $accountId="", $status="", $term="", $maxResults=50) { $ws_route = "get /audit/event/Search"; $url_params = []; $query_params = [ "fromDate" => $fromDate, "toDate" => $toDate, "event" => $event, "accountId" => $accountId, "status" => $status, "term" => $term, "maxResults" => $maxResults, ]; $body_params = []; list($headers, $body) = $this->query($ws_route, $url_params, $query_params, $body_params); return $body; } }