diff --git a/sdk/cognitiveservices/cognitiveservices-textanalytics/LICENSE.txt b/sdk/cognitiveservices/cognitiveservices-textanalytics/LICENSE.txt index b73b4a1293c3..2d3163745319 100644 --- a/sdk/cognitiveservices/cognitiveservices-textanalytics/LICENSE.txt +++ b/sdk/cognitiveservices/cognitiveservices-textanalytics/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2019 Microsoft +Copyright (c) 2021 Microsoft Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/sdk/cognitiveservices/cognitiveservices-textanalytics/README.md b/sdk/cognitiveservices/cognitiveservices-textanalytics/README.md index 905442972f0d..50ce217b0e90 100644 --- a/sdk/cognitiveservices/cognitiveservices-textanalytics/README.md +++ b/sdk/cognitiveservices/cognitiveservices-textanalytics/README.md @@ -1,153 +1,112 @@ ## An isomorphic javascript sdk for - TextAnalyticsClient -This package contains an isomorphic SDK for TextAnalyticsClient. +This package contains an isomorphic SDK (runs both in node.js and in browsers) for TextAnalyticsClient. ### Currently supported environments -- Node.js version 6.x.x or higher +- Node.js version 8.x.x or higher - Browser JavaScript -### How to Install +### Prerequisites +You must have an [Azure subscription](https://azure.microsoft.com/free/). + +### How to install + +To use this SDK in your project, you will need to install two packages. +- `@azure/cognitiveservices-textanalytics` that contains the client. +- `@azure/identity` that provides different mechanisms for the client to authenticate your requests using Azure Active Directory. + +Install both packages using the below command: ```bash -npm install @azure/cognitiveservices-textanalytics +npm install --save @azure/cognitiveservices-textanalytics @azure/identity ``` +> **Note**: You may have used either `@azure/ms-rest-nodeauth` or `@azure/ms-rest-browserauth` in the past. These packages are in maintenance mode receiving critical bug fixes, but no new features. +If you are on a [Node.js that has LTS status](https://nodejs.org/about/releases/), or are writing a client side browser application, we strongly encourage you to upgrade to `@azure/identity` which uses the latest versions of Azure Active Directory and MSAL APIs and provides more authentication options. ### How to use -#### nodejs - Authentication, client creation and detectLanguage as an example written in TypeScript. +- If you are writing a client side browser application, + - Follow the instructions in the section on Authenticating client side browser applications in [Azure Identity examples](https://aka.ms/azsdk/js/identity/examples) to register your application in the Microsoft identity platform and set the right permissions. + - Copy the client ID and tenant ID from the Overview section of your app registration in Azure portal and use it in the browser sample below. +- If you are writing a server side application, + - [Select a credential from `@azure/identity` based on the authentication method of your choice](https://aka.ms/azsdk/js/identity/examples) + - Complete the set up steps required by the credential if any. + - Use the credential you picked in the place of `DefaultAzureCredential` in the Node.js sample below. -##### Install @azure/ms-rest-azure-js - -```bash -npm install @azure/ms-rest-azure-js -``` +In the below samples, we pass the credential and the Azure subscription id to instantiate the client. +Once the client is created, explore the operations on it either in your favorite editor or in our [API reference documentation](https://docs.microsoft.com/javascript/api) to get started. +#### nodejs - Authentication, client creation, and detectLanguage as an example written in JavaScript. ##### Sample code -The following sample detects the langauge in the provided text. In addition, it provides data such as Characters count, transaction count, etc. To know more, refer to the [Azure Documentation on Text Analytics](https://docs.microsoft.com/azure/cognitive-services/text-analytics/overview) ```javascript +const { DefaultAzureCredential } = require("@azure/identity"); const { TextAnalyticsClient } = require("@azure/cognitiveservices-textanalytics"); -const { CognitiveServicesCredentials } = require("@azure/ms-rest-azure-js"); - -async function main() { - const textAnalyticsKey = - process.env["textAnalyticsKey"] || ""; - const textAnalyticsEndPoint = - process.env["textAnalyticsEndPoint"] || ""; - const cognitiveServiceCredentials = new CognitiveServicesCredentials( - textAnalyticsKey - ); - const client = new TextAnalyticsClient( - cognitiveServiceCredentials, - textAnalyticsEndPoint - ); - const options = { - showStats: true, - languageBatchInput: { - documents: [ - { - id: "1", - text: "Sample Text" - }, - { - id: "2", - text: "Texto de ejemplo" - } - ] - } - }; - client - .detectLanguage(options) - .then(result => { - console.log("The result is:"); - result.documents.forEach(document => { - console.log(`Id: ${document.id}`); - console.log("Detected Languages:"); - document.detectedLanguages.forEach(dl => { - console.log(dl.name); - }); - console.log( - `Characters Count: ${document.statistics.charactersCount}` - ); - console.log( - `Transactions Count: ${document.statistics.transactionsCount}` - ); - }); - }) - .catch(err => { - console.log("An error occurred:"); - console.error(err); - }); -} - -main(); - +const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; + +// Use `DefaultAzureCredential` or any other credential of your choice based on https://aka.ms/azsdk/js/identity/examples +// Please note that you can also use credentials from the `@azure/ms-rest-nodeauth` package instead. +const creds = new DefaultAzureCredential(); +const client = new TextAnalyticsClient(creds, subscriptionId); +const showStats = true; +const languageBatchInput = { + documents: [{ + countryHint: "testcountryHint", + id: "testid", + text: "testtext" + }] +}; +client.detectLanguage(showStats, languageBatchInput).then((result) => { + console.log("The result is:"); + console.log(result); +}).catch((err) => { + console.log("An error occurred:"); + console.error(err); +}); ``` -#### browser - Authentication, client creation and detectLanguage as an example written in JavaScript. +#### browser - Authentication, client creation, and detectLanguage as an example written in JavaScript. + +In browser applications, we recommend using the `InteractiveBrowserCredential` that interactively authenticates using the default system browser. + - See [Single-page application: App registration guide](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-app-registration) to configure your app registration for the browser. + - Note down the client Id from the previous step and use it in the browser sample below. ##### Sample code - index.html + ```html @azure/cognitiveservices-textanalytics sample - @@ -158,4 +117,4 @@ main(); - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fcognitiveservices%2Fcognitiveservices-textanalytics%2FREADME.png) +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/cognitiveservices/cognitiveservices-textanalytics/README.png) diff --git a/sdk/cognitiveservices/cognitiveservices-textanalytics/package.json b/sdk/cognitiveservices/cognitiveservices-textanalytics/package.json index 1347d017cff5..6e681309ea40 100644 --- a/sdk/cognitiveservices/cognitiveservices-textanalytics/package.json +++ b/sdk/cognitiveservices/cognitiveservices-textanalytics/package.json @@ -4,7 +4,8 @@ "description": "TextAnalyticsClient Library with typescript type definitions for node.js and browser.", "version": "4.0.0", "dependencies": { - "@azure/ms-rest-js": "^2.0.4", + "@azure/ms-rest-js": "^2.2.0", + "@azure/core-auth": "^1.1.4", "tslib": "^1.10.0" }, "keywords": [ @@ -19,7 +20,7 @@ "module": "./esm/textAnalyticsClient.js", "types": "./esm/textAnalyticsClient.d.ts", "devDependencies": { - "typescript": "^3.5.3", + "typescript": "^3.6.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/cognitiveservices/cognitiveservices-textanalytics/rollup.config.js b/sdk/cognitiveservices/cognitiveservices-textanalytics/rollup.config.js index 5f99399d86ae..5e4ea8ebfe5a 100644 --- a/sdk/cognitiveservices/cognitiveservices-textanalytics/rollup.config.js +++ b/sdk/cognitiveservices/cognitiveservices-textanalytics/rollup.config.js @@ -21,8 +21,8 @@ const config = { "@azure/ms-rest-azure-js": "msRestAzure" }, banner: `/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. * * Code generated by Microsoft (R) AutoRest Code Generator. * Changes may cause incorrect behavior and will be lost if the code is regenerated. diff --git a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/index.ts b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/index.ts index 3a71da695d0b..f4dd8f49793b 100644 --- a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/index.ts +++ b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/index.ts @@ -1,6 +1,6 @@ /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. * * Code generated by Microsoft (R) AutoRest Code Generator. * Changes may cause incorrect behavior and will be lost if the code is regenerated. @@ -499,12 +499,7 @@ export type KeyPhrasesResponse = KeyPhraseBatchResult & { /** * Contains response data for the sentiment operation. */ -export type SentimentResponse = { - /** - * The parsed response body. - */ - body: any; - +export type SentimentResponse = SentimentBatchResult & { /** * The underlying HTTP response. */ @@ -517,6 +512,6 @@ export type SentimentResponse = { /** * The response body as parsed JSON or XML */ - parsedBody: any; + parsedBody: SentimentBatchResult; }; }; diff --git a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/mappers.ts b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/mappers.ts index ba8d4976b59f..a61bdd3d0f5c 100644 --- a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/mappers.ts +++ b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/mappers.ts @@ -1,6 +1,6 @@ /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. * * Code generated by Microsoft (R) AutoRest Code Generator. * Changes may cause incorrect behavior and will be lost if the code is regenerated. diff --git a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/parameters.ts b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/parameters.ts index 91e0f034e416..b7fd7c211d00 100644 --- a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/parameters.ts +++ b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/models/parameters.ts @@ -1,7 +1,6 @@ /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. * * Code generated by Microsoft (R) AutoRest Code Generator. * Changes may cause incorrect behavior and will be lost if the code is diff --git a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/textAnalyticsClient.ts b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/textAnalyticsClient.ts index fca998335222..3e20891f895e 100644 --- a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/textAnalyticsClient.ts +++ b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/textAnalyticsClient.ts @@ -1,7 +1,6 @@ /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. * * Code generated by Microsoft (R) AutoRest Code Generator. * Changes may cause incorrect behavior and will be lost if the code is @@ -20,9 +19,14 @@ class TextAnalyticsClient extends TextAnalyticsClientContext { * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: * https://westus.api.cognitive.microsoft.com). * @param credentials Subscription credentials which uniquely identify client subscription. + * Credentials implementing the TokenCredential interface from the @azure/identity package are + * recommended. For more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, endpoint: string, options?: msRest.ServiceClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, endpoint: string, options?: msRest.ServiceClientOptions) { super(credentials, endpoint, options); } @@ -122,13 +126,13 @@ class TextAnalyticsClient extends TextAnalyticsClientContext { /** * @param callback The callback */ - sentiment(callback: msRest.ServiceCallback): void; + sentiment(callback: msRest.ServiceCallback): void; /** * @param options The optional parameters * @param callback The callback */ - sentiment(options: Models.TextAnalyticsClientSentimentOptionalParams, callback: msRest.ServiceCallback): void; - sentiment(options?: Models.TextAnalyticsClientSentimentOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + sentiment(options: Models.TextAnalyticsClientSentimentOptionalParams, callback: msRest.ServiceCallback): void; + sentiment(options?: Models.TextAnalyticsClientSentimentOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.sendOperationRequest( { options @@ -241,10 +245,9 @@ const sentimentOperationSpec: msRest.OperationSpec = { 200: { bodyMapper: Mappers.SentimentBatchResult }, - 500: { + default: { bodyMapper: Mappers.ErrorResponse - }, - default: {} + } }, serializer }; diff --git a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/textAnalyticsClientContext.ts b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/textAnalyticsClientContext.ts index 9d3b8c238aef..2a52b2cf55f2 100644 --- a/sdk/cognitiveservices/cognitiveservices-textanalytics/src/textAnalyticsClientContext.ts +++ b/sdk/cognitiveservices/cognitiveservices-textanalytics/src/textAnalyticsClientContext.ts @@ -1,7 +1,6 @@ /* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. * * Code generated by Microsoft (R) AutoRest Code Generator. * Changes may cause incorrect behavior and will be lost if the code is @@ -15,16 +14,21 @@ const packageVersion = "4.0.0"; export class TextAnalyticsClientContext extends msRest.ServiceClient { endpoint: string; - credentials: msRest.ServiceClientCredentials; + credentials: msRest.ServiceClientCredentials | TokenCredential; /** * Initializes a new instance of the TextAnalyticsClientContext class. * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: * https://westus.api.cognitive.microsoft.com). * @param credentials Subscription credentials which uniquely identify client subscription. + * Credentials implementing the TokenCredential interface from the @azure/identity package are + * recommended. For more information about these credentials, see + * {@link https://www.npmjs.com/package/@azure/identity}. Credentials implementing the + * ServiceClientCredentials interface from the older packages @azure/ms-rest-nodeauth and + * @azure/ms-rest-browserauth are also supported. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, endpoint: string, options?: msRest.ServiceClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials | TokenCredential, endpoint: string, options?: msRest.ServiceClientOptions) { if (endpoint == undefined) { throw new Error("'endpoint' cannot be null."); }