From d1fffb382d10b804462eaf7636841dfcd9b5b2c4 Mon Sep 17 00:00:00 2001 From: Petr Broz Date: Thu, 31 Oct 2024 13:28:06 +0100 Subject: [PATCH 1/6] Moving to .NET version 8. --- CONTRIBUTING.md | 4 ++-- docs/02-setup/_shared/dotnet-vscode/setup.mdx | 6 +++--- .../_shared/dotnet-vscode/setup/project.mdx | 2 +- .../02-hubs-browser/_shared/dotnet-vscode/setup/project.mdx | 2 +- docs/03-tutorials/03-dashboard/01-basic.mdx | 4 ++-- docs/03-tutorials/_shared/setup-vs2022/01-create-project.md | 2 +- src/components/EnvTabs.js | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fa2b22a6..4fe62d66 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -108,8 +108,8 @@ In this project we also have a specialized component called `` that is specifically to show 3 predefined tabs for the following "environments": - Node.js + Visual Studio Code -- .NET6 + Visual Studio Code -- .NET6 + Visual Studio 2022 +- .NET 8 + Visual Studio Code +- .NET 8 + Visual Studio 2022 To use it, import the Markdown content for individual tabs as separate React components, and insert them into the `` component like so: diff --git a/docs/02-setup/_shared/dotnet-vscode/setup.mdx b/docs/02-setup/_shared/dotnet-vscode/setup.mdx index 2362297b..fe855b6f 100644 --- a/docs/02-setup/_shared/dotnet-vscode/setup.mdx +++ b/docs/02-setup/_shared/dotnet-vscode/setup.mdx @@ -12,11 +12,11 @@ import VSCodeSetup from '../vscode.mdx'; ## Runtime -We will also need the .NET 6 _runtime_ to run our code and manage 3rd party dependencies. -You can get an installer for your platform on https://dotnet.microsoft.com/download/dotnet/6.0. +We will also need the .NET 8 _runtime_ to run our code and manage 3rd party dependencies. +You can get an installer for your platform on https://dotnet.microsoft.com/download/dotnet/8.0. :::info -Our sample applications have been developed and tested with .NET 6.0. +Our sample applications have been developed and tested with .NET 8.0. ::: To make sure the tool is available, try running the following command in `bash`: diff --git a/docs/03-tutorials/01-simple-viewer/_shared/dotnet-vscode/setup/project.mdx b/docs/03-tutorials/01-simple-viewer/_shared/dotnet-vscode/setup/project.mdx index aade186b..4e773a9b 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/dotnet-vscode/setup/project.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/dotnet-vscode/setup/project.mdx @@ -49,4 +49,4 @@ The folder structure in the editor should look similar to this: If the `.vscode` folder is not created automatically, you can create it via the Run & Debug sidepanel ::: -To create the `.vscode` folder click on the *Run and Debug tool on the left sidepanel > create a launch.json file > Select .NET5+ & .NET Core*. +To create the `.vscode` folder click on the *Run and Debug tool on the left sidepanel > create a launch.json file > Select .NET & .NET Core*. diff --git a/docs/03-tutorials/02-hubs-browser/_shared/dotnet-vscode/setup/project.mdx b/docs/03-tutorials/02-hubs-browser/_shared/dotnet-vscode/setup/project.mdx index 40b0c756..b9d3d61a 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/dotnet-vscode/setup/project.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/dotnet-vscode/setup/project.mdx @@ -42,4 +42,4 @@ Finally, let's create a couple more subfolders in your project folder that we're If the `.vscode` folder is not created automatically, you can create it via the Run & Debug sidepanel ::: -To create the `.vscode` folder click on the *Run and Debug tool on the left sidepanel > create a launch.json file > Select .NET5+ & .NET Core*. +To create the `.vscode` folder click on the *Run and Debug tool on the left sidepanel > create a launch.json file > Select .NET & .NET Core*. diff --git a/docs/03-tutorials/03-dashboard/01-basic.mdx b/docs/03-tutorials/03-dashboard/01-basic.mdx index fef7ac85..66962c76 100644 --- a/docs/03-tutorials/03-dashboard/01-basic.mdx +++ b/docs/03-tutorials/03-dashboard/01-basic.mdx @@ -38,11 +38,11 @@ APS_CLIENT_ID="your client id" APS_CLIENT_SECRET="your client secret" npm start - Open the browser and navigate to [http://localhost:8080](http://localhost:8080) - + - Create APS credentials if you don't have them already (see [Getting Started](/) for more details) -- Make sure you have [.NET 6](https://dotnet.microsoft.com/en-us/download/dotnet/6.0), +- Make sure you have [.NET 8](https://dotnet.microsoft.com/en-us/download/dotnet/8.0), [git](https://git-scm.com/), and a Unix-like terminal installed - On Windows systems, you can install [Git for Windows](https://gitforwindows.org) which comes bundled with a `bash` terminal diff --git a/docs/03-tutorials/_shared/setup-vs2022/01-create-project.md b/docs/03-tutorials/_shared/setup-vs2022/01-create-project.md index 986dd141..009f9b3c 100644 --- a/docs/03-tutorials/_shared/setup-vs2022/01-create-project.md +++ b/docs/03-tutorials/_shared/setup-vs2022/01-create-project.md @@ -10,7 +10,7 @@ Name the project any way you want: ![Configure project](configure-project.webp) -Choose the _.NET 6.0 (Long-term support)_ framework, and disable HTTPS as we don't need it for now: +Choose the _.NET 8.0 (Long-term support)_ framework, and disable HTTPS as we don't need it for now: ![Additional information](additional-info.webp) diff --git a/src/components/EnvTabs.js b/src/components/EnvTabs.js index a6ca4490..e9dd2a31 100644 --- a/src/components/EnvTabs.js +++ b/src/components/EnvTabs.js @@ -8,10 +8,10 @@ export default function EnvTabs({ NodeJsVsCode, DotNetVsCode, DotNetVs2022 }) { - + - + From 8eadc4d3e970689a36507f8ed4158f2526ad6d22 Mon Sep 17 00:00:00 2001 From: Petr Broz Date: Thu, 31 Oct 2024 13:30:46 +0100 Subject: [PATCH 2/6] Additional updates related to .NET version 8. --- docs/02-setup/_shared/dotnet-vscode/dotnet.png | Bin 0 -> 142721 bytes .../02-setup/_shared/dotnet-vscode/dotnet.webp | Bin 42804 -> 0 bytes docs/02-setup/_shared/dotnet-vscode/setup.mdx | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 docs/02-setup/_shared/dotnet-vscode/dotnet.png delete mode 100644 docs/02-setup/_shared/dotnet-vscode/dotnet.webp diff --git a/docs/02-setup/_shared/dotnet-vscode/dotnet.png b/docs/02-setup/_shared/dotnet-vscode/dotnet.png new file mode 100644 index 0000000000000000000000000000000000000000..b4579af5e3d643165c61b1bb3a6a9d527730672c GIT binary patch literal 142721 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
b}f4 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 Date: Thu, 31 Oct 2024 13:42:03 +0100 Subject: [PATCH 3/6] Updated SimpleViewer/Node.js tutorial based on latest code (with latest SDKs). --- .../_shared/nodejs-vscode/auth/endpoints.mdx | 4 +-- .../_shared/nodejs-vscode/auth/tokens.mdx | 25 ++++++++----------- .../_shared/nodejs-vscode/data/data.mdx | 19 ++++++-------- .../nodejs-vscode/data/derivatives.mdx | 12 ++++----- .../_shared/nodejs-vscode/setup/project.mdx | 16 ++++++------ 5 files changed, 33 insertions(+), 43 deletions(-) diff --git a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/auth/endpoints.mdx b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/auth/endpoints.mdx index 595e25bf..cd98489a 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/auth/endpoints.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/auth/endpoints.mdx @@ -2,13 +2,13 @@ Create an `auth.js` file under the `routes` subfolder with the following content ```js title="routes/auth.js" const express = require('express'); -const { getPublicToken } = require('../services/aps.js'); +const { getViewerToken } = require('../services/aps.js'); let router = express.Router(); router.get('/api/auth/token', async function (req, res, next) { try { - res.json(await getPublicToken()); + res.json(await getViewerToken()); } catch (err) { next(err); } diff --git a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/auth/tokens.mdx b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/auth/tokens.mdx index c77f5beb..87c98f4f 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/auth/tokens.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/auth/tokens.mdx @@ -3,20 +3,18 @@ all the APS logic that will be used in different areas of our server application by adding the following code to the file: ```js title="services/aps.js" -const { SdkManagerBuilder } = require('@aps_sdk/autodesk-sdkmanager'); const { AuthenticationClient, Scopes } = require('@aps_sdk/authentication'); -const { OssClient, CreateBucketsPayloadPolicyKeyEnum, CreateBucketXAdsRegionEnum } = require('@aps_sdk/oss'); -const { ModelDerivativeClient, View, Type } = require('@aps_sdk/model-derivative'); +const { OssClient, Region, PolicyKey } = require('@aps_sdk/oss'); +const { ModelDerivativeClient, View, OutputType } = require('@aps_sdk/model-derivative'); const { APS_CLIENT_ID, APS_CLIENT_SECRET, APS_BUCKET } = require('../config.js'); -const sdk = SdkManagerBuilder.create().build(); -const authenticationClient = new AuthenticationClient(sdk); -const ossClient = new OssClient(sdk); -const modelDerivativeClient = new ModelDerivativeClient(sdk); +const authenticationClient = new AuthenticationClient(); +const ossClient = new OssClient(); +const modelDerivativeClient = new ModelDerivativeClient(); const service = module.exports = {}; -service.getInternalToken = async () => { +async function getInternalToken() { const credentials = await authenticationClient.getTwoLeggedToken(APS_CLIENT_ID, APS_CLIENT_SECRET, [ Scopes.DataRead, Scopes.DataCreate, @@ -24,14 +22,11 @@ service.getInternalToken = async () => { Scopes.BucketCreate, Scopes.BucketRead ]); - return credentials; -}; + return credentials.access_token; +} -service.getPublicToken = async () => { - const credentials = await authenticationClient.getTwoLeggedToken(APS_CLIENT_ID, APS_CLIENT_SECRET, [ - Scopes.DataRead - ]); - return credentials; +service.getViewerToken = async () => { + return await authenticationClient.getTwoLeggedToken(APS_CLIENT_ID, APS_CLIENT_SECRET, [Scopes.ViewablesRead]); }; ``` diff --git a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/data/data.mdx b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/data/data.mdx index 6f60b67b..4f4e683f 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/data/data.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/data/data.mdx @@ -3,15 +3,12 @@ logic of our server application. Add the following code to the end of the `servi ```js title="services/aps.js" service.ensureBucketExists = async (bucketKey) => { - const { access_token } = await service.getInternalToken(); + const accessToken = await getInternalToken(); try { - await ossClient.getBucketDetails(access_token, bucketKey); + await ossClient.getBucketDetails(bucketKey, { accessToken }); } catch (err) { if (err.axiosError.response.status === 404) { - await ossClient.createBucket(access_token, CreateBucketXAdsRegionEnum.Us, { - bucketKey: bucketKey, - policyKey: CreateBucketsPayloadPolicyKeyEnum.Temporary - }); + await ossClient.createBucket(Region.Us, { bucketKey: bucketKey, policyKey: PolicyKey.Persistent }, { accessToken}); } else { throw err; } @@ -20,12 +17,12 @@ service.ensureBucketExists = async (bucketKey) => { service.listObjects = async () => { await service.ensureBucketExists(APS_BUCKET); - const { access_token } = await service.getInternalToken(); - let resp = await ossClient.getObjects(access_token, APS_BUCKET, { limit: 64 }); + const accessToken = await getInternalToken(); + let resp = await ossClient.getObjects(APS_BUCKET, { limit: 64, accessToken }); let objects = resp.items; while (resp.next) { const startAt = new URL(resp.next).searchParams.get('startAt'); - resp = await ossClient.getObjects(access_token, APS_BUCKET, { limit: 64, startAt }); + resp = await ossClient.getObjects(APS_BUCKET, { limit: 64, startAt, accessToken }); objects = objects.concat(resp.items); } return objects; @@ -33,8 +30,8 @@ service.listObjects = async () => { service.uploadObject = async (objectName, filePath) => { await service.ensureBucketExists(APS_BUCKET); - const { access_token } = await service.getInternalToken(); - const obj = await ossClient.upload(APS_BUCKET, objectName, filePath, access_token); + const accessToken = await getInternalToken(); + const obj = await ossClient.upload(APS_BUCKET, objectName, filePath, { accessToken }); return obj; }; ``` diff --git a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/data/derivatives.mdx b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/data/derivatives.mdx index ff6946d2..a3531cbc 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/data/derivatives.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/data/derivatives.mdx @@ -3,8 +3,8 @@ the conversions. Add the following code to the end of the `services/aps.js` file ```js title="services/aps.js" service.translateObject = async (urn, rootFilename) => { - const { access_token } = await service.getInternalToken(); - const job = await modelDerivativeClient.startJob(access_token, { + const accessToken = await getInternalToken(); + const job = await modelDerivativeClient.startJob({ input: { urn, compressedUrn: !!rootFilename, @@ -13,17 +13,17 @@ service.translateObject = async (urn, rootFilename) => { output: { formats: [{ views: [View._2d, View._3d], - type: Type.Svf + type: OutputType.Svf2 }] } - }); + }, { accessToken }); return job.result; }; service.getManifest = async (urn) => { - const { access_token } = await service.getInternalToken(); + const accessToken = await getInternalToken(); try { - const manifest = await modelDerivativeClient.getManifest(access_token, urn); + const manifest = await modelDerivativeClient.getManifest(urn, { accessToken }); return manifest; } catch (err) { if (err.axiosError.response.status === 404) { diff --git a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/setup/project.mdx b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/setup/project.mdx index dd2bac5d..1e2be8c1 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/setup/project.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/nodejs-vscode/setup/project.mdx @@ -11,16 +11,15 @@ Next, install all the Node.js dependencies we're going to use. In this case it w for handling `multipart/form-data` requests, and finally the various packages of the official APS SDK: :::caution -As of April 2024 the APS SDK for Node.js is in beta, which means that the public interfaces can still change. +As of November 2024 the APS SDK for Node.js is in beta, which means that the public interfaces can still change. To avoid any potential issues, we recommend installing the specific versions of these packages as shown below. ::: ```bash npm install --save dotenv express express-formidable -npm install --save @aps_sdk/autodesk-sdkmanager@0.0.7-beta.1 -npm install --save @aps_sdk/authentication@0.1.0-beta.1 -npm install --save @aps_sdk/oss@0.1.0-beta.1 -npm install --save @aps_sdk/model-derivative@0.1.0-beta.1 +npm install --save @aps_sdk/authentication@1.0.0-beta.3 +npm install --save @aps_sdk/model-derivative@1.0.0-beta.3 +npm install --save @aps_sdk/oss@1.0.0-beta.2 ``` The `"dependencies"` in your `package.json` file should now look something like this @@ -29,10 +28,9 @@ The `"dependencies"` in your `package.json` file should now look something like ```json // ... "dependencies": { - "@aps_sdk/authentication": "0.1.0-beta.1", - "@aps_sdk/autodesk-sdkmanager": "0.0.7-beta.1", - "@aps_sdk/model-derivative": "0.1.0-beta.1", - "@aps_sdk/oss": "0.1.0-beta.1", + "@aps_sdk/authentication": "1.0.0-beta.3", + "@aps_sdk/model-derivative": "1.0.0-beta.3", + "@aps_sdk/oss": "1.0.0-beta.2", "dotenv": "^16.4.1", "express": "^4.18.2", "express-formidable": "^1.2.0" From b3159439ac1e376a5f7b339bb1e295046aaa75a1 Mon Sep 17 00:00:00 2001 From: Petr Broz Date: Thu, 31 Oct 2024 13:55:01 +0100 Subject: [PATCH 4/6] Updated SimpleViewer/.NET tutorial based on latest code (with latest SDKs). --- .../_shared/dotnet-vscode/setup/project.mdx | 18 +++++------- .../_shared/dotnet/auth/endpoints.mdx | 13 ++++----- .../_shared/dotnet/auth/tokens.mdx | 12 +++----- .../_shared/dotnet/data/data.mdx | 15 +++++----- .../_shared/dotnet/data/derivatives.mdx | 29 +++++++------------ .../_shared/dotnet/data/endpoints.mdx | 10 ++----- .../setup-vs2022/02-add-dependencies.md | 9 +++--- 7 files changed, 42 insertions(+), 64 deletions(-) diff --git a/docs/03-tutorials/01-simple-viewer/_shared/dotnet-vscode/setup/project.mdx b/docs/03-tutorials/01-simple-viewer/_shared/dotnet-vscode/setup/project.mdx index 4e773a9b..81cd749f 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/dotnet-vscode/setup/project.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/dotnet-vscode/setup/project.mdx @@ -9,10 +9,9 @@ Next we will need to install the dependencies. In this case it will just be a co packages from the official APS SDK: ```bash -dotnet add package Autodesk.SdkManager -dotnet add package Autodesk.Authentication -dotnet add package Autodesk.OSS -dotnet add package Autodesk.ModelDerivative +dotnet add package Autodesk.Authentication --version 2.0.0-beta4 +dotnet add package Autodesk.ModelDerivative --version 2.0.0-beta3 +dotnet add package Autodesk.OSS --version 2.0.0-beta2 ``` The `*.csproj` file in your project should now look similar to this (possibly with @@ -21,13 +20,12 @@ slightly different version numbers, and additional .NET settings): ```xml - net6.0 + net8.0 - - - - + + + ``` @@ -46,7 +44,7 @@ The folder structure in the editor should look similar to this: ![Folder Structure](folder-structure.webp) :::note -If the `.vscode` folder is not created automatically, you can create it via the Run & Debug sidepanel +If the `.vscode` folder is not created automatically, you can create it via the _Run & Debug_ sidepanel. ::: To create the `.vscode` folder click on the *Run and Debug tool on the left sidepanel > create a launch.json file > Select .NET & .NET Core*. diff --git a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/auth/endpoints.mdx b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/auth/endpoints.mdx index 137518c5..b0be0a00 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/auth/endpoints.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/auth/endpoints.mdx @@ -9,8 +9,6 @@ using Microsoft.AspNetCore.Mvc; [Route("api/[controller]")] public class AuthController : ControllerBase { - public record AccessToken(string access_token, long expires_in); - private readonly APS _aps; public AuthController(APS aps) @@ -19,13 +17,14 @@ public class AuthController : ControllerBase } [HttpGet("token")] - public async Task GetAccessToken() + public async Task GetAccessToken() { var token = await _aps.GetPublicToken(); - return new AccessToken( - token.AccessToken, - (long)Math.Round((token.ExpiresAt - DateTime.UtcNow).TotalSeconds) - ); + return Ok(new + { + access_token = token.AccessToken, + expires_in = (long)Math.Round((token.ExpiresAt - DateTime.UtcNow).TotalSeconds) + }); } } ``` diff --git a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/auth/tokens.mdx b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/auth/tokens.mdx index f14d9317..634a9a85 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/auth/tokens.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/auth/tokens.mdx @@ -3,18 +3,14 @@ all the APS-specific logic that will be used in different areas of our server ap start by adding the following code to the file: ```csharp title="Models/APS.cs" -using Autodesk.SDKManager; - public partial class APS { - private readonly SDKManager _sdkManager; private readonly string _clientId; private readonly string _clientSecret; private readonly string _bucket; public APS(string clientId, string clientSecret, string bucket = null) { - _sdkManager = SdkManagerBuilder.Create().Build(); _clientId = clientId; _clientSecret = clientSecret; _bucket = string.IsNullOrEmpty(bucket) ? string.Format("{0}-basic-app", _clientId.ToLower()) : bucket; @@ -45,7 +41,7 @@ public partial class APS private async Task GetToken(List scopes) { - var authenticationClient = new AuthenticationClient(_sdkManager); + var authenticationClient = new AuthenticationClient(); var auth = await authenticationClient.GetTwoLeggedTokenAsync(_clientId, _clientSecret, scopes); return new Token(auth.AccessToken, DateTime.UtcNow.AddSeconds((double)auth.ExpiresIn)); } @@ -53,14 +49,14 @@ public partial class APS public async Task GetPublicToken() { if (_publicTokenCache == null || _publicTokenCache.ExpiresAt < DateTime.UtcNow) - _publicTokenCache = await GetToken(new List { Scopes.ViewablesRead }); + _publicTokenCache = await GetToken([Scopes.ViewablesRead]); return _publicTokenCache; } private async Task GetInternalToken() { if (_internalTokenCache == null || _internalTokenCache.ExpiresAt < DateTime.UtcNow) - _internalTokenCache = await GetToken(new List { Scopes.BucketCreate, Scopes.BucketRead, Scopes.DataRead, Scopes.DataWrite, Scopes.DataCreate }); + _internalTokenCache = await GetToken([Scopes.BucketCreate, Scopes.BucketRead, Scopes.DataRead, Scopes.DataWrite, Scopes.DataCreate]); return _internalTokenCache; } } @@ -102,7 +98,7 @@ public class Startup throw new ApplicationException("Missing required environment variables APS_CLIENT_ID or APS_CLIENT_SECRET."); } // highlight-start - services.AddSingleton(new APS(clientID, clientSecret, bucket)); + services.AddSingleton(new APS(clientID, clientSecret, bucket)); // highlight-end } diff --git a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/data.mdx b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/data.mdx index 78f8f69d..c12a4120 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/data.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/data.mdx @@ -14,9 +14,8 @@ public partial class APS { private async Task EnsureBucketExists(string bucketKey) { - const string region = "US"; var auth = await GetInternalToken(); - var ossClient = new OssClient(_sdkManager); + var ossClient = new OssClient(); try { await ossClient.GetBucketDetailsAsync(bucketKey, accessToken: auth.AccessToken); @@ -28,9 +27,9 @@ public partial class APS var payload = new CreateBucketsPayload { BucketKey = bucketKey, - PolicyKey = "Persistent" + PolicyKey = PolicyKey.Persistent }; - await ossClient.CreateBucketAsync(region, payload, auth.AccessToken); + await ossClient.CreateBucketAsync(Region.US, payload, auth.AccessToken); } else { @@ -39,12 +38,12 @@ public partial class APS } } - public async Task UploadModel(string objectName, string pathToFile) + public async Task UploadModel(string objectName, Stream stream) { await EnsureBucketExists(_bucket); var auth = await GetInternalToken(); - var ossClient = new OssClient(_sdkManager); - var objectDetails = await ossClient.Upload(_bucket, objectName, pathToFile, auth.AccessToken, new System.Threading.CancellationToken()); + var ossClient = new OssClient(); + var objectDetails = await ossClient.Upload(_bucket, objectName, stream, accessToken: auth.AccessToken); return objectDetails; } @@ -52,7 +51,7 @@ public partial class APS { await EnsureBucketExists(_bucket); var auth = await GetInternalToken(); - var ossClient = new OssClient(_sdkManager); + var ossClient = new OssClient(); const int PageSize = 64; var results = new List(); var response = await ossClient.GetObjectsAsync(_bucket, PageSize, accessToken: auth.AccessToken); diff --git a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/derivatives.mdx b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/derivatives.mdx index 6064ef81..74a91d72 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/derivatives.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/derivatives.mdx @@ -8,7 +8,7 @@ using System.Threading.Tasks; using Autodesk.ModelDerivative; using Autodesk.ModelDerivative.Model; -public record TranslationStatus(string Status, string Progress, IEnumerable? Messages); +public record TranslationStatus(string Status, string Progress, IEnumerable Messages); public partial class APS { @@ -21,7 +21,7 @@ public partial class APS public async Task TranslateModel(string objectId, string rootFilename) { var auth = await GetInternalToken(); - var modelDerivativeClient = new ModelDerivativeClient(_sdkManager); + var modelDerivativeClient = new ModelDerivativeClient(); var payload = new JobPayload { Input = new JobPayloadInput @@ -30,21 +30,13 @@ public partial class APS }, Output = new JobPayloadOutput { - Formats = new List - { - new JobSvf2OutputFormat + Formats = + [ + new JobPayloadFormatSVF2 { - Views = new List - { - View._2d, - View._3d - } + Views = [View._2d, View._3d] } - }, - Destination = new JobPayloadOutputDestination() - { - Region = Region.US - } + ] } }; if (!string.IsNullOrEmpty(rootFilename)) @@ -52,19 +44,18 @@ public partial class APS payload.Input.RootFilename = rootFilename; payload.Input.CompressedUrn = true; } - var job = await modelDerivativeClient.StartJobAsync(jobPayload: payload, accessToken: auth.AccessToken); + var job = await modelDerivativeClient.StartJobAsync(jobPayload: payload, region: Region.US, accessToken: auth.AccessToken); return job; } public async Task GetTranslationStatus(string urn) { var auth = await GetInternalToken(); - var modelDerivativeClient = new ModelDerivativeClient(_sdkManager); + var modelDerivativeClient = new ModelDerivativeClient(); try { var manifest = await modelDerivativeClient.GetManifestAsync(urn, accessToken: auth.AccessToken); - var messages = new List(); - return new TranslationStatus(manifest.Status, manifest.Progress, messages); + return new TranslationStatus(manifest.Status, manifest.Progress, []); } catch (ModelDerivativeApiException ex) { diff --git a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/endpoints.mdx b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/endpoints.mdx index 9ccbef49..2b6c0630 100644 --- a/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/endpoints.mdx +++ b/docs/03-tutorials/01-simple-viewer/_shared/dotnet/data/endpoints.mdx @@ -39,7 +39,7 @@ public class ModelsController : ControllerBase public class UploadModelForm { [FromForm(Name = "model-zip-entrypoint")] - public string? Entrypoint { get; set; } + public string Entrypoint { get; set; } [FromForm(Name = "model-file")] public IFormFile File { get; set; } @@ -48,12 +48,8 @@ public class ModelsController : ControllerBase [HttpPost(), DisableRequestSizeLimit] public async Task UploadAndTranslateModel([FromForm] UploadModelForm form) { - var tempFilePath = Path.GetTempFileName(); - using (var stream = System.IO.File.Create(tempFilePath)) - { - await form.File.CopyToAsync(stream); - } - var obj = await _aps.UploadModel(form.File.FileName, tempFilePath); + using var stream = form.File.OpenReadStream(); + var obj = await _aps.UploadModel(form.File.FileName, stream); var job = await _aps.TranslateModel(obj.ObjectId, form.Entrypoint); return new BucketObject(obj.ObjectKey, job.Urn); } diff --git a/docs/03-tutorials/_shared/setup-vs2022/02-add-dependencies.md b/docs/03-tutorials/_shared/setup-vs2022/02-add-dependencies.md index 532fc0be..4ffe1970 100644 --- a/docs/03-tutorials/_shared/setup-vs2022/02-add-dependencies.md +++ b/docs/03-tutorials/_shared/setup-vs2022/02-add-dependencies.md @@ -7,8 +7,7 @@ right-click on _Dependencies_, and then click on _Manage NuGet Packages..._: In the _NuGet Package Manager_, switch to the _Browse_ tab, and search for and install the following packages: -- [Autodesk.SdkManager](https://www.nuget.org/packages/Autodesk.SdkManager) -- [Autodesk.Authentication](https://www.nuget.org/packages/Autodesk.Authentication) -- [Autodesk.OSS](https://www.nuget.org/packages/Autodesk.OSS) -- [Autodesk.DataManagement](https://www.nuget.org/packages/Autodesk.DataManagement) -- [Autodesk.ModelDerivative](https://www.nuget.org/packages/Autodesk.ModelDerivative) \ No newline at end of file +- [Autodesk.Authentication](https://www.nuget.org/packages/Autodesk.Authentication) (version 2.0.0-beta4) +- [Autodesk.OSS](https://www.nuget.org/packages/Autodesk.OSS) (version 2.0.0-beta2) +- [Autodesk.DataManagement](https://www.nuget.org/packages/Autodesk.DataManagement) (version 2.0.0-beta4) +- [Autodesk.ModelDerivative](https://www.nuget.org/packages/Autodesk.ModelDerivative) (version 2.0.0-beta3) \ No newline at end of file From 7b11afc756e7fa034b34753a0962508048461eb0 Mon Sep 17 00:00:00 2001 From: Petr Broz Date: Thu, 31 Oct 2024 14:02:18 +0100 Subject: [PATCH 5/6] Updated HubsBrowser/Node.js tutorial based on latest code (with latest SDKs). --- .../02-hubs-browser/04-viewer.mdx | 13 +++++---- .../_shared/nodejs-vscode/auth/tokens.mdx | 28 ++++++++----------- .../_shared/nodejs-vscode/data/endpoints.mdx | 10 +++---- .../_shared/nodejs-vscode/data/hubs.mdx | 10 +++---- .../_shared/nodejs-vscode/setup/config.mdx | 5 ++++ .../_shared/nodejs-vscode/setup/project.mdx | 14 ++++------ 6 files changed, 39 insertions(+), 41 deletions(-) diff --git a/docs/03-tutorials/02-hubs-browser/04-viewer.mdx b/docs/03-tutorials/02-hubs-browser/04-viewer.mdx index 7397f5b0..c0907542 100644 --- a/docs/03-tutorials/02-hubs-browser/04-viewer.mdx +++ b/docs/03-tutorials/02-hubs-browser/04-viewer.mdx @@ -91,28 +91,28 @@ function createTreeNode(id, text, icon, children = false) { async function getHubs() { const hubs = await getJSON('/api/hubs'); - return hubs.map(hub => createTreeNode(`hub|${hub.id}`, hub.attributes.name, 'icon-hub', true)); + return hubs.map(hub => createTreeNode(`hub|${hub.id}`, hub.name, 'icon-hub', true)); } async function getProjects(hubId) { const projects = await getJSON(`/api/hubs/${hubId}/projects`); - return projects.map(project => createTreeNode(`project|${hubId}|${project.id}`, project.attributes.name, 'icon-project', true)); + return projects.map(project => createTreeNode(`project|${hubId}|${project.id}`, project.name, 'icon-project', true)); } async function getContents(hubId, projectId, folderId = null) { const contents = await getJSON(`/api/hubs/${hubId}/projects/${projectId}/contents` + (folderId ? `?folder_id=${folderId}` : '')); return contents.map(item => { - if (item.type === 'folders') { - return createTreeNode(`folder|${hubId}|${projectId}|${item.id}`, item.attributes.displayName, 'icon-my-folder', true); + if (item.folder) { + return createTreeNode(`folder|${hubId}|${projectId}|${item.id}`, item.name, 'icon-my-folder', true); } else { - return createTreeNode(`item|${hubId}|${projectId}|${item.id}`, item.attributes.displayName, 'icon-item', true); + return createTreeNode(`item|${hubId}|${projectId}|${item.id}`, item.name, 'icon-item', true); } }); } async function getVersions(hubId, projectId, itemId) { const versions = await getJSON(`/api/hubs/${hubId}/projects/${projectId}/contents/${itemId}/versions`); - return versions.map(version => createTreeNode(`version|${version.id}`, version.attributes.createTime, 'icon-version')); + return versions.map(version => createTreeNode(`version|${version.id}`, version.name, 'icon-version')); } export function initTree(selector, onSelectionChanged) { @@ -301,6 +301,7 @@ Then, create an `index.html` file in the same folder with the following content: + Autodesk Platform Services: Hubs Browser diff --git a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/auth/tokens.mdx b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/auth/tokens.mdx index c1cc7427..1207a037 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/auth/tokens.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/auth/tokens.mdx @@ -3,29 +3,23 @@ all the APS logic that will be used in different areas of our server application by adding the following code to the file: ```js title="services/aps.js" -const { SdkManagerBuilder } = require('@aps_sdk/autodesk-sdkmanager'); -const { AuthenticationClient, Scopes, ResponseType } = require('@aps_sdk/authentication'); +const { AuthenticationClient, ResponseType } = require('@aps_sdk/authentication'); const { DataManagementClient } = require('@aps_sdk/data-management'); -const { APS_CLIENT_ID, APS_CLIENT_SECRET, APS_CALLBACK_URL } = require('../config.js'); +const { APS_CLIENT_ID, APS_CLIENT_SECRET, APS_CALLBACK_URL, INTERNAL_TOKEN_SCOPES, PUBLIC_TOKEN_SCOPES } = require('../config.js'); -const sdkManager = SdkManagerBuilder.create().build(); -const authenticationClient = new AuthenticationClient(sdkManager); -const dataManagementClient = new DataManagementClient(sdkManager); +const authenticationClient = new AuthenticationClient(); +const dataManagementClient = new DataManagementClient(); const service = module.exports = {}; -service.getAuthorizationUrl = () => authenticationClient.authorize(APS_CLIENT_ID, ResponseType.Code, APS_CALLBACK_URL, [ - Scopes.DataRead, - Scopes.DataCreate, - Scopes.ViewablesRead -]); +service.getAuthorizationUrl = () => authenticationClient.authorize(APS_CLIENT_ID, ResponseType.Code, APS_CALLBACK_URL, INTERNAL_TOKEN_SCOPES); service.authCallbackMiddleware = async (req, res, next) => { const internalCredentials = await authenticationClient.getThreeLeggedToken(APS_CLIENT_ID, req.query.code, APS_CALLBACK_URL, { clientSecret: APS_CLIENT_SECRET }); - const publicCredentials = await authenticationClient.getRefreshToken(APS_CLIENT_ID, internalCredentials.refresh_token, { + const publicCredentials = await authenticationClient.refreshToken(internalCredentials.refresh_token, APS_CLIENT_ID, { clientSecret: APS_CLIENT_SECRET, - scopes: [Scopes.ViewablesRead] + scopes: PUBLIC_TOKEN_SCOPES }); req.session.public_token = publicCredentials.access_token; req.session.internal_token = internalCredentials.access_token; @@ -42,13 +36,13 @@ service.authRefreshMiddleware = async (req, res, next) => { } if (expires_at < Date.now()) { - const internalCredentials = await authenticationClient.getRefreshToken(APS_CLIENT_ID, refresh_token, { + const internalCredentials = await authenticationClient.refreshToken(refresh_token, APS_CLIENT_ID, { clientSecret: APS_CLIENT_SECRET, - scopes: [Scopes.DataRead, Scopes.DataCreate] + scopes: INTERNAL_TOKEN_SCOPES }); - const publicCredentials = await authenticationClient.getRefreshToken(APS_CLIENT_ID, internalCredentials.refresh_token, { + const publicCredentials = await authenticationClient.refreshToken(internalCredentials.refresh_token, APS_CLIENT_ID, { clientSecret: APS_CLIENT_SECRET, - scopes: [Scopes.ViewablesRead] + scopes: PUBLIC_TOKEN_SCOPES }); req.session.public_token = publicCredentials.access_token; req.session.internal_token = internalCredentials.access_token; diff --git a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/data/endpoints.mdx b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/data/endpoints.mdx index f4aab809..110942de 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/data/endpoints.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/data/endpoints.mdx @@ -11,7 +11,7 @@ router.use('/api/hubs', authRefreshMiddleware); router.get('/api/hubs', async function (req, res, next) { try { const hubs = await getHubs(req.internalOAuthToken.access_token); - res.json(hubs); + res.json(hubs.map(hub => ({ id: hub.id, name: hub.attributes.name }))); } catch (err) { next(err); } @@ -20,7 +20,7 @@ router.get('/api/hubs', async function (req, res, next) { router.get('/api/hubs/:hub_id/projects', async function (req, res, next) { try { const projects = await getProjects(req.params.hub_id, req.internalOAuthToken.access_token); - res.json(projects); + res.json(projects.map(project => ({ id: project.id, name: project.attributes.name }))); } catch (err) { next(err); } @@ -28,8 +28,8 @@ router.get('/api/hubs/:hub_id/projects', async function (req, res, next) { router.get('/api/hubs/:hub_id/projects/:project_id/contents', async function (req, res, next) { try { - const contents = await getProjectContents(req.params.hub_id, req.params.project_id, req.query.folder_id, req.internalOAuthToken.access_token); - res.json(contents); + const entries = await getProjectContents(req.params.hub_id, req.params.project_id, req.query.folder_id, req.internalOAuthToken.access_token); + res.json(entries.map(entry => ({ id: entry.id, name: entry.attributes.displayName, folder: entry.type === 'folders' }))); } catch (err) { next(err); } @@ -38,7 +38,7 @@ router.get('/api/hubs/:hub_id/projects/:project_id/contents', async function (re router.get('/api/hubs/:hub_id/projects/:project_id/contents/:item_id/versions', async function (req, res, next) { try { const versions = await getItemVersions(req.params.project_id, req.params.item_id, req.internalOAuthToken.access_token); - res.json(versions); + res.json(versions.map(version => ({ id: version.id, name: version.attributes.createTime }))); } catch (err) { next(err); } diff --git a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/data/hubs.mdx b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/data/hubs.mdx index 1535fdbe..3fa62866 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/data/hubs.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/data/hubs.mdx @@ -3,27 +3,27 @@ and versions. Add the following code to the end of the `services/aps.js` file: ```js title="services/aps.js" service.getHubs = async (accessToken) => { - const resp = await dataManagementClient.getHubs(accessToken); + const resp = await dataManagementClient.getHubs({ accessToken }); return resp.data; }; service.getProjects = async (hubId, accessToken) => { - const resp = await dataManagementClient.getHubProjects(accessToken, hubId); + const resp = await dataManagementClient.getHubProjects(hubId, { accessToken }); return resp.data; }; service.getProjectContents = async (hubId, projectId, folderId, accessToken) => { if (!folderId) { - const resp = await dataManagementClient.getProjectTopFolders(accessToken, hubId, projectId); + const resp = await dataManagementClient.getProjectTopFolders(hubId, projectId, { accessToken }); return resp.data; } else { - const resp = await dataManagementClient.getFolderContents(accessToken, projectId, folderId); + const resp = await dataManagementClient.getFolderContents(projectId, folderId, { accessToken }); return resp.data; } }; service.getItemVersions = async (projectId, itemId, accessToken) => { - const resp = await dataManagementClient.getItemVersions(accessToken, projectId, itemId); + const resp = await dataManagementClient.getItemVersions(projectId, itemId, { accessToken }); return resp.data; }; ``` diff --git a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/setup/config.mdx b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/setup/config.mdx index bb811efb..6e1482c4 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/setup/config.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/setup/config.mdx @@ -1,6 +1,7 @@ Create a `config.js` file in the root of your project folder, and add the following code: ```js title="config.js" +const { Scopes } = require('@aps_sdk/authentication'); require('dotenv').config(); let { APS_CLIENT_ID, APS_CLIENT_SECRET, APS_CALLBACK_URL, SERVER_SESSION_SECRET, PORT } = process.env; @@ -8,6 +9,8 @@ if (!APS_CLIENT_ID || !APS_CLIENT_SECRET || !APS_CALLBACK_URL || !SERVER_SESSION console.warn('Missing some of the environment variables.'); process.exit(1); } +const INTERNAL_TOKEN_SCOPES = [Scopes.DataRead, Scopes.ViewablesRead]; +const PUBLIC_TOKEN_SCOPES = [Scopes.ViewablesRead]; PORT = PORT || 8080; module.exports = { @@ -15,6 +18,8 @@ module.exports = { APS_CLIENT_SECRET, APS_CALLBACK_URL, SERVER_SESSION_SECRET, + INTERNAL_TOKEN_SCOPES, + PUBLIC_TOKEN_SCOPES, PORT }; ``` diff --git a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/setup/project.mdx b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/setup/project.mdx index e3fd9193..1032c443 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/setup/project.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/nodejs-vscode/setup/project.mdx @@ -10,15 +10,14 @@ Next, install all the Node.js dependencies we're going to use. In this case it w and [cookie-session](https://www.npmjs.com/package/cookie-session) for handling cookie-based sessions, and finally the required APS SDK modules: :::caution -As of April 2024 the APS SDK for Node.js is in beta, which means that the public interfaces can still change. +As of November 2024 the APS SDK for Node.js is in beta, which means that the public interfaces can still change. To avoid any potential issues, we recommend installing the specific versions of these packages as shown below. ::: ```bash npm install --save dotenv express cookie-session -npm install --save @aps_sdk/autodesk-sdkmanager@0.0.7-beta.1 -npm install --save @aps_sdk/authentication@0.1.0-beta.1 -npm install --save @aps_sdk/data-management@0.1.0-beta.1 +npm install --save @aps_sdk/authentication@1.0.0-beta.3 +npm install --save @aps_sdk/data-management@1.0.0-beta.4 ``` The `"dependencies"` in your `package.json` file should now look something like this @@ -27,13 +26,12 @@ The `"dependencies"` in your `package.json` file should now look something like ```json // ... "dependencies": { - "@aps_sdk/authentication": "0.1.0-beta.1", - "@aps_sdk/autodesk-sdkmanager": "0.0.7-beta.1", - "@aps_sdk/data-management": "0.1.0-beta.1", + "@aps_sdk/authentication": "1.0.0-beta.3", + "@aps_sdk/data-management": "1.0.0-beta.4", "cookie-session": "^1.4.0", "dotenv": "^16.3.1", "express": "^4.18.2" - }, + } // ... ``` From 0a81c3ccf200c4f67c3725240517b529ca45ac2a Mon Sep 17 00:00:00 2001 From: Petr Broz Date: Thu, 31 Oct 2024 14:29:59 +0100 Subject: [PATCH 6/6] Updated HubsBrowser/.NET tutorial based on latest code (with latest SDKs). --- .../_shared/dotnet-vscode/setup/project.mdx | 14 ++---- .../_shared/dotnet/auth/endpoints.mdx | 22 +++----- .../_shared/dotnet/auth/tokens.mdx | 29 +++++------ .../_shared/dotnet/data/endpoints.mdx | 50 ++++++++++++------- .../_shared/dotnet/data/hubs.mdx | 21 ++++---- 5 files changed, 66 insertions(+), 70 deletions(-) diff --git a/docs/03-tutorials/02-hubs-browser/_shared/dotnet-vscode/setup/project.mdx b/docs/03-tutorials/02-hubs-browser/_shared/dotnet-vscode/setup/project.mdx index b9d3d61a..ffd55a6b 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/dotnet-vscode/setup/project.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/dotnet-vscode/setup/project.mdx @@ -8,9 +8,8 @@ dotnet new web Next we will need to install the dependencies. In this case it will be the required APS SDK packages: ```bash -dotnet add package Autodesk.SdkManager -dotnet add package Autodesk.Authentication -dotnet add package Autodesk.DataManagement +dotnet add package Autodesk.Authentication --version 2.0.0-beta4 +dotnet add package Autodesk.DataManagement --version 2.0.0-beta4 ``` The `*.csproj` file in your project should now look similar to this (possibly with @@ -19,14 +18,11 @@ slightly different version numbers, and additional .NET settings): ```xml - net6.0 + net8.0 - - - - - + + ``` diff --git a/docs/03-tutorials/02-hubs-browser/_shared/dotnet/auth/endpoints.mdx b/docs/03-tutorials/02-hubs-browser/_shared/dotnet/auth/endpoints.mdx index 17918d5d..1589cb47 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/dotnet/auth/endpoints.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/dotnet/auth/endpoints.mdx @@ -5,18 +5,15 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; [ApiController] [Route("api/[controller]")] public class AuthController : ControllerBase { - private readonly ILogger _logger; private readonly APS _aps; - public AuthController(ILogger logger, APS aps) + public AuthController(APS aps) { - _logger = logger; _aps = aps; } @@ -73,7 +70,7 @@ public class AuthController : ControllerBase } [HttpGet("profile")] - public async Task GetProfile() + public async Task GetProfile() { var tokens = await PrepareTokens(Request, Response, _aps); if (tokens == null) @@ -81,26 +78,19 @@ public class AuthController : ControllerBase return Unauthorized(); } var profile = await _aps.GetUserProfile(tokens); - return new - { - name = profile.Name - }; + return Ok(new { name = profile.Name }); } [HttpGet("token")] - public async Task GetPublicToken() + public async Task GetPublicToken() { var tokens = await PrepareTokens(Request, Response, _aps); if (tokens == null) { return Unauthorized(); } - return new - { - access_token = tokens.PublicToken, - token_type = "Bearer", - expires_in = Math.Floor((tokens.ExpiresAt - DateTime.Now.ToUniversalTime()).TotalSeconds) - }; + var expiresIn = Math.Floor((tokens.ExpiresAt - DateTime.Now.ToUniversalTime()).TotalSeconds); + return Ok(new { access_token = tokens.PublicToken, expires_in = expiresIn }); } } ``` diff --git a/docs/03-tutorials/02-hubs-browser/_shared/dotnet/auth/tokens.mdx b/docs/03-tutorials/02-hubs-browser/_shared/dotnet/auth/tokens.mdx index 9aaf6341..daa95a0f 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/dotnet/auth/tokens.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/dotnet/auth/tokens.mdx @@ -4,7 +4,6 @@ start by adding the following code to the file: ```csharp title="Models/APS.cs" using System; -using Autodesk.SDKManager; using Autodesk.Authentication.Model; using System.Collections.Generic; @@ -18,16 +17,14 @@ public class Tokens public partial class APS { - private readonly SDKManager _sdkManager; private readonly string _clientId; private readonly string _clientSecret; private readonly string _callbackUri; - private readonly List InternalTokenScopes = new List { Scopes.DataRead, Scopes.ViewablesRead }; - private readonly List PublicTokenScopes = new List { Scopes.ViewablesRead }; + private readonly List InternalTokenScopes = [Scopes.DataRead, Scopes.ViewablesRead]; + private readonly List PublicTokenScopes = [Scopes.ViewablesRead]; public APS(string clientId, string clientSecret, string callbackUri) { - _sdkManager = SdkManagerBuilder.Create().Build(); _clientId = clientId; _clientSecret = clientSecret; _callbackUri = callbackUri; @@ -51,41 +48,41 @@ public partial class APS { public string GetAuthorizationURL() { - var authenticationClient = new AuthenticationClient(_sdkManager); + var authenticationClient = new AuthenticationClient(); return authenticationClient.Authorize(_clientId, ResponseType.Code, _callbackUri, InternalTokenScopes); } public async Task GenerateTokens(string code) { - var authenticationClient = new AuthenticationClient(_sdkManager); - var internalAuth = await authenticationClient.GetThreeLeggedTokenAsync(_clientId, _clientSecret, code, _callbackUri); - var publicAuth = await authenticationClient.GetRefreshTokenAsync(_clientId, _clientSecret, internalAuth.RefreshToken, PublicTokenScopes); + var authenticationClient = new AuthenticationClient(); + var internalAuth = await authenticationClient.GetThreeLeggedTokenAsync(_clientId, code, _callbackUri, clientSecret: _clientSecret); + var publicAuth = await authenticationClient.RefreshTokenAsync(internalAuth.RefreshToken, _clientId, clientSecret: _clientSecret, scopes: PublicTokenScopes); return new Tokens { PublicToken = publicAuth.AccessToken, InternalToken = internalAuth.AccessToken, - RefreshToken = publicAuth._RefreshToken, + RefreshToken = publicAuth.RefreshToken, ExpiresAt = DateTime.Now.ToUniversalTime().AddSeconds((double)internalAuth.ExpiresIn) }; } public async Task RefreshTokens(Tokens tokens) { - var authenticationClient = new AuthenticationClient(_sdkManager); - var internalAuth = await authenticationClient.GetRefreshTokenAsync(_clientId, _clientSecret, tokens.RefreshToken, InternalTokenScopes); - var publicAuth = await authenticationClient.GetRefreshTokenAsync(_clientId, _clientSecret, internalAuth._RefreshToken, PublicTokenScopes); + var authenticationClient = new AuthenticationClient(); + var internalAuth = await authenticationClient.RefreshTokenAsync(tokens.RefreshToken, _clientId, clientSecret: _clientSecret, scopes: InternalTokenScopes); + var publicAuth = await authenticationClient.RefreshTokenAsync(internalAuth.RefreshToken, _clientId, clientSecret: _clientSecret, scopes: PublicTokenScopes); return new Tokens { PublicToken = publicAuth.AccessToken, InternalToken = internalAuth.AccessToken, - RefreshToken = publicAuth._RefreshToken, + RefreshToken = publicAuth.RefreshToken, ExpiresAt = DateTime.Now.ToUniversalTime().AddSeconds((double)internalAuth.ExpiresIn) }; } public async Task GetUserProfile(Tokens tokens) { - var authenticationClient = new AuthenticationClient(_sdkManager); + var authenticationClient = new AuthenticationClient(); UserInfo userInfo = await authenticationClient.GetUserInfoAsync(tokens.InternalToken); return userInfo; } @@ -129,7 +126,7 @@ public class Startup throw new ApplicationException("Missing required environment variables APS_CLIENT_ID, APS_CLIENT_SECRET, or APS_CALLBACK_URL."); } // highlight-start - services.AddSingleton(new APS(clientID, clientSecret, callbackURL)); + services.AddSingleton(new APS(clientID, clientSecret, callbackURL)); // highlight-end } diff --git a/docs/03-tutorials/02-hubs-browser/_shared/dotnet/data/endpoints.mdx b/docs/03-tutorials/02-hubs-browser/_shared/dotnet/data/endpoints.mdx index 25e5f720..e849b933 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/dotnet/data/endpoints.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/dotnet/data/endpoints.mdx @@ -1,50 +1,52 @@ Create a `HubsController.cs` file under the `Controllers` subfolder with the following content: ```csharp title="Controllers/HubsController.cs" +using System.Linq; using System.Threading.Tasks; +using Autodesk.DataManagement.Model; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; [ApiController] [Route("api/[controller]")] public class HubsController : ControllerBase { - private readonly ILogger _logger; private readonly APS _aps; - public HubsController(ILogger logger, APS aps) + public HubsController(APS aps) { - _logger = logger; _aps = aps; } [HttpGet()] - public async Task> ListHubs() + public async Task ListHubs() { var tokens = await AuthController.PrepareTokens(Request, Response, _aps); if (tokens == null) { return Unauthorized(); } - var hubs = await _aps.GetHubs(tokens); - return JsonConvert.SerializeObject(hubs); + return Ok( + from hub in await _aps.GetHubs(tokens) + select new { id = hub.Id, name = hub.Attributes.Name } + ); } [HttpGet("{hub}/projects")] - public async Task> ListProjects(string hub) + public async Task ListProjects(string hub) { var tokens = await AuthController.PrepareTokens(Request, Response, _aps); if (tokens == null) { return Unauthorized(); } - var projects = await _aps.GetProjects(hub, tokens); - return JsonConvert.SerializeObject(projects); + return Ok( + from project in await _aps.GetProjects(hub, tokens) + select new { id = project.Id, name = project.Attributes.Name } + ); } [HttpGet("{hub}/projects/{project}/contents")] - public async Task> ListItems(string hub, string project, [FromQuery] string? folder_id) + public async Task ListItems(string hub, string project, [FromQuery] string folder_id) { var tokens = await AuthController.PrepareTokens(Request, Response, _aps); if (tokens == null) @@ -53,26 +55,38 @@ public class HubsController : ControllerBase } if (string.IsNullOrEmpty(folder_id)) { - var folders = await _aps.GetTopFolders(hub, project, tokens); - return JsonConvert.SerializeObject(folders); + return Ok( + from folder in await _aps.GetTopFolders(hub, project, tokens) + select new { id = folder.Id, name = folder.Attributes.DisplayName, folder = true } + ); } else { var contents = await _aps.GetFolderContents(project, folder_id, tokens); - return JsonConvert.SerializeObject(contents); + var folders = from entry in contents + where entry is FolderData + select entry as FolderData into folder + select new { id = folder.Id, name = folder.Attributes.DisplayName, folder = true }; + var items = from entry in contents + where entry is ItemData + select entry as ItemData into item + select new { id = item.Id, name = item.Attributes.DisplayName, folder = false }; + return Ok(folders.Concat(items)); } } [HttpGet("{hub}/projects/{project}/contents/{item}/versions")] - public async Task> ListVersions(string hub, string project, string item) + public async Task ListVersions(string hub, string project, string item) { var tokens = await AuthController.PrepareTokens(Request, Response, _aps); if (tokens == null) { return Unauthorized(); } - var versions = await _aps.GetVersions(project, item, tokens); - return JsonConvert.SerializeObject(versions); + return Ok( + from version in await _aps.GetVersions(project, item, tokens) + select new { id = version.Id, name = version.Attributes.CreateTime } + ); } } ``` diff --git a/docs/03-tutorials/02-hubs-browser/_shared/dotnet/data/hubs.mdx b/docs/03-tutorials/02-hubs-browser/_shared/dotnet/data/hubs.mdx index 8d0f53af..22c058ab 100644 --- a/docs/03-tutorials/02-hubs-browser/_shared/dotnet/data/hubs.mdx +++ b/docs/03-tutorials/02-hubs-browser/_shared/dotnet/data/hubs.mdx @@ -4,42 +4,41 @@ Create a `APS.Hubs.cs` under the `Models` subfolder with the following content: using System.Collections.Generic; using System.Threading.Tasks; using Autodesk.DataManagement; -using Autodesk.DataManagement.Http; using Autodesk.DataManagement.Model; public partial class APS { - public async Task> GetHubs(Tokens tokens) + public async Task> GetHubs(Tokens tokens) { - var dataManagementClient = new DataManagementClient(_sdkManager); + var dataManagementClient = new DataManagementClient(); var hubs = await dataManagementClient.GetHubsAsync(accessToken: tokens.InternalToken); return hubs.Data; } - public async Task> GetProjects(string hubId, Tokens tokens) + public async Task> GetProjects(string hubId, Tokens tokens) { - var dataManagementClient = new DataManagementClient(_sdkManager); + var dataManagementClient = new DataManagementClient(); var projects = await dataManagementClient.GetHubProjectsAsync(hubId, accessToken: tokens.InternalToken); return projects.Data; } - public async Task> GetTopFolders(string hubId, string projectId, Tokens tokens) + public async Task> GetTopFolders(string hubId, string projectId, Tokens tokens) { - var dataManagementClient = new DataManagementClient(_sdkManager); + var dataManagementClient = new DataManagementClient(); var folders = await dataManagementClient.GetProjectTopFoldersAsync(hubId, projectId, accessToken: tokens.InternalToken); return folders.Data; } - public async Task> GetFolderContents(string projectId, string folderId, Tokens tokens) + public async Task> GetFolderContents(string projectId, string folderId, Tokens tokens) { - var dataManagementClient = new DataManagementClient(_sdkManager); + var dataManagementClient = new DataManagementClient(); var contents = await dataManagementClient.GetFolderContentsAsync(projectId, folderId, accessToken: tokens.InternalToken); return contents.Data; } - public async Task> GetVersions(string projectId, string itemId, Tokens tokens) + public async Task> GetVersions(string projectId, string itemId, Tokens tokens) { - var dataManagementClient = new DataManagementClient(_sdkManager); + var dataManagementClient = new DataManagementClient(); var versions = await dataManagementClient.GetItemVersionsAsync(projectId, itemId, accessToken: tokens.InternalToken); return versions.Data; }