サービスの OTP を配布するように設計された zend JSON ファクトリがありますが、サーバーに実際に何も返させることができません。
<?php
class Application_Model_FrogconnectOTP
{
/**
* Generates, stores, and returns the OTP for thesupplied user
*
* @param string $username
* @return string
*/
public function generate($username)
{
$hash = "Lol";
return $hash;
}
/**
* Will clear the OTP for the user.
*
* @param string $username
* @return int
*/
public function delete($username)
{
return 1;
}
/**
* Takes the supplied username and hash and will calculate new sums and verify the supplied hash.
*
* @param string $username
* @param string $hash
* @return int
*
*/
public function validate($username, $hash) {
return 1;
}
}
?>
そして、このクラスは、次のようなデフォルトの (ish) zend json サーバーによってロードされます。
<?php
$this->_helper->layout->disableLayout();
$server = new Zend_Json_Server();
$OTPEngine = new Application_Model_FrogconnectOTP();
$server->setClass($OTPEngine);
if ('GET' == $_SERVER['REQUEST_METHOD']) {
// Indicate the URL endpoint, and the JSON-RPC version used:
$server->setTarget('/frogconnect')
->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2);
// Grab the SMD
$smd = $server->getServiceMap();
// Return the SMD to the client
header('Content-Type: application/json');
echo $smd;
return;
}
$server->handle();
ただし、次のような json 文字列でリクエストを作成しようとすると、サーバーは 204 No Content ヘッダーで応答しますが、コンテンツを受信しません ("Lol" を期待する必要があります)。
{"method":"generate","params":{"username":"johndoe"}}
どんな助けでもいただければ幸いです