我把更新器分成了 http, XMPP, 其他
每个更新器都提供query(username, password) 和 update(username, password, status)方法
每个网站对应有自己的一个更新器
对外提供的是一个update.php页面 输入形如:
action=(query|update)&xml=
<?xml version="1.0" standalone="yes"?>
<usu>
<site>
<username>用户名</username>
<password>密码</password>
<status>test12345</status>
</site>
<site>
<username>用户名</username>
<password>密码</password>
<status>test12345</status>
</site>
</usu>
如果action是query 返回值形如:
<?xml version="1.0" standalone="yes"?>
<usu>
<site>
<result>状态 或者 login failed 或者 query failed</result>
</site>
<site>
<result>状态</result>
</site>
</usu>
如果为update 返回形如
<?xml version="1.0" standalone="yes"?>
<usu>
<site>
<result>update success或者login failed 或者update failed</result>
</site>
<site>
<result>update success或者login failed 或者update failed</result>
</site>
</usu>
关于开发:
添加一个新的http更新器很容易 比如 xiaonei的更新器 如下
<?php
require_once('usu-classes.php');
class updater_xiaonei extends http_updater{
//site attributes
public function updater_xiaonei(){
$this->update_method = 'POST';
$this->update_url = '/doing/update.do?';
$this->update_referer = 'http://'.$this->update_domain.$this->query_url;
$this->query_url = '/getdoing.do';
$this->login_url = '/Login.do';
//patterns
$this->query_success_pattern = '/<span id="currentStatus">(.+)<\/span>/';
$this->query_fail_pattern='';
$this->login_success_pattern='';
$this->login_fail_pattern='<div class="errors_div">';
$this->update_success_pattern='/\{"updateStatusId":\d+,"code":\d,"msg":".+"\}/';
$this->update_fail_pattern='';
$this->update_post='c=[STATUS]&raw=[STATUS]';
$this->query_post='';
$this->login_post='email=[USERNAME]&password=[PASSWORD]&origURL=&formName=&method=&submit=%E7%99%BB%E5%BD%95';
}
}
?>
只要找出对应的地址和正则表达式即可 我会稍后添加详细的使用方法和注释