NowAttachmentService 클래스 - iOS

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기58분
  • NowAttachmentService 클래스는 인스턴스의 테이블 ServiceNow 내에 있는 레코드와 연결된 첨부 파일을 업로드하고 쿼리할 수 있는 기능을 제공합니다.

    각 요청과 함께 단일 파일을 업로드하거나 검색할 수 있습니다. NowAttachmentService 는 업로드된 파일에 대한 시스템 제한 사항(예: 최대 파일 크기 및 허용되는 첨부 파일 형식)을 준수합니다. 인스턴스 속성 com.glide.attachment.max_size, 기본 1024MB 및 glide.attachment.extensions를 사용하여 이러한 설정을 제어할 수 있습니다.

    주:
    NowAttachmentService 는 모든 Content-Type 값(/)을 허용합니다. 첨부 파일을 업로드할 때 파일 컨텐츠 유형을 지정합니다. 콘텐츠 형식은 파일 메타데이터와 함께 저장되므로 다른 도구에서 파일을 올바르게 식별하고 구문 분석할 수 있습니다.
    표 1. 속성
    이름 유형 설명
    구성 NowServiceConfiguration 서비스가 초기화될 때 제공되는 구성 설정입니다.

    NowAttachmentService - 첨부 파일(sysId의 경우: 문자열, validateAttachment: 부울) 비동기 throws

    지정된 sys_id로 첨부 파일을 검색하고 첨부 파일의 계산된 해시를 예상 SHA256 체크섬과 비교하여 첨부 파일의 유효성을 확인합니다.

    주:
    첨부 파일을 확인하면 성능에 영향을 줄 수 있습니다. 매개 변수를 false로 설정하여 validateAttachment 유효성 검사 단계를 건너뛸 수 있습니다. 필요한 경우 Attachment.validate() 함수를 호출하여 이후 단계에서 첨부 파일의 유효성을 검사할 수 있습니다.
    표 2. 매개변수
    이름 유형 설명
    sysId용 문자열 검색할 첨부 파일의 Sys_id입니다.
    validateAttachment 부울 첨부 파일의 유효성을 검사할지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 첨부 파일의 유효성을 검사합니다.
    • false: 첨부 파일의 유효성을 검사하지 않습니다.

    기본값: true

    표 3. 반환
    유형 설명
    NowAttachment 메서드가 성공하면 반환됩니다. 지정된 첨부 파일입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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 - 첨부 파일(sysId의 경우: 문자열, validateAttachment: 부울, 완성: @escaping(결과<NowAttachment, NowDataError>))

    지정된 sys_id로 첨부 파일을 검색하고 첨부 파일의 계산된 해시를 예상 SHA256 체크섬과 비교하여 첨부 파일의 유효성을 확인합니다. 완료되면 전달된 완료 처리기를 실행합니다.

    주:
    첨부 파일을 확인하면 성능에 영향을 줄 수 있습니다. 매개 변수를 false로 설정하여 validateAttachment 유효성 검사 단계를 건너뛸 수 있습니다. 필요한 경우 Attachment.validate() 함수를 호출하여 이후 단계에서 첨부 파일의 유효성을 검사할 수 있습니다.
    표 4. 매개변수
    이름 유형 설명
    sysId용 문자열 검색할 첨부 파일의 Sys_id입니다.
    validateAttachment 부울 첨부 파일의 유효성을 검사할지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 첨부 파일의 유효성을 검사합니다.
    • false: 첨부 파일의 유효성을 검사하지 않습니다.

    기본값: true

    완료 @escaping(Result<NowAttachment, NowDataError>) 첨부 파일을 검색한 뒤 실행할 완료 핸들러.
    완료 처리기에 대한 반환 값:
    • 성공: NowAttachment - 요청된 첨부 파일
    • 실패: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 5. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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 - 첨부 파일(sysId의 경우: 문자열, validateAttachment: 부울)

    지정된 sys_id으로 첨부 파일을 검색하고 첨부 파일의 계산된 해시를 예상 해시와 비교하여 첨부 파일의 유효성을 확인합니다.

    주:
    첨부 파일을 확인하면 성능에 영향을 줄 수 있습니다. 매개 변수를 false로 설정하여 validateAttachment 유효성 검사 단계를 건너뛸 수 있습니다. 필요한 경우 Attachment.validate() 함수를 호출하여 이후 단계에서 첨부 파일의 유효성을 검사할 수 있습니다.
    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 6. 매개변수
    이름 유형 설명
    sysId용 문자열 검색할 첨부 파일의 Sys_id입니다.
    validateAttachment 부울 첨부 파일의 유효성을 검사할지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 첨부 파일의 유효성을 검사합니다.
    • false: 첨부 파일의 유효성을 검사하지 않습니다.

    기본값: true

    표 7. 반환
    유형 설명
    AnyPublisher<NowAttachment, NowDataError> 성공: NowAttachment - 지정된 첨부 파일을 포함합니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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(filter: Filter, limit: Int) 비동기 던지기

    지정된 기준을 충족하는 모든 첨부 파일에 대한 메타데이터를 검색합니다.

    표 8. 매개변수
    이름 유형 설명
    필터 필터 옵션입니다. 반환할 메타데이터가 있는 첨부 파일을 필터링하는 데 사용할 쿼리 문자열입니다.

    기본값: nil - 사용 가능한 모든 첨부 파일에 대한 메타데이터를 반환합니다. 매개변수를 limit 고려합니다.

    제한 정수 옵션입니다. 반환할 첨부 파일 메타데이터의 최대 수입니다.

    기본값: nil - 매개 변수 사양을 충족하는 모든 메타데이터를 filter 반환합니다.

    표 9. 반환
    유형 설명
    [NowAttachmentMetadata] 메서드가 성공하면 반환됩니다. 일치하는 첨부 파일에 대한 메타데이터를 포함하는 배열입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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(filter: Filter, limit: Int, completion: @escaping (Result<[NowAttachmentMetadata], NowDataError>))

    지정된 기준을 충족하는 모든 첨부 파일에 대한 메타데이터를 검색합니다.

    표 10. 매개변수
    이름 유형 설명
    필터 필터 옵션입니다. 반환할 메타데이터가 있는 첨부 파일을 필터링하는 데 사용할 쿼리 문자열입니다.

    기본값: nil - 사용 가능한 모든 첨부 파일에 대한 메타데이터를 반환합니다. 매개변수를 limit 고려합니다.

    제한 정수 옵션입니다. 반환할 첨부 파일 메타데이터의 최대 수입니다.

    기본값: nil - 매개 변수 사양을 충족하는 모든 메타데이터를 filter 반환합니다.

    완료 @escaping(Result<[NowAttachmentMetadata], NowDataError>) 메타데이터를 검색한 후 실행할 완료 핸들러입니다.
    완료 처리기에 대한 반환 값:
    • 성공: NowAttachmentMetadata - 요청된 메타데이터가 포함된 객체입니다.
    • 오류: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 11. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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(filter: Filter, limit: Int)

    지정된 기준을 충족하는 모든 첨부 파일에 대한 메타데이터를 검색합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 12. 매개변수
    이름 유형 설명
    필터 필터 옵션입니다. 반환할 메타데이터가 있는 첨부 파일을 필터링하는 데 사용할 쿼리 문자열입니다.

    기본값: nil - 사용 가능한 모든 첨부 파일에 대한 메타데이터를 반환합니다. 매개변수를 limit 고려합니다.

    제한 정수 옵션입니다. 반환할 첨부 파일 메타데이터의 최대 수입니다.

    기본값: nil - 매개 변수 사양을 충족하는 모든 메타데이터를 filter 반환합니다.

    표 13. 반환
    유형 설명
    AnyPublisher<[NowAttachmentMetadata], NowDataError입니다> 성공: NowAttachmentMetadata - 일치하는 첨부 파일에 대한 메타데이터를 포함하는 객체입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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: String의 경우) 비동기 던지기

    지정된 sys_id와 연결된 첨부 파일에 대한 메타데이터를 조회합니다.

    표 14. 매개변수
    이름 유형 설명
    sysId용 문자열 검색할 메타데이터가 있는 첨부 파일의 Sys_id입니다.
    표 15. 반환
    유형 설명
    NowAttachmentMetadata (영문) 메서드가 성공하면 반환됩니다. 요청된 첨부 파일의 메타데이터입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    do {
        let metadata = try await attachmentService.attachmentMetadata(for: sysId)
        // Metadata retrieval successful
    } catch {
        // Metadata retrieval failed, NowDataError thrown
    }

    NowAttachmentService - attachmentMetadata(sysId의 경우: 문자열, 완성: @escaping(결과<NowAttachmentMetadata, NowDataError>))

    지정된 sys_id와 연결된 첨부 파일에 대한 메타데이터를 검색한 다음 메타데이터가 검색된 후 완료 처리기를 실행합니다.

    표 16. 매개변수
    이름 유형 설명
    sysId용 문자열 검색할 메타데이터가 있는 첨부 파일의 Sys_id입니다.
    완료 @escaping(Result<NowAttachmentMetadata, NowDataError>) 메타데이터를 검색한 후 실행할 완료 핸들러입니다.
    완료 처리기에 대한 반환 값:
    • 성공: NowAttachmentMetadata - 요청된 메타데이터
    • 실패: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 17. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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와 연결된 첨부 파일에 대한 메타데이터를 조회합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 18. 매개변수
    이름 유형 설명
    sysId용 문자열 검색할 메타데이터가 있는 첨부 파일의 Sys_id입니다.
    표 19. 반환
    유형 설명
    AnyPublisher<[NowAttachmentMetadata], NowDataError입니다> 성공: NowAttachmentMetadata - 요청된 첨부 파일에 대한 메타데이터를 포함하는 객체입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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(filter: Filter, limit: Int)

    지정된 기준을 충족하는 모든 첨부 파일에 대한 메타데이터를 검색하고 반환된 메타데이터의 페이지를 반복하기 위한 Paginator 객체를 반환합니다.

    표 20. 매개변수
    이름 유형 설명
    필터 필터 옵션입니다. 반환할 메타데이터가 있는 첨부 파일을 필터링하는 데 사용할 쿼리 문자열입니다.

    기본값: nil - 사용 가능한 모든 첨부 파일에 대한 메타데이터를 반환합니다. 매개변수를 limit 고려합니다.

    제한 정수 옵션입니다. 반환할 첨부 파일 메타데이터의 최대 수입니다.

    기본값: nil - 매개 변수 사양을 충족하는 모든 메타데이터를 filter 반환합니다.

    표 21. 반환
    유형 설명
    Paginator<[NowAttachmentMetadata]입니다> 성공: NowAttachmentMetadata 개체의 배열입니다.

    실패: NowDataError 개체입니다.

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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) 비동기 throws

    지정된 sys_id 가진 첨부 파일을 삭제합니다.

    표 22. 매개변수
    이름 유형 설명
    sysId 문자열 삭제할 첨부 파일의 Sys_id입니다.
    표 23. 반환
    유형 설명
    없음 메서드가 성공한 경우 아무 것도 반환되지 않습니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    do {
        try await attachmentService.delete(sysId: sysId)
        // Deletion successful
    } catch {
        // Deletion failed, NowDataError thrown
    }

    NowAttachmentService - delete(sysId: String, completion: @escaping (Result<Void, NowDataError>))

    지정된 sys_id 있는 첨부 파일을 삭제한 다음 첨부 파일이 삭제된 후 전달된 완료 처리기를 실행합니다.

    표 24. 매개변수
    이름 유형 설명
    sysId 문자열 삭제할 첨부 파일의 Sys_id입니다.
    완료 @escaping(Result<Void, NowDataError>) 첨부 파일을 삭제한 후 실행할 완료 핸들러입니다.
    완료 처리기에 대한 반환 값:
    • 성공: 무효
    • 오류: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 25. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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 - 삭제(sysId: 문자열)

    지정된 sys_id 가진 첨부 파일을 삭제합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 26. 매개변수
    이름 유형 설명
    sysId 문자열 삭제할 첨부 파일의 Sys_id입니다.
    표 27. 반환
    유형 설명
    AnyPublisher<Void, NowDataError입니다> 성공: 아무 것도 반환되지 않음

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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 인스턴스를 초기화합니다.

    표 28. 매개변수
    이름 유형 설명
    구성 NowServiceConfiguration 서비스를 올바르게 초기화하는 데 필요한 구성 정보입니다.
    'coreServiceProvider'를 선택합니다. NowCoreServiceProviding (영문) 옵션입니다. NowCoreServiceProviding 프로토콜을 구현하는 객체입니다.

    기본값 : 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) 비동기 throws

    첨부 파일 데이터를 업로드하고 업로드 구성에 지정된 대로 테이블의 기록에 첨부합니다.

    ProgressUpdate 콜백은 UI 피드백을 제공하는 데 사용할 수 있는 업로드 진행률 정보를 제공합니다.

    표 29. 매개변수
    이름 유형 설명
    데이터 데이터 업로드할 첨부 파일입니다.
    구성 NowAttachmentUpload 구성 다음과 같이 첨부 파일에 대한 업로드 매개변수를 정의하는 구성 정보입니다.
    • 파일을 첨부할 테이블 및 기록
    • 첨부 파일 이름
    • 첨부 파일 유형
    • 파일이 암호화되었는지 여부
    progressUpdate @escaping ProgressUpdate 첨부 파일을 검색한 뒤 실행할 완료 핸들러. 업로드 프로세스가 완료될 때까지 여러 번 호출됩니다.

    완료 처리기에 대한 반환 값:

    ProgressUpdate - 업로드의 현재 진행률을 반환합니다.

    ProgressUpdate = (_bytesWritten: Int64, _totalBytesWritten: Int64, _totalBytesExpectedToWrite: Int64) -> 무효

    표 30. 반환
    유형 설명
    NowAttachmentMetadata (영문) 메서드가 성공하면 반환됩니다. 업로드된 메타데이터를 포함하는 객체입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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, 완료: @escaping(Result<NowAttachmentMetadata, NowDataError>))

    첨부 파일 데이터를 업로드하고 업로드 구성에 지정된 대로 테이블의 기록에 첨부합니다.

    ProgressUpdate 콜백은 UI 피드백을 제공하는 데 사용할 수 있는 업로드 진행률 정보를 제공합니다.

    표 31. 매개변수
    이름 유형 설명
    데이터 데이터 업로드할 첨부 파일입니다.
    구성 NowAttachmentUpload 구성 다음과 같이 첨부 파일에 대한 업로드 매개변수를 정의하는 구성 정보입니다.
    • 파일을 첨부할 테이블 및 기록
    • 첨부 파일 이름
    • 첨부 파일 유형
    • 파일이 암호화되었는지 여부
    progressUpdate @escaping ProgressUpdate 첨부 파일을 검색한 뒤 실행할 완료 핸들러. 업로드 프로세스가 완료될 때까지 여러 번 호출됩니다.

    완료 처리기에 대한 반환 값:

    ProgressUpdate - 업로드의 현재 진행률을 반환합니다.

    ProgressUpdate = (_bytesWritten: Int64, _totalBytesWritten: Int64, _totalBytesExpectedToWrite: Int64) -> 무효

    완료 @escaping(Result<NowAttachmentMetadata, NowDataError>) 메타데이터가 업로드된 후 실행할 완료 핸들러입니다.
    완료 처리기에 대한 반환 값:
    • 성공: NowAttachmentMetadata - 업로드된 첨부 파일의 메타데이터를 포함하는 객체입니다.
    • 오류: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 32. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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 - 업로드(데이터: 데이터, 구성: NowAttachmentUploadConfiguration, progressUpdate: @escaping ProgressUpdate)

    첨부 파일 데이터를 업로드하고 업로드 구성에 지정된 대로 테이블의 기록에 첨부합니다.

    ProgressUpdate 콜백은 UI 피드백을 제공하는 데 사용할 수 있는 업로드 진행률 정보를 제공합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 33. 매개변수
    이름 유형 설명
    데이터 데이터 업로드할 첨부 파일입니다. 업로드할 수 있는 첨부 파일의 데이터 크기와 유형은 인스턴스에 의해 제어됩니다 ServiceNow .
    구성 NowAttachment업로드구성 다음과 같이 첨부 파일에 대한 업로드 매개변수를 정의하는 구성 정보입니다.
    • 파일을 첨부할 테이블 및 기록
    • 첨부 파일 이름
    • 첨부 파일 유형
    • 파일이 암호화되었는지 여부
    progressUpdate @escaping ProgressUpdate 첨부 파일을 검색한 뒤 실행할 완료 핸들러.

    완료 처리기에 대한 반환 값:

    ProgressUpdate - 업로드의 현재 진행률을 반환합니다. 업로드 프로세스가 완료될 때까지 여러 번 호출됩니다.

    ProgressUpdate = (_bytesWritten: Int64, _totalBytesWritten: Int64, _totalBytesExpectedToWrite: Int64) -> 무효

    표 34. 반환
    유형 설명
    AnyPublisher<NowAttachmentMetadata, NowDataError> 성공: NowAttachmentMetadata - 요청된 첨부 파일에 대한 메타데이터를 포함하는 객체입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    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)
      }