diff --git a/components/local_reviews/actions/get-survey-url/get-survey-url.mjs b/components/local_reviews/actions/get-survey-url/get-survey-url.mjs new file mode 100644 index 0000000000000..a9ae87f2eea3f --- /dev/null +++ b/components/local_reviews/actions/get-survey-url/get-survey-url.mjs @@ -0,0 +1,19 @@ +import app from "../../local_reviews.app.mjs"; + +export default { + key: "local_reviews-get-survey-url", + name: "Get Survey URL", + description: "Retrieve the survey link associated with the connected license. [See the documentation](https://app.localreviews.com/review-tools/api-documentation).", + version: "0.0.1", + type: "action", + props: { + app, + }, + async run({ $ }) { + const response = await this.app.getSurveyUrl({ + $, + }); + $.export("$summary", "Successfully retrieved survey URL."); + return response; + }, +}; diff --git a/components/local_reviews/actions/send-review-request-via-email/send-review-request-via-email.mjs b/components/local_reviews/actions/send-review-request-via-email/send-review-request-via-email.mjs new file mode 100644 index 0000000000000..bce088f288876 --- /dev/null +++ b/components/local_reviews/actions/send-review-request-via-email/send-review-request-via-email.mjs @@ -0,0 +1,45 @@ +import app from "../../local_reviews.app.mjs"; + +export default { + key: "local_reviews-send-review-request-via-email", + name: "Send Review Request Via Email", + description: "Send a review invitation to a customer via email. [See the documentation](https://app.localreviews.com/review-tools/api-documentation).", + version: "0.0.1", + type: "action", + props: { + app, + email: { + type: "string", + label: "Email", + description: "The email address of the recipient.", + }, + subject: { + type: "string", + label: "Subject", + description: "The subject of the email.", + }, + message: { + type: "string", + label: "Message", + description: "The content of the email message.", + }, + }, + async run({ $ }) { + const { + app, + email, + subject, + message, + } = this; + const response = await app.sendReviewRequestViaEmail({ + $, + data: { + email, + subject, + message, + }, + }); + $.export("$summary", "Successfully sent review request email."); + return response; + }, +}; diff --git a/components/local_reviews/actions/send-review-request-via-sms/send-review-request-via-sms.mjs b/components/local_reviews/actions/send-review-request-via-sms/send-review-request-via-sms.mjs new file mode 100644 index 0000000000000..cd7e959f61b1e --- /dev/null +++ b/components/local_reviews/actions/send-review-request-via-sms/send-review-request-via-sms.mjs @@ -0,0 +1,38 @@ +import app from "../../local_reviews.app.mjs"; + +export default { + key: "local_reviews-send-review-request-via-sms", + name: "Send Review Request Via SMS", + description: "Send a review invitation to a customer via SMS. [See the documentation](https://app.localreviews.com/review-tools/api-documentation).", + version: "0.0.1", + type: "action", + props: { + app, + phone: { + type: "string", + label: "Phone Number", + description: "The phone number of the recipient.", + }, + message: { + type: "string", + label: "Message", + description: "The content of the SMS message.", + }, + }, + async run({ $ }) { + const { + app, + phone, + message, + } = this; + const response = await app.sendReviewRequestViaSms({ + $, + data: { + phone, + message, + }, + }); + $.export("$summary", "Successfully sent review request SMS."); + return response; + }, +}; diff --git a/components/local_reviews/local_reviews.app.mjs b/components/local_reviews/local_reviews.app.mjs index 2c4c7fa4c9bb4..ccdc4f1d7d3bb 100644 --- a/components/local_reviews/local_reviews.app.mjs +++ b/components/local_reviews/local_reviews.app.mjs @@ -1,11 +1,50 @@ +import { axios } from "@pipedream/platform"; + export default { type: "app", app: "local_reviews", propDefinitions: {}, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _getBaseUrl(path) { + return `https://api.localreviews.com/api/v2${path}`; + }, + _getHeaders() { + return { + Authorization: `Bearer ${this.$auth.oauth_access_token}`, + }; + }, + _makeRequest({ + $ = this, path, ...args + } = {}) { + return axios($, { + url: this._getBaseUrl(path), + headers: this._getHeaders(), + ...args, + }); + }, + post(args = {}) { + return this._makeRequest({ + method: "POST", + ...args, + }); + }, + sendReviewRequestViaEmail(args = {}) { + return this.post({ + path: "/oauth/oauth-request/send-email", + ...args, + }); + }, + sendReviewRequestViaSms(args = {}) { + return this.post({ + path: "/oauth/oauth-request/send-text", + ...args, + }); + }, + getSurveyUrl(args = {}) { + return this._makeRequest({ + path: "/oauth/oauth-request/get-survey-url", + ...args, + }); }, }, }; diff --git a/components/local_reviews/package.json b/components/local_reviews/package.json index d1d3b551a20dd..723e2c3beb77d 100644 --- a/components/local_reviews/package.json +++ b/components/local_reviews/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/local_reviews", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream Local Reviews Components", "main": "local_reviews.app.mjs", "keywords": [ @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.1.0" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30a05bb898595..a8c9295a83daf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5396,8 +5396,7 @@ importers: components/godial: {} - components/goformz: - specifiers: {} + components/goformz: {} components/gohighlevel: dependencies: @@ -7288,8 +7287,7 @@ importers: specifier: ^3.0.0 version: 3.0.3 - components/lark: - specifiers: {} + components/lark: {} components/lastpass: dependencies: @@ -7688,7 +7686,11 @@ importers: specifier: ^3.0.0 version: 3.0.0 - components/local_reviews: {} + components/local_reviews: + dependencies: + '@pipedream/platform': + specifier: ^3.1.0 + version: 3.1.0 components/locate: dependencies: @@ -8494,8 +8496,7 @@ importers: components/mollie: {} - components/momentum_ams: - specifiers: {} + components/momentum_ams: {} components/monday: dependencies: @@ -9478,8 +9479,7 @@ importers: components/order_sender: {} - components/orderspace: - specifiers: {} + components/orderspace: {} components/originality_ai: dependencies: @@ -11556,8 +11556,7 @@ importers: components/ryver: {} - components/sage_accounting: - specifiers: {} + components/sage_accounting: {} components/sage_intacct: {} @@ -12974,8 +12973,7 @@ importers: components/stealthseminar: {} - components/stiply: - specifiers: {} + components/stiply: {} components/storeganise: dependencies: