with Google Identity and Supabase?
Emit new event for every new row added in a table. See documentation here
Emit new event for every insert
, update
, or delete
operation in a table. This source requires user configuration using the Supabase website. More information in the README. Also see documentation here
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
},
})
Supabase is a real-time backend-as-a-service that provides developers with a suite of tools to quickly build and scale their applications. It offers database storage, authentication, instant APIs, and real-time subscriptions. With the Supabase API, you can perform CRUD operations on your database, manage users, and listen to database changes in real time. When integrated with Pipedream, you can automate workflows that react to these database events, synchronize data across multiple services, or streamline user management processes.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
supabase: {
type: "app",
app: "supabase",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://${this.supabase.$auth.subdomain}.supabase.co/rest/v1/`,
headers: {
Authorization: `Bearer ${this.supabase.$auth.service_key}`,
"apikey": `${this.supabase.$auth.service_key}`,
},
})
},
})