NowAttachmentService クラス:iOS
NowAttachmentService クラスには、インスタンス上のServiceNowテーブル内のレコードに関連付けられている添付ファイルをアップロードおよびクエリできる関数が用意されています。
要求ごとに 1 つのファイルをアップロードまたは取得できます。NowAttachmentService は、最大ファイルサイズや許可される添付ファイルタイプなど、アップロードされたファイルに関するシステム制限に従います。インスタンスプロパティ com.glide.attachment.max_size、デフォルトでは 1024MB、および glide.attachment.extensions を使用して、これらの設定を制御できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| 構成 | NowServiceConfiguration | サービスの初期化時に提供された構成設定。 |
NowAttachmentService - attachment(for sysId: String, validateAttachment: Boolean) async throws
指定されたsys_idの添付ファイルを取得し、添付ファイルの計算されたハッシュを予想される SHA256 チェックサムと比較して添付ファイルを検証します。
false に設定すると、validateAttachment検証手順をスキップできます。必要に応じて Attachment.validate() 関数を呼び出すことで、後で添付ファイルを検証できます。| 名前 | タイプ | 説明 |
|---|---|---|
| sysId 用 | 文字列 | 取得する添付ファイルのSys_id。 |
| validateAttachment | ブール | 添付ファイルを検証するかどうかを示すフラグ。 有効な値:
デフォルト:true |
| タイプ | 説明 |
|---|---|
| NowAttachment | メソッドが成功した場合に返されます。指定された添付ファイル。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
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: String, validateAttachment: Boolean, completion: @escaping (Result<NowAttachment, NowDataError>))
指定されたsys_idの添付ファイルを取得し、添付ファイルの計算されたハッシュを予想される SHA256 チェックサムと比較して添付ファイルを検証します。完了すると、渡された完了ハンドラーが実行されます。
false に設定すると、validateAttachment検証手順をスキップできます。必要に応じて Attachment.validate() 関数を呼び出すことで、後で添付ファイルを検証できます。| 名前 | タイプ | 説明 |
|---|---|---|
| sysId 用 | 文字列 | 取得する添付ファイルのSys_id。 |
| validateAttachment | ブール | 添付ファイルを検証するかどうかを示すフラグ。 有効な値:
デフォルト:true |
| 完了 | @escaping (result<NowAttachment, NowDataError>) | 添付ファイルの取得後に実行する完了ハンドラー。 完了ハンドラーの値を返します。
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
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(for sysId: String, validateAttachment: Boolean)
指定されたsys_idの添付ファイルを取得し、添付ファイルの計算されたハッシュを予想されるハッシュと比較して添付ファイルを検証します。
false に設定すると、validateAttachment検証手順をスキップできます。必要に応じて、 Attachment.validate() 関数を呼び出して、後で添付ファイルを検証できます。| 名前 | タイプ | 説明 |
|---|---|---|
| sysId 用 | 文字列 | 取得する添付ファイルのSys_id。 |
| validateAttachment | ブール | 添付ファイルを検証するかどうかを示すフラグ。 有効な値:
デフォルト:true |
| タイプ | 説明 |
|---|---|
| AnyPublisher<NowAttachment, NowDataError> | 成功: NowAttachment - 指定された添付ファイルが含まれます。 エラー:NowDataError
|
次のコード例は、この関数を呼び出す方法を示しています。
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(フィルター: フィルター, 制限: Int) 非同期スロー
指定された基準を満たすすべての添付ファイルのメタデータを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| filter | フィルター | オプション。メタデータを返す添付ファイルをフィルタリングするために使用するクエリ文字列。 デフォルト:nil - 利用可能なすべての添付ファイルのメタデータを返します。パラメーターを考慮します limit 。 |
| limit | 整数 | オプション。返される添付ファイルのメタデータの最大数。 デフォルト:nil - パラメーターの仕様を満たす filter すべてのメタデータを返します。 |
| タイプ | 説明 |
|---|---|
| [NowAttachmentMetadata] | メソッドが成功した場合に返されます。一致する添付ファイルのメタデータを含むアレイ。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
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(フィルター: フィルター, 制限: 整数, completion: @escaping (結果<[NowAttachmentMetadata], NowDataError>))
指定された基準を満たすすべての添付ファイルのメタデータを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| filter | フィルター | オプション。メタデータを返す添付ファイルをフィルタリングするために使用するクエリ文字列。 デフォルト:nil - 利用可能なすべての添付ファイルのメタデータを返します。パラメーターを考慮します limit 。 |
| limit | 整数 | オプション。返される添付ファイルのメタデータの最大数。 デフォルト:nil - パラメーターの仕様を満たす filter すべてのメタデータを返します。 |
| 完了 | @escaping (Result<[NowAttachmentMetadata], NowDataError>) | メタデータの取得後に実行する完了ハンドラー。 完了ハンドラーの値を返します。
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
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(フィルター: フィルター, 制限: Int)
指定された基準を満たすすべての添付ファイルのメタデータを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| filter | フィルター | オプション。メタデータを返す添付ファイルをフィルタリングするために使用するクエリ文字列。 デフォルト:nil - 利用可能なすべての添付ファイルのメタデータを返します。パラメーターを考慮します limit 。 |
| limit | 整数 | オプション。返される添付ファイルのメタデータの最大数。 デフォルト:nil - パラメーターの仕様を満たす filter すべてのメタデータを返します。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<[NowAttachmentMetadata], NowDataError> | 成功:NowAttachmentMetadata:一致する添付ファイルのメタデータを含むオブジェクト。 エラー:NowDataError
|
次のコード例は、この関数を呼び出す方法を示しています。
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(sysId: 文字列) 非同期 throws
指定されたsys_idに関連付けられている添付ファイルのメタデータを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysId 用 | 文字列 | メタデータを取得する添付ファイルのSys_id。 |
| タイプ | 説明 |
|---|---|
| NowAttachmentMetadata | メソッドが成功した場合に返されます。要求された添付ファイルのメタデータ。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
do {
let metadata = try await attachmentService.attachmentMetadata(for: sysId)
// Metadata retrieval successful
} catch {
// Metadata retrieval failed, NowDataError thrown
}
NowAttachmentService - attachmentMetadata(for sysId: String, completion: @escaping (Result<NowAttachmentMetadata, NowDataError>))
指定したsys_idに関連付けられている添付ファイルのメタデータを取得し、メタデータを取得した後に完了ハンドラーを実行します。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysId 用 | 文字列 | メタデータを取得する添付ファイルのSys_id。 |
| 完了 | @escaping (Result<NowAttachmentMetadata, NowDataError>) | メタデータの取得後に実行する完了ハンドラー。 完了ハンドラーの値を返します。
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
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(sysId: 文字列)
指定されたsys_idに関連付けられている添付ファイルのメタデータを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysId 用 | 文字列 | メタデータを取得する添付ファイルのSys_id。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<[NowAttachmentMetadata], NowDataError> | 成功:NowAttachmentMetadata:要求された添付ファイルのメタデータを含むオブジェクト: エラー:NowDataError
|
次のコード例は、この関数を呼び出す方法を示しています。
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(フィルター: フィルター, 制限: Int)
指定された条件を満たすすべての添付ファイルのメタデータを取得し、返されたメタデータのページを反復処理するための Paginator オブジェクトを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| filter | フィルター | オプション。メタデータを返す添付ファイルをフィルタリングするために使用するクエリ文字列。 デフォルト:nil - 利用可能なすべての添付ファイルのメタデータを返します。パラメーターを考慮します limit 。 |
| limit | 整数 | オプション。返される添付ファイルのメタデータの最大数。 デフォルト:nil - パラメーターの仕様を満たす filter すべてのメタデータを返します。 |
| タイプ | 説明 |
|---|---|
| Paginator<[NowAttachmentMetadata]> | 成功:NowAttachmentMetadata オブジェクトのアレイ。 エラー:NowDataError オブジェクト。
|
次のコード例は、この関数を呼び出す方法を示しています。
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: 文字列) async throws
指定されたsys_idの添付ファイルを削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | 削除する添付ファイルの sys_id。 |
| タイプ | 説明 |
|---|---|
| なし | メソッドが成功した場合は何も返されません。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
do {
try await attachmentService.delete(sysId: sysId)
// Deletion successful
} catch {
// Deletion failed, NowDataError thrown
}
NowAttachmentService - delete(sysId: 文字列, completion: @escaping (Result<Void, NowDataError>))
指定されたsys_idの添付ファイルを削除し、添付ファイルが削除された後、渡された完了ハンドラーを実行します。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | 削除する添付ファイルの sys_id。 |
| 完了 | @escaping (result<void, nowDataError>) | 添付ファイルが削除された後に実行する完了ハンドラー。 完了ハンドラーの値を返します。
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
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: 文字列)
指定されたsys_idの添付ファイルを削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysId | 文字列 | 削除する添付ファイルの sys_id。 |
| タイプ | 説明 |
|---|---|
| AnyPublisher<Void, NowDataError> | 成功:何も返されませんでした エラー:NowDataError
|
次のコード例は、この関数を呼び出す方法を示しています。
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)
新しい NowAttachmentService インスタンスを初期化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 構成 | NowServiceConfiguration | サービスを適切に初期化するために必要な構成情報。 |
| coreServiceProvider | ナウコアサービス提供 | オプション。NowCoreServiceOffering プロトコルを実装するオブジェクト。 デフォルト:nil |
次のコード例は、この関数を呼び出す方法を示しています。
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, configuration: NowAttachmentUploadConfiguration, progressUpdate: @escaping ProgressUpdate) async throws
添付ファイルデータをアップロードし、アップロード構成で指定されたテーブルのレコードに添付します。
ProgressUpdate コールバックは、UI フィードバックを提供するために使用できるアップロードの進行状況情報を提供します。
| 名前 | タイプ | 説明 |
|---|---|---|
| データ | データ | アップロードする添付ファイル。 |
| 構成 | NowAttachmentUpload 構成 | 添付ファイルのアップロードパラメーターを定義する次のような構成情報。
|
| プログレス更新 | @escaping ProgressUpdate | 添付ファイルの取得後に実行する完了ハンドラー。これは、アップロードプロセスが完了するまで複数回呼び出されます。 完了ハンドラーの値を返します。 ProgressUpdate - アップロードの現在の進行状況を返します。
|
| タイプ | 説明 |
|---|---|
| NowAttachmentMetadata | メソッドが成功した場合に返されます。アップロードされたメタデータを含むオブジェクト。 |
| NowDataError | メソッドが失敗したときにスローされます。
|
次のコード例は、このメソッドを呼び出す方法を示しています。
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(data: Data, configuration: NowAttachmentUploadConfiguration, progressUpdate: @escaping ProgressUpdate, completion: @escaping (Result<NowAttachmentMetadata, NowDataError>))
添付ファイルデータをアップロードし、アップロード構成で指定されたテーブルのレコードに添付します。
ProgressUpdate コールバックは、UI フィードバックを提供するために使用できるアップロードの進行状況情報を提供します。
| 名前 | タイプ | 説明 |
|---|---|---|
| データ | データ | アップロードする添付ファイル。 |
| 構成 | NowAttachmentUpload 構成 | 添付ファイルのアップロードパラメーターを定義する次のような構成情報。
|
| プログレス更新 | @escaping ProgressUpdate | 添付ファイルの取得後に実行する完了ハンドラー。これは、アップロードプロセスが完了するまで複数回呼び出されます。 完了ハンドラーの値を返します。 ProgressUpdate - アップロードの現在の進行状況を返します。
|
| 完了 | @escaping (Result<NowAttachmentMetadata, NowDataError>) | メタデータがアップロードされた後に実行する完了ハンドラー。 完了ハンドラーの値を返します。
|
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、この関数を呼び出す方法を示しています。
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)
添付ファイルデータをアップロードし、アップロード構成で指定されたテーブルのレコードに添付します。
ProgressUpdate コールバックは、UI フィードバックを提供するために使用できるアップロードの進行状況情報を提供します。
| 名前 | タイプ | 説明 |
|---|---|---|
| データ | データ | アップロードする添付ファイル。アップロードできる添付ファイルのデータサイズとタイプは、インスタンスによって制御されます ServiceNow 。 |
| 構成 | NowAttachmentUploadConfiguration | 添付ファイルのアップロードパラメーターを定義する次のような構成情報。
|
| プログレス更新 | @escaping ProgressUpdate | 添付ファイルの取得後に実行する完了ハンドラー。 完了ハンドラーの値を返します。 ProgressUpdate - アップロードの現在の進行状況を返します。これは、アップロードプロセスが完了するまで複数回呼び出されます。
|
| タイプ | 説明 |
|---|---|
| AnyPublisher<NowAttachmentMetadata, NowDataError> | 成功: NowAttachmentMetadata :要求された添付ファイルのメタデータを含むオブジェクト: エラー:NowDataError
|
次のコード例は、この関数を呼び出す方法を示しています。
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)
}