From c958c5e1e355828c906de2e033f8205e5562389f Mon Sep 17 00:00:00 2001 From: SDKAuto Date: Tue, 8 Oct 2024 04:02:13 +0000 Subject: [PATCH] CodeGen from PR 30867 in Azure/azure-rest-api-specs Merge 2d83740b5808d7f6d0e8839114af4812f6c84b6f into 838d84411303b55e628b4d737b12f5ebdc114635 --- .../ai-translation-document-rest/CHANGELOG.md | 43 -- .../ai-translation-document-rest/README.md | 354 ---------- .../api-extractor.json | 31 - .../ai-translation-document-rest/assets.json | 6 - .../eslint.config.mjs | 14 - .../karma.conf.js | 131 ---- .../ai-translation-document-rest/package.json | 123 ---- .../review/ai-translation-document.api.md | 631 ------------------ .../ai-translation-document-rest/sample.env | 6 - .../samples-dev/batchDocumentTranslation.ts | 54 -- .../samples-dev/cancelTranslation.ts | 60 -- .../samples-dev/getDocumentStatus.ts | 75 --- .../samples-dev/getDocumentsStatus.ts | 62 -- .../samples-dev/getSupportedFormats.ts | 44 -- .../samples-dev/getTranslationStatus.ts | 67 -- .../samples-dev/getTranslationsStatus.ts | 70 -- .../synchronousDocumentTranslation.ts | 54 -- .../samples/v1-beta/javascript/README.md | 78 --- .../javascript/batchDocumentTranslation.js | 56 -- .../v1-beta/javascript/cancelTranslation.js | 62 -- .../v1-beta/javascript/getDocumentStatus.js | 77 --- .../v1-beta/javascript/getDocumentsStatus.js | 64 -- .../v1-beta/javascript/getSupportedFormats.js | 44 -- .../javascript/getTranslationStatus.js | 66 -- .../javascript/getTranslationsStatus.js | 72 -- .../samples/v1-beta/javascript/package.json | 34 - .../samples/v1-beta/javascript/sample.env | 6 - .../synchronousDocumentTranslation.js | 56 -- .../samples/v1-beta/typescript/README.md | 91 --- .../samples/v1-beta/typescript/package.json | 43 -- .../samples/v1-beta/typescript/sample.env | 6 - .../src/batchDocumentTranslation.ts | 54 -- .../typescript/src/cancelTranslation.ts | 60 -- .../typescript/src/getDocumentStatus.ts | 75 --- .../typescript/src/getDocumentsStatus.ts | 62 -- .../typescript/src/getSupportedFormats.ts | 44 -- .../typescript/src/getTranslationStatus.ts | 67 -- .../typescript/src/getTranslationsStatus.ts | 70 -- .../src/synchronousDocumentTranslation.ts | 54 -- .../samples/v1-beta/typescript/tsconfig.json | 17 - .../src/clientDefinitions.ts | 35 +- .../src/documentTranslationClient.ts | 28 +- .../ai-translation-document-rest/src/index.ts | 23 +- .../src/isUnexpected.ts | 28 +- .../src/logger.ts | 3 - .../src/models.ts | 17 +- .../src/outputModels.ts | 3 - .../src/paginateHelper.ts | 36 +- .../src/parameters.ts | 21 +- .../src/pollingHelper.ts | 32 +- .../src/responses.ts | 3 - .../public/getSupportedFormatsTest.spec.ts | 86 --- .../public/node/cancelTranslationTest.spec.ts | 67 -- .../test/public/node/containerHelper.ts | 159 ----- .../public/node/documentFilterTest.spec.ts | 264 -------- .../node/documentTranslationTest.spec.ts | 575 ---------------- .../public/node/translationFilterTest.spec.ts | 251 ------- .../singleDocumentTranslateTest.spec.ts | 126 ---- .../utils/StaticAccessTokenCredential.ts | 17 - .../test/public/utils/TestDocument.ts | 14 - .../test/public/utils/recordedClient.ts | 67 -- .../test/public/utils/samplesHelper.ts | 106 --- .../test/public/utils/testHelper.ts | 82 --- .../ai-translation-document-rest/tests.yml | 15 - .../tsconfig.json | 17 - .../tsp-location.yaml | 6 +- 66 files changed, 148 insertions(+), 5016 deletions(-) delete mode 100644 sdk/translation/ai-translation-document-rest/CHANGELOG.md delete mode 100644 sdk/translation/ai-translation-document-rest/README.md delete mode 100644 sdk/translation/ai-translation-document-rest/api-extractor.json delete mode 100644 sdk/translation/ai-translation-document-rest/assets.json delete mode 100644 sdk/translation/ai-translation-document-rest/eslint.config.mjs delete mode 100644 sdk/translation/ai-translation-document-rest/karma.conf.js delete mode 100644 sdk/translation/ai-translation-document-rest/package.json delete mode 100644 sdk/translation/ai-translation-document-rest/review/ai-translation-document.api.md delete mode 100644 sdk/translation/ai-translation-document-rest/sample.env delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/batchDocumentTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/cancelTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getDocumentStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getDocumentsStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getSupportedFormats.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getTranslationStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/getTranslationsStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples-dev/synchronousDocumentTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/README.md delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/package.json delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/sample.env delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/README.md delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/package.json delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/sample.env delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts delete mode 100644 sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/tsconfig.json delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/getSupportedFormatsTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/cancelTranslationTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/containerHelper.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/documentFilterTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/documentTranslationTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/node/translationFilterTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/singleDocumentTranslateTest.spec.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/StaticAccessTokenCredential.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/TestDocument.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/recordedClient.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/samplesHelper.ts delete mode 100644 sdk/translation/ai-translation-document-rest/test/public/utils/testHelper.ts delete mode 100644 sdk/translation/ai-translation-document-rest/tests.yml delete mode 100644 sdk/translation/ai-translation-document-rest/tsconfig.json diff --git a/sdk/translation/ai-translation-document-rest/CHANGELOG.md b/sdk/translation/ai-translation-document-rest/CHANGELOG.md deleted file mode 100644 index 32de784ead1e..000000000000 --- a/sdk/translation/ai-translation-document-rest/CHANGELOG.md +++ /dev/null @@ -1,43 +0,0 @@ -# Release History - -## 2.0.0-beta.1 (Unreleased) - -### Features Added - -### Breaking Changes - -### Bugs Fixed - -### Other Changes - -## 2.0.0 (Unreleased) -### Other Changes -This is a GA release. No new features added. - -## 1.0.0-beta.2 (2024-07-01) - -### Other Changes -- Re-release of 1.0.0-beta.1 as the SDK package was released without types - -## 1.0.0-beta.1 (2024-06-27) -- Initial release. Please see the README and wiki for information on the new design. - -Version 1.0.0-beta.1 is preview of our efforts in creating a client library that is developer-friendly, idiomatic -to the JS/TS ecosystem, and as consistent across different languages and platforms as possible. - -This package's -[documentation](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/README.md) -and -[samples](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples) -demonstrate the new API. - -### Features Added -- Added support for Synchronous document translation - [translate-document API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/translate-document) -- Added support for Batch Translation - [start Translation API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/start-batch-translation) -- Added support for Get Translations Status - [get translations status API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-translations-status) -- Added support for Get Translation Status - [get translation status API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-translation-status) -- Added support for Get Documents Status - [get documents status API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-documents-status) -- Added support for Get Document Status - [get document status API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-document-status) -- Added support for Cancel Translation - [cancel translation API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/cancel-translation) -- Added support for Get Supported Document Formats - [get supported document formats API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-supported-document-formats) -- Added support for Get Supported Glossary Formats - [get supported glossary formats API](https://learn.microsoft.com/azure/ai-services/translator/document-translation/reference/get-supported-glossary-formats) diff --git a/sdk/translation/ai-translation-document-rest/README.md b/sdk/translation/ai-translation-document-rest/README.md deleted file mode 100644 index 06bfc9c1073c..000000000000 --- a/sdk/translation/ai-translation-document-rest/README.md +++ /dev/null @@ -1,354 +0,0 @@ -# DocumentTranslation REST client library for JavaScript - -Document Translation is a cloud-based machine translation feature of the Azure AI Translator service. You can translate multiple and complex documents across all supported languages and dialects while preserving original document structure and data format. The Document translation API supports two translation processes: - -Asynchronous batch translation supports the processing of multiple documents and large files. The batch translation process requires an Azure Blob storage account with storage containers for your source and translated documents. - -Synchronous single file supports the processing of single file translations. The file translation process doesn't require an Azure Blob storage account. The final response contains the translated document and is returned directly to the calling client. - -The following operations are supported by the Document Translation feature: - -- **Synchronous document translation**: Used to synchronously translate a single document. The method doesn't require an Azure Blob storage account. - -- **Start batch translation**: Used to execute an asynchronous batch translation request. The method requires an Azure Blob storage account with storage containers for your source and translated documents. - -- **Get status for all translation jobs**: Used to request a list and the status of all translation jobs submitted by the user (associated with the resource). - -- **Get status for a specific translation job**: Used to request the status of a specific translation job. The response includes the overall job status and the status for documents that are being translated as part of that job. - -- **Get status for all documents**: Used to request the status for all documents in a translation job. - -- **Get status for a specific document**: This returns the status for a specific document in a job as indicated in the request by the id and documentId query parameters. - -- **Cancel translation**: This cancels a translation job that is currently processing or queued (pending) as indicated in the request by the id query parameter. An operation isn't canceled if already completed, failed, or still canceling. In those instances, a bad request is returned. Completed translations can't be canceled and are charged. - -- **Get supported formats**: This returns a list of document or glossary formats supported by the Document Translation feature. The list includes common file extensions and content-type if using the upload API. - -Key links: - -- [Source code](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest) -- [Package (NPM)](https://www.npmjs.com/package/@azure-rest/ai-translation-document) -- [Samples](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest/samples) - -## Getting started - -### Currently supported environments - -- LTS versions of Node.js -- Latest versions of Edge, Chrome, Safar and Firefox - -### Prerequisites - -- An existing Translator service or Cognitive Services resource. More info on [Pre-requisites][pre_requisities]. - -### Install the `@azure-rest/ai-translation-document` package - -Install the Document Translation REST client library for JavaScript with `npm`: - -```bash -npm install @azure-rest/ai-translation-document -``` - -#### Create a Translator service resource - -You can create Translator resource following [Create a Translator resource][translator_resource_create]. - -#### Setup Azure Blob Storage Account -For more information about creating an Azure Blob Storage account see [here][azure_blob_storage_account]. For creating containers for your source and target files see [here][container]. Make sure to authorize your Translation resource storage access, more info [here][storage_container_authorization]. - -When "Allow Storage Account Key Access" is disabled on the storage account , Managed Identity is enabled on the Translator resource and it is assigned the role "Storage Blob Data Contributor" on the storage account, then you can use the container URLs directly and no SAS URIs will be need to be generated. - -### Create a `DocumentTranslationClient` using an endpoint URL and API key `KeyCredential` - -Once you have the value for API key, create a credential -```typescript -const credentials = { key: apiKey ?? "" }; -``` - -With the value of the `KeyCredential` you can create the `DocumentTranslationClient` using the `createClient` method of [documentTranslationClient_class]: - -```typescript -const client = createClient(endpoint, credentials); -``` - -## Examples - -The following section provides several code snippets using the `client`, and covers the main features present in this client library. - -### Synchronous Document Translation - -Used to synchronously translate a single document. The method doesn't require an Azure Blob storage account. - -```typescript -console.log("== Synchronous Document Translation =="); -const client = createClient(endpoint, credentials); -const options: DocumentTranslateParameters = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - ], -}; - -const response = await client.path("/document:translate").post(options); -if (isUnexpected(response)) { - throw response.body; -} -console.log('Response code: ' + response.status + ', Response body: ' + response.body); -``` - -### Batch Document Translation -Used to execute an asynchronous batch translation request. The method requires an Azure Blob storage account with storage containers for your source and translated documents. - -```typescript -console.log("== Batch Document Translation =="); -const client = createClient(endpoint, credentials); - -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const poller = await client.path("/document/batches").post({ -body: batchRequests -}); -const id = getTranslationOperationID(poller.headers["operation-location"]); -console.log('Translation started and the operationID is: ' + id); -``` - -### Cancel Document Translation -This cancels a translation job that is currently processing or queued (pending) as indicated in the request by the id query parameter. An operation isn't canceled if already completed, failed, or still canceling. In those instances, a bad request is returned. Completed translations can't be canceled and are charged. - -```typescript -console.log("== Cancel Translation =="); -const client = createClient(endpoint, credentials); - -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const poller = await client.path("/document/batches").post({ -body: batchRequests -}); -const id = getTranslationOperationID(poller.headers["operation-location"]); - -//Cancel translation -await client.path("/document/batches/{id}", id).delete(); - -//get translation status and verify the job is cancelled, cancelling or notStarted -const response = await client.path("/document/batches/{id}", id).get(); -if (isUnexpected(response)) { - throw response.body; -} -console.log("The status after cancelling the batch operation is:" + response.body.status); -``` - -### Get Documents Status -Used to request the status for all documents in a translation job. - -```typescript -console.log("== Gets Documents Status =="); -const client = createClient(endpoint, credentials); - -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const response = await StartTranslationAndWait(client, batchRequests); - -const operationLocationUrl = response.headers["operation-location"] -const operationId = getTranslationOperationID(operationLocationUrl); - -//get Documents Status -const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); -if (isUnexpected(documentResponse)) { - throw documentResponse.body; -} - -const responseBody = documentResponse.body; -for (const documentStatus of responseBody.value) { - console.log("Document Status is: " + documentStatus.status); - console.log("Characters charged is: " + documentStatus.characterCharged); - break; -} -``` - -### Get Document Status -This returns the status for a specific document in a job as indicated in the request by the id and documentId query parameters. - -```typescript -console.log("== Get Document Status =="); -const client = createClient(endpoint, credentials); - -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const response = await StartTranslationAndWait(client, batchRequests); -const operationLocationUrl = response.headers["operation-location"] -const operationId = getTranslationOperationID(operationLocationUrl); - -//get Documents Status -const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); -if (isUnexpected(documentResponse)) { - throw documentResponse.body; -} - -const responseBody = documentResponse.body; -for (const document of responseBody.value) { - //get document status - const documentStatus = await client.path("/document/batches/{id}/documents/{documentId}", operationId, document.id).get(); - console.log("Document Status = " + documentStatus.status); - const documentStatusOutput = documentStatus.body as DocumentStatusOutput; - console.log("Document ID = " +documentStatusOutput.id); - console.log("Document source path = " + documentStatusOutput.sourcePath); - console.log("Document path = " + documentStatusOutput.path); - console.log("Target language = " + documentStatusOutput.to); - console.log("Document created dateTime = " + documentStatusOutput.createdDateTimeUtc); - console.log("Document last action date time = " + documentStatusOutput.lastActionDateTimeUtc); -} -``` - -### Get Translations Status -Used to request a list and the status of all translation jobs submitted by the user (associated with the resource). - -```typescript -console.log("== Get Translations Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = {inputs: [batchRequest]}; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"] - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Statusby ID filter - const queryParams = { - ids: [operationId] - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams - }); - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - console.log("Translation ID = " + translationStatus.id); - console.log("Translation Status = " + translationStatus.status); - console.log("Translation createdDateTimeUtc = " + translationStatus.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + translationStatus.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + translationStatus.summary.total); - console.log("Total characters charged = " + translationStatus.summary.totalCharacterCharged); - } -``` - -### Get Translation Status -Used to request the status of a specific translation job. The response includes the overall job status and the status for documents that are being translated as part of that job. - -```typescript -console.log("== Get Translation Status =="); -const client = createClient(endpoint, credentials); - -const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); -const sourceInput = createSourceInput(sourceUrl); -const targetUrl = await createTargetContainer(); -const targetInput = createTargetInput(targetUrl, "fr"); -const batchRequest = createBatchRequest(sourceInput, [targetInput]); - -//Start translation -const batchRequests = {inputs: [batchRequest]}; -const translationResponse = await StartTranslationAndWait(client, batchRequests); - -const operationLocationUrl = translationResponse.headers["operation-location"] -const operationId = getTranslationOperationID(operationLocationUrl); - -//get Translation Status -const response = await client.path("/document/batches/{id}",operationId).get() as GetTranslationStatus200Response; -if (isUnexpected(response)) { - throw response.body; -} - -console.log("Translation ID = " + response.body.id); -console.log("Translation Status = " + response.body.status); -console.log("Translation createdDateTimeUtc = " + response.body.createdDateTimeUtc); -console.log("Translation lastActionDateTimeUtc = " + response.body.lastActionDateTimeUtc); -console.log("Total documents submitted for translation = " + response.body.summary.total); -console.log("Total characters charged = " + response.body.summary.totalCharacterCharged); -``` - - -### Get Supported Formats - -This returns a list of document or glossary formats supported by the Document Translation feature. The list includes common file extensions and content-type if using the upload API. - -```typescript -console.log("== List Supported Format Types =="); - -const documentTranslationClient = DocumentTranslationClient(endpoint); -const response = await documentTranslationClient.path("/document/formats").get(); - -const fileFormatTypes = response.body; -fileFormatTypes.value.forEach((fileFormatType: { format: any; contentTypes: any; fileExtensions: any; }) => { -console.log(fileFormatType.format); -console.log(fileFormatType.contentTypes); -console.log(fileFormatType.fileExtensions); -}); -``` - -## Troubleshooting - -When you interact with the Translator Service using the DocumentTranslator client library, errors returned by the Translator service correspond to the same HTTP status codes returned for REST API requests. - -For example, if you submit a translation request without a target translate language, a `400` error is returned, indicating "Bad Request". - -You can find the different error codes returned by the service in the [Service Documentation][service_errors]. - -### Logging - -Enabling logging may help uncover useful information about failures. In order to see a log of HTTP requests and responses, set the `AZURE_LOG_LEVEL` environment variable to `info`. Alternatively, logging can be enabled at runtime by calling `setLogLevel` in the `@azure/logger`: - -```javascript -const { setLogLevel } = require("@azure/logger"); - -setLogLevel("info"); -``` - -For more detailed instructions on how to enable logs, you can look at the [@azure/logger package docs](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger). -Please refer to the service documentation for a conceptual discussion of [languages][languages_doc]. - -[service_errors]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#common-http-status-codes -[translator_resource_create]: https://learn.microsoft.com/azure/cognitive-services/Translator/create-translator-resource -[documentTranslationClient_class]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts -[pre_requisities]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#prerequisites -[azure_blob_storage_account]: https://ms.portal.azure.com/#create/Microsoft.StorageAccount -[container]: https://learn.microsoft.com/azure/storage/blobs/storage-quickstart-blobs-portal#create-a-container -[storage_container_authorization]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/quickstarts/client-library-sdks?tabs=dotnet&pivots=programming-language-csharp#storage-container-authorization diff --git a/sdk/translation/ai-translation-document-rest/api-extractor.json b/sdk/translation/ai-translation-document-rest/api-extractor.json deleted file mode 100644 index 77621ce4111b..000000000000 --- a/sdk/translation/ai-translation-document-rest/api-extractor.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", - "mainEntryPointFilePath": "./types/src/index.d.ts", - "docModel": { - "enabled": true - }, - "apiReport": { - "enabled": true, - "reportFolder": "./review" - }, - "dtsRollup": { - "enabled": true, - "untrimmedFilePath": "", - "publicTrimmedFilePath": "./types/ai-translation-document.d.ts" - }, - "messages": { - "tsdocMessageReporting": { - "default": { - "logLevel": "none" - } - }, - "extractorMessageReporting": { - "ae-missing-release-tag": { - "logLevel": "none" - }, - "ae-unresolved-link": { - "logLevel": "none" - } - } - } -} diff --git a/sdk/translation/ai-translation-document-rest/assets.json b/sdk/translation/ai-translation-document-rest/assets.json deleted file mode 100644 index 21460e3d2e52..000000000000 --- a/sdk/translation/ai-translation-document-rest/assets.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "AssetsRepo": "Azure/azure-sdk-assets", - "AssetsRepoPrefixPath": "js", - "TagPrefix": "js/translation/ai-translation-document-rest", - "Tag": "js/translation/ai-translation-document-rest_4f72a8b574" -} diff --git a/sdk/translation/ai-translation-document-rest/eslint.config.mjs b/sdk/translation/ai-translation-document-rest/eslint.config.mjs deleted file mode 100644 index e559ed8cb5bd..000000000000 --- a/sdk/translation/ai-translation-document-rest/eslint.config.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import azsdkEslint from "@azure/eslint-plugin-azure-sdk"; - -export default [ - ...azsdkEslint.configs.recommended, - { - rules: { - "@azure/azure-sdk/ts-modules-only-named": "warn", - "@azure/azure-sdk/ts-apiextractor-json-types": "warn", - "@azure/azure-sdk/ts-package-json-types": "warn", - "@azure/azure-sdk/ts-package-json-engine-is-present": "warn", - "tsdoc/syntax": "warn", - }, - }, -]; diff --git a/sdk/translation/ai-translation-document-rest/karma.conf.js b/sdk/translation/ai-translation-document-rest/karma.conf.js deleted file mode 100644 index 352cd2807bd3..000000000000 --- a/sdk/translation/ai-translation-document-rest/karma.conf.js +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -// https://github.com/karma-runner/karma-chrome-launcher -process.env.CHROME_BIN = require("puppeteer").executablePath(); -require("dotenv").config(); - -process.env.RECORDINGS_RELATIVE_PATH = - require("@azure-tools/test-recorder").relativeRecordingsPath(); - -module.exports = function (config) { - config.set({ - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: "./", - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ["source-map-support", "mocha"], - - plugins: [ - "karma-mocha", - "karma-mocha-reporter", - "karma-chrome-launcher", - "karma-firefox-launcher", - "karma-env-preprocessor", - "karma-coverage", - "karma-sourcemap-loader", - "karma-junit-reporter", - "karma-source-map-support", - ], - - // list of files / patterns to load in the browser - files: [ - "dist-test/index.browser.js", - { - pattern: "dist-test/index.browser.js.map", - type: "html", - included: false, - served: true, - }, - ], - - // list of files / patterns to exclude - exclude: [], - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - "**/*.js": ["sourcemap", "env"], - // IMPORTANT: COMMENT following line if you want to debug in your browsers!! - // Preprocess source file to calculate code coverage, however this will make source file unreadable - // "dist-test/index.js": ["coverage"] - }, - - envPreprocessor: [ - "TEST_MODE", - "DOCUMENT_TRANSLATION_ENDPOINT", - "DOCUMENT_TRANSLATION_STORAGE_NAME", - "RECORDINGS_RELATIVE_PATH", - ], - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ["mocha", "coverage", "junit"], - - coverageReporter: { - // specify a common output directory - dir: "coverage-browser/", - reporters: [ - { type: "json", subdir: ".", file: "coverage.json" }, - { type: "lcovonly", subdir: ".", file: "lcov.info" }, - { type: "html", subdir: "html" }, - { type: "cobertura", subdir: ".", file: "cobertura-coverage.xml" }, - ], - }, - - junitReporter: { - outputDir: "", // results will be saved as $outputDir/$browserName.xml - outputFile: "test-results.browser.xml", // if included, results will be saved as $outputDir/$browserName/$outputFile - suite: "", // suite will become the package name attribute in xml testsuite element - useBrowserName: false, // add browser name to report and classes names - nameFormatter: undefined, // function (browser, result) to customize the name attribute in xml testcase element - classNameFormatter: undefined, // function (browser, result) to customize the classname attribute in xml testcase element - properties: {}, // key value pair of properties to add to the section of the report - }, - - // web server port - port: 9876, - - // enable / disable colors in the output (reporters and logs) - colors: true, - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: false, - - // --no-sandbox allows our tests to run in Linux without having to change the system. - // --disable-web-security allows us to authenticate from the browser without having to write tests using interactive auth, which would be far more complex. - browsers: ["ChromeHeadlessNoSandbox"], - customLaunchers: { - ChromeHeadlessNoSandbox: { - base: "ChromeHeadless", - flags: ["--no-sandbox", "--disable-web-security"], - }, - }, - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: 1, - - browserNoActivityTimeout: 60000000, - browserDisconnectTimeout: 10000, - browserDisconnectTolerance: 3, - - client: { - mocha: { - // change Karma's debug.html to the mocha web reporter - reporter: "html", - timeout: "600000", - }, - }, - }); -}; diff --git a/sdk/translation/ai-translation-document-rest/package.json b/sdk/translation/ai-translation-document-rest/package.json deleted file mode 100644 index 76eeb9a3a507..000000000000 --- a/sdk/translation/ai-translation-document-rest/package.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "name": "@azure-rest/ai-translation-document", - "sdk-type": "client", - "author": "Microsoft Corporation", - "description": "A generated SDK for DocumentTranslationClient.", - "version": "2.0.0-beta.1", - "keywords": [ - "node", - "azure", - "cloud", - "typescript", - "browser", - "isomorphic", - "translate", - "translation" - ], - "license": "MIT", - "main": "dist/index.js", - "module": "./dist-esm/src/index.js", - "types": "./types/ai-translation-document.d.ts", - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest/README.md", - "repository": "github:Azure/azure-sdk-for-js", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "files": [ - "dist/", - "dist-esm/src/", - "types/ai-translation-document.d.ts", - "README.md", - "CHANGELOG.md", - "LICENSE" - ], - "engines": { - "node": ">=18.0.0" - }, - "//sampleConfiguration": { - "productName": "Azure Document Translation Service", - "productSlugs": [ - "azure", - "azure-cognitive-services", - "azure-translator" - ], - "requiredResources": { - "Azure Cognitive Services instance": "https://docs.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account" - } - }, - "dependencies": { - "@azure-rest/core-client": "^2.0.0", - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.6.0", - "@azure/core-lro": "^3.0.0", - "@azure/core-paging": "^1.5.0", - "@azure/core-rest-pipeline": "^1.16.3", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "devDependencies": { - "@azure-tools/test-credential": "^1.0.0", - "@azure-tools/test-recorder": "^3.5.2", - "@azure/dev-tool": "^1.0.0", - "@azure/eslint-plugin-azure-sdk": "^3.0.0", - "@azure/identity": "^4.0.1", - "@azure/storage-blob": "^12.23.0", - "@microsoft/api-extractor": "^7.47.0", - "@types/chai": "^4.2.8", - "@types/mocha": "^10.0.0", - "@types/node": "^18.0.0", - "autorest": "latest", - "chai": "^4.2.0", - "cross-env": "^7.0.2", - "dotenv": "^16.0.0", - "eslint": "^9.9.0", - "karma": "^6.2.0", - "karma-chrome-launcher": "^3.0.0", - "karma-coverage": "^2.0.0", - "karma-env-preprocessor": "^0.1.1", - "karma-firefox-launcher": "^1.1.0", - "karma-junit-reporter": "^2.0.1", - "karma-mocha": "^2.0.1", - "karma-mocha-reporter": "^2.2.5", - "karma-source-map-support": "~1.4.0", - "karma-sourcemap-loader": "^0.3.8", - "mkdirp": "^3.0.1", - "mocha": "^10.0.0", - "nyc": "^17.0.0", - "rimraf": "^5.0.5", - "source-map-support": "^0.5.9", - "ts-node": "^10.0.0", - "tshy": "^2.0.0", - "typescript": "~5.6.2" - }, - "scripts": { - "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", - "build": "npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && dev-tool run extract-api", - "build:browser": "tsc -p . && dev-tool run bundle", - "build:debug": "tsc -p . && dev-tool run bundle && dev-tool run extract-api", - "build:node": "tsc -p . && dev-tool run bundle --browser-test false", - "build:samples": "echo Obsolete.", - "build:test": "tsc -p . && dev-tool run bundle", - "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", - "clean": "rimraf --glob dist dist-browser dist-esm test-dist temp types *.tgz *.log", - "execute:samples": "dev-tool samples run samples-dev", - "extract-api": "rimraf review && mkdirp ./review && dev-tool run extract-api", - "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"", - "generate:client": "echo skipped", - "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "integration-test:browser": "dev-tool run test:browser", - "integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'", - "lint": "eslint package.json api-extractor.json src test", - "lint:fix": "eslint package.json api-extractor.json src test --fix --fix-type [problem,suggestion]", - "pack": "npm pack 2>&1", - "test": "npm run clean && npm run build:test && npm run unit-test", - "test:browser": "npm run clean && npm run build:test && npm run unit-test:browser", - "test:node": "npm run clean && npm run build:test && npm run unit-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser", - "unit-test:browser": "dev-tool run test:browser", - "unit-test:node": "dev-tool run test:node-ts-input -- --timeout 1200000 --exclude 'test/**/browser/*.spec.ts' 'test/**/*.spec.ts'", - "update-snippets": "echo skipped" - }, - "sideEffects": false, - "autoPublish": false -} diff --git a/sdk/translation/ai-translation-document-rest/review/ai-translation-document.api.md b/sdk/translation/ai-translation-document-rest/review/ai-translation-document.api.md deleted file mode 100644 index 7912358013cb..000000000000 --- a/sdk/translation/ai-translation-document-rest/review/ai-translation-document.api.md +++ /dev/null @@ -1,631 +0,0 @@ -## API Report File for "@azure-rest/ai-translation-document" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts - -import { AbortSignalLike } from '@azure/abort-controller'; -import { CancelOnProgress } from '@azure/core-lro'; -import { Client } from '@azure-rest/core-client'; -import { ClientOptions } from '@azure-rest/core-client'; -import { CreateHttpPollerOptions } from '@azure/core-lro'; -import { ErrorResponse } from '@azure-rest/core-client'; -import { HttpResponse } from '@azure-rest/core-client'; -import { KeyCredential } from '@azure/core-auth'; -import { OperationState } from '@azure/core-lro'; -import { PagedAsyncIterableIterator } from '@azure/core-paging'; -import { PathUncheckedResponse } from '@azure-rest/core-client'; -import { RawHttpHeaders } from '@azure/core-rest-pipeline'; -import { RawHttpHeadersInput } from '@azure/core-rest-pipeline'; -import { RequestParameters } from '@azure-rest/core-client'; -import { StreamableMethod } from '@azure-rest/core-client'; -import { TokenCredential } from '@azure/core-auth'; - -// @public -export interface BatchRequest { - source: SourceInput; - storageType?: StorageInputType; - targets: Array; -} - -// @public -export interface CancelTranslation200Response extends HttpResponse { - // (undocumented) - body: TranslationStatusOutput; - // (undocumented) - status: "200"; -} - -// @public (undocumented) -export interface CancelTranslationDefaultHeaders { - "x-ms-error-code"?: string; -} - -// @public (undocumented) -export interface CancelTranslationDefaultResponse extends HttpResponse { - // (undocumented) - body: ErrorResponse; - // (undocumented) - headers: RawHttpHeaders & CancelTranslationDefaultHeaders; - // (undocumented) - status: string; -} - -// @public (undocumented) -export type CancelTranslationParameters = RequestParameters; - -// @public -function createClient(endpointParam: string, credentials: TokenCredential | KeyCredential, { apiVersion, ...options }?: DocumentTranslationClientOptions): DocumentTranslationClient; -export default createClient; - -// @public -export interface DocumentFilter { - prefix?: string; - suffix?: string; -} - -// @public -export interface DocumentsStatusOutput { - nextLink?: string; - value: Array; -} - -// @public -export interface DocumentStatusOutput { - characterCharged?: number; - createdDateTimeUtc: string; - error?: TranslationErrorOutput; - id: string; - lastActionDateTimeUtc: string; - path?: string; - progress: number; - sourcePath: string; - status: StatusOutput; - to: string; -} - -// @public (undocumented) -export interface DocumentTranslate { - post(options: DocumentTranslateParameters): StreamableMethod; -} - -// @public (undocumented) -export interface DocumentTranslate200Headers { - "content-type": "application/octet-stream"; - "x-ms-client-request-id"?: string; -} - -// @public -export interface DocumentTranslate200Response extends HttpResponse { - body: Uint8Array; - // (undocumented) - headers: RawHttpHeaders & DocumentTranslate200Headers; - // (undocumented) - status: "200"; -} - -// @public (undocumented) -export interface DocumentTranslateBodyParam { - body: DocumentTranslateContent; -} - -// @public -export type DocumentTranslateContent = FormData | Array; - -// @public (undocumented) -export interface DocumentTranslateContentDocumentPartDescriptor { - // (undocumented) - body: string | Uint8Array | ReadableStream | NodeJS.ReadableStream | File; - // (undocumented) - contentType?: string; - // (undocumented) - filename?: string; - // (undocumented) - name: "document"; -} - -// @public (undocumented) -export interface DocumentTranslateContentGlossaryPartDescriptor { - // (undocumented) - body: string | Uint8Array | ReadableStream | NodeJS.ReadableStream | File; - // (undocumented) - contentType?: string; - // (undocumented) - filename?: string; - // (undocumented) - name: "glossary"; -} - -// @public (undocumented) -export interface DocumentTranslateDefaultHeaders { - "x-ms-error-code"?: string; -} - -// @public (undocumented) -export interface DocumentTranslateDefaultResponse extends HttpResponse { - // (undocumented) - body: ErrorResponse; - // (undocumented) - headers: RawHttpHeaders & DocumentTranslateDefaultHeaders; - // (undocumented) - status: string; -} - -// @public (undocumented) -export interface DocumentTranslateHeaderParam { - // (undocumented) - headers?: RawHttpHeadersInput & DocumentTranslateHeaders; -} - -// @public (undocumented) -export interface DocumentTranslateHeaders { - "x-ms-client-request-id"?: string; -} - -// @public (undocumented) -export interface DocumentTranslateMediaTypesParam { - contentType: "multipart/form-data"; -} - -// @public (undocumented) -export type DocumentTranslateParameters = DocumentTranslateQueryParam & DocumentTranslateHeaderParam & DocumentTranslateMediaTypesParam & DocumentTranslateBodyParam & RequestParameters; - -// @public (undocumented) -export interface DocumentTranslateQueryParam { - // (undocumented) - queryParameters: DocumentTranslateQueryParamProperties; -} - -// @public (undocumented) -export interface DocumentTranslateQueryParamProperties { - allowFallback?: boolean; - category?: string; - sourceLanguage?: string; - targetLanguage: string; -} - -// @public (undocumented) -export type DocumentTranslationClient = Client & { - path: Routes; -}; - -// @public -export interface DocumentTranslationClientOptions extends ClientOptions { - apiVersion?: string; -} - -// @public -export interface FileFormatOutput { - contentTypes: string[]; - defaultVersion?: string; - fileExtensions: string[]; - format: string; - type?: string; - versions?: string[]; -} - -// @public -export type FileFormatType = string; - -// @public -export type GetArrayType = T extends Array ? TData : never; - -// @public (undocumented) -export interface GetDocumentsStatus { - get(options?: GetDocumentsStatusParameters): StreamableMethod; -} - -// @public -export interface GetDocumentsStatus200Response extends HttpResponse { - // (undocumented) - body: DocumentsStatusOutput; - // (undocumented) - status: "200"; -} - -// @public (undocumented) -export interface GetDocumentsStatusDefaultHeaders { - "x-ms-error-code"?: string; -} - -// @public (undocumented) -export interface GetDocumentsStatusDefaultResponse extends HttpResponse { - // (undocumented) - body: ErrorResponse; - // (undocumented) - headers: RawHttpHeaders & GetDocumentsStatusDefaultHeaders; - // (undocumented) - status: string; -} - -// @public (undocumented) -export type GetDocumentsStatusParameters = GetDocumentsStatusQueryParam & RequestParameters; - -// @public (undocumented) -export interface GetDocumentsStatusQueryParam { - // (undocumented) - queryParameters?: GetDocumentsStatusQueryParamProperties; -} - -// @public (undocumented) -export interface GetDocumentsStatusQueryParamProperties { - createdDateTimeUtcEnd?: Date | string; - createdDateTimeUtcStart?: Date | string; - ids?: string[]; - maxpagesize?: number; - orderby?: string[]; - skip?: number; - statuses?: string[]; - top?: number; -} - -// @public (undocumented) -export interface GetDocumentStatus { - get(options?: GetDocumentStatusParameters): StreamableMethod; -} - -// @public -export interface GetDocumentStatus200Response extends HttpResponse { - // (undocumented) - body: DocumentStatusOutput; - // (undocumented) - status: "200"; -} - -// @public (undocumented) -export interface GetDocumentStatusDefaultHeaders { - "x-ms-error-code"?: string; -} - -// @public (undocumented) -export interface GetDocumentStatusDefaultResponse extends HttpResponse { - // (undocumented) - body: ErrorResponse; - // (undocumented) - headers: RawHttpHeaders & GetDocumentStatusDefaultHeaders; - // (undocumented) - status: string; -} - -// @public (undocumented) -export type GetDocumentStatusParameters = RequestParameters; - -// @public -export function getLongRunningPoller(client: Client, initialResponse: StartTranslation202Response | StartTranslationDefaultResponse, options?: CreateHttpPollerOptions>): Promise, TResult>>; - -// @public -export type GetPage = (pageLink: string, maxPageSize?: number) => Promise<{ - page: TPage; - nextPageLink?: string; -}>; - -// @public (undocumented) -export interface GetSupportedFormats { - get(options?: GetSupportedFormatsParameters): StreamableMethod; -} - -// @public -export interface GetSupportedFormats200Response extends HttpResponse { - // (undocumented) - body: SupportedFileFormatsOutput; - // (undocumented) - status: "200"; -} - -// @public (undocumented) -export interface GetSupportedFormatsDefaultHeaders { - "x-ms-error-code"?: string; -} - -// @public (undocumented) -export interface GetSupportedFormatsDefaultResponse extends HttpResponse { - // (undocumented) - body: ErrorResponse; - // (undocumented) - headers: RawHttpHeaders & GetSupportedFormatsDefaultHeaders; - // (undocumented) - status: string; -} - -// @public (undocumented) -export type GetSupportedFormatsParameters = GetSupportedFormatsQueryParam & RequestParameters; - -// @public (undocumented) -export interface GetSupportedFormatsQueryParam { - // (undocumented) - queryParameters?: GetSupportedFormatsQueryParamProperties; -} - -// @public (undocumented) -export interface GetSupportedFormatsQueryParamProperties { - type?: FileFormatType; -} - -// @public -export interface GetTranslationsStatus200Response extends HttpResponse { - // (undocumented) - body: TranslationsStatusOutput; - // (undocumented) - status: "200"; -} - -// @public (undocumented) -export interface GetTranslationsStatusDefaultHeaders { - "x-ms-error-code"?: string; -} - -// @public (undocumented) -export interface GetTranslationsStatusDefaultResponse extends HttpResponse { - // (undocumented) - body: ErrorResponse; - // (undocumented) - headers: RawHttpHeaders & GetTranslationsStatusDefaultHeaders; - // (undocumented) - status: string; -} - -// @public (undocumented) -export type GetTranslationsStatusParameters = GetTranslationsStatusQueryParam & RequestParameters; - -// @public (undocumented) -export interface GetTranslationsStatusQueryParam { - // (undocumented) - queryParameters?: GetTranslationsStatusQueryParamProperties; -} - -// @public (undocumented) -export interface GetTranslationsStatusQueryParamProperties { - createdDateTimeUtcEnd?: Date | string; - createdDateTimeUtcStart?: Date | string; - ids?: string[]; - maxpagesize?: number; - orderby?: string[]; - skip?: number; - statuses?: string[]; - top?: number; -} - -// @public (undocumented) -export interface GetTranslationStatus { - delete(options?: CancelTranslationParameters): StreamableMethod; - get(options?: GetTranslationStatusParameters): StreamableMethod; -} - -// @public -export interface GetTranslationStatus200Response extends HttpResponse { - // (undocumented) - body: TranslationStatusOutput; - // (undocumented) - status: "200"; -} - -// @public (undocumented) -export interface GetTranslationStatusDefaultHeaders { - "x-ms-error-code"?: string; -} - -// @public (undocumented) -export interface GetTranslationStatusDefaultResponse extends HttpResponse { - // (undocumented) - body: ErrorResponse; - // (undocumented) - headers: RawHttpHeaders & GetTranslationStatusDefaultHeaders; - // (undocumented) - status: string; -} - -// @public (undocumented) -export type GetTranslationStatusParameters = RequestParameters; - -// @public -export interface Glossary { - format: string; - glossaryUrl: string; - storageSource?: StorageSource; - version?: string; -} - -// @public -export interface InnerTranslationErrorOutput { - code: string; - innerError?: InnerTranslationErrorOutput; - message: string; - readonly target?: string; -} - -// @public (undocumented) -export function isUnexpected(response: DocumentTranslate200Response | DocumentTranslateDefaultResponse): response is DocumentTranslateDefaultResponse; - -// @public (undocumented) -export function isUnexpected(response: StartTranslation202Response | StartTranslationLogicalResponse | StartTranslationDefaultResponse): response is StartTranslationDefaultResponse; - -// @public (undocumented) -export function isUnexpected(response: GetTranslationsStatus200Response | GetTranslationsStatusDefaultResponse): response is GetTranslationsStatusDefaultResponse; - -// @public (undocumented) -export function isUnexpected(response: GetDocumentStatus200Response | GetDocumentStatusDefaultResponse): response is GetDocumentStatusDefaultResponse; - -// @public (undocumented) -export function isUnexpected(response: GetTranslationStatus200Response | GetTranslationStatusDefaultResponse): response is GetTranslationStatusDefaultResponse; - -// @public (undocumented) -export function isUnexpected(response: CancelTranslation200Response | CancelTranslationDefaultResponse): response is CancelTranslationDefaultResponse; - -// @public (undocumented) -export function isUnexpected(response: GetDocumentsStatus200Response | GetDocumentsStatusDefaultResponse): response is GetDocumentsStatusDefaultResponse; - -// @public (undocumented) -export function isUnexpected(response: GetSupportedFormats200Response | GetSupportedFormatsDefaultResponse): response is GetSupportedFormatsDefaultResponse; - -// @public -export function paginate(client: Client, initialResponse: TResponse, options?: PagingOptions): PagedAsyncIterableIterator>; - -// @public -export type PaginateReturn = TResult extends { - body: { - value?: infer TPage; - }; -} ? GetArrayType : Array; - -// @public -export interface PagingOptions { - customGetPage?: GetPage[]>; -} - -// @public (undocumented) -export interface Routes { - (path: "/document:translate"): DocumentTranslate; - (path: "/document/batches"): StartTranslation; - (path: "/document/batches/{id}/documents/{documentId}", id: string, documentId: string): GetDocumentStatus; - (path: "/document/batches/{id}", id: string): GetTranslationStatus; - (path: "/document/batches/{id}/documents", id: string): GetDocumentsStatus; - (path: "/document/formats"): GetSupportedFormats; -} - -// @public -export interface SimplePollerLike, TResult> { - getOperationState(): TState; - getResult(): TResult | undefined; - isDone(): boolean; - // @deprecated - isStopped(): boolean; - onProgress(callback: (state: TState) => void): CancelOnProgress; - poll(options?: { - abortSignal?: AbortSignalLike; - }): Promise; - pollUntilDone(pollOptions?: { - abortSignal?: AbortSignalLike; - }): Promise; - serialize(): Promise; - // @deprecated - stopPolling(): void; - submitted(): Promise; - // @deprecated - toString(): string; -} - -// @public -export interface SourceInput { - filter?: DocumentFilter; - language?: string; - sourceUrl: string; - storageSource?: StorageSource; -} - -// @public (undocumented) -export interface StartTranslation { - get(options?: GetTranslationsStatusParameters): StreamableMethod; - post(options: StartTranslationParameters): StreamableMethod; -} - -// @public (undocumented) -export interface StartTranslation202Headers { - "operation-location": string; -} - -// @public -export interface StartTranslation202Response extends HttpResponse { - // (undocumented) - headers: RawHttpHeaders & StartTranslation202Headers; - // (undocumented) - status: "202"; -} - -// @public (undocumented) -export interface StartTranslationBodyParam { - body: StartTranslationDetails; -} - -// @public (undocumented) -export interface StartTranslationDefaultHeaders { - "x-ms-error-code"?: string; -} - -// @public (undocumented) -export interface StartTranslationDefaultResponse extends HttpResponse { - // (undocumented) - body: ErrorResponse; - // (undocumented) - headers: RawHttpHeaders & StartTranslationDefaultHeaders; - // (undocumented) - status: string; -} - -// @public -export interface StartTranslationDetails { - inputs: Array; -} - -// @public -export interface StartTranslationLogicalResponse extends HttpResponse { - // (undocumented) - status: "200"; -} - -// @public (undocumented) -export type StartTranslationParameters = StartTranslationBodyParam & RequestParameters; - -// @public -export type StatusOutput = string; - -// @public -export interface StatusSummaryOutput { - cancelled: number; - failed: number; - inProgress: number; - notYetStarted: number; - success: number; - total: number; - totalCharacterCharged: number; -} - -// @public -export type StorageInputType = string; - -// @public -export type StorageSource = string; - -// @public -export interface SupportedFileFormatsOutput { - value: Array; -} - -// @public -export interface TargetInput { - category?: string; - glossaries?: Array; - language: string; - storageSource?: StorageSource; - targetUrl: string; -} - -// @public -export type TranslationErrorCodeOutput = string; - -// @public -export interface TranslationErrorOutput { - code: TranslationErrorCodeOutput; - innerError?: InnerTranslationErrorOutput; - message: string; - readonly target?: string; -} - -// @public -export interface TranslationsStatusOutput { - nextLink?: string; - value: Array; -} - -// @public -export interface TranslationStatusOutput { - createdDateTimeUtc: string; - error?: TranslationErrorOutput; - id: string; - lastActionDateTimeUtc: string; - status: StatusOutput; - summary: StatusSummaryOutput; -} - -// (No @packageDocumentation comment for this package) - -``` diff --git a/sdk/translation/ai-translation-document-rest/sample.env b/sdk/translation/ai-translation-document-rest/sample.env deleted file mode 100644 index 4a2e6810a023..000000000000 --- a/sdk/translation/ai-translation-document-rest/sample.env +++ /dev/null @@ -1,6 +0,0 @@ -# Used in most samples. -# Get the key and region - https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#retrieve-your-key-and-custom-domain-endpoint - -ENDPOINT="https://.cognitiveservices.azure.com" -TEXT_TRANSLATOR_API_KEY="" -TEXT_TRANSLATOR_REGION="" diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/batchDocumentTranslation.ts b/sdk/translation/ai-translation-document-rest/samples-dev/batchDocumentTranslation.ts deleted file mode 100644 index a7a32cd857fb..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/batchDocumentTranslation.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Batch Document Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(poller)) { - throw poller.body; - } - const id = getTranslationOperationID(poller.headers["operation-location"]); - console.log("Translation started and the operationID is: " + id); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/cancelTranslation.ts b/sdk/translation/ai-translation-document-rest/samples-dev/cancelTranslation.ts deleted file mode 100644 index 4d22fbdebd24..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/cancelTranslation.ts +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to cancel a batch translation request - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Cancel Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - const id = getTranslationOperationID(poller.headers["operation-location"]); - - //Cancel translation - await client.path("/document/batches/{id}", id).delete(); - - //get translation status and verify the job is cancelled, cancelling or notStarted - const response = await client.path("/document/batches/{id}", id).get(); - if (isUnexpected(response)) { - throw response.body; - } - console.log("The status after cancelling the batch operation is:" + response.body.status); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentStatus.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentStatus.ts deleted file mode 100644 index 60b4f9270aa0..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentStatus.ts +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Document status for a given document of a batch translation operation - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Document Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - - const responseBody = documentResponse.body; - for (const document of responseBody.value) { - //get document status - const documentStatus = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, document.id) - .get(); - if (isUnexpected(documentStatus)) { - throw documentStatus.body; - } - console.log("Document Status = " + documentStatus.status); - const documentStatusOutput = documentStatus.body; - console.log("Document ID = " + documentStatusOutput.id); - console.log("Document source path = " + documentStatusOutput.sourcePath); - console.log("Document path = " + documentStatusOutput.path); - console.log("Target language = " + documentStatusOutput.to); - console.log("Document created dateTime = " + documentStatusOutput.createdDateTimeUtc); - console.log("Document last action date time = " + documentStatusOutput.lastActionDateTimeUtc); - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentsStatus.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentsStatus.ts deleted file mode 100644 index be178d108d67..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getDocumentsStatus.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Gets Documents Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - const responseBody = documentResponse.body; - for (const documentStatus of responseBody.value) { - console.log("Document Status is: " + documentStatus.status); - console.log("Characters charged is: " + documentStatus.characterCharged); - break; - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getSupportedFormats.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getSupportedFormats.ts deleted file mode 100644 index d83360968b9f..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getSupportedFormats.ts +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== List Supported Format Types =="); - - const client = createClient(endpoint, credentials); - const response = await client.path("/document/formats").get(); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach( - (fileFormatType: { format: any; contentTypes: any; fileExtensions: any }) => { - console.log(fileFormatType.format); - console.log(fileFormatType.contentTypes); - console.log(fileFormatType.fileExtensions); - }, - ); - - main().catch((err) => { - console.error(err); - }); -} - -main().catch((err) => { - console.error(err); -}); diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationStatus.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationStatus.ts deleted file mode 100644 index 9e864fba75ac..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationStatus.ts +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { GetTranslationStatus200Response } from "../src/responses"; -import { isUnexpected } from "../src"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Translation Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Status - const response = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - console.log("Translation ID = " + responseBody.id); - console.log("Translation Status = " + responseBody.status); - console.log("Translation createdDateTimeUtc = " + responseBody.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + responseBody.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + responseBody.summary.total); - console.log("Total characters charged = " + responseBody.summary.totalCharacterCharged); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationsStatus.ts b/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationsStatus.ts deleted file mode 100644 index 3467638ec3aa..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/getTranslationsStatus.ts +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Translations Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Statusby ID filter - const queryParams = { - ids: [operationId], - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - console.log("Translation ID = " + translationStatus.id); - console.log("Translation Status = " + translationStatus.status); - console.log("Translation createdDateTimeUtc = " + translationStatus.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + translationStatus.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + translationStatus.summary.total); - console.log("Total characters charged = " + translationStatus.summary.totalCharacterCharged); - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples-dev/synchronousDocumentTranslation.ts b/sdk/translation/ai-translation-document-rest/samples-dev/synchronousDocumentTranslation.ts deleted file mode 100644 index c4c0e9eee253..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples-dev/synchronousDocumentTranslation.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation - */ - -import * as dotenv from "dotenv"; -import { DocumentTranslateParameters, isUnexpected } from "../src"; -import createClient from "../src/documentTranslationClient"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Synchronous Document Translation =="); - - const client = createClient(endpoint, credentials); - - const options: DocumentTranslateParameters = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = await client.path("/document:translate").post(options); - if (isUnexpected(response)) { - throw response.body; - } - console.log("Response code: " + response.status + ", Response body: " + response.body); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/README.md b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/README.md deleted file mode 100644 index 5d02362baade..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/README.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -page_type: sample -languages: - - javascript -products: - - azure - - azure-cognitive-services - - azure-translator -urlFragment: ai-translation-document-javascript-beta ---- - -# Azure Document Translation Service client library samples for JavaScript (Beta) - -These sample programs show how to use the JavaScript client libraries for Azure Document Translation Service in some common scenarios. - -| **File Name** | **Description** | -| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| [batchDocumentTranslation.js][batchdocumenttranslation] | This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation | -| [cancelTranslation.js][canceltranslation] | This sample demonstrates how to cancel a batch translation request | -| [getDocumentStatus.js][getdocumentstatus] | This sample demonstrates how to get the Document status for a given document of a batch translation operation | -| [getDocumentsStatus.js][getdocumentsstatus] | This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user | -| [getSupportedFormats.js][getsupportedformats] | This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages | -| [getTranslationStatus.js][gettranslationstatus] | This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user | -| [getTranslationsStatus.js][gettranslationsstatus] | This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user | -| [synchronousDocumentTranslation.js][synchronousdocumenttranslation] | This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation | - -## Prerequisites - -The sample programs are compatible with [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule). - -You need [an Azure subscription][freesub] and the following Azure resources to run these sample programs: - -- [Azure Cognitive Services instance][createinstance_azurecognitiveservicesinstance] - -Samples retrieve credentials to access the service endpoint from environment variables. Alternatively, edit the source code to include the appropriate credentials. See each individual sample for details on which environment variables/credentials it requires to function. - -Adapting the samples to run in the browser may require some additional consideration. For details, please see the [package README][package]. - -## Setup - -To run the samples using the published version of the package: - -1. Install the dependencies using `npm`: - -```bash -npm install -``` - -2. Edit the file `sample.env`, adding the correct credentials to access the Azure service and run the samples. Then rename the file from `sample.env` to just `.env`. The sample programs will read this file automatically. - -3. Run whichever samples you like (note that some samples may require additional setup, see the table above): - -```bash -node batchDocumentTranslation.js -``` - -Alternatively, run a single sample with the correct environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): - -```bash -npx cross-env ENDPOINT="" DOCUMENT_TRANSLATION_API_KEY="" node batchDocumentTranslation.js -``` - -## Next Steps - -Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. - -[batchdocumenttranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js -[canceltranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js -[getdocumentstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js -[getdocumentsstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js -[getsupportedformats]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js -[gettranslationstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js -[gettranslationsstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js -[synchronousdocumenttranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js -[apiref]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/overview -[freesub]: https://azure.microsoft.com/free/ -[createinstance_azurecognitiveservicesinstance]: https://docs.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account -[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest/README.md diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js deleted file mode 100644 index 9b11fa0fb651..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/batchDocumentTranslation.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Batch Document Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(poller)) { - throw poller.body; - } - const id = getTranslationOperationID(poller.headers["operation-location"]); - console.log("Translation started and the operationID is: " + id); - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js deleted file mode 100644 index 054e0a55eff3..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/cancelTranslation.js +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to cancel a batch translation request - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Cancel Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - const id = getTranslationOperationID(poller.headers["operation-location"]); - - //Cancel translation - await client.path("/document/batches/{id}", id).delete(); - - //get translation status and verify the job is cancelled, cancelling or notStarted - const response = await client.path("/document/batches/{id}", id).get(); - if (isUnexpected(response)) { - throw response.body; - } - console.log("The status after cancelling the batch operation is:" + response.body.status); - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js deleted file mode 100644 index 2c883baa6ba0..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentStatus.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Document status for a given document of a batch translation operation - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Get Document Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - - const responseBody = documentResponse.body; - for (const document of responseBody.value) { - //get document status - const documentStatus = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, document.id) - .get(); - if (isUnexpected(documentStatus)) { - throw documentStatus.body; - } - console.log("Document Status = " + documentStatus.status); - const documentStatusOutput = documentStatus.body; - console.log("Document ID = " + documentStatusOutput.id); - console.log("Document source path = " + documentStatusOutput.sourcePath); - console.log("Document path = " + documentStatusOutput.path); - console.log("Target language = " + documentStatusOutput.to); - console.log("Document created dateTime = " + documentStatusOutput.createdDateTimeUtc); - console.log("Document last action date time = " + documentStatusOutput.lastActionDateTimeUtc); - } - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js deleted file mode 100644 index 6117764d16aa..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getDocumentsStatus.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Gets Documents Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - const responseBody = documentResponse.body; - for (const documentStatus of responseBody.value) { - console.log("Document Status is: " + documentStatus.status); - console.log("Characters charged is: " + documentStatus.characterCharged); - break; - } - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js deleted file mode 100644 index de234a9c3bbc..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getSupportedFormats.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== List Supported Format Types =="); - - const client = createClient(endpoint, credentials); - const response = await client.path("/document/formats").get(); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach((fileFormatType) => { - console.log(fileFormatType.format); - console.log(fileFormatType.contentTypes); - console.log(fileFormatType.fileExtensions); - }); - - main().catch((err) => { - console.error(err); - }); -} - -main().catch((err) => { - console.error(err); -}); - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js deleted file mode 100644 index ff0eefe1d75e..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationStatus.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Get Translation Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Status - const response = await client.path("/document/batches/{id}", operationId).get(); - - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - console.log("Translation ID = " + responseBody.id); - console.log("Translation Status = " + responseBody.status); - console.log("Translation createdDateTimeUtc = " + responseBody.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + responseBody.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + responseBody.summary.total); - console.log("Total characters charged = " + responseBody.summary.totalCharacterCharged); - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js deleted file mode 100644 index 7d2ed2e9aab9..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/getTranslationsStatus.js +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -const dotenv = require("dotenv"); -const createClient = require("../src/documentTranslationClient").default; -const { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} = require("../test/public/utils/samplesHelper"); -const { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} = require("../test/public/utils/testHelper"); -const { isUnexpected } = require("../src/isUnexpected"); -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Get Translations Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Statusby ID filter - const queryParams = { - ids: [operationId], - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - console.log("Translation ID = " + translationStatus.id); - console.log("Translation Status = " + translationStatus.status); - console.log("Translation createdDateTimeUtc = " + translationStatus.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + translationStatus.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + translationStatus.summary.total); - console.log("Total characters charged = " + translationStatus.summary.totalCharacterCharged); - } - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/package.json b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/package.json deleted file mode 100644 index a97bd20ef4aa..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "@azure-samples/ai-translation-document-js-beta", - "private": true, - "version": "1.0.0", - "description": "Azure Document Translation Service client library samples for JavaScript (Beta)", - "engines": { - "node": ">=18.0.0" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Azure/azure-sdk-for-js.git", - "directory": "sdk/translation/ai-translation-document-rest" - }, - "keywords": [ - "node", - "azure", - "cloud", - "typescript", - "browser", - "isomorphic", - "translate", - "translation" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest", - "dependencies": { - "@azure-rest/ai-translation-document": "next", - "dotenv": "latest" - } -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/sample.env b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/sample.env deleted file mode 100644 index 4a2e6810a023..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/sample.env +++ /dev/null @@ -1,6 +0,0 @@ -# Used in most samples. -# Get the key and region - https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#retrieve-your-key-and-custom-domain-endpoint - -ENDPOINT="https://.cognitiveservices.azure.com" -TEXT_TRANSLATOR_API_KEY="" -TEXT_TRANSLATOR_REGION="" diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js b/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js deleted file mode 100644 index d0702d16c37a..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/javascript/synchronousDocumentTranslation.js +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation - */ - -const dotenv = require("dotenv"); -const { isUnexpected } = require("../src"); -const createClient = require("../src/documentTranslationClient").default; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -async function main() { - console.log("== Synchronous Document Translation =="); - - const client = createClient(endpoint, credentials); - - const options = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = await client.path("/document:translate").post(options); - if (isUnexpected(response)) { - throw response.body; - } - console.log("Response code: " + response.status + ", Response body: " + response.body); - - main().catch((err) => { - console.error(err); - }); -} - -module.exports = { main }; diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/README.md b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/README.md deleted file mode 100644 index 4f051a0e1384..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/README.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -page_type: sample -languages: - - typescript -products: - - azure - - azure-cognitive-services - - azure-translator -urlFragment: ai-translation-document-typescript-beta ---- - -# Azure Document Translation Service client library samples for TypeScript (Beta) - -These sample programs show how to use the TypeScript client libraries for Azure Document Translation Service in some common scenarios. - -| **File Name** | **Description** | -| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| [batchDocumentTranslation.ts][batchdocumenttranslation] | This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation | -| [cancelTranslation.ts][canceltranslation] | This sample demonstrates how to cancel a batch translation request | -| [getDocumentStatus.ts][getdocumentstatus] | This sample demonstrates how to get the Document status for a given document of a batch translation operation | -| [getDocumentsStatus.ts][getdocumentsstatus] | This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user | -| [getSupportedFormats.ts][getsupportedformats] | This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages | -| [getTranslationStatus.ts][gettranslationstatus] | This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user | -| [getTranslationsStatus.ts][gettranslationsstatus] | This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user | -| [synchronousDocumentTranslation.ts][synchronousdocumenttranslation] | This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation | - -## Prerequisites - -The sample programs are compatible with [LTS versions of Node.js](https://github.com/nodejs/release#release-schedule). - -Before running the samples in Node, they must be compiled to JavaScript using the TypeScript compiler. For more information on TypeScript, see the [TypeScript documentation][typescript]. Install the TypeScript compiler using: - -```bash -npm install -g typescript -``` - -You need [an Azure subscription][freesub] and the following Azure resources to run these sample programs: - -- [Azure Cognitive Services instance][createinstance_azurecognitiveservicesinstance] - -Samples retrieve credentials to access the service endpoint from environment variables. Alternatively, edit the source code to include the appropriate credentials. See each individual sample for details on which environment variables/credentials it requires to function. - -Adapting the samples to run in the browser may require some additional consideration. For details, please see the [package README][package]. - -## Setup - -To run the samples using the published version of the package: - -1. Install the dependencies using `npm`: - -```bash -npm install -``` - -2. Compile the samples: - -```bash -npm run build -``` - -3. Edit the file `sample.env`, adding the correct credentials to access the Azure service and run the samples. Then rename the file from `sample.env` to just `.env`. The sample programs will read this file automatically. - -4. Run whichever samples you like (note that some samples may require additional setup, see the table above): - -```bash -node dist/batchDocumentTranslation.js -``` - -Alternatively, run a single sample with the correct environment variables set (setting up the `.env` file is not required if you do this), for example (cross-platform): - -```bash -npx cross-env ENDPOINT="" DOCUMENT_TRANSLATION_API_KEY="" node dist/batchDocumentTranslation.js -``` - -## Next Steps - -Take a look at our [API Documentation][apiref] for more information about the APIs that are available in the clients. - -[batchdocumenttranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts -[canceltranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts -[getdocumentstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts -[getdocumentsstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts -[getsupportedformats]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts -[gettranslationstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts -[gettranslationsstatus]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts -[synchronousdocumenttranslation]: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts -[apiref]: https://learn.microsoft.com/azure/ai-services/translator/document-translation/overview -[freesub]: https://azure.microsoft.com/free/ -[createinstance_azurecognitiveservicesinstance]: https://docs.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account -[package]: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest/README.md -[typescript]: https://www.typescriptlang.org/docs/home.html diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/package.json b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/package.json deleted file mode 100644 index 6b293931abe9..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "@azure-samples/ai-translation-document-ts-beta", - "private": true, - "version": "1.0.0", - "description": "Azure Document Translation Service client library samples for TypeScript (Beta)", - "engines": { - "node": ">=18.0.0" - }, - "scripts": { - "build": "tsc", - "prebuild": "rimraf dist/" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Azure/azure-sdk-for-js.git", - "directory": "sdk/translation/ai-translation-document-rest" - }, - "keywords": [ - "node", - "azure", - "cloud", - "typescript", - "browser", - "isomorphic", - "translate", - "translation" - ], - "author": "Microsoft Corporation", - "license": "MIT", - "bugs": { - "url": "https://github.com/Azure/azure-sdk-for-js/issues" - }, - "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/translation/ai-translation-document-rest", - "dependencies": { - "@azure-rest/ai-translation-document": "next", - "dotenv": "latest" - }, - "devDependencies": { - "@types/node": "^18.0.0", - "typescript": "~5.6.2", - "rimraf": "latest" - } -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/sample.env b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/sample.env deleted file mode 100644 index 4a2e6810a023..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/sample.env +++ /dev/null @@ -1,6 +0,0 @@ -# Used in most samples. -# Get the key and region - https://learn.microsoft.com/azure/ai-services/translator/document-translation/how-to-guides/use-rest-api-programmatically?tabs=csharp#retrieve-your-key-and-custom-domain-endpoint - -ENDPOINT="https://.cognitiveservices.azure.com" -TEXT_TRANSLATOR_API_KEY="" -TEXT_TRANSLATOR_REGION="" diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts deleted file mode 100644 index a7a32cd857fb..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/batchDocumentTranslation.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to start a batch translation - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Batch Document Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(poller)) { - throw poller.body; - } - const id = getTranslationOperationID(poller.headers["operation-location"]); - console.log("Translation started and the operationID is: " + id); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts deleted file mode 100644 index 4d22fbdebd24..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/cancelTranslation.ts +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to cancel a batch translation request - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Cancel Translation =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - const id = getTranslationOperationID(poller.headers["operation-location"]); - - //Cancel translation - await client.path("/document/batches/{id}", id).delete(); - - //get translation status and verify the job is cancelled, cancelling or notStarted - const response = await client.path("/document/batches/{id}", id).get(); - if (isUnexpected(response)) { - throw response.body; - } - console.log("The status after cancelling the batch operation is:" + response.body.status); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts deleted file mode 100644 index 60b4f9270aa0..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentStatus.ts +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Document status for a given document of a batch translation operation - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Document Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - - const responseBody = documentResponse.body; - for (const document of responseBody.value) { - //get document status - const documentStatus = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, document.id) - .get(); - if (isUnexpected(documentStatus)) { - throw documentStatus.body; - } - console.log("Document Status = " + documentStatus.status); - const documentStatusOutput = documentStatus.body; - console.log("Document ID = " + documentStatusOutput.id); - console.log("Document source path = " + documentStatusOutput.sourcePath); - console.log("Document path = " + documentStatusOutput.path); - console.log("Target language = " + documentStatusOutput.to); - console.log("Document created dateTime = " + documentStatusOutput.createdDateTimeUtc); - console.log("Document last action date time = " + documentStatusOutput.lastActionDateTimeUtc); - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts deleted file mode 100644 index be178d108d67..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getDocumentsStatus.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Documents status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Gets Documents Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Documents Status - const documentResponse = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(documentResponse)) { - throw documentResponse.body; - } - const responseBody = documentResponse.body; - for (const documentStatus of responseBody.value) { - console.log("Document Status is: " + documentStatus.status); - console.log("Characters charged is: " + documentStatus.characterCharged); - break; - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts deleted file mode 100644 index d83360968b9f..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getSupportedFormats.ts +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to get a list of supported languages - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== List Supported Format Types =="); - - const client = createClient(endpoint, credentials); - const response = await client.path("/document/formats").get(); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach( - (fileFormatType: { format: any; contentTypes: any; fileExtensions: any }) => { - console.log(fileFormatType.format); - console.log(fileFormatType.contentTypes); - console.log(fileFormatType.fileExtensions); - }, - ); - - main().catch((err) => { - console.error(err); - }); -} - -main().catch((err) => { - console.error(err); -}); diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts deleted file mode 100644 index 9e864fba75ac..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationStatus.ts +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { GetTranslationStatus200Response } from "../src/responses"; -import { isUnexpected } from "../src"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Translation Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Status - const response = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - console.log("Translation ID = " + responseBody.id); - console.log("Translation Status = " + responseBody.status); - console.log("Translation createdDateTimeUtc = " + responseBody.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + responseBody.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + responseBody.summary.total); - console.log("Total characters charged = " + responseBody.summary.totalCharacterCharged); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts deleted file mode 100644 index 3467638ec3aa..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/getTranslationsStatus.ts +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to get the Translations Status of a batch translation operation initiated by a user - */ - -import * as dotenv from "dotenv"; -import createClient from "../src/documentTranslationClient"; -import { - ONE_TEST_DOCUMENTS, - StartTranslationAndWait, - createSourceContainer, - createTargetContainer, -} from "../test/public/utils/samplesHelper"; -import { - createSourceInput, - createTargetInput, - createBatchRequest, - getTranslationOperationID, -} from "../test/public/utils/testHelper"; -import { isUnexpected } from "../src/isUnexpected"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Get Translations Status =="); - const client = createClient(endpoint, credentials); - - const sourceUrl = await createSourceContainer(ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - //Start translation - const batchRequests = { inputs: [batchRequest] }; - const translationResponse = await StartTranslationAndWait(client, batchRequests); - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - //get Translation Statusby ID filter - const queryParams = { - ids: [operationId], - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - console.log("Translation ID = " + translationStatus.id); - console.log("Translation Status = " + translationStatus.status); - console.log("Translation createdDateTimeUtc = " + translationStatus.createdDateTimeUtc); - console.log("Translation lastActionDateTimeUtc = " + translationStatus.lastActionDateTimeUtc); - console.log("Total documents submitted for translation = " + translationStatus.summary.total); - console.log("Total characters charged = " + translationStatus.summary.totalCharacterCharged); - } - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts deleted file mode 100644 index c4c0e9eee253..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/src/synchronousDocumentTranslation.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -/** - * @summary This sample demonstrates how to make a simple call to the Azure Document Translator service to synchronously start a single file translation - */ - -import * as dotenv from "dotenv"; -import { DocumentTranslateParameters, isUnexpected } from "../src"; -import createClient from "../src/documentTranslationClient"; -dotenv.config(); - -const endpoint = - process.env["ENDPOINT"] || - "https://-doctranslation.cognitiveservices.azure.com"; -const apiKey = process.env["DOCUMENT_TRANSLATION_API_KEY"] || ""; -const credentials = { key: apiKey ?? "" }; - -export async function main() { - console.log("== Synchronous Document Translation =="); - - const client = createClient(endpoint, credentials); - - const options: DocumentTranslateParameters = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = await client.path("/document:translate").post(options); - if (isUnexpected(response)) { - throw response.body; - } - console.log("Response code: " + response.status + ", Response body: " + response.body); - - main().catch((err) => { - console.error(err); - }); -} diff --git a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/tsconfig.json b/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/tsconfig.json deleted file mode 100644 index 984eed535aa8..000000000000 --- a/sdk/translation/ai-translation-document-rest/samples/v1-beta/typescript/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "module": "commonjs", - "moduleResolution": "node", - "resolveJsonModule": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "alwaysStrict": true, - "outDir": "dist", - "rootDir": "src" - }, - "include": [ - "src/**/*.ts" - ] -} diff --git a/sdk/translation/ai-translation-document-rest/src/clientDefinitions.ts b/sdk/translation/ai-translation-document-rest/src/clientDefinitions.ts index 0537002de237..ec2b06f3e868 100644 --- a/sdk/translation/ai-translation-document-rest/src/clientDefinitions.ts +++ b/sdk/translation/ai-translation-document-rest/src/clientDefinitions.ts @@ -1,9 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - import { DocumentTranslateParameters, StartTranslationParameters, @@ -38,7 +35,9 @@ export interface DocumentTranslate { /** Use this API to submit a single translation request to the Document Translation Service. */ post( options: DocumentTranslateParameters, - ): StreamableMethod; + ): StreamableMethod< + DocumentTranslate200Response | DocumentTranslateDefaultResponse + >; } export interface StartTranslation { @@ -65,7 +64,9 @@ export interface StartTranslation { */ post( options: StartTranslationParameters, - ): StreamableMethod; + ): StreamableMethod< + StartTranslation202Response | StartTranslationDefaultResponse + >; /** * Returns a list of batch requests submitted and the status for each * request. @@ -122,7 +123,9 @@ export interface StartTranslation { */ get( options?: GetTranslationsStatusParameters, - ): StreamableMethod; + ): StreamableMethod< + GetTranslationsStatus200Response | GetTranslationsStatusDefaultResponse + >; } export interface GetDocumentStatus { @@ -132,7 +135,9 @@ export interface GetDocumentStatus { */ get( options?: GetDocumentStatusParameters, - ): StreamableMethod; + ): StreamableMethod< + GetDocumentStatus200Response | GetDocumentStatusDefaultResponse + >; } export interface GetTranslationStatus { @@ -144,7 +149,9 @@ export interface GetTranslationStatus { */ get( options?: GetTranslationStatusParameters, - ): StreamableMethod; + ): StreamableMethod< + GetTranslationStatus200Response | GetTranslationStatusDefaultResponse + >; /** * Cancel a currently processing or queued translation. * A translation will not be @@ -157,7 +164,9 @@ export interface GetTranslationStatus { */ delete( options?: CancelTranslationParameters, - ): StreamableMethod; + ): StreamableMethod< + CancelTranslation200Response | CancelTranslationDefaultResponse + >; } export interface GetDocumentsStatus { @@ -211,7 +220,9 @@ export interface GetDocumentsStatus { */ get( options?: GetDocumentsStatusParameters, - ): StreamableMethod; + ): StreamableMethod< + GetDocumentsStatus200Response | GetDocumentsStatusDefaultResponse + >; } export interface GetSupportedFormats { @@ -223,7 +234,9 @@ export interface GetSupportedFormats { */ get( options?: GetSupportedFormatsParameters, - ): StreamableMethod; + ): StreamableMethod< + GetSupportedFormats200Response | GetSupportedFormatsDefaultResponse + >; } export interface Routes { diff --git a/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts b/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts index a5ff5e05a896..7664e7768a4a 100644 --- a/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts +++ b/sdk/translation/ai-translation-document-rest/src/documentTranslationClient.ts @@ -1,13 +1,10 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - import { getClient, ClientOptions } from "@azure-rest/core-client"; -import { logger } from "./logger"; +import { logger } from "./logger.js"; import { TokenCredential, KeyCredential } from "@azure/core-auth"; -import { DocumentTranslationClient } from "./clientDefinitions"; +import { DocumentTranslationClient } from "./clientDefinitions.js"; /** The optional parameters for the client */ export interface DocumentTranslationClientOptions extends ClientOptions { @@ -24,9 +21,13 @@ export interface DocumentTranslationClientOptions extends ClientOptions { export default function createClient( endpointParam: string, credentials: TokenCredential | KeyCredential, - { apiVersion = "2024-05-01", ...options }: DocumentTranslationClientOptions = {}, + { + apiVersion = "2024-05-01", + ...options + }: DocumentTranslationClientOptions = {}, ): DocumentTranslationClient { - const endpointUrl = options.endpoint ?? options.baseUrl ?? `${endpointParam}/translator`; + const endpointUrl = + options.endpoint ?? options.baseUrl ?? `${endpointParam}/translator`; const userAgentInfo = `azsdk-js-ai-translation-document-rest/1.0.0-beta.1`; const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix @@ -41,11 +42,18 @@ export default function createClient( logger: options.loggingOptions?.logger ?? logger.info, }, credentials: { - scopes: options.credentials?.scopes ?? ["https://cognitiveservices.azure.com/.default"], - apiKeyHeaderName: options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key", + scopes: options.credentials?.scopes ?? [ + "https://cognitiveservices.azure.com/.default", + ], + apiKeyHeaderName: + options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key", }, }; - const client = getClient(endpointUrl, credentials, options) as DocumentTranslationClient; + const client = getClient( + endpointUrl, + credentials, + options, + ) as DocumentTranslationClient; client.pipeline.removePolicy({ name: "ApiVersionPolicy" }); client.pipeline.addPolicy({ diff --git a/sdk/translation/ai-translation-document-rest/src/index.ts b/sdk/translation/ai-translation-document-rest/src/index.ts index d93097620d82..8d5c08c50ff7 100644 --- a/sdk/translation/ai-translation-document-rest/src/index.ts +++ b/sdk/translation/ai-translation-document-rest/src/index.ts @@ -1,19 +1,16 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import DocumentTranslationClient from "./documentTranslationClient"; +import DocumentTranslationClient from "./documentTranslationClient.js"; -export * from "./documentTranslationClient"; -export * from "./parameters"; -export * from "./responses"; -export * from "./clientDefinitions"; -export * from "./isUnexpected"; -export * from "./models"; -export * from "./outputModels"; -export * from "./paginateHelper"; -export * from "./pollingHelper"; +export * from "./documentTranslationClient.js"; +export * from "./parameters.js"; +export * from "./responses.js"; +export * from "./clientDefinitions.js"; +export * from "./isUnexpected.js"; +export * from "./models.js"; +export * from "./outputModels.js"; +export * from "./paginateHelper.js"; +export * from "./pollingHelper.js"; export default DocumentTranslationClient; diff --git a/sdk/translation/ai-translation-document-rest/src/isUnexpected.ts b/sdk/translation/ai-translation-document-rest/src/isUnexpected.ts index e14648bc9c1f..f37b860c698e 100644 --- a/sdk/translation/ai-translation-document-rest/src/isUnexpected.ts +++ b/sdk/translation/ai-translation-document-rest/src/isUnexpected.ts @@ -1,9 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - import { DocumentTranslate200Response, DocumentTranslateDefaultResponse, @@ -45,13 +42,17 @@ export function isUnexpected( | StartTranslationDefaultResponse, ): response is StartTranslationDefaultResponse; export function isUnexpected( - response: GetTranslationsStatus200Response | GetTranslationsStatusDefaultResponse, + response: + | GetTranslationsStatus200Response + | GetTranslationsStatusDefaultResponse, ): response is GetTranslationsStatusDefaultResponse; export function isUnexpected( response: GetDocumentStatus200Response | GetDocumentStatusDefaultResponse, ): response is GetDocumentStatusDefaultResponse; export function isUnexpected( - response: GetTranslationStatus200Response | GetTranslationStatusDefaultResponse, + response: + | GetTranslationStatus200Response + | GetTranslationStatusDefaultResponse, ): response is GetTranslationStatusDefaultResponse; export function isUnexpected( response: CancelTranslation200Response | CancelTranslationDefaultResponse, @@ -122,17 +123,24 @@ function getParametrizedPathSuccess(method: string, path: string): string[] { // track if we have found a match to return the values found. let found = true; - for (let i = candidateParts.length - 1, j = pathParts.length - 1; i >= 1 && j >= 1; i--, j--) { - if (candidateParts[i]?.startsWith("{") && candidateParts[i]?.indexOf("}") !== -1) { + for ( + let i = candidateParts.length - 1, j = pathParts.length - 1; + i >= 1 && j >= 1; + i--, j-- + ) { + if ( + candidateParts[i]?.startsWith("{") && + candidateParts[i]?.indexOf("}") !== -1 + ) { const start = candidateParts[i]!.indexOf("}") + 1, end = candidateParts[i]?.length; // If the current part of the candidate is a "template" part // Try to use the suffix of pattern to match the path // {guid} ==> $ // {guid}:export ==> :export$ - const isMatched = new RegExp(`${candidateParts[i]?.slice(start, end)}`).test( - pathParts[j] || "", - ); + const isMatched = new RegExp( + `${candidateParts[i]?.slice(start, end)}`, + ).test(pathParts[j] || ""); if (!isMatched) { found = false; diff --git a/sdk/translation/ai-translation-document-rest/src/logger.ts b/sdk/translation/ai-translation-document-rest/src/logger.ts index d08ff659f155..0d6fc077f63f 100644 --- a/sdk/translation/ai-translation-document-rest/src/logger.ts +++ b/sdk/translation/ai-translation-document-rest/src/logger.ts @@ -1,8 +1,5 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - import { createClientLogger } from "@azure/logger"; export const logger = createClientLogger("ai-translation-document"); diff --git a/sdk/translation/ai-translation-document-rest/src/models.ts b/sdk/translation/ai-translation-document-rest/src/models.ts index db7ce7ad13b7..4359b0c17988 100644 --- a/sdk/translation/ai-translation-document-rest/src/models.ts +++ b/sdk/translation/ai-translation-document-rest/src/models.ts @@ -1,19 +1,26 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - export interface DocumentTranslateContentDocumentPartDescriptor { name: "document"; - body: string | Uint8Array | ReadableStream | NodeJS.ReadableStream | File; + body: + | string + | Uint8Array + | ReadableStream + | NodeJS.ReadableStream + | File; filename?: string; contentType?: string; } export interface DocumentTranslateContentGlossaryPartDescriptor { name: "glossary"; - body: string | Uint8Array | ReadableStream | NodeJS.ReadableStream | File; + body: + | string + | Uint8Array + | ReadableStream + | NodeJS.ReadableStream + | File; filename?: string; contentType?: string; } diff --git a/sdk/translation/ai-translation-document-rest/src/outputModels.ts b/sdk/translation/ai-translation-document-rest/src/outputModels.ts index 1b4a84572f72..ece29b30910d 100644 --- a/sdk/translation/ai-translation-document-rest/src/outputModels.ts +++ b/sdk/translation/ai-translation-document-rest/src/outputModels.ts @@ -1,9 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - /** Translation job Status Response */ export interface TranslationsStatusOutput { /** The summary status of individual operation */ diff --git a/sdk/translation/ai-translation-document-rest/src/paginateHelper.ts b/sdk/translation/ai-translation-document-rest/src/paginateHelper.ts index 50bd3bbfed76..94d5220235d9 100644 --- a/sdk/translation/ai-translation-document-rest/src/paginateHelper.ts +++ b/sdk/translation/ai-translation-document-rest/src/paginateHelper.ts @@ -1,11 +1,16 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - -import { getPagedAsyncIterator, PagedAsyncIterableIterator, PagedResult } from "@azure/core-paging"; -import { Client, createRestError, PathUncheckedResponse } from "@azure-rest/core-client"; +import { + getPagedAsyncIterator, + PagedAsyncIterableIterator, + PagedResult, +} from "@azure/core-paging"; +import { + Client, + createRestError, + PathUncheckedResponse, +} from "@azure-rest/core-client"; /** * Helper type to extract the type of an array @@ -70,7 +75,9 @@ export function paginate( typeof customGetPage === "function" ? customGetPage : async (pageLink: string) => { - const result = firstRun ? initialResponse : await client.pathUnchecked(pageLink).get(); + const result = firstRun + ? initialResponse + : await client.pathUnchecked(pageLink).get(); firstRun = false; checkPagingRequest(result); const nextLink = getNextLink(result.body, nextLinkName); @@ -96,7 +103,9 @@ function getNextLink(body: unknown, nextLinkName?: string): string | undefined { const nextLink = (body as Record)[nextLinkName]; if (typeof nextLink !== "string" && typeof nextLink !== "undefined") { - throw new Error(`Body Property ${nextLinkName} should be a string or undefined`); + throw new Error( + `Body Property ${nextLinkName} should be a string or undefined`, + ); } return nextLink; @@ -124,7 +133,18 @@ function getElements(body: unknown, itemName: string): T[] { * Checks if a request failed */ function checkPagingRequest(response: PathUncheckedResponse): void { - const Http2xxStatusCodes = ["200", "201", "202", "203", "204", "205", "206", "207", "208", "226"]; + const Http2xxStatusCodes = [ + "200", + "201", + "202", + "203", + "204", + "205", + "206", + "207", + "208", + "226", + ]; if (!Http2xxStatusCodes.includes(response.status)) { throw createRestError( `Pagination failed with unexpected statusCode ${response.status}`, diff --git a/sdk/translation/ai-translation-document-rest/src/parameters.ts b/sdk/translation/ai-translation-document-rest/src/parameters.ts index 959347358014..75abc59d3881 100644 --- a/sdk/translation/ai-translation-document-rest/src/parameters.ts +++ b/sdk/translation/ai-translation-document-rest/src/parameters.ts @@ -1,12 +1,13 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - import { RawHttpHeadersInput } from "@azure/core-rest-pipeline"; import { RequestParameters } from "@azure-rest/core-client"; -import { DocumentTranslateContent, StartTranslationDetails, FileFormatType } from "./models.js"; +import { + DocumentTranslateContent, + StartTranslationDetails, + FileFormatType, +} from "./models.js"; export interface DocumentTranslateHeaders { /** An opaque, globally-unique, client-generated string identifier for the request. */ @@ -68,7 +69,8 @@ export interface StartTranslationBodyParam { body: StartTranslationDetails; } -export type StartTranslationParameters = StartTranslationBodyParam & RequestParameters; +export type StartTranslationParameters = StartTranslationBodyParam & + RequestParameters; export interface GetTranslationsStatusQueryParamProperties { /** @@ -129,7 +131,8 @@ export interface GetTranslationsStatusQueryParam { queryParameters?: GetTranslationsStatusQueryParamProperties; } -export type GetTranslationsStatusParameters = GetTranslationsStatusQueryParam & RequestParameters; +export type GetTranslationsStatusParameters = GetTranslationsStatusQueryParam & + RequestParameters; export type GetDocumentStatusParameters = RequestParameters; export type GetTranslationStatusParameters = RequestParameters; export type CancelTranslationParameters = RequestParameters; @@ -193,7 +196,8 @@ export interface GetDocumentsStatusQueryParam { queryParameters?: GetDocumentsStatusQueryParamProperties; } -export type GetDocumentsStatusParameters = GetDocumentsStatusQueryParam & RequestParameters; +export type GetDocumentsStatusParameters = GetDocumentsStatusQueryParam & + RequestParameters; export interface GetSupportedFormatsQueryParamProperties { /** @@ -208,4 +212,5 @@ export interface GetSupportedFormatsQueryParam { queryParameters?: GetSupportedFormatsQueryParamProperties; } -export type GetSupportedFormatsParameters = GetSupportedFormatsQueryParam & RequestParameters; +export type GetSupportedFormatsParameters = GetSupportedFormatsQueryParam & + RequestParameters; diff --git a/sdk/translation/ai-translation-document-rest/src/pollingHelper.ts b/sdk/translation/ai-translation-document-rest/src/pollingHelper.ts index 1497121c109c..35385e9649d7 100644 --- a/sdk/translation/ai-translation-document-rest/src/pollingHelper.ts +++ b/sdk/translation/ai-translation-document-rest/src/pollingHelper.ts @@ -1,9 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - import { Client, HttpResponse } from "@azure-rest/core-client"; import { AbortSignalLike } from "@azure/abort-controller"; import { @@ -23,7 +20,10 @@ import { /** * A simple poller that can be used to poll a long running operation. */ -export interface SimplePollerLike, TResult> { +export interface SimplePollerLike< + TState extends OperationState, + TResult, +> { /** * Returns true if the poller has finished polling. */ @@ -47,7 +47,9 @@ export interface SimplePollerLike, TResul /** * Returns a promise that will resolve once the underlying operation is completed. */ - pollUntilDone(pollOptions?: { abortSignal?: AbortSignalLike }): Promise; + pollUntilDone(pollOptions?: { + abortSignal?: AbortSignalLike; + }): Promise; /** * Invokes the provided callback after each polling is completed, * sending the current state of the poller's operation. @@ -94,10 +96,14 @@ export interface SimplePollerLike, TResul * @returns - A poller object to poll for operation state updates and eventually get the final response. */ export async function getLongRunningPoller< - TResult extends StartTranslationLogicalResponse | StartTranslationDefaultResponse, + TResult extends + | StartTranslationLogicalResponse + | StartTranslationDefaultResponse, >( client: Client, - initialResponse: StartTranslation202Response | StartTranslationDefaultResponse, + initialResponse: + | StartTranslation202Response + | StartTranslationDefaultResponse, options?: CreateHttpPollerOptions>, ): Promise, TResult>>; export async function getLongRunningPoller( @@ -113,7 +119,10 @@ export async function getLongRunningPoller( // response we were provided. return getLroResponse(initialResponse); }, - sendPollRequest: async (path: string, pollOptions?: { abortSignal?: AbortSignalLike }) => { + sendPollRequest: async ( + path: string, + pollOptions?: { abortSignal?: AbortSignalLike }, + ) => { // This is the callback that is going to be called to poll the service // to get the latest status. We use the client provided and the polling path // which is an opaque URL provided by caller, the service sends this in one of the following headers: operation-location, azure-asyncoperation or location @@ -139,7 +148,8 @@ export async function getLongRunningPoller( inputAbortSignal?.removeEventListener("abort", abortListener); } const lroResponse = getLroResponse(response as TResult); - lroResponse.rawResponse.headers["x-ms-original-url"] = initialResponse.request.url; + lroResponse.rawResponse.headers["x-ms-original-url"] = + initialResponse.request.url; return lroResponse; }, }; @@ -195,7 +205,9 @@ function getLroResponse( response: TResult, ): OperationResponse { if (Number.isNaN(response.status)) { - throw new TypeError(`Status code of the response is not a number. Value: ${response.status}`); + throw new TypeError( + `Status code of the response is not a number. Value: ${response.status}`, + ); } return { diff --git a/sdk/translation/ai-translation-document-rest/src/responses.ts b/sdk/translation/ai-translation-document-rest/src/responses.ts index 625cc8f018ae..6d62a10bd102 100644 --- a/sdk/translation/ai-translation-document-rest/src/responses.ts +++ b/sdk/translation/ai-translation-document-rest/src/responses.ts @@ -1,9 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT license. - import { RawHttpHeaders } from "@azure/core-rest-pipeline"; import { HttpResponse, ErrorResponse } from "@azure-rest/core-client"; import { diff --git a/sdk/translation/ai-translation-document-rest/test/public/getSupportedFormatsTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/getSupportedFormatsTest.spec.ts deleted file mode 100644 index e606d5b4d15a..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/getSupportedFormatsTest.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { Recorder } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import { DocumentTranslationClient, isUnexpected } from "../../src"; -import { createDocumentTranslationClient, startRecorder } from "./utils/recordedClient"; -import { Context } from "mocha"; - -describe("GetSupportedFormats tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("all formats", async () => { - const response = await client.path("/document/formats").get(); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach((fileFormatType) => { - assert.isTrue(fileFormatType.format !== null); - assert.isTrue(fileFormatType.contentTypes !== null); - assert.isTrue(fileFormatType.fileExtensions !== null); - }); - }); - - it("document formats", async () => { - // Define the query parameters with the specified type - const options = { - queryParameters: { - type: "document", - }, - }; - - const response = await client.path("/document/formats").get(options); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach((fileFormatType) => { - assert.isTrue(fileFormatType.format !== null); - assert.isTrue(fileFormatType.contentTypes !== null); - assert.isTrue(fileFormatType.fileExtensions !== null); - assert.isTrue(fileFormatType.type === "Document"); - if (fileFormatType.format === "XLIFF") { - assert.isTrue(fileFormatType.defaultVersion !== null); - } - }); - }); - - it("glossary formats", async () => { - // Define the query parameters with the specified type - const options = { - queryParameters: { - type: "glossary", - }, - }; - - const response = await client.path("/document/formats").get(options); - if (isUnexpected(response)) { - throw response.body; - } - - const fileFormatTypes = response.body; - fileFormatTypes.value.forEach((fileFormatType) => { - assert.isTrue(fileFormatType.format !== null); - assert.isTrue(fileFormatType.contentTypes !== null); - assert.isTrue(fileFormatType.fileExtensions !== null); - assert.isTrue(fileFormatType.type === "Glossary"); - if (fileFormatType.format === "XLIFF") { - assert.isTrue(fileFormatType.defaultVersion !== null); - } - }); - }); -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/cancelTranslationTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/node/cancelTranslationTest.spec.ts deleted file mode 100644 index 0f9eb4a5bf6e..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/cancelTranslationTest.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { Recorder } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import { DocumentTranslationClient, isUnexpected } from "../../../src"; -import { createDocumentTranslationClient, startRecorder } from "../utils/recordedClient"; -import { - ONE_TEST_DOCUMENTS, - createSourceContainer, - createTargetContainer, -} from "./containerHelper"; -import { Context } from "mocha"; -import { - createBatchRequest, - createSourceInput, - createTargetInput, - getTranslationOperationID, -} from "../utils/testHelper"; - -describe("CancelTranslation tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("cancel translation", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const poller = await client.path("/document/batches").post({ - body: batchRequests, - }); - const id = getTranslationOperationID(poller.headers["operation-location"]); - - // Cancel translation - await client.path("/document/batches/{id}", id).delete(); - - // get translation status and verify - const response = await client.path("/document/batches/{id}", id).get(); - if (isUnexpected(response)) { - throw response.body; - } - - const idOutput = response.body.id; - assert.isTrue(idOutput === id, "IDOutput is:" + idOutput); - const statusOutput = response.body.status; - assert.isTrue( - statusOutput === "Cancelled" || - statusOutput === "Cancelling" || - statusOutput === "NotStarted", - "Status output is: " + statusOutput, - ); - }); -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/containerHelper.ts b/sdk/translation/ai-translation-document-rest/test/public/node/containerHelper.ts deleted file mode 100644 index 00a6c79d6a52..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/containerHelper.ts +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { Recorder } from "@azure-tools/test-recorder"; -import { ContainerClient, BlobServiceClient } from "@azure/storage-blob"; -import { TestDocument, createTestDocument } from "../utils/TestDocument"; -import { Pipeline } from "@azure/core-rest-pipeline"; -import { createTestCredential } from "@azure-tools/test-credential"; - -export const ONE_TEST_DOCUMENTS = [ - createTestDocument("Document1.txt", "First english test document"), -]; - -export const TWO_TEST_DOCUMENTS = [ - createTestDocument("Document1.txt", "First english test file"), - createTestDocument("File2.txt", "Second english test file"), -]; - -export async function createSourceContainer( - recorder: Recorder, - documents: TestDocument[], - containerName?: string | undefined, -): Promise { - if (containerName === undefined) { - containerName = recorder.variable("sourceContainer", `source-${getUniqueName()}`); - } - const containerClient = await createContainer(recorder, containerName, documents); - return containerClient.url; -} - -export async function createTargetContainer( - recorder: Recorder, - containerName?: string | undefined, - documents?: TestDocument[], -): Promise { - if (containerName === undefined) { - containerName = recorder.variable("targetContainer", `target-${getUniqueName()}`); - } - const containerClient = await createContainer(recorder, containerName, documents); - return containerClient.url; -} - -export async function createGlossaryContainer(recorder: Recorder): Promise { - const glossaryName = "validGlossary.csv"; - const glossaryContent = "test, glossaryTest"; - const documents = [createTestDocument(glossaryName, glossaryContent)]; - const containerName = recorder.variable("glossaryContainer", `glossary-${getUniqueName()}`); - const containerClient = await createContainer(recorder, containerName, documents); - const containerUrl = containerClient.url; - - // Add the glossary name to the base URL - const newUrl = `${containerUrl}/${glossaryName}`; - return `${newUrl}`; -} - -export async function createTargetContainerWithInfo( - recorder: Recorder, - documents?: TestDocument[], -): Promise> { - const containerName = recorder.variable("targetContainer", `target-${getUniqueName()}`); - const containerClient = await createContainer(recorder, containerName, documents); - const containerUrl = containerClient.url; - const containerUrlTest = recorder.variable("containerUrl", `${containerUrl}`); - - const containerValuesMap: Map = new Map(); - containerValuesMap.set("containerUrl", containerUrlTest); - containerValuesMap.set("containerName", containerName); - return containerValuesMap; -} - -async function createContainer( - recorder: Recorder, - containerName: string, - documents?: TestDocument[], -): Promise { - const storageName = getEnvVar("DOCUMENT_TRANSLATION_STORAGE_NAME"); - const url = `https://${storageName}.blob.core.windows.net/`; - const blobServiceClient: BlobServiceClient = new BlobServiceClient(url, createTestCredential()); - configureBlobStorageClient(recorder, blobServiceClient); - - const containerClient = blobServiceClient.getContainerClient(containerName); - await containerClient.createIfNotExists(); - - if (documents && documents.length > 0) { - await uploadDocuments(containerClient, documents); - } - return containerClient; -} - -function configureBlobStorageClient( - recorder: Recorder, - serviceClient: ContainerClient | BlobServiceClient, -): void { - const options = recorder.configureClientOptions({}); - - const pipeline: Pipeline = (serviceClient as any).storageClientContext.pipeline; - for (const { policy } of options.additionalPolicies ?? []) { - pipeline.addPolicy(policy, { afterPhase: "Sign", afterPolicies: ["injectorPolicy"] }); - } - return; -} - -async function uploadDocuments(containerClient: ContainerClient, documents: TestDocument[]) { - for (const document of documents) { - const blobClient = containerClient.getBlobClient(document.name); - const blockBlobClient = blobClient.getBlockBlobClient(); - await blockBlobClient.upload(document.content, document.content.length); - } - return; -} - -export async function downloadDocument( - recorder: Recorder, - containerName: string, - documentName: string, -): Promise { - const storageName = getEnvVar("DOCUMENT_TRANSLATION_STORAGE_NAME"); - const url = `https://${storageName}.blob.core.windows.net/`; - const blobServiceClient: BlobServiceClient = new BlobServiceClient(url, createTestCredential()); - configureBlobStorageClient(recorder, blobServiceClient); - - const containerClient = blobServiceClient.getContainerClient(containerName); - const blobClient = containerClient.getBlobClient(documentName); - const blockBlobClient = blobClient.getBlockBlobClient(); - - const downloadBlockBlobResponse = await blockBlobClient.download(); - const downloaded = ( - await streamToBuffer(downloadBlockBlobResponse.readableStreamBody) - ).toString(); - console.log("Downloaded Stream = " + downloaded); - return downloaded; -} - -export function getUniqueName(): string { - const randomNumber = Math.floor(Math.random() * 1e10); - return randomNumber.toString().padStart(10, "0"); -} - -// A helper method used to read a Node.js readable stream into a Buffer -async function streamToBuffer(readableStream: NodeJS.ReadableStream | undefined): Promise { - return new Promise((resolve, reject) => { - const chunks: Buffer[] = []; - readableStream?.on("data", (data: Buffer | string) => { - chunks.push(data instanceof Buffer ? data : Buffer.from(data)); - }); - readableStream?.on("end", () => { - resolve(Buffer.concat(chunks)); - }); - readableStream?.on("error", reject); - }); -} - -export function getEnvVar(name: string): string { - const val = process.env[name]; - if (!val) { - throw `Environment variable ${name} is not defined.`; - } - return val; -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/documentFilterTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/node/documentFilterTest.spec.ts deleted file mode 100644 index 5e4347eef074..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/documentFilterTest.spec.ts +++ /dev/null @@ -1,264 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { Recorder, isPlaybackMode } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import { - DocumentTranslationClient, - isUnexpected, - getLongRunningPoller, - StartTranslation202Response, -} from "../../../src"; -import { createDocumentTranslationClient, startRecorder } from "../utils/recordedClient"; -import { createSourceContainer, createTargetContainer } from "./containerHelper"; -import { Context } from "mocha"; -import { - createBatchRequest, - createDummyTestDocuments, - createSourceInput, - createTargetInput, - getTranslationOperationID, -} from "../utils/testHelper"; - -export const testPollingOptions = { - intervalInMs: isPlaybackMode() ? 0 : undefined, -}; - -describe("DocumentFilter tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("Document Statuses Filter By Status", async () => { - const result = createSingleTranslationJob(5); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // Add Status filter - const succeededStatusList = ["Succeeded"]; - const queryParams = { - statuses: succeededStatusList, - }; - - // get DocumentsStatus - const response = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - const responseBody = response.body; - for (const documentStatus of responseBody.value) { - assert.isTrue(succeededStatusList.includes(documentStatus.status)); - } - }); - - it("Document Statuses Filter By ID", async () => { - const result = createSingleTranslationJob(2); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // get Documents Status with operationID - const testIds = []; - const response = await client.path("/document/batches/{id}/documents", operationId).get(); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - let responseBody = response.body; - for (const documentStatus of responseBody.value) { - testIds.push(documentStatus.id); - } - - // Add id filter - const queryParams = { - ids: testIds, - }; - - // get Documents Status with testIds option - const documentStatusResponse = await client - .path("/document/batches/{id}/documents", operationId) - .get({ - queryParameters: queryParams, - }); - if (isUnexpected(documentStatusResponse)) { - throw "get documents status job error:" + documentStatusResponse.body; - } - - responseBody = documentStatusResponse.body; - for (const documentStatus of responseBody.value) { - assert.isTrue(testIds.includes(documentStatus.id)); - } - }); - - it("Document Statuses Filter By Created After", async () => { - const result = createSingleTranslationJob(5); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // Add orderBy filter - const orderByList = ["createdDateTimeUtc asc"]; - const queryParams = { - orderby: orderByList, - }; - - // get Documents Status w.r.t orderby - const testCreatedOnDateTimes = []; - const response = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - let responseBody = response.body; - for (const documentStatus of responseBody.value) { - testCreatedOnDateTimes.push(documentStatus.createdDateTimeUtc); - } - - // Asserting that only the last document is returned - let itemCount = 0; - const queryParams2 = { - createdDateTimeUtcStart: testCreatedOnDateTimes[4], - }; - - const response2 = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams2, - }); - if (isUnexpected(response2)) { - throw "get documents status job error:" + response2.body; - } - responseBody = response2.body; - for (const documentStatus of responseBody.value) { - assert.isNotNull(documentStatus); - itemCount += 1; - } - - assert.equal(itemCount, 1); - }); - - it("Document Statuses Filter By Created Before", async () => { - const result = createSingleTranslationJob(5); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // Add orderBy filter - const orderByList = ["createdDateTimeUtc asc"]; - const queryParams = { - orderby: orderByList, - }; - - // get Documents Status w.r.t orderby - const testCreatedOnDateTimes = []; - const response = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - let responseBody = response.body; - for (const documentStatus of responseBody.value) { - testCreatedOnDateTimes.push(documentStatus.createdDateTimeUtc); - } - - // Asserting that only the first document is returned - let itemCount2 = 0; - const queryParams2 = { - createdDateTimeUtcEnd: testCreatedOnDateTimes[0], - }; - - const response2 = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams2, - }); - if (isUnexpected(response2)) { - throw "get documents status job error:" + response2.body; - } - - responseBody = response2.body; - for (const documentStatus of responseBody.value) { - assert.isNotNull(documentStatus); - itemCount2 += 1; - } - - assert.equal(itemCount2, 1); - - // Asserting that the first 4/5 docs are returned - let itemCount3 = 0; - const queryParams3 = { - createdDateTimeUtcEnd: testCreatedOnDateTimes[3], - }; - - const response3 = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams3, - }); - if (isUnexpected(response3)) { - throw "get documents status job error:" + response3.body; - } - responseBody = response3.body; - for (const documentStatus of responseBody.value) { - assert.isNotNull(documentStatus); - itemCount3 += 1; - } - - assert.equal(itemCount3, 4); - }); - - it("Document Statuses Filter By Created On", async () => { - const result = createSingleTranslationJob(3); - const operationLocationUrl = (await result).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - - // Add OrderBy filter - const orderByList = ["createdDateTimeUtc desc"]; - const queryParams = { - statuses: orderByList, - }; - - // get Documents Status - const response = await client.path("/document/batches/{id}/documents", operationId).get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - const timestamp = new Date(); - - const responseBody = response.body; - for (const documentStatus of responseBody.value) { - const createdDateTime = new Date(documentStatus.createdDateTimeUtc); - assert.isTrue(createdDateTime < timestamp || createdDateTime === timestamp); - } - }); - - async function createSingleTranslationJob(count: number) { - const testDocs = createDummyTestDocuments(count); - const sourceUrl = await createSourceContainer(recorder, testDocs); - const sourceInput = createSourceInput(sourceUrl); - - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(response)) { - throw "start translation job error:" + response.body; - } - - // Wait until the operation completes - const poller = getLongRunningPoller(client, response, testPollingOptions); - const result = await (await poller).pollUntilDone(); - assert.equal(result.status, "200"); - - return response as StartTranslation202Response; - } -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/documentTranslationTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/node/documentTranslationTest.spec.ts deleted file mode 100644 index 92bd070f3dc0..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/documentTranslationTest.spec.ts +++ /dev/null @@ -1,575 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { Recorder, isLiveMode, isPlaybackMode } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import { - DocumentStatusOutput, - DocumentTranslationClient, - GetDocumentStatus200Response, - GetTranslationStatus200Response, - StartTranslationDefaultResponse, - TranslationStatusOutput, - getLongRunningPoller, - isUnexpected, -} from "../../../src"; -import { - createDocumentTranslationClient, - createDocumentTranslationClientWithEndpointAndCredentials, - startRecorder, -} from "../utils/recordedClient"; - -import { Context } from "mocha"; -import { - ONE_TEST_DOCUMENTS, - TWO_TEST_DOCUMENTS, - createGlossaryContainer, - createSourceContainer, - createTargetContainer, - createTargetContainerWithInfo, - downloadDocument, - getUniqueName, -} from "./containerHelper"; -import { - createBatchRequest, - createSourceInput, - createTargetInput, - getTranslationOperationID, - sleep, -} from "../utils/testHelper"; -import { createTestDocument } from "../utils/TestDocument"; -import { BatchRequest } from "../../../src/models"; - -export const testPollingOptions = { - intervalInMs: isPlaybackMode() ? 0 : undefined, -}; - -describe("DocumentTranslation tests", () => { - const retryCount = 10; - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("Client Cannot Authenticate With FakeApiKey", async () => { - const testEndpoint = "https://t7d8641d8f25ec940-doctranslation.cognitiveservices.azure.com"; - const testApiKey = "fakeApiKey"; - const testClient = await createDocumentTranslationClientWithEndpointAndCredentials({ - endpointParam: testEndpoint, - credentials: { key: testApiKey }, - }); - - const response = await testClient.path("/document/formats").get(); - if (isUnexpected(response)) { - assert.equal(response.status, "401"); - } - }); - - it("Single Source Single Target", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 1); - }); - - it("Single Source Multiple Targets", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - - const containerName1 = recorder.variable("targetContainer1", `target-${getUniqueName()}`); - const targetUrl1 = await createTargetContainer(recorder, containerName1); - const targetInput1 = createTargetInput(targetUrl1, "fr"); - - const containerName2 = recorder.variable("targetContainer2", `target-${getUniqueName()}`); - const targetUrl2 = await createTargetContainer(recorder, containerName2); - const targetInput2 = createTargetInput(targetUrl2, "es"); - - const containerName3 = recorder.variable("targetContainer3", `target-${getUniqueName()}`); - const targetUrl3 = await createTargetContainer(recorder, containerName3); - const targetInput3 = createTargetInput(targetUrl3, "ar"); - - const batchRequest = createBatchRequest(sourceInput, [ - targetInput1, - targetInput2, - targetInput3, - ]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 3); - }); - - it("Multiple Sources Single Target", async () => { - const srcContainerName1 = recorder.variable("sourceContainer1", `source-${getUniqueName()}`); - const sourceUrl1 = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS, srcContainerName1); - const sourceInput1 = createSourceInput(sourceUrl1); - - const tgtContainerName1 = recorder.variable("targetContainer1", `target-${getUniqueName()}`); - const targetUrl1 = await createTargetContainer(recorder, tgtContainerName1); - const targetInput1 = createTargetInput(targetUrl1, "fr"); - const batchRequest1 = createBatchRequest(sourceInput1, [targetInput1]); - - const srcContainerName2 = recorder.variable("sourceContainer2", `source-${getUniqueName()}`); - const sourceInput2 = createSourceInput( - await createSourceContainer(recorder, ONE_TEST_DOCUMENTS, srcContainerName2), - ); - - const tgtContainerName2 = recorder.variable("targetContainer2", `target-${getUniqueName()}`); - const targetUrl2 = await createTargetContainer(recorder, tgtContainerName2); - const targetInput2 = createTargetInput(targetUrl2, "es"); - const batchRequest2 = createBatchRequest(sourceInput2, [targetInput2]); - - // Start translation - const batchRequests = { inputs: [batchRequest1, batchRequest2] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response, 2); - }); - - it("Single Source Single Target With Prefix", async () => { - const documentFilter = { - prefix: "File", - }; - const sourceUrl = await createSourceContainer(recorder, TWO_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl, undefined, undefined, documentFilter); - - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 1); - }); - - it("Single Source Single Target With Suffix", async () => { - const documentFilter = { - suffix: "txt", - }; - const sourceInput = createSourceInput( - await createSourceContainer(recorder, ONE_TEST_DOCUMENTS), - undefined, - undefined, - documentFilter, - ); - const targetInput = createTargetInput(await createTargetContainer(recorder), "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 1); - }); - - it("Single Source Single Target List Documents", async () => { - const sourceInput = createSourceInput( - await createSourceContainer(recorder, ONE_TEST_DOCUMENTS), - ); - const targetInput = createTargetInput(await createTargetContainer(recorder), "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get translations status - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).status === "Succeeded" && - retriesLeft > 0 - ); - const translationStatusOutput = translationStatus?.body as TranslationStatusOutput; - - if (translationStatusOutput.status === "Succeeded") { - // get Documents Status - const documentResponse = await client - .path("/document/batches/{id}/documents", operationId) - .get(); - if (isUnexpected(documentResponse)) { - throw "get documents status job error:" + documentResponse.body; - } - const responseBody = documentResponse.body; - for (const documentStatus of responseBody.value) { - console.log("documentStatus.status" + documentStatus.status); - console.log("translationStatusOutput.status" + translationStatusOutput.status); - assert.equal(documentStatus.status, translationStatusOutput.status); - assert.equal( - documentStatus.characterCharged, - translationStatusOutput.summary.totalCharacterCharged, - ); - break; - } - } - }); - - it("Get Document Status", async () => { - const sourceInput = createSourceInput( - await createSourceContainer(recorder, ONE_TEST_DOCUMENTS), - ); - const targetInput = createTargetInput(await createTargetContainer(recorder), "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get Documents Status - const documentResponse = await client - .path("/document/batches/{id}/documents", operationId) - .get(); - - if (isUnexpected(documentResponse)) { - throw "get documents status job error:" + documentResponse.body; - } - const responseBody = documentResponse.body; - for (const document of responseBody.value) { - const documentStatus = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, document.id) - .get(); - if (isUnexpected(documentStatus)) { - throw "get documents status job error:" + documentStatus.body; - } - validateDocumentStatus(documentStatus as GetDocumentStatus200Response, document.to); - } - }); - - it("Wrong Source Right Target", async () => { - const sourceInput = createSourceInput("https://idont.ex.ist"); - const targetInput = createTargetInput(await createTargetContainer(recorder), "es"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get translations status - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).status === "NotStarted" && - retriesLeft > 0 - ); - assert.equal((translationStatus?.body as TranslationStatusOutput).status, "ValidationFailed"); - assert.equal( - (translationStatus?.body as TranslationStatusOutput).error?.innerError?.code, - "InvalidDocumentAccessLevel", - ); - }); - - it("Right Source Wrong Target", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetInput = createTargetInput("https://idont.ex.ist", "es"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get translations status - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).status === "NotStarted" && - retriesLeft > 0 - ); - - assert.equal((translationStatus?.body as TranslationStatusOutput).status, "ValidationFailed"); - assert.equal( - (translationStatus?.body as TranslationStatusOutput).error?.innerError?.code, - "InvalidTargetDocumentAccessLevel", - ); - }); - - it("Supported And UnSupported Files", async () => { - const documents = [ - createTestDocument("Document1.txt", "First english test file"), - createTestDocument("File2.jpg", "jpg"), - ]; - const sourceUrl = await createSourceContainer(recorder, documents); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - if (isUnexpected(response)) { - throw "get documents status job error:" + response.body; - } - - // Validate the response - validateTranslationStatus(response as StartTranslationDefaultResponse, 1); - }); - - it("Empty Document Error", async () => { - const documents = [createTestDocument("Document1.txt", "")]; - const sourceUrl = await createSourceContainer(recorder, documents); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - // Validate the response - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - const translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - if (isUnexpected(translationStatus)) { - throw "get documents status job error:" + translationStatus.body; - } - const translationStatusOutput = translationStatus.body as TranslationStatusOutput; - assert.equal(translationStatusOutput.status, "Failed"); - assert.equal(translationStatusOutput.summary.total, 1); - assert.equal(translationStatusOutput.summary.success, 0); - assert.equal(translationStatusOutput.summary.failed, 1); - assert.equal(translationStatusOutput.error?.code, "InvalidRequest"); - assert.equal(translationStatusOutput.error?.innerError?.code, "NoTranslatableText"); - }); - - it("Existing File In Target Container", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder, undefined, ONE_TEST_DOCUMENTS); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get translations status - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).status === "NotStarted" && - retriesLeft > 0 - ); - assert.equal((translationStatus?.body as TranslationStatusOutput).status, "ValidationFailed"); - assert.equal( - (translationStatus?.body as TranslationStatusOutput).error?.innerError?.code, - "TargetFileAlreadyExists", - ); - }); - - it("Invalid Document GUID", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - // get document status - let documentResponse = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, "Foo Bar") - .get(); - assert.equal(documentResponse.status, "404"); - - documentResponse = await client - .path("/document/batches/{id}/documents/{documentId}", operationId, " ") - .get(); - assert.equal(documentResponse.status, "404"); - }); - - it("Document Translation With Glossary", async () => { - const sourceUrl = await createSourceContainer(recorder, ONE_TEST_DOCUMENTS); - const sourceInput = createSourceInput(sourceUrl); - - const targetContainer = await createTargetContainerWithInfo(recorder); - const targetUrl = targetContainer.get("containerUrl") as string; - const targetContainerName = targetContainer.get("containerName") as string; - const glossaryUrl = await createGlossaryContainer(recorder); - - const glossaries = [ - { - glossaryUrl: glossaryUrl, - format: "csv", - }, - ]; - const targetInput = createTargetInput(targetUrl, "fr", undefined, glossaries); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await StartTranslationAndWait(batchRequests); - - // Validate the response - const operationLocationUrl = response.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - - const result = downloadDocument(recorder, targetContainerName, "Document1.txt"); - assert.isTrue((await result).includes("glossaryTest")); - }); - - async function validateTranslationStatus( - translationResponse: StartTranslationDefaultResponse, - translationCount: number, - ) { - const operationLocationUrl = translationResponse.headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - assert.isNotNull(operationId); - assert.equal(translationResponse.status, "Succeeded"); - - const translationStatus = (await client - .path("/document/batches/{id}", operationId) - .get()) as GetTranslationStatus200Response; - if (isUnexpected(translationStatus)) { - throw "get documents status job error:" + translationStatus.body; - } - const translationStatusOutput = translationStatus.body as TranslationStatusOutput; - assert.equal(translationStatusOutput.summary.total, translationCount); - assert.equal(translationStatusOutput.summary.success, translationCount); - assert.equal(translationStatusOutput.summary.failed, 0); - assert.equal(translationStatusOutput.summary.cancelled, 0); - assert.equal(translationStatusOutput.summary.inProgress, 0); - - return; - } - - function validateDocumentStatus( - documentStatus: GetDocumentStatus200Response, - targetLanguage: string, - ) { - assert.equal(documentStatus.status, "200"); - const documentStatusOutput = documentStatus.body as DocumentStatusOutput; - assert.isNotNull(documentStatusOutput.id); - assert.isNotNull(documentStatusOutput.sourcePath); - assert.isNotNull(documentStatusOutput.path); - if (isLiveMode()) { - assert.equal(targetLanguage, documentStatusOutput.to); - } - assert.notEqual(new Date(), new Date(documentStatusOutput.createdDateTimeUtc)); - assert.notEqual(new Date(), new Date(documentStatusOutput.lastActionDateTimeUtc)); - assert.equal(1, documentStatusOutput.progress); - - return; - } - - async function StartTranslationAndWait(batchRequests: { - inputs: BatchRequest[]; - }): Promise { - // Start translation - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(response)) { - throw "start translation job error:" + response.body; - } - - // Wait until the operation completes - const poller = getLongRunningPoller(client, response, testPollingOptions); - const result = await (await poller).pollUntilDone(); - assert.equal(result.status, "200"); - - return response as StartTranslationDefaultResponse; - } -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/node/translationFilterTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/node/translationFilterTest.spec.ts deleted file mode 100644 index b9445d929473..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/node/translationFilterTest.spec.ts +++ /dev/null @@ -1,251 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { Recorder, isPlaybackMode } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import { - DocumentTranslationClient, - isUnexpected, - getLongRunningPoller, - GetTranslationStatus200Response, - TranslationStatusOutput, -} from "../../../src"; -import { createDocumentTranslationClient, startRecorder } from "../utils/recordedClient"; -import { createSourceContainer, createTargetContainer } from "./containerHelper"; -import { Context } from "mocha"; -import { - createBatchRequest, - createDummyTestDocuments, - createSourceInput, - createTargetInput, - getTranslationOperationID, - sleep, -} from "../utils/testHelper"; - -export const testPollingOptions = { - intervalInMs: isPlaybackMode() ? 0 : undefined, -}; - -describe("TranslationFilter tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("Translation Statuses Filter By Status", async () => { - createTranslationJobs(1, 1, "Succeeded"); - const cancelledIds = createTranslationJobs(1, 1, "Cancelled"); - - // list translations with filter - const cancelledStatusList = ["Cancelled", "Cancelling"]; - const testStartTime = recorder.variable("testStartTime", new Date().toISOString()); - - const queryParams = { - statuses: cancelledStatusList, - createdDateTimeUtcStart: testStartTime, - }; - - // get Translation Status - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - assert.isTrue(cancelledStatusList.includes(translationStatus.status)); - assert.isTrue((await cancelledIds).includes(translationStatus.id)); - } - }); - - it("Translation Statuses Filter By Id", async () => { - const allIds = createTranslationJobs(2, 1, "Succeeded"); - const targetIds = []; - targetIds.push((await allIds)[0]); - - // get Translation Status - const queryParams = { - ids: targetIds, - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - assert.isTrue(targetIds.includes(translationStatus.id)); - } - }); - - it("Translation Statuses Filter By Created After", async () => { - const testStartTime = recorder.variable("testStartTime", new Date().toISOString()); - const targetIds = createTranslationJobs(1, 1, "Succeeded"); - - // get Translation Status - const queryParams = { - createdDateTimeUtcStart: testStartTime, - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - assert.isTrue((await targetIds).includes(translationStatus.id)); - assert.isTrue(new Date(translationStatus.createdDateTimeUtc).toISOString() > testStartTime); - } - }); - - it("Translation Statuses Filter By Created Before", async () => { - const targetIds = createTranslationJobs(1, 1, "Succeeded"); - for (let i = 0; i < (await targetIds).length; i++) { - console.log(`targetIds[${i}]:`, (await targetIds)[i]); - } - - const endDateTime = recorder.variable("endDateTime", new Date().toISOString()); - createTranslationJobs(1, 1, "Succeeded"); - - // getting only translations from the last hour - const testDateTime = new Date(); - testDateTime.setHours(testDateTime.getHours() - 1); - const startDateTime = recorder.variable("startDateTime", testDateTime.toISOString()); - - // get Translation Status - const queryParams = { - createdDateTimeUtcStart: startDateTime, - createdDateTimeUtcEnd: endDateTime, - }; - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - - const responseBody = response.body; - let idExists = false; - for (const translationStatus of responseBody.value) { - if ((await targetIds).includes(translationStatus.id)) { - idExists = true; - } - assert.isTrue(new Date(translationStatus.createdDateTimeUtc).toISOString() < endDateTime); - } - assert.isTrue(idExists); - }); - - it("Translation Statuses Filter By Created On", async () => { - createTranslationJobs(3, 1, "Succeeded"); - - // Add filter - const startDateTime = recorder.variable("startDateTime", new Date().toISOString()); - const orderByList = ["createdDateTimeUtc asc"]; - const queryParams = { - createdDateTimeUtcStart: startDateTime, - orderby: orderByList, - }; - - const response = await client.path("/document/batches").get({ - queryParameters: queryParams, - }); - if (isUnexpected(response)) { - throw "get translation status job error:" + response.body; - } - let timestamp = new Date(-8640000000000000); // Minimum valid Date value in JavaScript - - const responseBody = response.body; - for (const translationStatus of responseBody.value) { - assert.isTrue(new Date(translationStatus.createdDateTimeUtc) > timestamp); - timestamp = new Date(translationStatus.createdDateTimeUtc); - } - }); - - async function createTranslationJobs( - jobsCount: number, - docsPerJob: number, - jobTerminalStatus: string, - ) { - // create source container - if (jobTerminalStatus.includes("cancelled")) { - docsPerJob = 20; // in order to avoid job completing before canceling - } - const testDocuments = createDummyTestDocuments(docsPerJob); - const sourceUrl = await createSourceContainer(recorder, testDocuments); - const sourceInput = createSourceInput(sourceUrl); - - // create a translation job - const translationIds = []; - for (let i = 1; i <= jobsCount; i++) { - const targetUrl = await createTargetContainer(recorder); - const targetInput = createTargetInput(targetUrl, "fr"); - const batchRequest = createBatchRequest(sourceInput, [targetInput]); - - // Start translation - const batchRequests = { inputs: [batchRequest] }; - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - if (isUnexpected(response)) { - throw "start translation job error:" + response.body; - } - - const operationLocationUrl = (await response).headers["operation-location"]; - const operationId = getTranslationOperationID(operationLocationUrl); - translationIds.push(operationId); - - if (jobTerminalStatus.includes("succeeded")) { - // Wait until the operation completes - const poller = getLongRunningPoller(client, response, testPollingOptions); - const result = await (await poller).pollUntilDone(); - assert.equal(result.status, "200"); - } else if (jobTerminalStatus.includes("cancelled")) { - await client.path("/document/batches/{id}", operationId).delete(); - } - } - - // ensure that cancel status has propagated before returning - if (jobTerminalStatus.includes("cancelled")) { - waitForJobCancellation(translationIds); - } - return translationIds; - } - - async function waitForJobCancellation(translationIds: string[]): Promise { - const retryCount = 10; - - for (const translationId of translationIds) { - let translationStatus = null; - let retriesLeft = retryCount; - do { - try { - await sleep(10000); - retriesLeft--; - translationStatus = (await client - .path("/document/batches/{id}", translationId) - .get()) as GetTranslationStatus200Response; - } catch (error) { - console.error("Error during translation status retrieval:", error); - } - } while ( - translationStatus && - (translationStatus.body as TranslationStatusOutput).summary.cancelled > 0 && - retriesLeft > 0 - ); - } - return; - } -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/singleDocumentTranslateTest.spec.ts b/sdk/translation/ai-translation-document-rest/test/public/singleDocumentTranslateTest.spec.ts deleted file mode 100644 index e9826872041a..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/singleDocumentTranslateTest.spec.ts +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { Recorder } from "@azure-tools/test-recorder"; -import { assert } from "chai"; -import { - DocumentTranslateDefaultResponse, - DocumentTranslateParameters, - DocumentTranslationClient, - isUnexpected, -} from "../../src"; -import { createDocumentTranslationClient, startRecorder } from "./utils/recordedClient"; -import { Context } from "mocha"; - -describe("SingleDocumentTranslate tests", () => { - let recorder: Recorder; - let client: DocumentTranslationClient; - - beforeEach(async function (this: Context) { - recorder = await startRecorder(this); - client = await createDocumentTranslationClient({ recorder }); - }); - - afterEach(async function () { - await recorder.stop(); - }); - - it("document translate", async () => { - const options = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - ], - }; - - const response = await client - .path("/document:translate") - .post(options as DocumentTranslateParameters); - if (isUnexpected(response)) { - throw response.body; - } - }); - - it("single CSV glossary", async () => { - const options = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = await client - .path("/document:translate") - .post(options as DocumentTranslateParameters); - if (isUnexpected(response)) { - throw response.body; - } - assert.isTrue(response.body.toString().includes("test")); - }); - - it("Multiple CSV glossary", async () => { - const options = { - queryParameters: { - targetLanguage: "hi", - }, - contentType: "multipart/form-data", - body: [ - { - name: "document", - body: "This is a test.", - filename: "test-input.txt", - contentType: "text/html", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - { - name: "glossary", - body: "test,test", - filename: "test-glossary.csv", - contentType: "text/csv", - }, - ], - }; - - const response = (await client - .path("/document:translate") - .post(options as DocumentTranslateParameters)) as DocumentTranslateDefaultResponse; - - if (isUnexpected(response)) { - assert.equal(response.status, "400"); - assert.isTrue( - response.body.error.message.includes( - "The maximum number of glossary files has been exceeded", - ), - ); - } else { - assert.isFalse(true); - } - }); -}); diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/StaticAccessTokenCredential.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/StaticAccessTokenCredential.ts deleted file mode 100644 index 27f5c8a0ed70..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/StaticAccessTokenCredential.ts +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { TokenCredential, AccessToken } from "@azure/core-auth"; - -export class StaticAccessTokenCredential implements TokenCredential { - // AccessToken is an object with two properties: - // - A "token" property with a string value. - // - And an "expiresOnTimestamp" property with a numeric unix timestamp as its value. - constructor(private accessToken: string) {} - async getToken(): Promise { - return { - expiresOnTimestamp: Date.now() + 10000, - token: this.accessToken, - }; - } -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/TestDocument.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/TestDocument.ts deleted file mode 100644 index f4d3a2fe898a..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/TestDocument.ts +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -export interface TestDocument { - name: string; - content: string; -} - -export function createTestDocument(name: string, content: string): TestDocument { - return { - name, - content, - }; -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/recordedClient.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/recordedClient.ts deleted file mode 100644 index 4d220e1ab5ba..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/recordedClient.ts +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { Context } from "mocha"; -import { Recorder, env } from "@azure-tools/test-recorder"; -import { ClientOptions } from "@azure-rest/core-client"; -import { DocumentTranslationClient, default as createClient } from "../../../src"; -import { KeyCredential, TokenCredential } from "@azure/core-auth"; -import { createTestCredential } from "@azure-tools/test-credential"; - -export async function startRecorder(context: Context): Promise { - const recorder = new Recorder(context.currentTest); - await recorder.start({ - envSetupForPlayback: { - DOCUMENT_TRANSLATION_ENDPOINT: - "https://fakeEndpoint-doctranslation.cognitiveservices.azure.com", - DOCUMENT_TRANSLATION_STORAGE_NAME: "fakestoragename", - }, - removeCentralSanitizers: ["AZSDK2030", "AZSDK3430"], - }); - // SAS token may contain sensitive information - await recorder.addSanitizers( - { - bodyKeySanitizers: [ - { - value: "Sanitized", - jsonPath: "$..sourceUrl", - }, - { - value: "Sanitized", - jsonPath: "$..targetUrl", - }, - { - value: "Sanitized", - jsonPath: "$..glossaryUrl", - }, - ], - }, - ["record", "playback"], - ); - return recorder; -} - -export async function createDocumentTranslationClient(options: { - recorder?: Recorder; - testCredential?: TokenCredential; - clientOptions?: ClientOptions; -}): Promise { - const { recorder, clientOptions = {} } = options; - const updatedOptions = recorder ? recorder.configureClientOptions(clientOptions) : clientOptions; - const endpoint = env.DOCUMENT_TRANSLATION_ENDPOINT ?? ""; - const credentials = options?.testCredential ?? createTestCredential(); - const client = createClient(endpoint, credentials, updatedOptions); - return client; -} - -export async function createDocumentTranslationClientWithEndpointAndCredentials(options: { - recorder?: Recorder; - endpointParam: string; - credentials: TokenCredential | KeyCredential; - clientOptions?: ClientOptions; -}): Promise { - const { recorder, clientOptions = {} } = options; - const updatedOptions = recorder ? recorder.configureClientOptions(clientOptions) : clientOptions; - const client = createClient(options.endpointParam, options.credentials, updatedOptions); - return client; -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/samplesHelper.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/samplesHelper.ts deleted file mode 100644 index be7a087f6427..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/samplesHelper.ts +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { ContainerClient, ContainerSASPermissions, BlobServiceClient } from "@azure/storage-blob"; -import { TestDocument, createTestDocument } from "../utils/TestDocument"; -import { - BatchRequest, - DocumentTranslationClient, - StartTranslationDefaultResponse, - getLongRunningPoller, -} from "../../../src"; - -const connectionString = - process.env["DOCUMENT_TRANSLATION_CONNECTION_STRING"] || "ConnectionString"; - -export async function StartTranslationAndWait( - client: DocumentTranslationClient, - batchRequests: { inputs: BatchRequest[] }, -): Promise { - // Start translation - const response = await client.path("/document/batches").post({ - body: batchRequests, - }); - - // Wait until the operation completes - const poller = getLongRunningPoller(client, response, undefined); - await (await poller).pollUntilDone(); - - return response as StartTranslationDefaultResponse; -} - -export const ONE_TEST_DOCUMENTS: TestDocument[] = [ - createTestDocument("Document1.txt", "First english test document"), -]; - -export const TWO_TEST_DOCUMENTS: TestDocument[] = [ - createTestDocument("Document1.txt", "First english test file"), - createTestDocument("File2.txt", "Second english test file"), -]; - -export async function createSourceContainer( - documents: TestDocument[], - containerName?: string | undefined, -): Promise { - if (containerName === undefined) { - containerName = `source-${getUniqueName()}`; - } - const containerClient = await createContainer(containerName, documents); - - const sasUrl = await containerClient.generateSasUrl({ - permissions: ContainerSASPermissions.parse("rwl"), - expiresOn: getDateOneDayAfter(), - }); - return `${sasUrl}`; -} - -export async function createTargetContainer( - containerName?: string | undefined, - documents?: TestDocument[], -): Promise { - if (containerName === undefined) { - containerName = `target-${getUniqueName()}`; - } - const containerClient = await createContainer(containerName, documents); - - const sasUrl = await containerClient.generateSasUrl({ - permissions: ContainerSASPermissions.parse("rwl"), - expiresOn: getDateOneDayAfter(), - }); - return `${sasUrl}`; -} - -async function createContainer( - containerName: string, - documents?: TestDocument[], -): Promise { - const blobServiceClient: BlobServiceClient = - BlobServiceClient.fromConnectionString(connectionString); - const containerClient = blobServiceClient.getContainerClient(containerName); - await containerClient.createIfNotExists(); - - if (documents && documents.length > 0) { - await uploadDocuments(containerClient, documents); - } - return containerClient; -} - -export function getUniqueName(): string { - const randomNumber = Math.floor(Math.random() * 1e10); - return randomNumber.toString().padStart(10, "0"); -} - -async function uploadDocuments(containerClient: ContainerClient, documents: TestDocument[]) { - for (const document of documents) { - const blobClient = containerClient.getBlobClient(document.name); - const blockBlobClient = blobClient.getBlockBlobClient(); - await blockBlobClient.upload(document.content, document.content.length); - } -} - -function getDateOneDayAfter(): Date { - const currentDate = new Date(); - const nextDayDate = new Date(currentDate); - nextDayDate.setDate(currentDate.getDate() + 1); - return nextDayDate; -} diff --git a/sdk/translation/ai-translation-document-rest/test/public/utils/testHelper.ts b/sdk/translation/ai-translation-document-rest/test/public/utils/testHelper.ts deleted file mode 100644 index 54e3a157491c..000000000000 --- a/sdk/translation/ai-translation-document-rest/test/public/utils/testHelper.ts +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { isPlaybackMode } from "@azure-tools/test-recorder"; -import { - BatchRequest, - DocumentFilter, - Glossary, - SourceInput, - StorageInputType, - StorageSource, - TargetInput, -} from "../../../src"; -import { TestDocument, createTestDocument } from "./TestDocument"; - -export function createSourceInput( - sourceUrl: string, - language?: string, - storageSource?: StorageSource, - filter?: DocumentFilter, -): SourceInput { - return { - sourceUrl, - language, - storageSource, - filter, - }; -} - -export function createTargetInput( - targetUrl: string, - language: string, - storageSource?: StorageSource, - glossaries?: Glossary[], - category?: string, -): TargetInput { - return { - targetUrl, - language, - storageSource, - glossaries, - category, - }; -} - -export function createBatchRequest( - source: SourceInput, - targets: Array, - storageType?: StorageInputType, -): BatchRequest { - return { - source, - targets, - storageType, - }; -} - -export function getTranslationOperationID(url: string): string { - try { - const parsedUrl = new URL(url); - const pathSegments = parsedUrl.pathname.split("/"); - const lastSegment = pathSegments[pathSegments.length - 1]; - return typeof lastSegment === "string" ? lastSegment : ""; - } catch (error) { - console.error("Invalid Operation-location URL:", error); - return ""; - } -} - -export function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, isPlaybackMode() ? 1 : ms)); -} - -export function createDummyTestDocuments(count: number): TestDocument[] { - const result: TestDocument[] = []; - for (let i = 0; i < count; i++) { - const fileName: string = `File_${i}.txt`; - const text: string = "some random text"; - result.push(createTestDocument(fileName, text)); - } - return result; -} diff --git a/sdk/translation/ai-translation-document-rest/tests.yml b/sdk/translation/ai-translation-document-rest/tests.yml deleted file mode 100644 index ba5aabc47ad2..000000000000 --- a/sdk/translation/ai-translation-document-rest/tests.yml +++ /dev/null @@ -1,15 +0,0 @@ -parameters: -- name: Location - displayName: Location - type: string - default: eastus - -trigger: none - -extends: - template: /eng/pipelines/templates/stages/archetype-sdk-tests.yml - parameters: - PackageName: "@azure-rest/ai-translation-document" - ServiceDirectory: translation - Location: "${{ parameters.Location }}" - SupportedClouds: 'Public' diff --git a/sdk/translation/ai-translation-document-rest/tsconfig.json b/sdk/translation/ai-translation-document-rest/tsconfig.json deleted file mode 100644 index a748d80e041a..000000000000 --- a/sdk/translation/ai-translation-document-rest/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../../tsconfig", - "compilerOptions": { - "outDir": "./dist-esm", - "declarationDir": "./types", - "paths": { - "@azure-rest/ai-translation-document": ["./src/index"] - } - }, - "include": [ - "./src/**/*.ts", - "./src/**/*.mts", - "./src/**/*.cts", - "./test/**/*.ts", - "samples-dev/**/*.ts" - ] -} diff --git a/sdk/translation/ai-translation-document-rest/tsp-location.yaml b/sdk/translation/ai-translation-document-rest/tsp-location.yaml index 0a5b75888fd3..06e49dd981c5 100644 --- a/sdk/translation/ai-translation-document-rest/tsp-location.yaml +++ b/sdk/translation/ai-translation-document-rest/tsp-location.yaml @@ -1,4 +1,4 @@ -commit: 27a9398801386caaba2df7e1a4d1a8abd19e3789 -repo: Azure/azure-rest-api-specs directory: specification/translation/Azure.AI.DocumentTranslation - +commit: 8efaa61aa60b750f83b68893abb0481c9dbf5c13 +repo: /mnt/vss/_work/1/s/azure-rest-api-specs +additionalDirectories: