Лучший способ получить пользовательскую папку, используя как пользователя в новом Box Java SDK

В примере с Box простой способ получить корневую папку пользователя с помощью кода ниже

http://opensource.box.com/box-java-sdk/

BoxAPIConnection api = new BoxAPIConnection("your-developer-token");
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
for (BoxItem.Info itemInfo : rootFolder) {
System.out.format("[%d] %s\n", itemInfo.getID(), itemInfo.getName());
}

Но если мне нужно получить доступ к чужой информации с помощью As-user, я не могу использовать классы BOX SDK (BoxFolder, BoxFile, BoxUser...) и мне нужно получать данные только из JSON напрямую, как показано ниже. Если я это сделаю, я теряю последние функции, добавленные в новом SDK. Это лучший способ? Как насчет производительности? Есть ли альтернативный способ?

url=  new URL("https://api.box.com/2.0/folders/0");
BoxAPIRequest request = new BoxAPIRequest(api,url,"GET"); 
request.addHeader("As-User", "12345678");
BoxJSONResponse response = (BoxJSONResponse) request.send();
JsonObject responseJSON =    JsonObject.readFrom(response.getJSON());

Позже получите свойства папки, используя JsonObject / JsonArray. Если мне нужны элементы папки, мне нужно зациклить JsonArray, как показано ниже

JsonArray entries = responseJSON.get("entries").asArray();

for (JsonValue entry : entries) 
               { ....}

1 ответ

К сожалению, новая бета-версия Java SDK пока не имеет встроенной поддержки функциональности "как пользователь", что делает этот вид хитрым. Одним из обходных путей является использование RequestInterceptor с вашим BoxAPIConnection вручную добавить заголовок "Как пользователь" к каждому запросу.

api.setRequestInterceptor(new RequestInterceptor() {
    @Override
    public BoxAPIResponse onRequest(BoxAPIRequest request) {
        request.addHeader("As-User", "user-id");

        // Returning null means the request will be sent along with our new header.
        return null;
    }
}

Это должно позволить вам использовать остальную часть SDK в обычном режиме и не беспокоиться о выполнении запросов API вручную. Я также создал проблему для добавления поддержки "как пользователь".

Другие вопросы по тегам