NowAttachmentMetadata structure - iOS

  • Release version: Yokohama
  • Updated January 30, 2025
  • 2 minutes to read
  • The NowAttachmentMetadata structure provides functions that enable you to encode and manage attachment metadata.

    Table 1. Properties
    Name Type Description
    averageImageColor String Most dominant color in the associated image.
    chunkSizeInBytes Integer Size of the chunk.

    Unit: Bytes

    compressed​Size​InBytes Integer Compressed size of the attachment.

    Unit: Bytes

    created Date Date on which the attachment was created.
    createdBy String Entity that created the attachment.
    download URL URL of the attachment on the ServiceNow instance.
    fileName String Name of the attachment file.
    hash String Expected SHA256 digest for the attachment.

    A downloaded attachment is validated by comparing its computed digest to this SHA256 digest.

    imageHeight Integer Height of image.

    Unit: Pixels

    imageWidth Integer Width of image.

    Unit: Pixels

    isCompressed Boolean Flag that indicates whether the attachment file is compressed.
    Possible values:
    • true: Attachment is compressed.
    • false: Attachment in not compressed.
    mimeType String Attachment MIME type.
    modificationCount Integer Number of times that the attachment was modified.
    sizeInBytes Integer Size of the attachment.

    Unit: Bytes

    sourceSysId String Sys_id of the attachment file.
    sourceTableName String Name of the source table in which the attachment resides.
    state Availability state, such as conditionally, unavailable, available, and pending.
    sysId String Unique 32-character Globally Unique ID (GUID), that identifies each record in a ServiceNow instance.
    tags String List of tags associated with the attachment.
    updated Date Date on which the attachment was last modified.
    updatedBy String Entity that updated the attachment.

    NowAttachmentMetadata - encode(to encoder: Encoder)

    Encodes the current object value into data using the specified encoder.

    If the object fails to be encoded into data, the encoder encodes an empty keyed container in its place. This function also throws an error if any values are invalid for the specified encoder's format.

    Table 2. Parameters
    Name Type Description
    to encoder Encoder Encoder that defines the structure of the encoded output.
    Table 3. Returns
    Type Description
    None

    The following code example shows how to call this function.

    let query = "active=true^short_descriptionLIKEbroken"
    let filter = Filter(query: query)
    metadataPublisher(filter: filter, limit: 1)
    private func metadataPublisher(filter: Filter?, limit: Int?) {
      let publisher = attachmentService.attachmentMetadata(filter: filter, limit: limit)
      publisher
      .receive(on: DispatchQueue.main)
      .encode(encoder: JSONEncoder())
      .sink { [weak self] completion in
        if case let .failure(error) = completion {
          // attachment published failed, return NowDataError
        }
      } receiveValue: { [weak self] (data) in
        // Attachment published successful, return data
      }
      .store(in: &subscriptions)
    }

    NowAttachmentMetadata - init(from decoder: Decoder)

    Creates a new NowAttachmentMetadata instance by decoding data into an object from the specified decoder.

    This method throws an error if reading from the decoder fails or if the data read is corrupt or otherwise invalid.

    Table 4. Parameters
    Name Type Description
    decoder Decoder Decoder to read data from.
    Table 5. Returns
    Type Description
    None

    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)