Estrutura do NowData - iOS

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 3 min. de leitura
  • A estrutura NowData contém métodos que permitem a instanciação de serviços NowData, como NowGraphQLService, NowTableService, NowAPIService (para APIs personalizadas) e NowAttachmentService.

    NowData - makeApiService(instanceUrl: URL, caminho: cadeia de caracteres, conclusão: @escaping ((resultado<NowApiService, NowServiceError> ) -> Vazio))

    Cria uma instância do NowApiService e, após a conclusão, chama o manipulador de conclusão especificado.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    instanceUrl URL URL da instância ServiceNow cujas REST APIs serão acessadas pelo serviço.
    path Cadeia de caracteres Caminho da API.

    Por exemplo, se a chamada de API for https://xxx.service-now.com/api/now/sg/incident, o caminho será /api/now/sg/incident.

    conclusão @escaping ((Resultado​<NowApiService, Now​Service​Error>) -> Void) Manipulador de conclusão que é chamado com um Resultado <NowApiService, NowServiceError> contendo uma instância NowApiService inicializada ou um NowServiceError indicando o motivo da falha na inicialização.
    Tabela 2. Retorna
    Tipo Descrição
    Nenhum

    O exemplo de código a seguir mostra como chamar esta função.

    let path = "api/now/sg"
    let apiPublisher = apiService(for: path)
    
    func apiService(for path: String) -> AnyPublisher<NowAPIService, ConfigurationError> {
      guard let instanceURL else {
        return Fail(error: ConfigurationError.invalidInstanceURL)
        .eraseToAnyPublisher()
      }
      return Future { promise in
        NowData.makeApiService(instanceUrl: instanceURL, path: path) { (result) in
          promise(result.mapError { .sdkError($0) })
        }
      }
      .eraseToAnyPublisher()
    }

    NowData - makeAttachmentService(instanceUrl: URL, conclusão: @escaping ((Resultado<NowAttachmentService, NowServiceError> ) -> Vazio))

    Cria uma instância de NowAttachmentService e, após a conclusão, chama o manipulador de conclusão especificado.

    Tabela 3. Parâmetros
    Nome Tipo Descrição
    instanceUrl URL URL da instância ServiceNow cujos anexos serão acessados pelo serviço.
    conclusão @escaping ((Resultado​<NowAttachmentService, Now​Service​Error>) -> Void) Manipulador de conclusão que é chamado com um Resultado <NowAttachmentService, NowServiceError> contendo uma instância NowAttachmentService inicializada ou um NowServiceError indicando o motivo da falha na inicialização.
    Tabela 4. Retorna
    Tipo Descrição
    Nenhum

    O exemplo de código a seguir mostra como chamar esta função.

    ….
    guard 
      let jwtUrl = URL(string: "http://13.57.38.237:8080"),
      let instanceUrl = URL(string: "https://mobilecoresdk.service-now.com") else {
        return
      }
    
    // AuthorizationProvider – struct conforming to NowSDKAuthorizationProviding protocol
    let authorizationProvider = AuthorizationProvider(userEmail: "sdk@servicenow.com", jwtProviderUrl: jwtUrl, clientId: "deb8756b452d201039231ca568f26511")
            
    // PermissionProvider – class conforming to DevicePermissionDelegate protocol
    let permissionProvider = PermissionProvider()
    let config = NowSDKConfiguration(authorizationProvider: authorizationProvider, permissionDelegate: permissionProvider, logLevel: .debug)
    	
    do {
      try NowSDK.configure(with: config)
      initializeAttachmentService (with: instanceURL)
    } catch {
      // Return ConfigurationError.sdkError(error)
    }
    …..
    
    func initializeAttachmentService(instanceUrl: instanceURL) { result in
      switch result {
        case .success(let service)
          self?.attachmentService = service
        case .failure(let error)
          debug.print(“Creating Attachment service failed with error: \(error.localizedDescription)”)
          self?.attachmentService = nil
      }
    }
    

    NowData - makeGraphQLService(instanceUrl: URL, conclusão: @escaping ((Resultado<NowGraphQLService, NowServiceError> ) -> Vazio))

    Cria uma instância do NowGraphQLService e, após a conclusão, chama o manipulador de conclusão especificado.

    Tabela 5. Parâmetros
    Nome Tipo Descrição
    instanceUrl URL URL da instância ServiceNow que fornece serviços GraphQL.
    conclusão @escaping ((Resultado​<NowGraphQLService, Now​Service​Error>) -> Void) Manipulador de conclusão que é chamado com um Resultado <NowGraphQLService, NowServiceError> contendo uma instância NowGraphQLService inicializada ou um NowServiceError indicando o motivo da falha na inicialização.
    Tabela 6. Retorna
    Tipo Descrição
    Nenhum

    func initializeGraphQLService(instanceUrl: URL) {
      makeGraphQLService(instanceUrl: instanceUrl) { [weak self] result in
        switch result {
        case .success(let service):
          self?.graphQLService = service
        case .failure(let error):
          debugPrint("Creating GraphQL service failed with error: \(error.localizedDescription)")
          self?.graphQLService = nil
        }
      }
    }

    NowData - makeTableService(instanceUrl: URL, conclusão: @escaping ((Resultado<NowTableService, NowServiceError> ) -> Vazio))

    Cria uma instância de NowTableService e, após a conclusão, chama o manipulador de conclusão especificado.

    Tabela 7. Parâmetros
    Nome Tipo Descrição
    instanceUrl URL URL da instância ServiceNow cujas tabelas serão acessadas pelo serviço.
    conclusão @escaping ((Resultado​<NowTableService, Now​Service​Error>) -> Void) Manipulador de conclusão que é chamado com um Resultado <NowTableService, NowServiceError> contendo uma instância NowTableService inicializada ou um NowServiceError indicando o motivo da falha na inicialização.
    Tabela 8. Retorna
    Tipo Descrição
    Nenhum

    O exemplo de código a seguir mostra como chamar esta função.

    func initializeTableService(for instanceUrl: URL) {
      makeTableService(instanceUrl: instanceUrl) { [weak self] result in
        guard let self = self else { return }
                
        switch result {
          case .success(let tableService):
            self.tableService = tableService
            // Create a Paginator that will iterate over pages of customer support cases. The Paginator's response type will be
            // inferred from the Paginator's type definition (e.g. `Paginator<[CustomerServiceCase]>`).
            self.paginator = tableService.paginator(from: Self.tableName, configuration: self.fetchConfiguration)
            // Subscribe to the Paginator's publisher so we will be able to receive paged results.
            self.subscribeToPaginatorPublisher()
            // As we are now ready to start fetching data, inform the view controller.
            self.onReady(self)
          case .failure(let error):
            debugPrint("Creating table service failed with error: \(error.localizedDescription)")
            self.tableService = nil
            self.paginator = nil
        }
      }
    }