Here lies the dead code that formerly powered S3. More information can be found back at sick.bike.
<?php error_reporting(-1); ini_set('display_errors', 1); $request_body = file_get_contents('php://input'); $xml = simplexml_load_string($request_body); if (!isset($xml->methodName)) failure('Must make a request.'); switch($xml->methodName) { # Wordpress blog verification case 'mt.supportedMethods': success('metaWeblog.getRecentPosts'); break; # First authentication request from ifttt case 'metaWeblog.getRecentPosts': # Send a blank blog response # This also makes sure that the channel is never triggered success('<array><data></data></array>'); break; case 'metaWeblog.newPost': # Required static parameters $payload = array('action'=>'edit', 'post'=>'1', 'prepend'=>'1'); # Login information # see http://codex.wordpress.org/XML-RPC_WordPress_API/Posts#wp.newPost $payload['authid'] = (string)$xml->params->param[1]->value->string; $payload['authpw'] = (string)$xml->params->param[2]->value->string; $content = $xml->params->param[3]->value->struct->member; foreach($content as $data) { switch((string)$data->name) { # Unused sections case 'post_status': case 'mt_keywords': case 'categories': break; # Post body is text to prepend case 'description': $payload['text'] = (string)$data->value->string; break; # Post title is the page name default: $payload['n'] = (string)$data->value->string; } } # Make the webrequest $url = 'http://sick.bike/pmwiki/pmwiki.php'; $options = array( 'http' => array( 'header' => "Content-Type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($payload),),); $context = stream_context_create($options); $response = file_get_contents($url, false, $context); if ($response) success('<string>Request was successful.</string>'); else failure($response); break; } function output($xml) { $length = strlen($xml); header('Connection: close'); header('Content-Length: ' . $length); header('Content-Type: text/xml'); header('Date: ' . date('r')); echo $xml; exit; } function success($innerXML) { $xml = <<<EOD <?xml version="1.0"?> <methodResponse> <params> <param> <value> $innerXML </value> </param> </params> </methodResponse> EOD; output($xml); } function failure($status) { $xml = <<<EOD <?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name>faultCode</name> <value><int>$status</int></value> </member> <member> <name>faultString</name> <value><string>Request was not successful.</string></value> </member> </struct> </value> </fault> </methodResponse> EOD; output($xml); }