Skip to content

Commit

Permalink
Enable the batch tsp & chat api tsp (#2090)
Browse files Browse the repository at this point in the history
* enable the batch tsp

* Fix batch header issues

* Fix the empty credential scopes case in RLC

* Set the proper credentialScopes values

* Refactor code little

* Update the api view for api chat sdk

* Remove useless files

* Add UTs to cover empty scopes

* Update the comments

* Update the comments

* Debug git dirty

* Update the batch testing

* Revert changes

* Update the default value for empty scopes

* Support the nullable header in modular

* Fix lint issue

* Remove useless files

* Refactor the credential option positions

* Update the ut after refactoring code

* Regenerate smoke and integration files

* Regenerate in autorest package
  • Loading branch information
MaryGao committed Nov 1, 2023
1 parent 25ef649 commit ba18c89
Show file tree
Hide file tree
Showing 144 changed files with 34,347 additions and 42,408 deletions.
5 changes: 4 additions & 1 deletion packages/autorest.typescript/src/utils/schemaHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -233,8 +233,10 @@ export function getSecurityInfoFromModel(security: Security) {
const { addCredentials } = getAutorestOptions();
const credentialScopes: Set<string> = new Set<string>();
let credentialKeyHeaderName: string = "";
let hasOAuth2Defined = false;
for (const securitySchema of security.schemes) {
if (securitySchema.type === "OAuth2") {
hasOAuth2Defined = true;
(securitySchema as OAuth2SecurityScheme).scopes.forEach(scope => {
const scopes = scope.split(",");
for (const scope of scopes) {
Expand Down Expand Up @@ -273,7 +275,8 @@ export function getSecurityInfoFromModel(security: Security) {
}
return {
addCredentials: refinedAddCredentials,
credentialScopes: scopes,
credentialScopes:
!hasOAuth2Defined && scopes.length === 0 ? undefined : scopes,
credentialKeyHeaderName: credentialKeyHeaderName
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,6 @@ export default function createClient(
options.baseUrl ??
`${endpoint}/catalog/api/atlas/${serviceVersion}/{accountName}`;

options = {
...options,
credentials: {
scopes: options.credentials?.scopes ?? ["user_impersonation"]
}
};

const userAgentInfo = `azsdk-js-multiple-url-parameter-rest/1.0.0-preview1`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -42,6 +35,9 @@ export default function createClient(
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
},
credentials: {
scopes: options.credentials?.scopes ?? ["user_impersonation"]
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,6 @@ export default function createClient(
options: ClientOptions = {}
): SecurityAADRestClient {
const baseUrl = options.baseUrl ?? `http://localhost:3000`;
options = {
...options,
credentials: {
scopes: options.credentials?.scopes ?? [
"https://security.microsoft.com/.default"
]
}
};

const userAgentInfo = `azsdk-js-security-aad-rest/1.0.0-preview1`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -37,6 +28,11 @@ export default function createClient(
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
},
credentials: {
scopes: options.credentials?.scopes ?? [
"https://security.microsoft.com/.default"
]
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,6 @@ export default function createClient(
options: ClientOptions = {}
): SecurityKeyRestClient {
const baseUrl = options.baseUrl ?? `http://localhost:3000`;
options = {
...options,
credentials: {
apiKeyHeaderName: options.credentials?.apiKeyHeaderName ?? "security-key"
}
};

const userAgentInfo = `azsdk-js-security-key-rest/1.0.0-preview1`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -35,6 +28,9 @@ export default function createClient(
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
},
credentials: {
apiKeyHeaderName: options.credentials?.apiKeyHeaderName ?? "security-key"
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,6 @@ export default function createClient(
): AzureAgriFoodPlatformDataPlaneServiceClient {
const baseUrl = options.baseUrl ?? `${endpoint}`;
options.apiVersion = options.apiVersion ?? "2021-03-31-preview";
options = {
...options,
credentials: {
apiKeyHeaderName: options.credentials?.apiKeyHeaderName ?? "Authorization"
}
};

const userAgentInfo = `azsdk-js-agrifood-data-plane-rest/1.0.0-beta.1`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -38,6 +31,9 @@ export default function createClient(
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
},
credentials: {
apiKeyHeaderName: options.credentials?.apiKeyHeaderName ?? "Authorization"
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,6 @@ export default function createClient(
const baseUrl =
options.baseUrl ?? `${endpoint}/anomalydetector/${apiVersion}`;

options = {
...options,
credentials: {
apiKeyHeaderName:
options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key"
}
};

const userAgentInfo = `azsdk-js-anomaly-detector-mv-rest/1.0.0-beta.1`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -45,6 +37,10 @@ export default function createClient(
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
},
credentials: {
apiKeyHeaderName:
options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key"
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,6 @@ export default function createClient(
const baseUrl =
options.baseUrl ?? `${endpoint}/anomalydetector/${apiVersion}`;

options = {
...options,
credentials: {
apiKeyHeaderName:
options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key"
}
};

const userAgentInfo = `azsdk-js-anomaly-detector-rest/1.0.0-beta.1`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -42,6 +34,10 @@ export default function createClient(
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
},
credentials: {
apiKeyHeaderName:
options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key"
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,6 @@ export function createClient(
): PurviewAccountClient {
const baseUrl = options.baseUrl ?? `${endpoint}`;
options.apiVersion = options.apiVersion ?? "2019-11-01-preview";
options = {
...options,
credentials: {
scopes: options.credentials?.scopes ?? [
"https://purview.azure.net/.default"
]
}
};

const userAgentInfo = `azsdk-js-purview-administration-rest/1.0.0-beta.2`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -40,6 +31,11 @@ export function createClient(
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
},
credentials: {
scopes: options.credentials?.scopes ?? [
"https://purview.azure.net/.default"
]
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,6 @@ export function createClient(
): PurviewMetadataPoliciesClient {
const baseUrl = options.baseUrl ?? `${endpoint}/policyStore`;
options.apiVersion = options.apiVersion ?? "2021-07-01-preview";
options = {
...options,
credentials: {
apiKeyHeaderName: options.credentials?.apiKeyHeaderName ?? "CustomAuth"
}
};

const userAgentInfo = `azsdk-js-purview-administration-rest/1.0.0-beta.2`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -38,6 +31,9 @@ export function createClient(
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
},
credentials: {
apiKeyHeaderName: options.credentials?.apiKeyHeaderName ?? "CustomAuth"
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,6 @@ export default function createClient(
): SynapseArtifactsClient {
const baseUrl = options.baseUrl ?? `${endpoint}`;
options.apiVersion = options.apiVersion ?? "2021-11-01-preview";
options = {
...options,
credentials: {
scopes: options.credentials?.scopes ?? [
"https://dev.azuresynapse.net/.default"
]
}
};

const userAgentInfo = `azsdk-js-synapse-artifacts-rest/1.0.0-beta.1`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -40,6 +31,11 @@ export default function createClient(
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
},
credentials: {
scopes: options.credentials?.scopes ?? [
"https://dev.azuresynapse.net/.default"
]
}
};

Expand Down
50 changes: 21 additions & 29 deletions packages/rlc-common/src/buildClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,7 @@ export function buildClient(model: RLCModel): File | undefined {
credentialKeyHeaderName,
customHttpAuthHeaderName
} = model.options;
const credentialTypes =
credentialScopes && credentialScopes.length > 0 ? ["TokenCredential"] : [];
const credentialTypes = credentialScopes ? ["TokenCredential"] : [];

if (credentialKeyHeaderName || customHttpAuthHeaderName) {
credentialTypes.push("KeyCredential");
Expand Down Expand Up @@ -211,9 +210,7 @@ function isSecurityInfoDefined(
customHttpAuthHeaderName?: string
) {
return (
(credentialScopes && credentialScopes.length > 0) ||
credentialKeyHeaderName ||
customHttpAuthHeaderName
credentialScopes || credentialKeyHeaderName || customHttpAuthHeaderName
);
}

Expand Down Expand Up @@ -293,28 +290,17 @@ export function getClientFactoryBody(
}`
: "";

const overrideOptionsStatement = `options = {
...options,
userAgentOptions: {
userAgentPrefix
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
}${customHeaderOptions}
}`;

const baseUrlStatement: VariableStatementStructure = {
kind: StructureKind.VariableStatement,
declarationKind: VariableDeclarationKind.Const,
declarations: [{ name: "baseUrl", initializer: baseUrl }]
};

const { credentialScopes, credentialKeyHeaderName } = model.options;

const scopesString =
credentialScopes && credentialScopes.length
? credentialScopes.map((cs) => `"${cs}"`).join(", ")
: "";
const scopesString = credentialScopes
? credentialScopes.map((cs) => `"${cs}"`).join(", ") ||
"`${baseUrl}/.default`"
: "";
const scopes = scopesString
? `scopes: options.credentials?.scopes ?? [${scopesString}],`
: "";
Expand All @@ -323,19 +309,26 @@ export function getClientFactoryBody(
? `apiKeyHeaderName: options.credentials?.apiKeyHeaderName ?? "${credentialKeyHeaderName}",`
: "";

const credentials =
const credentialsOptions =
scopes || apiKeyHeaderName
? `options = {
...options,
credentials: {
${scopes}
${apiKeyHeaderName}
},
? `,
credentials: {
${scopes}
${apiKeyHeaderName}
}`
: "";
const overrideOptionsStatement = `options = {
...options,
userAgentOptions: {
userAgentPrefix
},
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info
}${customHeaderOptions}${credentialsOptions}
}`;

const getClient = `const client = getClient(
baseUrl, ${credentials ? "credentials," : ""} options
baseUrl, ${credentialsOptions ? "credentials," : ""} options
) as ${clientTypeName};
`;
const { customHttpAuthHeaderName, customHttpAuthSharedKeyPrefix } =
Expand Down Expand Up @@ -372,7 +365,6 @@ export function getClientFactoryBody(
...optionalUrlParameters,
baseUrlStatement,
apiVersionStatement,
credentials,
userAgentInfoStatement,
userAgentStatement,
overrideOptionsStatement,
Expand Down
5 changes: 5 additions & 0 deletions packages/rlc-common/src/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,11 @@ export interface RLCOptions {
batch?: any[];
packageDetails?: PackageDetails;
addCredentials?: boolean;
/** Three possiblie values:
* - undefined, no credentialScopes and relevant settings would be generated
* - [], which means we would generate TokenCredential but no credentialScopes and relevant settings
* - ["..."], which means we would generate credentialScopes and relevant settings with the given values
*/
credentialScopes?: string[];
credentialKeyHeaderName?: string;
customHttpAuthHeaderName?: string;
Expand Down
4 changes: 1 addition & 3 deletions packages/rlc-common/src/transformSampleGroups.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,9 +213,7 @@ function convertClientLevelParameters(
model.options;
const hasUrlParameter = !!urlParameters,
hasCredentials =
addCredentials &&
((credentialScopes && credentialScopes.length > 0) ||
credentialKeyHeaderName);
addCredentials && (credentialScopes || credentialKeyHeaderName);

if (hasUrlParameter) {
// convert the host parameters in url
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,6 @@ export default function createClient(
const baseUrl =
options.baseUrl ?? `${endpoint}/anomalydetector/${apiVersion}`;

options = {
...options,
credentials: {
apiKeyHeaderName:
options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key",
},
};

const userAgentInfo = `azsdk-js-ai-anomaly-detector-rest/1.0.0-beta.1`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
Expand All @@ -47,6 +39,10 @@ export default function createClient(
loggingOptions: {
logger: options.loggingOptions?.logger ?? logger.info,
},
credentials: {
apiKeyHeaderName:
options.credentials?.apiKeyHeaderName ?? "Ocp-Apim-Subscription-Key",
},
};

const client = getClient(
Expand Down
Loading

0 comments on commit ba18c89

Please sign in to comment.