with Google Identity and AnnounceKit?
import axios from "axios";
import * as jsrsasign from "jsrsasign";
export default defineComponent({
props: {
google_identity: {
type: "app",
app: "google_identity",
}
},
async run({ steps, $ }) {
const serviceAccountKey = JSON.parse(this.google_identity.$auth.service_account_key);
const GOOGLE_OAUTH = 'https://www.googleapis.com/oauth2/v4/token';
// add/remove your own scopes as needed
const SCOPES = [
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/cloud-identity',
];
const getJwt = async function ({ client_email, private_key }, iat) {
const header = {
typ: 'JWT',
alg: 'RS256',
};
const exp = iat + 3600;
const payload = {
aud: GOOGLE_OAUTH,
iss: client_email,
scope: SCOPES.join(' '),
iat,
exp,
};
const jwt = jsrsasign.KJUR.jws.JWS.sign(null, header, payload, private_key);
return { jwt, exp };
};
const getToken = async function (serviceAccountKey) {
const now = Math.floor(Date.now() / 1000);
const jwtInfo = await getJwt(serviceAccountKey, now);
const params = new URLSearchParams();
params.append('grant_type', 'urn:ietf:params:oauth:grant-type:jwt-bearer');
params.append('assertion', jwtInfo.jwt);
const response = await axios.post(GOOGLE_OAUTH, params, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
const accessToken = response.data.access_token;
return accessToken;
};
const generateOAuthToken = async function () {
return await getToken(serviceAccountKey);
};
// Call the function to generate the token
const accessToken = await generateOAuthToken();
// Call the Google Identity API to search for groups
const response = await axios({
method: "GET",
url: "https://cloudidentity.googleapis.com/v1/groups:search",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json"
},
params: {
query: "parent == 'customers/C046psxkn'"
}
})
return response.data
},
})
AnnounceKit is a tool for creating, managing, and publishing announcements to keep your users informed about product updates and news. Using the AnnounceKit API within Pipedream, you can automate the delivery of these updates across different platforms, sync release notes with your product's lifecycle events, or control the flow of communication based on user behavior or preferences. This level of automation can enhance user engagement and ensure timely updates without manual intervention.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
announcekit: {
type: "app",
app: "announcekit",
}
},
async run({steps, $}) {
const data = {
"query": `{
me {
active_project {
id
name
}
}
}`,
}
return await axios($, {
method: "post",
url: `https://announcekit.app/gq/v2`,
headers: {
"Content-Type": `application/json`,
},
auth: {
username: `${this.announcekit.$auth.email}`,
password: `${this.announcekit.$auth.password}`,
},
data,
})
},
})