· 4 years ago · Jun 30, 2021, 01:06 PM
1main:
2 steps:
3 - initialize:
4 assign:
5 - secret_key: XXXXXXXXXX
6 - integration_id: XXXXXXXXXX
7 - subdomain: XXXXXXXXXX
8 - retries: 0
9
10
11 - getRefreshToken:
12 call: googleapis.secretmanager.v1.projects.secrets.versions.access
13 args:
14 name: ${"projects/" + sys.get_env("GOOGLE_CLOUD_PROJECT_ID") + "/secrets/amo-refresh-token/versions/latest"}
15 result: secret_result
16 - assignToken:
17 assign:
18 - refreshToken: ${text.decode(base64.decode(secret_result.payload.data))}
19
20 - createNewAccessToken:
21 try:
22 call: http.post
23 args:
24 url: ${"https://" + subdomain + ".amocrm.com/oauth2/access_token"}
25 body:
26 client_id: ${integration_id}
27 client_secret: ${secret_key}
28 grant_type: authorization_code
29 code: ${refreshToken}
30 redirect_uri: ${"https://" + subdomain + ".amocrm.com/oauth2/access_token"}
31 result: newTokens
32 except:
33 as: e
34 steps:
35 - checkError:
36 switch:
37 - condition: ${not("HttpError" in e.tags)}
38 return: "Connection problem."
39 - condition: ${e.code == 400}
40 next: createNewAccessTokenFromRefresh
41 - unhandled_exception:
42 raise: ${e}
43
44
45 - assignNewTokens:
46 assign:
47 - accessToken: ${newTokens.body.access_token}
48 - refreshToken: ${newTokens.body.refresh_token}
49
50 - updateRefreshTokenSecretManager:
51 call: googleapis.secretmanager.v1beta1.projects.secrets.addVersion
52 args:
53 parent: ${"projects/" + sys.get_env("GOOGLE_CLOUD_PROJECT_ID") + "/secrets/amo-refresh-token"}
54 body:
55 payload:
56 data: ${""+base64.encode(text.encode(refreshToken))}
57
58 - updateAccessTokenSecretManager:
59 call: googleapis.secretmanager.v1beta1.projects.secrets.addVersion
60 args:
61 parent: ${"projects/" + sys.get_env("GOOGLE_CLOUD_PROJECT_ID") + "/secrets/amo-access-token"}
62 body:
63 payload:
64 data: ${base64.encode(text.encode(accessToken))}
65 - returnAccessToken:
66 return: Access token granted successfully
67
68 - createNewAccessTokenFromRefresh:
69 call: http.post
70 args:
71 url: ${"https://" + subdomain + ".amocrm.com/oauth2/access_token"}
72 body:
73 client_id: ${integration_id}
74 client_secret: ${secret_key}
75 grant_type: refresh_token
76 refresh_token: ${refreshToken}
77 redirect_uri: ${"https://" + subdomain + ".amocrm.com/oauth2/access_token"}
78 result: newTokens
79 next: assignNewTokens
80
81