/// <summary> /// Builds a ledger request for storing an ATTRIB. /// </summary> /// <remarks> /// <para> /// Builds a request message that is suitable for setting an attribute on the ledger. /// </para> /// <para> /// The <paramref name="submitterDid"/>, <paramref name="targetDid"/> are mandatory and /// any one of the <paramref name="hash"/>, <paramref name="raw"/> or <paramref name="enc"/> /// parameters must also be provided, depending on what type of data should be stored. /// </para> /// </remarks> /// <param name="submitterDid">The DID of the party that will submit the request to the ledger.</param> /// <param name="targetDid">The DID the ATTRIB will belong to.</param> /// <param name="hash">The hash of the ATTRIB data.</param> /// <param name="raw">The raw JSON attribute data.</param> /// <param name="enc">The encrypted attribute data.</param> /// <returns>An asynchronous <see cref="Task{T}"/> that resolves to a <see cref="string"/> /// containing the request JSON. </returns> public static Task <string> BuildAttribRequestAsync(string submitterDid, string targetDid, string hash, string raw, string enc) { ParamGuard.NotNullOrWhiteSpace(submitterDid, "submitterDid"); ParamGuard.NotNullOrWhiteSpace(targetDid, "targetDid"); if (string.IsNullOrWhiteSpace(hash) && string.IsNullOrWhiteSpace(submitterDid) && string.IsNullOrWhiteSpace(enc)) { throw new ArgumentException("At least one of the 'hash', 'submitterDid' or 'enc' parameters must have a value."); } var taskCompletionSource = new TaskCompletionSource <string>(); var commandHandle = PendingCommands.Add(taskCompletionSource); var result = IndyNativeMethods.indy_build_attrib_request( commandHandle, submitterDid, targetDid, hash, raw, enc, _buildRequestCallback ); CallbackHelper.CheckResult(result); return(taskCompletionSource.Task); }
/// <summary> /// Builds a ledger request for storing an ATTRIB. /// </summary> /// <remarks> /// <para> /// Builds a request message that is suitable for setting an attribute on the ledger. /// </para> /// <para> /// The <paramref name="submitterDid"/>, <paramref name="targetDid"/> are mandatory and /// any one of the <paramref name="hash"/>, <paramref name="raw"/> or <paramref name="enc"/> /// parameters must also be provided, depending on what type of data should be stored. /// </para> /// </remarks> /// <param name="submitterDid">The DID of the party that will submit the request to the ledger.</param> /// <param name="targetDid">The DID the ATTRIB will belong to.</param> /// <param name="hash">The hash of the ATTRIB data.</param> /// <param name="raw">The raw JSON attribute data.</param> /// <param name="enc">The encrypted attribute data.</param> /// <returns>An asynchronous <see cref="Task{T}"/> that resolves to a <see cref="string"/> /// containing the request JSON. </returns> public static Task <string> BuildAttribRequestAsync(string submitterDid, string targetDid, string hash, string raw, string enc) { var taskCompletionSource = new TaskCompletionSource <string>(); var commandHandle = PendingCommands.Add(taskCompletionSource); var result = IndyNativeMethods.indy_build_attrib_request( commandHandle, submitterDid, targetDid, hash, raw, enc, _buildRequestCallback ); CallbackHelper.CheckResult(result); return(taskCompletionSource.Task); }