NowAttachment structure - iOS

  • Release version: Xanadu
  • Updated August 1, 2024
  • 1 minute to read
  • The NowAttachment structure provides functions that enable you to validate attachments by comparing their computed hash.

    Table 1. Properties
    Name Type Description
    data Data Attachment data.
    hash String Computed digest for the attachment data.

    This computed digest is used to validate the attachment by comparing it to the known digest stored in the attachment metadata. Calculating the computed digest is expensive; avoid using it in the UI. Instead, consider using the hash property in the NowAttachmentMetadata class. If you must use the computed hash, use it sparingly, and consider caching it.

    metadata NowAttachmentMetadata Metadata associated with the attachment.

    NowAttachment - validate()

    Validates the attachment by comparing the computed hash for the attachment data to the digest stored in the attachment metadata.

    Table 2. Parameters
    Name Type Description
    None
    Table 3. Returns
    Type Description
    Boolean Flag that indicates whether the attachment is valid.
    Possible values:
    • true: Attachment is valid.
    • false: Attachment is invalid.

    The following code example shows how to call this function.

    guard 
      let metadataHeader = response.httpResponse?.value(forHTTPHeaderField: NowAttachment.attachmentMetadataHeaderKey),
      let metadataHeaderData = metadataHeader.data(using: .utf8) else {
        throw NowDataError.missingAttachmentMetadata
      }
                
    let metadata = try coder.decode(NowAttachmentMetadata.self, from: metadataHeaderData)
    let attachment = NowAttachment(metadata: metadata, data: response.data)
                
    if !attachment.validate() {
      throw NowDataError.attachmentValidation
    }
    // Attachment is valid
    return attachment