Added REST lib to OpenMeetings plugin - refs BT#7046 refs #5491
parent
a608df0ee0
commit
9d18931c97
@ -0,0 +1,172 @@ |
||||
<?php |
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one |
||||
* or more contributor license agreements. See the NOTICE file |
||||
* distributed with this work for additional information |
||||
* regarding copyright ownership. The ASF licenses this file |
||||
* to you under the Apache License, Version 2.0 (the |
||||
* "License") + you may not use this file except in compliance |
||||
* with the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, |
||||
* software distributed under the License is distributed on an |
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
||||
* KIND, either express or implied. See the License for the |
||||
* specific language governing permissions and limitations |
||||
* under the License. |
||||
*/ |
||||
/** |
||||
* Created on 03.01.2012 by eugen.schwert@gmail.com |
||||
* @package chamilo.plugin.openmeetings |
||||
* @requires CURL |
||||
*/ |
||||
/** |
||||
* Class OpenMeetingsRestService |
||||
*/ |
||||
class OpenMeetingsRestService |
||||
{ |
||||
function call($request, $returnAttribute = "return") |
||||
{ |
||||
// This will allow you to view errors in the browser |
||||
// Note: set "display_errors" to 0 in production |
||||
// ini_set('display_errors',1); |
||||
|
||||
// Report all PHP errors (notices, errors, warnings, etc.) |
||||
// error_reporting(E_ALL); |
||||
|
||||
// URI used for making REST call. Each Web Service uses a unique URL. |
||||
// $request |
||||
|
||||
// Initialize the session by passing the request as a parameter |
||||
$session = curl_init ( $request ); |
||||
|
||||
// Set curl options by passing session and flags |
||||
// CURLOPT_HEADER allows us to receive the HTTP header |
||||
curl_setopt ( $session, CURLOPT_HEADER, true ); |
||||
|
||||
// CURLOPT_RETURNTRANSFER will return the response |
||||
curl_setopt ( $session, CURLOPT_RETURNTRANSFER, true ); |
||||
|
||||
// Make the request |
||||
$response = curl_exec ( $session ); |
||||
|
||||
// Close the curl session |
||||
curl_close ( $session ); |
||||
|
||||
// Confirm that the request was transmitted to the OpenMeetings! Image Search Service |
||||
if (! $response) { |
||||
die ( "Request OpenMeetings! OpenMeetings Service failed and no response was returned." ); |
||||
} |
||||
|
||||
// Create an array to store the HTTP response codes |
||||
$status_code = array (); |
||||
|
||||
// Use regular expressions to extract the code from the header |
||||
preg_match ( '/\d\d\d/', $response, $status_code ); |
||||
|
||||
// Check the HTTP Response code and display message if status code is not 200 (OK) |
||||
switch ($status_code [0]) { |
||||
case 200 : |
||||
// Success |
||||
break; |
||||
case 503 : |
||||
die ( 'Your call to OpenMeetings Web Services failed and returned an HTTP status of 503. |
||||
That means: Service unavailable. An internal problem prevented us from returning data to you.' ); |
||||
break; |
||||
case 403 : |
||||
die ( 'Your call to OpenMeetings Web Services failed and returned an HTTP status of 403. |
||||
That means: Forbidden. You do not have permission to access this resource, or are over your rate limit.' ); |
||||
break; |
||||
case 400 : |
||||
// You may want to fall through here and read the specific XML error |
||||
die ( 'Your call to OpenMeetings Web Services failed and returned an HTTP status of 400. |
||||
That means: Bad request. The parameters passed to the service did not match as expected. |
||||
The exact error is returned in the XML response.' ); |
||||
break; |
||||
default : |
||||
die ( 'Your call to OpenMeetings Web Services returned an unexpected HTTP status of: ' . $status_code [0] . " Request " . $request ); |
||||
} |
||||
|
||||
// Get the XML from the response, bypassing the header |
||||
if (!($xml = strstr($response, '<ns'))) { |
||||
$xml = null; |
||||
} |
||||
|
||||
$dom = new DOMDocument(); |
||||
$dom->loadXML($xml); |
||||
|
||||
if ($returnAttribute == "") { |
||||
//echo "XML".$xml."<br/>"; |
||||
return $this->getArray($dom); |
||||
} else { |
||||
$returnNodeList = $dom->getElementsByTagName($returnAttribute); |
||||
$ret = array(); |
||||
foreach ($returnNodeList as $returnNode) { |
||||
if ($returnNodeList->length == 1) { |
||||
return $this->getArray($returnNode); |
||||
} else { |
||||
$ret[] = $this->getArray($returnNode); |
||||
} |
||||
} |
||||
return $ret; |
||||
} |
||||
|
||||
} |
||||
|
||||
function getArray($node) { |
||||
if (is_null($node) || !is_object($node)) { |
||||
return $node; |
||||
} |
||||
$array = false; |
||||
/* |
||||
echo("!!!!!!!! NODE " . XML_TEXT_NODE |
||||
. " :: name = " . $node->nodeName |
||||
. " :: local = " . $node->localName |
||||
. " :: childs ? " . $node->hasChildNodes() |
||||
. " :: count = " . ($node->hasChildNodes() ? $node->childNodes->length : -1) |
||||
. " :: type = " . $node->nodeType |
||||
. " :: val = " . $node->nodeValue |
||||
. "\n"); |
||||
/* |
||||
if ($node->hasAttributes()) { |
||||
foreach ($node->attributes as $attr) { |
||||
$array[$attr->nodeName] = $attr->nodeValue; |
||||
} |
||||
} |
||||
*/ |
||||
if ($node->hasChildNodes()) { |
||||
foreach ($node->childNodes as $childNode) { |
||||
if ($childNode->nodeType != XML_TEXT_NODE) { |
||||
if ($node->hasAttributes()) { |
||||
foreach ($node->attributes as $attr) { |
||||
if ($attr->localName == "nil") { |
||||
return null; |
||||
} |
||||
} |
||||
} |
||||
if ($childNode->childNodes->length == 1) { |
||||
$array[$childNode->localName] = $this->getArray($childNode); |
||||
} else { |
||||
$array[$childNode->localName][] = $this->getArray($childNode); |
||||
} |
||||
} else { |
||||
return $childNode->nodeValue; |
||||
//echo("!!!!!!!! TEXT " . $childNode->nodeValue . "\n"); |
||||
//$array[$childNode->localName] |
||||
} |
||||
} |
||||
} |
||||
|
||||
return $array; |
||||
} |
||||
|
||||
function getError(){ |
||||
return false; |
||||
} |
||||
|
||||
function fault(){ |
||||
return false; |
||||
} |
||||
} |
Loading…
Reference in new issue