簡體   English   中英

OS X Wiki / Blog Server API

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM