IStorageProviderSuggestionsHandler.GetSuggestions Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Executes the suggestions query given the parameters in the options object and returns a result set.
Important
The Windows.Storage.Provider.IStorageProviderSuggestionsHandler API is part of a Limited Access Feature (see LimitedAccessFeatures class). For more information or to request an unlock token, please use the LAF Access Token Request Form.
public:
StorageProviderQueryResultSet ^ GetSuggestions(StorageProviderSuggestionsQueryOptions ^ options);
StorageProviderQueryResultSet GetSuggestions(StorageProviderSuggestionsQueryOptions const& options);
public StorageProviderQueryResultSet GetSuggestions(StorageProviderSuggestionsQueryOptions options);
function getSuggestions(options)
Public Function GetSuggestions (options As StorageProviderSuggestionsQueryOptions) As StorageProviderQueryResultSet
Parameters
The options used to customize the suggestions query.
Returns
The result set object that contains the list of results.
Examples
The following is an example of how a cloud storage provider could implement GetSuggestions to return recent files by parsing a JSON response returned from a cloud storage service:
constexpr auto c_sampleSuggestionsResponse =
LR"({
"suggestionsKind": "Recent",
"results": [
{
"filePath": "C:\Users\UserA\ContosoDrive\foo.txt",
"id": "11",
"requestedProperties": {
"System.ItemNameDisplayWithoutExtension": "foo",
"System.FileExtension": ".txt",
"System.ContentUri": "https://contoso.com/UserA/foo.txt",
"System.DateAccessed": "2020-01-01T12:00:00Z"
}
},
{
"filePath": "",
"id": "12",
"requestedProperties": {
"System.ItemNameDisplayWithoutExtension": "bar",
"System.FileExtension": ".txt",
"System.ContentUri": "https://contoso.com/UserB/bar.txt",
"System.DateAccessed": "2020-01-01T12:00:00Z"
}
}
]
})";
std::vector<StorageProviderSuggestionResult> ParseSuggestionResponse(IVectorView<hstring> propertiesToFetch)
{
// Parse the JSON response
const JsonObject response = JsonObject::Parse(c_sampleSuggestionsResponse);
std::vector<StorageProviderSuggestionResult> suggestionResults;
for (const auto& result : response.GetNamedArray(L"results"))
{
const JsonObject resultObject = result.GetObject();
StorageProviderSuggestionResult suggestionResult;
suggestionResult.Kind(StorageProviderResultKind::Recent);
suggestionResult.FilePath(resultObject.GetNamedString(L"filePath"));
suggestionResult.RemoteFileId(resultObject.GetNamedString(L"id"));
const JsonObject requestedProperties = resultObject.GetNamedObject(L"requestedProperties");
for (const auto& propertyName : propertiesToFetch)
{
if (const IJsonValue value = requestedProperties.TryLookup(propertyName))
{
suggestionResult.RequestedProperties().Insert(propertyName, box_value(value.GetString()));
}
}
suggestionResults.push_back(std::move(suggestionResult));
}
return suggestionResults;
}
StorageProviderQueryResultSet GetSuggestions(StorageProviderSuggestionsQueryOptions const& options)
{
StorageProviderSearchQueryStatus status{ StorageProviderSearchQueryStatus::QueryNotSupported };
std::vector<StorageProviderSuggestionResult> results;
if (options.SuggestionsKind() == StorageProviderResultKind::Recent)
{
results = ParseSuggestionResponse(options.PropertiesToFetch());
status = StorageProviderSearchQueryStatus::Success;
}
StorageProviderQueryResultSet resultSet{ com_array<IStorageProviderQueryResult>(std::move(results)) };
resultSet.Status(status);
return resultSet;
}
Remarks
The returned StorageProviderQueryResultSet is expected to return StorageProviderSuggestionResult objects from its GetResults method.
If the SuggestionsKind passed in the options object is not supported by the cloud provider, they should return a StorageProviderQueryResultSet object with the Status set to QueryNotSupported.
To support offline scenarios and improve reliability, the cloud storage provider should cache the results of any requests made to backing services and return cached results when appropriate.