Example #1
0
 /**
  * __toString() test
  */
 public function test__toString()
 {
     $argv = array('string', true);
     $this->_request->setMethod('do.Something');
     $this->_request->setParams($argv);
     $xml = $this->_request->__toString();
     $this->_testXmlRequest($xml, $argv);
 }
Example #2
0
 public function testHandleFunction()
 {
     $this->_server->addFunction('ZendTest\\XmlRpc\\testFunction');
     $request = new Request();
     $request->setMethod('ZendTest\\XmlRpc\\testFunction');
     $request->setParams(array(array('value1'), 'key'));
     $response = $this->_server->handle($request);
     $this->assertFalse($response instanceof Fault);
     $this->assertEquals('key: value1', $response->getReturnValue());
 }
Example #3
0
 /**
  * PingBackを送信
  */
 protected function sendPingBack()
 {
     $err = array();
     $links = array();
     // Wikiのソースのアドレスを取得
     if (preg_match_all('/(https?://[a-zA-Z0-9./~_]+)/', $wiki->get(), $links, PREG_PATTERN_ORDER) === false) {
         // ない場合そのままリターン
         return;
     }
     // 重複を削除
     $target_uris = array_unique($links[0]);
     foreach ($target_uris as $target_uri) {
         // 初期値
         $pingback = false;
         // ターゲットとなるURL接続
         $client = new Client($target_uri);
         // HEADメソッドで接続し、ヘッダーのみ取得
         $client->setMethod(Request::METHOD_HEAD);
         // 返り値を取得
         $response = $client->send();
         // アクセス失敗
         if (!$response->isSuccess()) {
             continue;
         }
         // 返り値のヘッダーからPingBackのURIを取得
         $pingback = $response->getHeaders()->get('x-pingback');
         // x-pingbackヘッダーがない場合(このへんの処理は重そう)
         if ($pingback === false) {
             try {
                 // GETでアクセスしてコンテンツを取得し、linkタグを探す。
                 $client->setMethod(Request::METHOD_GET);
                 // 返り値を取得
                 $response = $client->send();
                 // linkタグからPingBackのURIを取得
                 if (preg_match('<link rel="pingback" href="([^"]+)" ?/?>', $response->getBody(), $matches) !== false) {
                     $pingback = isset($matches[1]) ? $matches[1] : null;
                 }
             } catch (Exception $e) {
                 $err[] = $e;
             }
         }
         // PingBack送信先が見つからない場合スキップ
         if ($pingback === false) {
             continue;
         }
         unset($client, $response);
         // PingBackで送信する内容
         $request = new XmlRpcRequest();
         $request->setMethod('pingback.ping');
         $request->setParams(array($source_uri, $target_uri));
         // 例外を取得
         try {
             // PingBack送信先に接続
             $client = new XmlRpcClient($pingback);
             // 送信
             $client->doRequest($request);
         } catch (\Zend\XmlRpc\Client\Exception\FaultException $e) {
             $err[] = $e;
         }
         $err[] = '-----' . "\n";
         unset($client, $request);
     }
     return $err;
 }