-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New Components - buysellads #17505
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Components - buysellads #17505
Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎ |
WalkthroughA BuySellAds integration is implemented, introducing a reusable app module with property definitions and API helpers. Four new actions are added to fetch line items, daily stats, creatives, and creatives daily stats, each supporting optional date range and CSV output. The package manifest is updated to include dependencies. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Action
participant BuySellAdsApp
participant BuySellAdsAPI
User->>Action: Provide input (lineItemId, dates, csvOutput)
Action->>BuySellAdsApp: Call appropriate method (e.g., listLineItems)
BuySellAdsApp->>BuySellAdsAPI: Make HTTP request with params
BuySellAdsAPI-->>BuySellAdsApp: Return data
BuySellAdsApp-->>Action: Return formatted data
Action-->>User: Output results (JSON or CSV)
Assessment against linked issues
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
components/buysellads/actions/get-creatives-daily-stats/get-creatives-daily-stats.mjsOops! Something went wrong! :( ESLint: 8.57.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs components/buysellads/actions/get-daily-stats/get-daily-stats.mjsOops! Something went wrong! :( ESLint: 8.57.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs components/buysellads/actions/get-creatives/get-creatives.mjsOops! Something went wrong! :( ESLint: 8.57.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (4)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (3)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
components/buysellads/buysellads.app.mjs (2)
20-31: Add date format validation for better user experience.The date props specify
yyyy-mm-ddformat in the description but lack validation. Consider adding format validation to prevent API errors.startDate: { type: "string", label: "Start Date", description: "The start date in `yyyy-mm-dd` format", optional: true, + pattern: "^\\d{4}-\\d{2}-\\d{2}$", }, endDate: { type: "string", label: "End Date", description: "The end date in `yyyy-mm-dd` format", optional: true, + pattern: "^\\d{4}-\\d{2}-\\d{2}$", },
55-78: Add error handling for API methods.The API methods lack error handling which could lead to unhandled promise rejections. Consider adding try-catch blocks or letting the caller handle errors explicitly.
listLineItems(opts = {}) { - return this._makeRequest({ - path: "/lineitems", - ...opts, - }); + try { + return this._makeRequest({ + path: "/lineitems", + ...opts, + }); + } catch (error) { + throw new Error(`Failed to fetch line items: ${error.message}`); + } },Apply similar error handling to other list methods.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (6)
components/buysellads/actions/get-creatives-daily-stats/get-creatives-daily-stats.mjs(1 hunks)components/buysellads/actions/get-creatives/get-creatives.mjs(1 hunks)components/buysellads/actions/get-daily-stats/get-daily-stats.mjs(1 hunks)components/buysellads/actions/get-line-items/get-line-items.mjs(1 hunks)components/buysellads/buysellads.app.mjs(1 hunks)components/buysellads/package.json(2 hunks)
🧰 Additional context used
🧠 Learnings (6)
components/buysellads/package.json (1)
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.
components/buysellads/actions/get-daily-stats/get-daily-stats.mjs (2)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-07-04T18:11:59.822Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
components/buysellads/actions/get-creatives/get-creatives.mjs (3)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-07-04T18:11:59.822Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".
components/buysellads/actions/get-creatives-daily-stats/get-creatives-daily-stats.mjs (2)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-07-04T18:11:59.822Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
components/buysellads/actions/get-line-items/get-line-items.mjs (3)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-07-04T18:11:59.822Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: In the Salesloft API integration (components/salesloft/salesloft.app.mjs), the _makeRequest method returns response.data which directly contains arrays for list endpoints like listPeople, listCadences, listUsers, and listAccounts. The propDefinitions correctly call .map() directly on these responses without needing to destructure a nested data property.
components/buysellads/buysellads.app.mjs (4)
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: In the Salesloft API integration (components/salesloft/salesloft.app.mjs), the _makeRequest method returns response.data which directly contains arrays for list endpoints like listPeople, listCadences, listUsers, and listAccounts. The propDefinitions correctly call .map() directly on these responses without needing to destructure a nested data property.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: The Salesloft API list endpoints (listPeople, listCadences, listUsers, listAccounts) return arrays directly in the response body, not wrapped in a metadata object with a nested data property. The _makeRequest method correctly returns response.data which contains the arrays that can be mapped over directly in propDefinitions.
Learnt from: js07
PR: PipedreamHQ/pipedream#17375
File: components/zerobounce/actions/get-validation-results-file/get-validation-results-file.mjs:23-27
Timestamp: 2025-07-01T17:07:48.193Z
Learning: "dir" props in Pipedream components are hidden in the component form and not user-facing, so they don't require labels or descriptions for user clarity.
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#13961
File: components/fakturoid/actions/create-invoice/create-invoice.mjs:95-99
Timestamp: 2024-10-15T15:07:38.361Z
Learning: An "object array" type is not yet supported for Pipedream props.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Verify TypeScript components
- GitHub Check: Publish TypeScript components
- GitHub Check: pnpm publish
- GitHub Check: Lint Code Base
🔇 Additional comments (9)
components/buysellads/package.json (2)
3-3: LGTM: Version bump aligns with new functionality.The version bump from 0.0.1 to 0.1.0 is appropriate for the addition of new BuySellAds actions and enhanced app functionality.
15-16: LGTM: Dependency addition follows best practices.The addition of
@pipedream/platformas a dependency is correct and necessary for the axios HTTP client used in the app methods.components/buysellads/actions/get-creatives/get-creatives.mjs (1)
1-53: LGTM: Well-structured action implementation.The action follows Pipedream conventions with proper prop definitions, API parameter mapping, and summary message formatting. The parameter name difference between
lineItemId(prop) andlineitemId(API parameter) appears intentional to match the BuySellAds API specification.components/buysellads/actions/get-daily-stats/get-daily-stats.mjs (1)
1-53: LGTM: Consistent action implementation.The action maintains consistency with other BuySellAds actions, properly handles optional parameters, and follows the established patterns for prop definitions and API calls.
components/buysellads/actions/get-line-items/get-line-items.mjs (1)
1-46: LGTM: Appropriate action design.The action correctly omits the
lineItemIdprop since it fetches all line items, while maintaining consistency with the other actions for date filtering and CSV output options.components/buysellads/actions/get-creatives-daily-stats/get-creatives-daily-stats.mjs (1)
1-53: LGTM: Consistent and well-implemented action.The action maintains consistency with the other BuySellAds actions, properly handles all required parameters, and follows the established patterns for prop definitions and API interactions.
components/buysellads/buysellads.app.mjs (3)
1-1: LGTM: Clean import statement.The axios import from @pipedream/platform follows the standard pattern for Pipedream components.
43-54: LGTM: Well-structured HTTP request method.The
_makeRequestmethod correctly handles axios configuration, URL construction, and API key authentication. The parameter spreading pattern is clean and flexible.
12-18: No changes needed foroptions()response handlingThe
listLineItems()method returns the unwrapped array from the BuySellAds API (ouraxios($, …)helper returnsresponse.datadirectly). Calling.map()on the result is safe and aligns with how other list endpoints are implemented in this codebase.
GTFalcao
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
|
/approve |
Resolves #15484
Summary by CodeRabbit