Classe NowAttachmentService - iOS
A classe NowAttachmentService fornece funções que permitem carregar e consultar anexos associados a registros em uma tabela em uma instância ServiceNow.
Você pode carregar ou recuperar um único arquivo com cada solicitação. O NowAttachmentService respeita todas as limitações do sistema em arquivos carregados, como tamanho máximo de arquivo e tipos de anexo permitidos. Você pode controlar essas configurações usando as propriedades da instância com.glide.attachment.max_size, 1024 MB por padrão, e glide.attachment.extensions.
| Nome | Tipo | Descrição |
|---|---|---|
| configuração | NowServiceConfiguration | Definições de configuração fornecidas quando o serviço foi inicializado. |
NowAttachmentService - attachment(for sysId: Cadeia de caracteres, identifyAttachment: Boolean) lançamentos assíncronos
Recupera o anexo com o sys_id especificado e valida o anexo comparando o hash calculado do anexo com a soma de verificação SHA256 esperada.
falso. Você pode validar o anexo posteriormente, se necessário, chamando a função Attachment.validate().| Nome | Tipo | Descrição |
|---|---|---|
| para sysId | Cadeia de caracteres | Sys_id do anexo a ser recuperado. |
| validarAnexo | Booliano | Sinalizador que indica se o anexo deve ser validado. Valores válidos:
Padrão: verdadeiro |
| Tipo | Descrição |
|---|---|
| NowAttachment | Retornado quando o método é bem-sucedido. Anexo especificado. |
| NowDataError | Lançado quando o método falha.
|
Os exemplos de código a seguir mostram como chamar este método.
func downloadAttachment(sysId: String) async throws -> NowAttachment {
do {
let nowAttachment = try await attachmentService.attachment(for: sysId, validateAttachment: false)
return nowAttachment
} catch {
// Handle NowDataError
throw error
}
}
NowAttachmentService - attachment(for sysId: Cadeia de caracteres, validAttachment: Booliano, conclusão: @escaping (Resultado<NowAttachment, NowDataError> ))
Recupera o anexo com o sys_id especificado e valida o anexo comparando o hash calculado do anexo com a soma de verificação SHA256 esperada. Depois de concluído, ele executa o manipulador de conclusão aprovado.
falso. Você pode validar o anexo posteriormente, se necessário, chamando a função Attachment.validate().| Nome | Tipo | Descrição |
|---|---|---|
| para sysId | Cadeia de caracteres | Sys_id do anexo a ser recuperado. |
| validarAnexo | Booliano | Sinalizador que indica se o anexo deve ser validado. Valores válidos:
Padrão: verdadeiro |
| conclusão | @escaping (Resultado<NowAttachment, NowDataError>) | Manipulador de conclusão a ser executado depois que o anexo for recuperado. Retornar valores para o manipulador de conclusão:
|
| Tipo | Descrição |
|---|---|
| Nenhum |
O exemplo de código a seguir mostra como chamar esta função.
let sysId = UUID().uuidString // UUID for the attachment
private func downloadAttachment(sysId: String) {
attachmentService.attachment(for: sysId, validateAttachment: false) { (result) in
switch result {
case .success(let attachment):
// Attachment retrieved successful, return attachment
case .failure(let error):
// Attachment retrieved failed, return NowDataError
}
}
}
NowAttachmentService - attachment (para sysId: Cadeia de caracteres, identifyAttachment: Booliano)
Recupera o anexo com o sys_id especificado e valida o anexo comparando o hash calculado do anexo com o esperado.
falso. Se necessário, você pode validar o anexo posteriormente chamando a função Attachment.validate().| Nome | Tipo | Descrição |
|---|---|---|
| para sysId | Cadeia de caracteres | Sys_id do anexo a ser recuperado. |
| validarAnexo | Booliano | Sinalizador que indica se o anexo deve ser validado. Valores válidos:
Padrão: verdadeiro |
| Tipo | Descrição |
|---|---|
| Qualquer publicador<NowAttachment, NowDataError> | Sucesso: NowAttachment - Contém o anexo especificado. Falha: NowDataError
|
O exemplo de código a seguir mostra como chamar esta função.
let sysId = UUID().uuidString // UUID for the attachment
private func downloadAttachment(sysId: String) {
let publisher = self.attachmentService.attachment(for: sysId, validateAttachment: false)
publisher
.receive(on: DispatchQueue.main)
.sink { [weak self] completion in
if case let .failure(error) = completion {
// Attachment retrieved failed, return NowDataError
}
} receiveValue: { [weak self] (attachment) in
// Attachment retrieved successful, return attachment
}
.store(in: &subscriptions)
}
NowAttachmentService - attachmentMetadata (filtro: filtro, limite: Int) lançamentos assíncronos
Recupera os metadados de todos os anexos que atendem aos critérios especificados.
| Nome | Tipo | Descrição |
|---|---|---|
| filtros | Filtro | Opcional. Cadeia de caracteres de consulta a ser usada para filtrar os anexos cujos metadados serão retornados. Padrão: nil - Retorna metadados para todos os anexos disponíveis. Leva em consideração o parâmetro limit. |
| limite | Inteiro | Opcional. Número máximo de metadados do arquivo de anexo a serem retornados. Padrão: nil - Retorna todos os metadados que atendem às especificações do parâmetro filter. |
| Tipo | Descrição |
|---|---|
| [NowAttachmentMetadata] | Retornado quando o método é bem-sucedido. Matriz que contém os metadados dos anexos correspondentes. |
| NowDataError | Lançado quando o método falha.
|
Os exemplos de código a seguir mostram como chamar este método.
let filter = Filter(criteria: [], sortBy: [.desc("created")],
queryCategory: nil)
do {
let metadata = try await attachmentService.attachmentMetadata(filter: filter, limit: 10)
// Metadata retrieval successful
} catch {
// Metadata retrieval failed, NowDataError thrown
}
NowAttachmentService - attachmentMetadata(filtro: filtro, limite: int, conclusão: @escaping (Result<[NowAttachmentMetadata], NowDataError>))
Recupera os metadados de todos os anexos que atendem aos critérios especificados.
| Nome | Tipo | Descrição |
|---|---|---|
| filtros | Filtro | Opcional. Cadeia de caracteres de consulta a ser usada para filtrar os anexos cujos metadados serão retornados. Padrão: nil - Retorna metadados para todos os anexos disponíveis. Leva em consideração o parâmetro limit. |
| limite | Inteiro | Opcional. Número máximo de metadados do arquivo de anexo a serem retornados. Padrão: nil - Retorna todos os metadados que atendem às especificações do parâmetro filter. |
| conclusão | @escaping (Result<[NowAttachmentMetadata], NowDataError>) | Manipulador de conclusão a ser executado depois que os metadados forem recuperados. Retornar valores para o manipulador de conclusão:
|
| Tipo | Descrição |
|---|---|
| Nenhum |
O exemplo de código a seguir mostra como chamar esta função.
let query = "active=true^short_descriptionLIKEbroken"
let filter = Filter(query: query)
attachmentService.attachmentMetadata(filter: filter, limit: limit) { (result) in
DispatchQueue.main.async { [weak self] in
switch result {
case .success(let response):
do {
let data = try JSONEncoder().encode(response)
// Retrieve metadata successfully, return data
} catch {
// Retrieve metadata failed, return error
}
case .failure(let error):
// Retrieve metadata failed, return NowDataError
}
}
}
NowAttachmentService - attachmentMetadata (filtro: filtro, limite: int)
Recupera os metadados de todos os anexos que atendem aos critérios especificados.
| Nome | Tipo | Descrição |
|---|---|---|
| filtros | Filtro | Opcional. Cadeia de caracteres de consulta a ser usada para filtrar os anexos cujos metadados serão retornados. Padrão: nil - Retorna metadados para todos os anexos disponíveis. Leva em consideração o parâmetro limit. |
| limite | Inteiro | Opcional. Número máximo de metadados do arquivo de anexo a serem retornados. Padrão: nil - Retorna todos os metadados que atendem às especificações do parâmetro filter. |
| Tipo | Descrição |
|---|---|
| Qualquer publicador<[NowAttachmentMetadata], NowDataError> | Sucesso: NowAttachmentMetadata - Objetos que contêm os metadados dos anexos correspondentes. Falha: NowDataError
|
O exemplo de código a seguir mostra como chamar esta função.
let query = "active=true^short_descriptionLIKEbroken"
let filter = Filter(query: query)
let publisher = self.attachmentService.attachmentMetadata(filter: filter)
publisher
.receive(on: DispatchQueue.main)
.encode(encoder: JSONEncoder())
.sink { [weak self] completion in
if case let .failure(error) = completion {
// Retrieve metadata failed, return NowDataError
} receiveValue: { [weak self] (data) in
// Retrieve metadata successfully, return data
}
.store(in: &subscriptions
NowAttachmentService - attachmentMetadata (para sysId: cadeia de caracteres) lançamentos assíncronos
Recupera os metadados do anexo associado ao sys_id especificado.
| Nome | Tipo | Descrição |
|---|---|---|
| para sysId | Cadeia de caracteres | Sys_id do anexo cujos metadados serão recuperados. |
| Tipo | Descrição |
|---|---|
| NowAttachmentMetadata | Retornado quando o método é bem-sucedido. Metadados do anexo solicitado. |
| NowDataError | Lançado quando o método falha.
|
Os exemplos de código a seguir mostram como chamar este método.
do {
let metadata = try await attachmentService.attachmentMetadata(for: sysId)
// Metadata retrieval successful
} catch {
// Metadata retrieval failed, NowDataError thrown
}
NowAttachmentService - attachmentMetadata (para sysId: Cadeia de caracteres, conclusão: @escaping (Resultado<NowAttachmentMetadata, NowDataError> ))
Recupera os metadados do anexo associado ao sys_id especificado e executa o manipulador de conclusão depois que os metadados são recuperados.
| Nome | Tipo | Descrição |
|---|---|---|
| para sysId | Cadeia de caracteres | Sys_id do anexo cujos metadados serão recuperados. |
| conclusão | @escaping (Resultado<NowAttachmentMetadata, NowDataError>) | Manipulador de conclusão a ser executado depois que os metadados forem recuperados. Retornar valores para o manipulador de conclusão:
|
| Tipo | Descrição |
|---|---|
| Nenhum |
O exemplo de código a seguir mostra como chamar esta função.
let sysId = UUID().uuidString // UUID for the attachment
attachmentService.attachmentMetadata(for: sysId) { (result) in
DispatchQueue.main.async { [weak self] in
switch result {
case .success(let response):
do {
let data = try JSONEncoder().encode(response)
// Retrieve metadata successfully, return data
} catch {
// Retrieve metadata failed, return error
}
case .failure(let error):
// Retrieve metadata failed, return NowDataError
}
}
}
NowAttachmentService - attachmentMetadata (para sysId: cadeia de caracteres)
Recupera os metadados do anexo associado ao sys_id especificado.
| Nome | Tipo | Descrição |
|---|---|---|
| para sysId | Cadeia de caracteres | Sys_id do anexo cujos metadados serão recuperados. |
| Tipo | Descrição |
|---|---|
| Qualquer publicador<[NowAttachmentMetadata], NowDataError> | Sucesso: NowAttachmentMetadata - Objeto que contém os metadados do anexo solicitado. Falha: NowDataError
|
O exemplo de código a seguir mostra como chamar esta função.
let sysId = UUID().uuidString // UUID for the attachment
let publisher = self.attachmentService.attachmentMetadata(for: sysId)
publisher
.receive(on: DispatchQueue.main)
.encode(encoder: JSONEncoder())
.sink { [weak self] completion in
if case let .failure(error) = completion {
// Retrieve metadata failed, return NowDataError
}
} receiveValue: { [weak self] (data) in
// Retrieve metadata successfully, return data
}
.store(in: &subscriptions)
NowAttachmentService - attachmentMetadataPaginator (filtro: filtro, limite: int)
Recupera os metadados de todos os anexos que atendem aos critérios especificados e retorna um objeto Paginator para iterar pelas páginas dos metadados retornados.
| Nome | Tipo | Descrição |
|---|---|---|
| filtros | Filtro | Opcional. Cadeia de caracteres de consulta a ser usada para filtrar os anexos cujos metadados serão retornados. Padrão: nil - Retorna metadados para todos os anexos disponíveis. Leva em consideração o parâmetro limit. |
| limite | Inteiro | Opcional. Número máximo de metadados do arquivo de anexo a serem retornados. Padrão: nil - Retorna todos os metadados que atendem às especificações do parâmetro filter. |
| Tipo | Descrição |
|---|---|
| Paginador<[NowAttachmentMetadata]> | Sucesso: matriz de objetos NowAttachmentMetadata. Falha: objeto NowDataError.
|
O exemplo de código a seguir mostra como chamar esta função.
let paginator: Paginator<T> = makePaginator(query: query, fetchLimit: 1)
func makePaginator(query: String, fetchLimit: Int?) -> Paginator<[NowAttachmentMetadata]> {
attachmentsService.attachmentMetadataPaginator(filter: Filter(query: query), limit: fetchLimit)
}
NowAttachmentService - delete(sysId: String) lançamentos assíncronos
Exclui o anexo com o sys_id especificado.
| Nome | Tipo | Descrição |
|---|---|---|
| sysId | Cadeia de caracteres | Sys_id do anexo a ser excluído. |
| Tipo | Descrição |
|---|---|
| Nenhum | Nada será retornado se o método for bem-sucedido. |
| NowDataError | Lançado quando o método falha.
|
Os exemplos de código a seguir mostram como chamar este método.
do {
try await attachmentService.delete(sysId: sysId)
// Deletion successful
} catch {
// Deletion failed, NowDataError thrown
}
NowAttachmentService - delete(sysId: Cadeia de caracteres, conclusão: @escaping (Resultado<Void, NowDataError> ))
Exclui o anexo com o sys_id especificado e executa o manipulador de conclusão aprovado depois que o anexo é excluído.
| Nome | Tipo | Descrição |
|---|---|---|
| sysId | Cadeia de caracteres | Sys_id do anexo a ser excluído. |
| conclusão | @escaping (resultado<Void, NowDataError> ) | Manipulador de conclusão a ser executado após a exclusão do anexo. Retornar valores para o manipulador de conclusão:
|
| Tipo | Descrição |
|---|---|
| Nenhum |
O exemplo de código a seguir mostra como chamar esta função.
let sysId = UUID().uuidString // UUID for the attachment
attachmentService.delete(sysId: sysId) { (result) in
DispatchQueue.main.async { [weak self] in
switch result {
case .success:
// Attachment with sysId is deleted
case .failure(let error):
// Failed to delete, with NowDataError
}
}
}
NowAttachmentService - delete(sysId: cadeia de caracteres)
Exclui o anexo com o sys_id especificado.
| Nome | Tipo | Descrição |
|---|---|---|
| sysId | Cadeia de caracteres | Sys_id do anexo a ser excluído. |
| Tipo | Descrição |
|---|---|
| Qualquer publicador<Void, NowDataError> | Sucesso: nada retornado Falha: NowDataError
|
O exemplo de código a seguir mostra como chamar esta função.
let publisher = attachmentService.delete(sysId: sysId)
publisher
.receive(on: DispatchQueue.main)
.sink { [weak self] completion in
switch completion {
case .finished:
// Attachment with sysId is deleted
case .failure(let error):
// Failed to delete, with NowDataError
}
} receiveValue: {
}
.store(in: &subscriptions)
NowAttachmentService - init(configuration: NowServiceConfiguration, coreServiceProvider: NowCoreServiceProviding)
Inicializa uma nova instância NowAttachmentService.
| Nome | Tipo | Descrição |
|---|---|---|
| configuração | NowServiceConfiguration | Informações de configuração necessárias para inicializar corretamente o serviço. |
| coreServiceProvider | NowCoreServiceProviding | Opcional. Objeto que implementa o protocolo NowCoreServiceProviding. Padrão: nulo |
O exemplo de código a seguir mostra como chamar esta função.
guard let coreService = NowSDK.core() else {
// Error with NowServiceError.sdkNotConfigured
return
}
guard
let instanceUrl = URL(string: "http://sample.service-now.com"),
let serviceConfig = NowSDK.makeServiceConfiguration(for: instanceUrl) else {
// Could not create service –
// NowServiceError.serviceConfigurationInvalid
return
}
let attachmentService = NowAttachmentService(configuration: serviceConfig, coreServiceProvider: coreService)
NowAttachmentService - upload (data: Data, configuração: NowAttachmentUploadConfiguration, progressUpdate: @escaping ProgressUpdate) lançamentos assíncronos
Carrega os dados do anexo e os anexa a um registro em uma tabela conforme especificado na configuração de carregamento.
O retorno de chamada ProgressUpdate fornece informações de andamento de upload que você pode usar para fornecer feedback de IU.
| Nome | Tipo | Descrição |
|---|---|---|
| dados | Dados | Anexo a ser carregado. |
| configuração | Configuração de NowAttachmentUpload | Informações de configuração que definem os parâmetros de carregamento do anexo, como:
|
| andamentoAtualizar | @escaping ProgressUpdate | Manipulador de conclusão a ser executado depois que o anexo for recuperado. Isso é chamado várias vezes até que o processo de upload seja concluído. Retornar valores para o manipulador de conclusão: ProgressUpdate — Retorna o andamento atual do upload.
|
| Tipo | Descrição |
|---|---|
| NowAttachmentMetadata | Retornado quando o método é bem-sucedido. Objeto que contém os metadados carregados. |
| NowDataError | Lançado quando o método falha.
|
Os exemplos de código a seguir mostram como chamar este método.
func uploadFile(for tableName: String, sysId: String, mimeType: String, encryptionContext: String?, data: Data, filename: String) async throws -> NowAttachmentMetadata {
let mimeType = MediaUtilities.mimeType(forFileName: filename)
let uploadConfig = NowAttachmentUploadConfiguration(tableName: tableName,
recordSysId: sysId,
fileName: filename,
contentType: mimeType,
encryptionContext: encryptionContext)
do {
let attachmentMetadata = try await attachmentService.upload(data: data, configuration: uploadConfig) { (_, _, _) in }
return attachmentMetadata
} catch {
// Handle NowDataError
throw error
}
}
NowAttachmentService - upload (dados: Dados, configuração: NowAttachmentUploadConfiguration, progressUpdate: @escaping ProgressUpdate, conclusão: @escaping (Resultado<NowAttachmentMetadata, NowDataError> ))
Carrega os dados do anexo e os anexa a um registro em uma tabela conforme especificado na configuração de carregamento.
O retorno de chamada ProgressUpdate fornece informações de andamento de upload que você pode usar para fornecer feedback de IU.
| Nome | Tipo | Descrição |
|---|---|---|
| dados | Dados | Anexo a ser carregado. |
| configuração | Configuração de NowAttachmentUpload | Informações de configuração que definem os parâmetros de carregamento do anexo, como:
|
| andamentoAtualizar | @escaping ProgressUpdate | Manipulador de conclusão a ser executado depois que o anexo for recuperado. Isso é chamado várias vezes até que o processo de upload seja concluído. Retornar valores para o manipulador de conclusão: ProgressUpdate — Retorna o andamento atual do upload.
|
| conclusão | @escaping (Result<NowAttachmentMetadata, NowDataError>) | Manipulador de conclusão a ser executado depois que os metadados são carregados. Retornar valores para o manipulador de conclusão:
|
| Tipo | Descrição |
|---|---|
| Nenhum |
O exemplo de código a seguir mostra como chamar esta função.
typealias ProgressUpdate = (_ bytesWritten: Int64, _ totalBytesWritten: Int64, _ totalBytesExpectedToWrite: Int64) -> Void
let image = UIImage(named: "photo.png")
let data = image.pngData()
let recordSysId = "" // Sys_id of the record on the SN instance
let config = NowAttachmentUploadConfiguration(
tableName: "tableName",
recordSysId: recordSysId,
fileName: "photo.png",
contentType: "image/png",
encryptionContext: nil)
private func uploadFile(
data: Data,
config: NowAttachmentUploadConfiguration,
progress: @escaping ProgressUpdate) {
attachmentService.upload(data: data, configuration: config, progressUpdate: progress) { (result) in
DispatchQueue.main.async { [weak self] in
switch result {
case .success(let response)
do {
let data = try JSONEncoder().encode(response)
// Upload file successfully, return data
} catch
// Upload file decode failed, return error
}
case .failure(let error):
// Upload file failed, return NowDataError
}
}
}
NowAttachmentService - upload(data: Data, configuration: NowAttachmentUploadConfiguration, progressUpdate: @escaping ProgressUpdate)
Carrega os dados do anexo e os anexa a um registro em uma tabela conforme especificado na configuração de carregamento.
O retorno de chamada ProgressUpdate fornece informações de andamento de upload que você pode usar para fornecer feedback de IU.
| Nome | Tipo | Descrição |
|---|---|---|
| dados | Dados | Anexo a ser carregado. O tamanho dos dados e o tipo de anexo que você pode carregar são controlados pela sua instância ServiceNow. |
| configuração | NowAttachmentUploadConfiguration | Informações de configuração que definem os parâmetros de carregamento do anexo, como:
|
| andamentoAtualizar | @escaping ProgressUpdate | Manipulador de conclusão a ser executado depois que o anexo for recuperado. Retornar valores para o manipulador de conclusão: ProgressUpdate — Retorna o andamento atual do upload. Isso é chamado várias vezes até que o processo de upload seja concluído.
|
| Tipo | Descrição |
|---|---|
| Qualquer publicador<NowAttachmentMetadata, NowDataError> | Sucesso: NowAttachmentMetadata - Objeto que contém os metadados do anexo solicitado. Falha: NowDataError
|
O exemplo de código a seguir mostra como chamar esta função.
typealias ProgressUpdate = (_ bytesWritten: Int64, _ totalBytesWritten: Int64, _ totalBytesExpectedToWrite: Int64) -> Void
let image = UIImage(named: "photo.png")
let data = image.pngData()
let recordSysId = "" // Sys_id of the record on the SN instance
let config = NowAttachmentUploadConfiguration(
tableName: "tableName",
recordSysId: recordSysId,
fileName: "photo.png",
contentType: "image/png",
encryptionContext: nil)
private func uploadFile(data: Data,
config: NowAttachmentUploadConfiguration,
progress: @escaping ProgressUpdate) {
let publisher = attachmentService.upload(data: data, configuration: config, progressUpdate: progress)
publisher
.receive(on: DispatchQueue.main)
.encode(encoder: JSONEncoder())
.sink { [weak self] completion in
if case let .failure(error) = completion {
// Upload file failed, return NowDataError
}
} receiveValue: { [weak self] (data) in
// Upload file successfully, return data
}
.store(in: &subscriptions)
}