![](/img/trans.png)
[英]OS X Server Wiki - How can I get the content of a wiki page to display on another wiki page
[英]OS X Wiki/Blog Server API
我正在開發一個iOS客戶端應用程序來編輯Mac OS X Server(Snow Leopard&Lion)上的內置Wiki / Blog。
似乎我們能夠使用MetaWeblog,Atom API(我已嘗試但失敗)或XML-RPC。 但是,我找不到任何API文檔。
所以我的問題是,我在哪里可以找到文檔或一些開源示例? 我找到的所有樣本都無法處理OS X Server。
非常感謝!
峰
更新:
繼承了Wiki系統的標准結構:
我甚至無法獲得〜/ Groups /下的'group_name'列表
維基的javascript源代碼沒有被混淆,看起來很簡單,可以作為文檔。 例如,身份驗證過程:
sendAuthenticationPlain: function() {
$('webauth').addClassName('verifying').removeClassName('error');
var username = $F('username');
var password = $F('password');
var csrf = $F('authenticity_token');
var plainResponse = "username="+username+"&password="+password
this.setRememberMeCookie();
var ajaxReq = new Ajax.Request(window.location.protocol + '//' + window.location.host + "/auth/plain_login", {
method: 'post',
requestHeaders: {'X-CSRF-Token': csrf},
onComplete: this.gotAuthentication.bind(this),
postBody: plainResponse
});
return false;
},
gotAuthentication: function(origRequest) {
if (origRequest.responseJSON) {
var jsonObject = origRequest.responseJSON
if (jsonObject['success']) {
var redirect = jsonObject['redirect'];
var authToken = jsonObject['auth_token'];
this.successCallback(authToken, redirect);
} else {
var errorString = jsonObject['error_string']
this.failureCallback(errorString);
}
}
},
因此,您向auth / plain_login發送POST請求,其中僅包含POST數據中的用戶名/密碼和X-CSRF-Token標頭,其值來自<input type="hidden" name="authenticity_token" />
元素這一頁。 服務器返回包含“success”布爾值的JSON字符串。
您還可以使用safari / chrome的開發人員工具來監視進出服務器的ajax請求,例如,這是保存Wiki頁面的PUT請求的JSON內容:
我正在研究最新的Lion服務器,通過應用程序進行訪問。 Lion服務器Web服務的結構基於ruby on rails,易於理解(之前我沒有ruby經驗)。 但是,整個系統(對於已實現的部分)不是為API訪問而設計的。 例如,auth系統基於Cookie身份驗證(會話ID或其他內容)。 並非請求的所有輸出都有json響應。 沒有任何失敗的請求響應與json正文。
所有的工作都需要你自己完成。
第一種是通過服務器進行身份驗證。 所有的過程都暴露給你:
'wiki/api/csrf' to get the X-CSRF-Token value
'auth/challenge_advanced?username=xxxx' to get a challenge parameters
'auth/digest_login' to use md5-sess digest to login
同時,md5-sess摘要是由你自己的代碼計算到digest.js之后(對於我來說是Objective-c,有CC_md5 lib)
然后你可以添加json渲染支持你需要的控制器,如,
respond_to do |format|
format.html
format.js { render_js_pagination_response(@search, 'people/entitylist_item') }
format.json { #new added json support
rs = []
@search.results.each do |r|
nr = filterUserInfo r # I only need some of the all properties
rs.push nr
end
render :json => rs
}
end
一個重要的是,獅子服務器使用web auth / cookie來授權訪問,因此你的請求lib / api必須處理cookie。
以上都是api / json訪問的最簡單的解決方案,但不是最好的解決方案。 你最好重新處理所有訪問進度以適應api訪問。
BTW:你可以將整個/ usr / share / collab / /復制到你自己項目的目錄中,然后修改所有/你的項目路徑/ collab / coreclient / config / collabcore {1,2,3,4} .yml,改變生產發展。
所以你可以在collab / coreclient下啟動一個開發服務器應用程序:
sudo -u _teamsserver thin start
通過http:// localhost:3000訪問服務器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.