Skip to content

Instantly share code, notes, and snippets.

@ypcode
Created March 7, 2020 22:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ypcode/462cbc3c51e998d2d0bf8a910a881961 to your computer and use it in GitHub Desktop.
Save ypcode/462cbc3c51e998d2d0bf8a910a881961 to your computer and use it in GitHub Desktop.
import { Logger } from "@azure/functions"
import { graph } from "@pnp/graph-commonjs";
import { Subscription } from "@microsoft/microsoft-graph-types";
const isValidForCreate = (subscription: Subscription) => {
return !!(subscription.changeType && subscription.notificationUrl && subscription.resource && subscription.expirationDateTime);
}
const isValidForUpdate = (subscription: Subscription) => {
return !!(subscription.id && subscription.expirationDateTime);
}
export const getSubscription = async function (subscriptionId: string, log: Logger): Promise<Subscription> {
try {
const subscription = await graph.subscriptions.getById(subscriptionId).get();
return subscription;
} catch (error) {
log.warn(`An error occured while trying to get subscription with Id ${subscriptionId}`, error);
return null;
}
}
export const createSubscription = async function (subscription: Subscription, log: Logger): Promise<Subscription> {
if (isValidForCreate(subscription)) {
log("Creating new subscription...");
const { changeType, notificationUrl, resource, expirationDateTime } = subscription;
const result = await graph.subscriptions.add(changeType, notificationUrl, resource, expirationDateTime, subscription);
log(`New subscription to ${changeType} of ${resource} has been created.`);
return result.data;
}
else {
log.error("Received request is not valid to create a subscription...");
}
}
export const updateSubscription = async function (subscription: Subscription, log: Logger): Promise<void> {
if (isValidForUpdate(subscription)) {
log(`Updating subscription ${subscription.id}...`);
await graph.subscriptions.getById(subscription.id).update(subscription);
log(`Subscription ${subscription.id} has been updated.`);
} else {
log.error("Received request is not valid to update the subscription...");
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment