blob: e22923df2e69388db4fc5ee0920561a8e20c4d2d [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>VCL XML RPC: xmlrpc_example.php</title>
<link href="xmlrpcdocs.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">VCL XML RPC
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">xmlrpc_example.php</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line">&lt;?php</div>
<div class="line"><span class="comment">/*</span></div>
<div class="line"><span class="comment"> Licensed to the Apache Software Foundation (ASF) under one or more</span></div>
<div class="line"><span class="comment"> contributor license agreements. See the NOTICE file distributed with</span></div>
<div class="line"><span class="comment"> this work for additional information regarding copyright ownership.</span></div>
<div class="line"><span class="comment"> The ASF licenses this file to You under the Apache License, Version 2.0</span></div>
<div class="line"><span class="comment"> (the &quot;License&quot;); you may not use this file except in compliance with</span></div>
<div class="line"><span class="comment"> the License. You may obtain a copy of the License at</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment"> http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment"> Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><span class="comment"> distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><span class="comment"> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><span class="comment"> See the License for the specific language governing permissions and</span></div>
<div class="line"><span class="comment"> limitations under the License.</span></div>
<div class="line"><span class="comment">*/</span></div>
<div class="line"></div>
<div class="line">session_start();</div>
<div class="line"></div>
<div class="line">$url = <span class="stringliteral">&quot;http://{$_SERVER[&#39;HTTP_HOST&#39;]}{$_SERVER[&#39;PHP_SELF&#39;]}&quot;</span>;</div>
<div class="line">print <span class="stringliteral">&quot;&lt;a href=\&quot;$url?state=test\&quot;&gt;Test&lt;/a&gt;&lt;br&gt;\n&quot;</span>;</div>
<div class="line">print <span class="stringliteral">&quot;&lt;a href=\&quot;$url?state=listimages\&quot;&gt;List Available Images&lt;/a&gt;&lt;br&gt;\n&quot;</span>;</div>
<div class="line">print <span class="stringliteral">&quot;&lt;a href=\&quot;$url?state=addrequest\&quot;&gt;Add request for Test Image 1&lt;/a&gt;&lt;br&gt;\n&quot;</span>;</div>
<div class="line">print <span class="stringliteral">&quot;&lt;a href=\&quot;$url?state=requeststatus\&quot;&gt;Get status of request&lt;/a&gt;&lt;br&gt;\n&quot;</span>;</div>
<div class="line">print <span class="stringliteral">&quot;&lt;a href=\&quot;$url?state=connectdata\&quot;&gt;Get connection data&lt;/a&gt;&lt;br&gt;\n&quot;</span>;</div>
<div class="line">print <span class="stringliteral">&quot;&lt;a href=\&quot;$url?state=endrequest\&quot;&gt;End request&lt;/a&gt;&lt;br&gt;\n&quot;</span>;</div>
<div class="line"></div>
<div class="line">print <span class="stringliteral">&quot;&lt;pre&gt;\n&quot;</span>;</div>
<div class="line"></div>
<div class="line"><span class="comment">// test</span></div>
<div class="line"><span class="keywordflow">if</span>($_GET[<span class="stringliteral">&#39;state&#39;</span>] == <span class="stringliteral">&#39;test&#39;</span>) {</div>
<div class="line"> $rc = remoteVCLCall(<span class="stringliteral">&#39;XMLRPCtest&#39;</span>, array(<span class="stringliteral">&#39;foo&#39;</span>));</div>
<div class="line"> print_r($rc);</div>
<div class="line">}</div>
<div class="line"><span class="comment">// list images</span></div>
<div class="line">elseif($_GET[<span class="stringliteral">&#39;state&#39;</span>] == <span class="stringliteral">&#39;listimages&#39;</span>) {</div>
<div class="line"> $rc = remoteVCLCall(<span class="stringliteral">&#39;XMLRPCgetImages&#39;</span>, array());</div>
<div class="line"> print_r($rc);</div>
<div class="line">}</div>
<div class="line"><span class="comment">// add request</span></div>
<div class="line">elseif($_GET[<span class="stringliteral">&#39;state&#39;</span>] == <span class="stringliteral">&#39;addrequest&#39;</span>) {</div>
<div class="line"> $rc = remoteVCLCall(<span class="stringliteral">&#39;XMLRPCaddRequest&#39;</span>, array(98, <span class="stringliteral">&#39;now&#39;</span>, 60));</div>
<div class="line"> <span class="keywordflow">if</span>($rc[<span class="stringliteral">&#39;status&#39;</span>] == <span class="stringliteral">&#39;success&#39;</span>) {</div>
<div class="line"> print <span class="stringliteral">&quot;request id is {$rc[&#39;requestid&#39;]}&lt;br&gt;\n&quot;</span>;</div>
<div class="line"> $_SESSION[<span class="stringliteral">&#39;requestid&#39;</span>] = $rc[<span class="stringliteral">&#39;requestid&#39;</span>];</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> print_r($rc);</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"><span class="comment">// get request status</span></div>
<div class="line">elseif($_GET[<span class="stringliteral">&#39;state&#39;</span>] == <span class="stringliteral">&#39;requeststatus&#39;</span>) {</div>
<div class="line"> <span class="keywordflow">if</span>(! array_key_exists(<span class="stringliteral">&#39;requestid&#39;</span>, $_SESSION)) {</div>
<div class="line"> print <span class="stringliteral">&quot;no request created&lt;br&gt;\n&quot;</span>;</div>
<div class="line"> exit;</div>
<div class="line"> }</div>
<div class="line"> $rc = remoteVCLCall(<span class="stringliteral">&#39;XMLRPCgetRequestStatus&#39;</span>, array($_SESSION[<span class="stringliteral">&#39;requestid&#39;</span>]));</div>
<div class="line"> print <span class="stringliteral">&quot;current status of request {$_SESSION[&#39;requestid&#39;]} is {$rc[&#39;status&#39;]}&quot;</span>;</div>
<div class="line">}</div>
<div class="line"><span class="comment">// get connection data</span></div>
<div class="line">elseif($_GET[<span class="stringliteral">&#39;state&#39;</span>] == <span class="stringliteral">&#39;connectdata&#39;</span>) {</div>
<div class="line"> <span class="keywordflow">if</span>(! array_key_exists(<span class="stringliteral">&#39;requestid&#39;</span>, $_SESSION)) {</div>
<div class="line"> print <span class="stringliteral">&quot;no request created&lt;br&gt;\n&quot;</span>;</div>
<div class="line"> exit;</div>
<div class="line"> }</div>
<div class="line"> $rc = remoteVCLCall(<span class="stringliteral">&#39;XMLRPCgetRequestConnectData&#39;</span>, array($_SESSION[<span class="stringliteral">&#39;requestid&#39;</span>], $_SERVER[<span class="stringliteral">&quot;REMOTE_ADDR&quot;</span>]));</div>
<div class="line"> <span class="keywordflow">if</span>($rc[<span class="stringliteral">&#39;status&#39;</span>] == <span class="stringliteral">&#39;ready&#39;</span>)</div>
<div class="line"> print_r($rc);</div>
<div class="line"> <span class="keywordflow">else</span></div>
<div class="line"> print <span class="stringliteral">&quot;status of request is {$rc[&#39;status&#39;]}&quot;</span>;</div>
<div class="line">}</div>
<div class="line"><span class="comment">// end request</span></div>
<div class="line">elseif($_GET[<span class="stringliteral">&#39;state&#39;</span>] == <span class="stringliteral">&#39;endrequest&#39;</span>) {</div>
<div class="line"> <span class="keywordflow">if</span>(! array_key_exists(<span class="stringliteral">&#39;requestid&#39;</span>, $_SESSION)) {</div>
<div class="line"> print <span class="stringliteral">&quot;no request created&lt;br&gt;\n&quot;</span>;</div>
<div class="line"> exit;</div>
<div class="line"> }</div>
<div class="line"> $rc = remoteVCLCall(<span class="stringliteral">&#39;XMLRPCendRequest&#39;</span>, array($_SESSION[<span class="stringliteral">&#39;requestid&#39;</span>]));</div>
<div class="line"> <span class="keywordflow">if</span>($rc[<span class="stringliteral">&#39;status&#39;</span>] == <span class="stringliteral">&#39;error&#39;</span>)</div>
<div class="line"> print_r($rc);</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> print <span class="stringliteral">&quot;request ended&lt;br&gt;\n&quot;</span>;</div>
<div class="line"> unset($_SESSION[<span class="stringliteral">&#39;requestid&#39;</span>]);</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line">print <span class="stringliteral">&quot;&lt;/pre&gt;\n&quot;</span>;</div>
<div class="line"></div>
<div class="line"><span class="keyword">function</span> remoteVCLCall($method, $args) {</div>
<div class="line"> $request = xmlrpc_encode_request($method, $args);</div>
<div class="line"> $header = <span class="stringliteral">&quot;Content-Type: text/xml\r\n&quot;</span>;</div>
<div class="line"> $header .= <span class="stringliteral">&quot;X-User: userid\r\n&quot;</span>; <span class="comment">// user your userid here</span></div>
<div class="line"> $header .= <span class="stringliteral">&quot;X-Pass: password\r\n&quot;</span>; <span class="comment">// user your password here</span></div>
<div class="line"> $header .= <span class="stringliteral">&quot;X-APIVERSION: 2&quot;</span>; <span class="comment">// this is to allow for future changes to the api</span></div>
<div class="line"> $context = stream_context_create(</div>
<div class="line"> array(</div>
<div class="line"> <span class="stringliteral">&#39;http&#39;</span> =&gt; array(</div>
<div class="line"> <span class="stringliteral">&#39;method&#39;</span> =&gt; <span class="stringliteral">&quot;POST&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&#39;header&#39;</span> =&gt; $header,</div>
<div class="line"> <span class="stringliteral">&#39;content&#39;</span> =&gt; $request</div>
<div class="line"> )</div>
<div class="line"> )</div>
<div class="line"> );</div>
<div class="line"> $file = file_get_contents(<span class="stringliteral">&quot;https://vcl.ncsu.edu/scheduling/index.php?mode=xmlrpccall&quot;</span>, <span class="keyword">false</span>, $context);</div>
<div class="line"> $response = xmlrpc_decode($file);</div>
<div class="line"> <span class="keywordflow">if</span>(xmlrpc_is_fault($response)) {</div>
<div class="line"> trigger_error(<span class="stringliteral">&quot;xmlrpc: {$response[&#39;faultString&#39;]} ({$response[&#39;faultCode&#39;]})&quot;</span>);</div>
<div class="line"> exit;</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">return</span> $response;</div>
<div class="line">}</div>
<div class="line">?&gt;</div>
</div><!-- fragment --> </div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Feb 13 2015 13:43:55 for VCL XML RPC by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>