Microsoft Graph - Поиск в OneDrive - PullRequest
0 голосов
/ 03 октября 2019

Основываясь на документации Microsoft Graph REST API , у нас есть код Xamarin / C #, который выглядит примерно так:

var graphClient = new GraphServiceClient(
   new DelegateAuthenticationProvider(
      (requestMessage) =>
         {
            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
            return (Task.FromResult(0));
         }
      ));
IDriveItemSearchCollectionPage search = await graphClient.Me.Drive.Root
   .Search("{search-query}")
   .Request()
   .GetAsync();

Проблема в том, что я не могу найти документациюо том, что может быть "{search-query}". Методом проб и ошибок получается, что:

  1. Поиск "A" находит все файлы, содержащие "A" в имени или содержимом
  2. Поиск "{search-query} "возвращает пару файлов, я понятия не имею, почему
  3. Поиск« filename: A »ничего не возвращает, хотя у меня есть несколько файлов, которые содержат« A »в своем имени

Я хочу найти все файлы, чье имя содержит определенную подстроку, но если я ищу «*» или «filename: A *» или «filename: A% 2A», он генерирует исключение ServiceException с кодом UnknownError.

Вопрос 1 : Как передать шаблон в функцию Search ()?

Затем, когда я получаю результаты, это Microsoft.Graph.DriveItemSearchCollectionPage, я могу перечислить черезэто и получить кучу DriveItem объектов. У DriveItem есть свойство с именем «Папка», которое иногда ненулевое , но это объект типа Microsoft.Graph.Folder, и Intellisense указывает, что нет способа получить имя папки. И текущая версия Visual Studio Mac не работает, если я щелкну правой кнопкой мыши по папке и выберу «Перейти к объявлению», она сразу же зависнет и использует 100% ЦП и никогда не вернется, мне нужно принудительно завершить работу.

Вопрос 2 : Как получить имя папки, когда у меня есть Microsoft.Graph.Folder?

1 Ответ

0 голосов
/ 08 октября 2019

Я не знаком с синтаксисом поисковых запросов Drive.

Могу сказать, что если свойство Folder не равно NULL, это означает, что DriveItem является папкой. Вы будете использовать DriveItem.Name, чтобы получить имя папки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...