diff --git a/components/sms_fusion/actions/get-balance/get-balance.mjs b/components/sms_fusion/actions/get-balance/get-balance.mjs new file mode 100644 index 0000000000000..05816ef981327 --- /dev/null +++ b/components/sms_fusion/actions/get-balance/get-balance.mjs @@ -0,0 +1,19 @@ +import smsFusion from "../../sms_fusion.app.mjs"; + +export default { + key: "sms_fusion-get-balance", + name: "Get Balance", + description: "Get current account balance including credit limits in SMS Fusion. [See the documentation](https://docs.smsfusion.com.au/)", + version: "0.0.1", + type: "action", + props: { + smsFusion, + }, + async run({ $ }) { + const response = await this.smsFusion.getBalance({ + $, + }); + $.export("$summary", "Successfully retrieved account balance"); + return response; + }, +}; diff --git a/components/sms_fusion/actions/perform-hlr-lookup/perform-hlr-lookup.mjs b/components/sms_fusion/actions/perform-hlr-lookup/perform-hlr-lookup.mjs new file mode 100644 index 0000000000000..f4c883028b21b --- /dev/null +++ b/components/sms_fusion/actions/perform-hlr-lookup/perform-hlr-lookup.mjs @@ -0,0 +1,40 @@ +import smsFusion from "../../sms_fusion.app.mjs"; + +export default { + key: "sms_fusion-perform-hlr-lookup", + name: "Perform HLR Lookup", + description: "Perform HLR on a number with SMS Fusion. [See the documentation](https://docs.smsfusion.com.au/)", + version: "0.0.1", + type: "action", + props: { + smsFusion, + phoneNumber: { + propDefinition: [ + smsFusion, + "phoneNumber", + ], + description: "The phone number to lookup in MSISDN format. Example: `61412345678`", + }, + countryCode: { + propDefinition: [ + smsFusion, + "countryCode", + ], + }, + }, + async run({ $ }) { + const response = await this.smsFusion.hlrLookup({ + $, + params: { + num: this.phoneNumber, + cc: this.countryCode, + }, + }); + + if (response.id) { + $.export("$summary", "Successfully performed HLR Lookup"); + } + + return response; + }, +}; diff --git a/components/sms_fusion/actions/send-sms/send-sms.mjs b/components/sms_fusion/actions/send-sms/send-sms.mjs new file mode 100644 index 0000000000000..97aea89bbbc9f --- /dev/null +++ b/components/sms_fusion/actions/send-sms/send-sms.mjs @@ -0,0 +1,43 @@ +import smsFusion from "../../sms_fusion.app.mjs"; + +export default { + key: "sms_fusion-send-sms", + name: "Send SMS", + description: "Send an SMS using SMS Fusion. [See the documentation](https://docs.smsfusion.com.au/)", + version: "0.0.1", + type: "action", + props: { + smsFusion, + message: { + type: "string", + label: "Message", + description: "The contents of the SMS you wish to send", + }, + phoneNumber: { + propDefinition: [ + smsFusion, + "phoneNumber", + ], + }, + countryCode: { + propDefinition: [ + smsFusion, + "countryCode", + ], + }, + }, + async run({ $ }) { + const response = await this.smsFusion.sendSMS({ + $, + params: { + msg: this.message, + num: this.phoneNumber, + cc: this.countryCode, + }, + }); + if (response.success) { + $.export("$summary", "Successfully sent SMS message"); + } + return response; + }, +}; diff --git a/components/sms_fusion/package.json b/components/sms_fusion/package.json index 404b479e0557b..0dd633ba0aadf 100644 --- a/components/sms_fusion/package.json +++ b/components/sms_fusion/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/sms_fusion", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream SMS Fusion Components", "main": "sms_fusion.app.mjs", "keywords": [ @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.0.3" } -} \ No newline at end of file +} diff --git a/components/sms_fusion/sms_fusion.app.mjs b/components/sms_fusion/sms_fusion.app.mjs index 2fd7e3cded014..f587d048a6948 100644 --- a/components/sms_fusion/sms_fusion.app.mjs +++ b/components/sms_fusion/sms_fusion.app.mjs @@ -1,11 +1,60 @@ +import { axios } from "@pipedream/platform"; + export default { type: "app", app: "sms_fusion", - propDefinitions: {}, + propDefinitions: { + phoneNumber: { + type: "string", + label: "Phone Number", + description: "The phone number to send the message to in MSISDN format. Example: `61412345678`", + }, + countryCode: { + type: "string", + label: "Country Code", + description: "A 2 character country code ISO 3166-2 for formatting local numbers internationally", + optional: true, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _baseUrl() { + return "http://api.smsfusion.com.au"; + }, + _makeRequest({ + $ = this, + path, + params, + ...opts + }) { + return axios($, { + url: `${this._baseUrl()}${path}`, + headers: { + "Accept": "application/json", + }, + params: { + ...params, + key: `${this.$auth.api_key}`, + }, + ...opts, + }); + }, + getBalance(opts = {}) { + return this._makeRequest({ + path: "/balance/", + ...opts, + }); + }, + hlrLookup(opts = {}) { + return this._makeRequest({ + path: "/hlr/", + ...opts, + }); + }, + sendSMS(opts = {}) { + return this._makeRequest({ + path: "/sms/", + ...opts, + }); }, }, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e4c6e295e7fcc..eb2f39068d39b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9340,7 +9340,10 @@ importers: '@pipedream/platform': 2.0.0 components/sms_fusion: - specifiers: {} + specifiers: + '@pipedream/platform': ^3.0.3 + dependencies: + '@pipedream/platform': 3.0.3 components/sms_it: specifiers: {} @@ -16176,12 +16179,12 @@ packages: kuler: 2.0.0 dev: false - /@definitelytyped/header-parser/0.2.12: - resolution: {integrity: sha512-UYtSXiLMhzRFKh7xHMkgiWsscgHxIndmjetaptZMMS0EOvfhUTuEM68GpjiCtz5shXw22Vacs1vDTAkKGDhNmg==} + /@definitelytyped/header-parser/0.2.13: + resolution: {integrity: sha512-m7YEtGhwAjmQyJQFQ7q8+hTGTiC/WrdRATvw8fyTwgW+RiWUt8MAeehuFj4txnCYXDcLO0ozuW5gNrLoYR4Ubg==} engines: {node: '>=18.18.0'} dependencies: '@definitelytyped/typescript-versions': 0.1.4 - '@definitelytyped/utils': 0.1.7 + '@definitelytyped/utils': 0.1.8 semver: 7.6.3 dev: true @@ -16190,8 +16193,8 @@ packages: engines: {node: '>=18.18.0'} dev: true - /@definitelytyped/utils/0.1.7: - resolution: {integrity: sha512-t58AeNg6+mvyMnBHyPC6JQqWMW0Iwyb+vlpBz4V0d0iDY9H8gGCnLFg9vtN1nC+JXfTXBlf9efu9unMUeaPCiA==} + /@definitelytyped/utils/0.1.8: + resolution: {integrity: sha512-4JINx4Rttha29f50PBsJo48xZXx/He5yaIWJRwVarhYAN947+S84YciHl+AIhQNRPAFkg8+5qFngEGtKxQDWXA==} engines: {node: '>=18.18.0'} dependencies: '@qiwi/npm-registry-client': 8.9.1 @@ -24553,7 +24556,7 @@ packages: peerDependencies: typescript: '*' dependencies: - '@definitelytyped/header-parser': 0.2.12 + '@definitelytyped/header-parser': 0.2.13 command-exists: 1.2.9 rimraf: 3.0.2 semver: 6.3.1 @@ -24568,7 +24571,7 @@ packages: peerDependencies: typescript: '*' dependencies: - '@definitelytyped/header-parser': 0.2.12 + '@definitelytyped/header-parser': 0.2.13 command-exists: 1.2.9 rimraf: 3.0.2 semver: 6.3.1 @@ -24584,9 +24587,9 @@ packages: peerDependencies: typescript: '>= 3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.7.0-dev || >= 3.8.0-dev || >= 3.9.0-dev || >= 4.0.0-dev' dependencies: - '@definitelytyped/header-parser': 0.2.12 + '@definitelytyped/header-parser': 0.2.13 '@definitelytyped/typescript-versions': 0.1.4 - '@definitelytyped/utils': 0.1.7 + '@definitelytyped/utils': 0.1.8 dts-critic: 3.3.11_typescript@5.2.2 fs-extra: 6.0.1 json-stable-stringify: 1.0.2 @@ -24604,9 +24607,9 @@ packages: peerDependencies: typescript: '>= 3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.7.0-dev || >= 3.8.0-dev || >= 3.9.0-dev || >= 4.0.0-dev' dependencies: - '@definitelytyped/header-parser': 0.2.12 + '@definitelytyped/header-parser': 0.2.13 '@definitelytyped/typescript-versions': 0.1.4 - '@definitelytyped/utils': 0.1.7 + '@definitelytyped/utils': 0.1.8 dts-critic: 3.3.11_typescript@5.5.4 fs-extra: 6.0.1 json-stable-stringify: 1.0.2