diff --git a/components/openperplex/actions/get-website-screenshot/get-website-screenshot.mjs b/components/openperplex/actions/get-website-screenshot/get-website-screenshot.mjs new file mode 100644 index 0000000000000..3ce5f6fc8037b --- /dev/null +++ b/components/openperplex/actions/get-website-screenshot/get-website-screenshot.mjs @@ -0,0 +1,27 @@ +import openperplex from "../../openperplex.app.mjs"; + +export default { + key: "openperplex-get-website-screenshot", + name: "Get Website Screenshot", + description: "Get a screenshot of a website using Openperplex. [See the documentation](https://docs.openperplex.com/api-reference/endpoint/get-website-screenshot)", + version: "0.0.1", + type: "action", + props: { + openperplex, + url: { + type: "string", + label: "URL", + description: "The URL to create a screenshot of", + }, + }, + async run({ $ }) { + const response = await this.openperplex.getWebsiteScreenshot({ + $, + params: { + url: this.url, + }, + }); + $.export("$summary", "Successfully created screenshot"); + return response; + }, +}; diff --git a/components/openperplex/actions/query-from-url/query-from-url.mjs b/components/openperplex/actions/query-from-url/query-from-url.mjs new file mode 100644 index 0000000000000..8be0487f26c9d --- /dev/null +++ b/components/openperplex/actions/query-from-url/query-from-url.mjs @@ -0,0 +1,48 @@ +import openperplex from "../../openperplex.app.mjs"; + +export default { + key: "openperplex-query-from-url", + name: "Query From URL", + description: "Queries content from a specific URL using Openperplex. [See the documentation](https://docs.openperplex.com/api-reference/endpoint/query-from-url)", + version: "0.0.1", + type: "action", + props: { + openperplex, + url: { + type: "string", + label: "URL", + description: "The URL to search", + }, + query: { + propDefinition: [ + openperplex, + "query", + ], + }, + responseLanguage: { + propDefinition: [ + openperplex, + "responseLanguage", + ], + }, + answerType: { + propDefinition: [ + openperplex, + "answerType", + ], + }, + }, + async run({ $ }) { + const response = await this.openperplex.queryFromUrl({ + $, + params: { + url: this.url, + query: this.query, + response_language: this.responseLanguage, + answer_type: this.answerType, + }, + }); + $.export("$summary", "Successfully performed search"); + return response; + }, +}; diff --git a/components/openperplex/actions/simple-search/simple-search.mjs b/components/openperplex/actions/simple-search/simple-search.mjs new file mode 100644 index 0000000000000..ed71f0adea3fb --- /dev/null +++ b/components/openperplex/actions/simple-search/simple-search.mjs @@ -0,0 +1,56 @@ +import openperplex from "../../openperplex.app.mjs"; + +export default { + key: "openperplex-simple-search", + name: "Simple Search", + description: "Perform a simple search using Openperplex. [See the documentation](https://docs.openperplex.com/api-reference/endpoint/search-simple)", + version: "0.0.1", + type: "action", + props: { + openperplex, + query: { + propDefinition: [ + openperplex, + "query", + ], + }, + dateContext: { + type: "string", + label: "Date Context", + description: "A date for context. Format: `YYYY-MM-DD` or `YYYY-MM-DD HH:MM AM/PM`. If not provided, the API uses the current date.", + optional: true, + }, + location: { + propDefinition: [ + openperplex, + "location", + ], + }, + responseLanguage: { + propDefinition: [ + openperplex, + "responseLanguage", + ], + }, + answerType: { + propDefinition: [ + openperplex, + "answerType", + ], + }, + }, + async run({ $ }) { + const response = await this.openperplex.simpleSearch({ + $, + params: { + query: this.query, + date_context: this.dateContext, + location: this.location, + response_language: this.responseLanguage, + answer_type: this.answerType, + }, + }); + $.export("$summary", "Successfully performed search"); + return response; + }, +}; diff --git a/components/openperplex/common/constants.mjs b/components/openperplex/common/constants.mjs new file mode 100644 index 0000000000000..f36c8f93b2ac1 --- /dev/null +++ b/components/openperplex/common/constants.mjs @@ -0,0 +1,241 @@ +const ANSWER_TYPES = [ + "text", + "markdown", + "html", +]; + +const COUNTRIES = [ + { + label: "United States", + value: "us", + }, + { + label: "Canada", + value: "ca", + }, + { + label: "United Kingdom", + value: "uk", + }, + { + label: "Mexico", + value: "mx", + }, + { + label: "Spain", + value: "es", + }, + { + label: "Germany", + value: "de", + }, + { + label: "France", + value: "fr", + }, + { + label: "Belgium", + value: "be", + }, + { + label: "Portugal", + value: "pt", + }, + { + label: "Netherlands", + value: "nl", + }, + { + label: "Turkey", + value: "tr", + }, + { + label: "Italy", + value: "it", + }, + { + label: "Poland", + value: "pl", + }, + { + label: "Russia", + value: "ru", + }, + { + label: "South Africa", + value: "za", + }, + { + label: "United Arab Emirates", + value: "ae", + }, + { + label: "Saudi Arabia", + value: "sa", + }, + { + label: "Argentina", + value: "ar", + }, + { + label: "Brazil", + value: "br", + }, + { + label: "Australia", + value: "au", + }, + { + label: "China", + value: "cn", + }, + { + label: "Korea", + value: "kr", + }, + { + label: "Japan", + value: "jp", + }, + { + label: "India", + value: "in", + }, + { + label: "Palestine", + value: "ps", + }, + { + label: "Kuwait", + value: "kw", + }, + { + label: "Oman", + value: "om", + }, + { + label: "Qatar", + value: "qa", + }, + { + label: "Israel", + value: "il", + }, + { + label: "Morocco", + value: "ma", + }, + { + label: "Egypt", + value: "eg", + }, + { + label: "Iran", + value: "ir", + }, + { + label: "Libya", + value: "ly", + }, + { + label: "Yemen", + value: "ye", + }, + { + label: "Indonesia", + value: "id", + }, + { + label: "Pakistan", + value: "pk", + }, + { + label: "Bangladesh", + value: "bd", + }, + { + label: "Malaysia", + value: "my", + }, + { + label: "Philippines", + value: "ph", + }, + { + label: "Thailand", + value: "th", + }, + { + label: "Vietnam", + value: "vn", + }, +]; + +const LANGUAGES = [ + { + label: "English", + value: "en", + }, + { + label: "French", + value: "fr", + }, + { + label: "Spanish", + value: "es", + }, + { + label: "German", + value: "de", + }, + { + label: "Italian", + value: "it", + }, + { + label: "Portuguese", + value: "pt", + }, + { + label: "Dutch", + value: "nl", + }, + { + label: "Japanese", + value: "ja", + }, + { + label: "Korean", + value: "ko", + }, + { + label: "Chinese", + value: "zh", + }, + { + label: "Arabic", + value: "ar", + }, + { + label: "Russian", + value: "ru", + }, + { + label: "Turkish", + value: "tr", + }, + { + label: "Hindi", + value: "hi", + }, + { + label: "Auto-detect", + value: "auto", + }, +]; + +export default { + ANSWER_TYPES, + COUNTRIES, + LANGUAGES, +}; diff --git a/components/openperplex/openperplex.app.mjs b/components/openperplex/openperplex.app.mjs index b5be49b7bd2e0..e42b2c4d4688f 100644 --- a/components/openperplex/openperplex.app.mjs +++ b/components/openperplex/openperplex.app.mjs @@ -1,11 +1,75 @@ +import { axios } from "@pipedream/platform"; +import constants from "./common/constants.mjs"; + export default { type: "app", app: "openperplex", - propDefinitions: {}, + propDefinitions: { + query: { + type: "string", + label: "Query", + description: "The search query or question you want to ask", + }, + location: { + type: "string", + label: "Location", + description: "Country code for search context. This helps in providing localized results.", + options: constants.COUNTRIES, + optional: true, + }, + responseLanguage: { + type: "string", + label: "Response Language", + description: "Language code for the response. `auto` will auto-detect based on the query.", + default: "auto", + options: constants.LANGUAGES, + optional: true, + }, + answerType: { + type: "string", + label: "Answer Type", + description: "Format of the answer", + options: constants.ANSWER_TYPES, + optional: true, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _baseUrl() { + return "https://5e70fd93-e9b8-4b9c-b7d9-eea4580f330c.app.bhs.ai.cloud.ovh.net"; + }, + _headers() { + return { + "X-API-Key": this.$auth.api_key, + }; + }, + _makeRequest({ + $ = this, + path, + ...args + }) { + return axios($, { + url: `${this._baseUrl()}${path}`, + headers: this._headers(), + ...args, + }); + }, + simpleSearch(opts = {}) { + return this._makeRequest({ + path: "/search_simple", + ...opts, + }); + }, + getWebsiteScreenshot(opts = {}) { + return this._makeRequest({ + path: "/get_website_screenshot", + ...opts, + }); + }, + queryFromUrl(opts = {}) { + return this._makeRequest({ + path: "/query_from_url", + ...opts, + }); }, }, -}; \ No newline at end of file +}; diff --git a/components/openperplex/package.json b/components/openperplex/package.json index 787443d303fe7..202a6d8153816 100644 --- a/components/openperplex/package.json +++ b/components/openperplex/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/openperplex", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream OpenPerplex Components", "main": "openperplex.app.mjs", "keywords": [ @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.0.1" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca5885d32e1c7..f030317699e7b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6581,7 +6581,10 @@ importers: opengraph-io: 2.0.0 components/openperplex: - specifiers: {} + specifiers: + '@pipedream/platform': ^3.0.1 + dependencies: + '@pipedream/platform': 3.0.1 components/opensea: specifiers: @@ -12645,6 +12648,55 @@ packages: - aws-crt dev: false + /@aws-sdk/client-sso-oidc/3.600.0_tdq3komn4zwyd65w7klbptsu34: + resolution: {integrity: sha512-7+I8RWURGfzvChyNQSyj5/tKrqRbzRl7H+BnTOf/4Vsw1nFOi5ROhlhD4X/Y0QCTacxnaoNcIrqnY7uGGvVRzw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.600.0 + '@aws-sdk/core': 3.598.0 + '@aws-sdk/credential-provider-node': 3.600.0_f7n47caigsrjd2lr2szmwfuee4 + '@aws-sdk/middleware-host-header': 3.598.0 + '@aws-sdk/middleware-logger': 3.598.0 + '@aws-sdk/middleware-recursion-detection': 3.598.0 + '@aws-sdk/middleware-user-agent': 3.598.0 + '@aws-sdk/region-config-resolver': 3.598.0 + '@aws-sdk/types': 3.598.0 + '@aws-sdk/util-endpoints': 3.598.0 + '@aws-sdk/util-user-agent-browser': 3.598.0 + '@aws-sdk/util-user-agent-node': 3.598.0 + '@smithy/config-resolver': 3.0.3 + '@smithy/core': 2.2.3 + '@smithy/fetch-http-handler': 3.2.1 + '@smithy/hash-node': 3.0.2 + '@smithy/invalid-dependency': 3.0.2 + '@smithy/middleware-content-length': 3.0.2 + '@smithy/middleware-endpoint': 3.0.4 + '@smithy/middleware-retry': 3.0.6 + '@smithy/middleware-serde': 3.0.3 + '@smithy/middleware-stack': 3.0.3 + '@smithy/node-config-provider': 3.1.3 + '@smithy/node-http-handler': 3.1.2 + '@smithy/protocol-http': 4.0.3 + '@smithy/smithy-client': 3.1.6 + '@smithy/types': 3.3.0 + '@smithy/url-parser': 3.0.3 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.6 + '@smithy/util-defaults-mode-node': 3.0.6 + '@smithy/util-endpoints': 2.0.3 + '@smithy/util-middleware': 3.0.3 + '@smithy/util-retry': 3.0.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sts' + - aws-crt + dev: false + /@aws-sdk/client-sso/3.423.0: resolution: {integrity: sha512-znIufHkwhCIePgaYciIs3x/+BpzR57CZzbCKHR9+oOvGyufEPPpUT5bFLvbwTgfiVkTjuk6sG/ES3U5Bc+xtrA==} engines: {node: '>=14.0.0'} @@ -12880,7 +12932,7 @@ packages: dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.600.0 + '@aws-sdk/client-sso-oidc': 3.600.0_tdq3komn4zwyd65w7klbptsu34 '@aws-sdk/core': 3.598.0 '@aws-sdk/credential-provider-node': 3.600.0_f7n47caigsrjd2lr2szmwfuee4 '@aws-sdk/middleware-host-header': 3.598.0 @@ -12922,55 +12974,6 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sts/3.600.0_dseaa2p5u2yk67qiepewcq3hkq: - resolution: {integrity: sha512-KQG97B7LvTtTiGmjlrG1LRAY8wUvCQzrmZVV5bjrJ/1oXAU7DITYwVbSJeX9NWg6hDuSk0VE3MFwIXS2SvfLIA==} - engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.600.0 - '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0_f7n47caigsrjd2lr2szmwfuee4 - '@aws-sdk/middleware-host-header': 3.598.0 - '@aws-sdk/middleware-logger': 3.598.0 - '@aws-sdk/middleware-recursion-detection': 3.598.0 - '@aws-sdk/middleware-user-agent': 3.598.0 - '@aws-sdk/region-config-resolver': 3.598.0 - '@aws-sdk/types': 3.598.0 - '@aws-sdk/util-endpoints': 3.598.0 - '@aws-sdk/util-user-agent-browser': 3.598.0 - '@aws-sdk/util-user-agent-node': 3.598.0 - '@smithy/config-resolver': 3.0.3 - '@smithy/core': 2.2.3 - '@smithy/fetch-http-handler': 3.2.1 - '@smithy/hash-node': 3.0.2 - '@smithy/invalid-dependency': 3.0.2 - '@smithy/middleware-content-length': 3.0.2 - '@smithy/middleware-endpoint': 3.0.4 - '@smithy/middleware-retry': 3.0.6 - '@smithy/middleware-serde': 3.0.3 - '@smithy/middleware-stack': 3.0.3 - '@smithy/node-config-provider': 3.1.3 - '@smithy/node-http-handler': 3.1.2 - '@smithy/protocol-http': 4.0.3 - '@smithy/smithy-client': 3.1.6 - '@smithy/types': 3.3.0 - '@smithy/url-parser': 3.0.3 - '@smithy/util-base64': 3.0.0 - '@smithy/util-body-length-browser': 3.0.0 - '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.6 - '@smithy/util-defaults-mode-node': 3.0.6 - '@smithy/util-endpoints': 2.0.3 - '@smithy/util-middleware': 3.0.3 - '@smithy/util-retry': 3.0.2 - '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - dev: false - /@aws-sdk/core/3.556.0: resolution: {integrity: sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==} engines: {node: '>=14.0.0'} @@ -17352,7 +17355,7 @@ packages: '@aws-sdk/client-sns': 3.423.0 '@aws-sdk/client-sqs': 3.423.0 '@aws-sdk/client-ssm': 3.423.0 - '@aws-sdk/client-sts': 3.600.0_dseaa2p5u2yk67qiepewcq3hkq + '@aws-sdk/client-sts': 3.600.0 '@aws-sdk/s3-request-presigner': 3.609.0 '@pipedream/helper_functions': 0.3.12 '@pipedream/platform': 1.6.5