/// <summary> /// Adds the specified instance as metadata against the given category, collection and key. /// </summary> /// <typeparam name="T">Type of the instance object to store as metadata</typeparam> /// <param name='operations'>The operations group for this extension method</typeparam> /// <param name="category">The category</param> /// <param name="collection">The collection</param> /// <param name="key">Unique key for which to store metadata</param> /// <param name="instance">The instance object of type T</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>A task object representing the asynchronous operation.</returns> public static async Task Add <T>(this IMetadata operations, string category, string collection, string key, T instance, CancellationToken cancellationToken = default(CancellationToken)) where T : class { var model = new MetadataModel { Data = instance.ToMetadataDictionary() }; await operations.AddAsync(category, collection, key, model, cancellationToken).ConfigureAwait(false); }
/// <summary> /// Adds the specified instance as metadata against the given category, collection and key. /// Exists for backward compatibility. /// </summary> /// <typeparam name="T">Type of the instance object to store as metadata</typeparam> /// <param name='operations'>The operations group for this extension method</param> /// <param name="category">The category</param> /// <param name="collection">The collection</param> /// <param name="key">Unique key for which to store metadata</param> /// <param name="instance">The instance object of type T</param> /// <param name="keywords">Keywords associated with the data, these keywords will be used to search the data</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>A task object representing the asynchronous operation.</returns> public static Task Add <T>(this IMetadata operations, string category, string collection, string key, T instance, List <string> keywords = null, CancellationToken cancellationToken = default(CancellationToken)) where T : class { if (instance is MetadataModel instanceAsMetadataModel) { return(operations.AddAsync(category, collection, key, instanceAsMetadataModel)); } var model = new MetadataModelContract { Data = JsonConvert.SerializeObject(instance.ToMetadataDictionary()), Keywords = keywords == null ? string.Empty : JsonConvert.SerializeObject(keywords), }; return(operations.RefitClient.Create(category, collection, key, model)); }