aboutsummaryrefslogtreecommitdiff
path: root/mod/apitest/start.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/apitest/start.php')
-rw-r--r--mod/apitest/start.php251
1 files changed, 0 insertions, 251 deletions
diff --git a/mod/apitest/start.php b/mod/apitest/start.php
deleted file mode 100644
index d03c7925a..000000000
--- a/mod/apitest/start.php
+++ /dev/null
@@ -1,251 +0,0 @@
-<?php
- /**
- * Elgg API Tester
- *
- * @package ElggDevTools
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Marcus Povey <marcus@marcus-povey.co.uk>
- * @copyright Curverider Ltd 2008
- * @link http://elgg.com/
- */
-
- $API_CLIENT = new stdClass;
-
- // Status variables we can query later
- $LAST_CALL = null;
- $LAST_CALL_RAW = "";
- $LAST_ERROR = null;
-
-
- function apitest_init($event, $object_type, $object = null) {
-
- global $CONFIG;
-
- add_menu("API Test",$CONFIG->wwwroot . "mod/apitest/",array(
- menu_item("The API Tester plugin",$CONFIG->wwwroot."mod/apitest/"),
- ));
- }
-
- /**
- * Generate our HMAC.
- */
- function apitest_calculate_hmac($algo, $time, $api_key, $secret_key, $get_variables, $post_hash = "")
- {
- $ctx = hash_init($algo, HASH_HMAC, $secret_key);
-
- hash_update($ctx, trim($time));
- hash_update($ctx, trim($api_key));
- hash_update($ctx, trim($get_variables));
- if (trim($post_hash)!="") hash_update($ctx, trim($post_hash));
-
- return hash_final($ctx);
- }
-
- /**
- * Generate our POST hash.
- */
- function apitest_calculate_posthash($postdata, $algo)
- {
- $ctx = hash_init($algo);
-
- hash_update($ctx, $postdata);
-
- return hash_final($ctx);
- }
-
- /**
- * Serialise HTTP headers.
- */
- function apitest_serialise_headers(array $headers)
- {
- $headers_str = "";
-
- foreach ($headers as $k => $v)
- $headers_str .= trim($k) . ": " . trim($v) . "\r\n";
-
- return trim($headers_str);
- }
-
- /**
- * Make a raw call.
- * @param array $method Method call parameters.
- * @param string $postdata Optional POST data.
- * @param string $content_type The content type.
- * @return stdClass
- */
- function apitest_call(array $method, $postdata = "", $content_type = 'application/octet-stream')
- {
- // Get the config
- global $API_CLIENT, $LAST_CALL, $LAST_CALL_RAW, $LAST_ERROR;
-
- $headers = array();
- $encoded_params = array();
-
- $time = microtime(true); // Get the current time in microseconds
- $request = ($postdata!="" ? "POST" : "GET"); // Get the request method, either post or get
-
- // Hard code the format - we're using PHP, so lets use PHP serialisation.
- $method['format'] = "php";
-
- // URL encode all the parameters
- foreach ($method as $k => $v){
- if (is_array($v))
- {
- foreach ($v as $v2)
- {
- $encoded_params[] = urlencode($k).'[]='.urlencode($v2);
- }
- }
- else
- $encoded_params[] = urlencode($k).'='.urlencode($v);
- }
-
- $params = implode('&', $encoded_params);
-
- // Put together the query string
- $url = $API_CLIENT->api_endpoint."?". $params;
-
- // Construct headers
- $posthash = "";
- if ($request=='POST')
- {
- $posthash = apitest_calculate_posthash($postdata, $API_CLIENT->postdata_hash_algo);
-
- $headers['X-Elgg-posthash'] = $posthash;
- $headers['X-Elgg-posthash-algo'] = $API_CLIENT->postdata_hash_algo;
- $headers['Content-type'] = $content_type;
- $headers['Content-Length'] = strlen($postdata);
- }
-
- $headers['X-Elgg-apikey'] = $API_CLIENT->api_key;
- $headers['X-Elgg-time'] = $time;
- $headers['X-Elgg-hmac-algo'] = $API_CLIENT->hmac_algo;
- $headers['X-Elgg-hmac'] = apitest_calculate_hmac($API_CLIENT->hmac_algo,
- $time,
- $API_CLIENT->api_key,
- $API_CLIENT->secret,
- $params,
- $posthash
- );
-
- // Configure stream options
- $opts = array(
- 'http'=>array(
- 'method'=> $request,
- 'header'=> apitest_serialise_headers($headers)
- )
- );
-
- // If this is a post request then set the content
- if ($request=='POST')
- $opts['http']['content'] = $postdata;
-
- // Set stream options
- $context = stream_context_create($opts);
-
- // Send the query and get the result and decode.
- $LAST_CALL_RAW = file_get_contents($url, false, $context);
- $LAST_CALL = unserialize($LAST_CALL_RAW);
-
- if (($LAST_CALL) && ($LAST_CALL->status!=0)) // Check to see if this was an error
- $LAST_ERROR = $LAST_CALL;
-
- return $LAST_CALL; // Return a stdClass containing the API result
- }
-
- function apitest_configure($apikey, $secret, $endpoint = "")
- {
- global $CONFIG;
- global $API_CLIENT;
-
- $apikey = sanitise_string($apikey);
- $secret = sanitise_string($secret);
- $endpoint = sanitise_string($endpoint);
-
- if ($endpoint=="")
- $endpoint = $CONFIG->wwwroot . "services/api/rest.php";
-
- $API_CLIENT->api_key = $apikey;
- $API_CLIENT->secret = $secret;
- $API_CLIENT->api_endpoint = $endpoint;
- $API_CLIENT->hmac_algo = 'sha1';
- $API_CLIENT->postdata_hash_algo = 'md5';
- $API_CLIENT->configured = true;
- }
-
- function apitest_draw_command_form($command, $details)
- {
- global $API_CLIENT;
-
- $params = array();
-
- // If authentication is required then ensure this is prompted for
- if ($details->require_auth == true)
- $params['auth_token'] = $_REQUEST['auth_token'];
-
-
- // Compile a list of parameters
- foreach ($details['parameters'] as $k => $v)
- {
- $params[$k] = $_REQUEST[$k];
- }
-
- // Construct list of variables
- $variables = "";
- foreach ($params as $k => $v)
- {
- $variables .= $k;
- $variables .= "<input type='text' name='$k' value='$v' />";
-
- if (isset($details['parameters'][$k]['required']) && ($details['parameters'][$k]['required']!=0))
- $variables .= " (optional)";
-
- $variables .= ", ";
- }
-
- // Do we need to provide post data?
- $postdata = "";
- if ($details->call_method == 'POST')
- $postdata = "<span onClick=\"showhide('$command')\"><a href=\"#\">add post data...</a></span>";
-
- $body = <<< END
- <form method='post'>
- <p>
- <input type="hidden" name="action" value="configure" />
- <input type="hidden" name="apikey" value="{$API_CLIENT->api_key}" /></p>
- <input type="hidden" name="secret" value="{$API_CLIENT->secret}" /></p>
- <input type="hidden" name="endpoint" value="{$API_CLIENT->api_endpoint}" /></p>
-
- <input type='hidden' name='method' value='$command' />
- <b>$command (<span onClick="showhide('{$command}_desc')"><a href="#">desc</a></span>):</b>
-
- $variables
-
- $postdata
-
- <input type='submit' name='>>' value='>>' />
- <div id="{$command}_desc" style="display:none">{$details['description']}</div>
- <div id="$command" style="display:none"><textarea name="post_data" cols="50" rows="10"></textarea></div>
-
- </p>
- </form>
-END;
-
- return $body;
- }
-
-
- function apitest_draw_config_panel()
- {
- global $API_CLIENT;
-
- return elgg_view("apitest/configform", array(
- "apikey" => $API_CLIENT->api_key,
- "secret" => $API_CLIENT->secret,
- "endpoint" => $API_CLIENT->api_endpoint
- ));
- }
-
- // Make sure test_init is called on initialisation
- register_elgg_event_handler('init','system','apitest_init');
-?> \ No newline at end of file