OS X Wiki / API сервера блогов - PullRequest
       32

OS X Wiki / API сервера блогов

0 голосов
/ 24 октября 2011

Я работаю над клиентским приложением для iOS для редактирования встроенного вики / блога на Mac OS X Server (Snow Leopard & Lion).

Похоже, мы можем использовать MetaWeblog,Atom API (я пробовал, но не получилось) или XML-RPC.Тем не менее, я не могу найти какой-либо документ API для него.

Итак, мой вопрос: где я могу найти документы или некоторые примеры с открытым исходным кодом?Все образцы, которые я обнаружил, не могут работать с сервером OS X.

Очень ценю!

Пик

Обновление:

Вот стандартная структура системы Wiki:

Я даже не могу получить список 'group_name' в ~ / Groups /

Wiki Structure

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Я работаю на последнем сервере Lion, для доступа через приложение.Структура веб-службы Lion-сервера основана на ruby ​​on rails и проста для понимания (у меня ранее не было опыта работы с ruby).Однако вся система (для реализованной части) не предназначена для доступа к API.Например, система аутентификации основана на аутентификации Cookie (идентификатор сеанса или что-то в этом роде).не все выходные данные запроса имеют ответ 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 (для меня target-c, с lib_ CC_md5)

затем вы можете добавить поддержку рендеринга 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

Одна важная вещь: сервер lion использует веб-аутентификацию / cookie для авторизации доступа, поэтому ваш запрос lib /Api должен обрабатывать файлы cookie.

Все вышеперечисленное - это простейшее решение с доступом к API / JSON, но не самое лучшее.Вам лучше переделать весь процесс доступа в соответствии с доступом API.

Кстати: вы можете скопировать весь / usr / share / collabd / в каталог вашего собственного проекта, а затем изменить все / путь вашего проекта /collab / coreclient / config / collabcore {1,2,3,4} .yml, измените производство на разработку.

, чтобы вы могли запустить приложение сервера разработки под управлением collab / coreclient с помощью:

sudo -u _teamsserver thin start

доступ к серверу через http://localhost:3000

1 голос
/ 08 ноября 2011

Исходный код 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);
        }
    }
},

Итак, вы отправляете запрос POST в auth / plain_login, содержащий только имя пользователя / пароль в данных POST и заголовок X-CSRF-Token, значение которого исходит из<input type="hidden" name="authenticity_token" /> элемент на странице.Сервер возвращает строку JSON, содержащую логическое значение «success».

Вы также можете использовать инструменты разработчика safari / chrome для мониторинга ajax-запросов к / от сервера, например, это содержимое JSON запроса PUT для сохранения.вики-страница:

wiki save put request

...