Skip to content

Commit 5305253

Browse files
authored
Add sample for Onshape (#377)
* Add sample for Onshape * Make getService private
1 parent a5480c1 commit 5305253

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

samples/Onshape.gs

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
* This sample demonstrates how to configure the library for the Onshape API.
3+
* To generate OAuth credentials, create an OAuth application here:
4+
* https://dev-portal.onshape.com/
5+
*/
6+
7+
// Make sure to include any trailng '=' symbols in the ID and Secret.
8+
var CLIENT_ID = '...';
9+
var CLIENT_SECRET = '...';
10+
11+
/**
12+
* Authorizes and makes a request to the Onshape API.
13+
*/
14+
function run() {
15+
var service = getService_();
16+
if (service.hasAccess()) {
17+
// Make a request to retrieve a list of the user's documents.
18+
// This requires enabling the OAuth2Read scope for the application in the
19+
// Onshape developer portal. ("Application can read your documents")
20+
var url = 'https://cad.onshape.com/api/documents';
21+
var response = UrlFetchApp.fetch(url, {
22+
headers: {
23+
Authorization: 'Bearer ' + service.getAccessToken()
24+
}
25+
});
26+
var result = JSON.parse(response.getContentText());
27+
Logger.log(JSON.stringify(result, null, 2));
28+
} else {
29+
var authorizationUrl = service.getAuthorizationUrl();
30+
Logger.log('Open the following URL and re-run the script: %s',
31+
authorizationUrl);
32+
}
33+
}
34+
35+
/**
36+
* Reset the authorization state, so that it can be re-tested.
37+
*/
38+
function reset() {
39+
getService_().reset();
40+
}
41+
42+
/**
43+
* Configures the service.
44+
*/
45+
function getService_() {
46+
return OAuth2.createService('Onshape')
47+
// Set the Onshape OAuth endpoint URLs.
48+
.setAuthorizationBaseUrl('https://oauth.onshape.com/oauth/authorize')
49+
.setTokenUrl('https://oauth.onshape.com/oauth/token')
50+
51+
// Set the client ID and secret.
52+
.setClientId(CLIENT_ID)
53+
.setClientSecret(CLIENT_SECRET)
54+
55+
// Set the name of the callback function that should be invoked to
56+
// complete the OAuth flow.
57+
.setCallbackFunction('authCallback')
58+
59+
// Set the property store where authorized tokens should be persisted.
60+
.setPropertyStore(PropertiesService.getUserProperties());
61+
}
62+
63+
/**
64+
* Handles the OAuth callback.
65+
*/
66+
function authCallback(request) {
67+
var service = getService_();
68+
var authorized = service.handleCallback(request);
69+
if (authorized) {
70+
return HtmlService.createHtmlOutput('Success!');
71+
} else {
72+
return HtmlService.createHtmlOutput('Denied.');
73+
}
74+
}
75+
76+
/**
77+
* Logs the redict URI to register.
78+
*/
79+
function logRedirectUri() {
80+
Logger.log(OAuth2.getRedirectUri());
81+
}

0 commit comments

Comments
 (0)