Skip to content
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

Add missing REST methods to Curl Client (SwiftOtter's SOP-348) #39330

Open
wants to merge 7 commits into
base: 2.4-develop
Choose a base branch
from

Conversation

lbajsarowicz
Copy link
Contributor

@lbajsarowicz lbajsarowicz commented Nov 5, 2024

Description (*)

There are 9 methods in the HTTP protocol (https://en.wikipedia.org/wiki/HTTP).
Magento implements just 2 of them, so when you need to make requests to remote environments using Framework HTTP Client, you end up with HTTP 411 error.

This Pull Request adds missing methods with their payload support:

  • PUT
  • PATCH
  • DELETE

Related Pull Requests

Fixed Issues (if relevant)

  1. Fixes magento/magento2#<issue_number>

Manual testing scenarios (*)

  1. ...
  2. ...

Questions or comments

Contribution checklist (*)

  • Pull request has a meaningful description of its purpose
  • All commits are accompanied by meaningful commit messages
  • All new or changed code is covered with unit/integration tests (if applicable)
  • README.md files for modified modules are updated and included in the pull request if any README.md predefined sections require an update
  • All automated tests passed successfully (all builds are green)

Resolved issues:

  1. resolves [Issue] Add missing REST methods to Curl Client (SwiftOtter's SOP-348) #39341: Add missing REST methods to Curl Client (SwiftOtter's SOP-348)

Copy link

m2-assistant bot commented Nov 5, 2024

Hi @lbajsarowicz. Thank you for your contribution!
Here are some useful tips on how you can test your changes using Magento test environment.
❗ Automated tests can be triggered manually with an appropriate comment:

  • @magento run all tests - run or re-run all required tests against the PR changes
  • @magento run <test-build(s)> - run or re-run specific test build(s)
    For example: @magento run Unit Tests

<test-build(s)> is a comma-separated list of build names.

Allowed build names are:
  1. Database Compare
  2. Functional Tests CE
  3. Functional Tests EE
  4. Functional Tests B2B
  5. Integration Tests
  6. Magento Health Index
  7. Sample Data Tests CE
  8. Sample Data Tests EE
  9. Sample Data Tests B2B
  10. Static Tests
  11. Unit Tests
  12. WebAPI Tests
  13. Semantic Version Checker

You can find more information about the builds here
ℹ️ Run only required test builds during development. Run all test builds before sending your pull request for review.


For more details, review the Code Contributions documentation.
Join Magento Community Engineering Slack and ask your questions in #github channel.

@lbajsarowicz
Copy link
Contributor Author

@magento run all tests

@lbajsarowicz lbajsarowicz changed the title SwiftOtter-SOP-348 Add missing REST methods to Curl Client Add missing REST methods to Curl Client (SwiftOtter's SOP-348) Nov 5, 2024
Copy link
Contributor

@michalbiarda michalbiarda left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a few comments with possible improvements. Also, I think you forgot to add CONNECT method.

* @param string $uri
* @return void
*/
public function delete($uri)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to HTTP documentation, DELETE request can include optional payload.

* @param string $uri
* @return void
*/
public function options($uri)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to HTTP documentation, OPTIONS request can include optional payload.

* @param string $uri
* @return void
*/
public function head($uri)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to HTTP documentation, HEAD request can include optional payload.

@lbajsarowicz
Copy link
Contributor Author

@ihor-sviziev or @bgorski Can I ask you for Code Review in this specific case?

@engcom-Hotel engcom-Hotel added Triage: Dev.Experience Issue related to Developer Experience and needs help with Triage to Confirm or Reject it Priority: P3 May be fixed according to the position in the backlog. labels Nov 7, 2024
@engcom-Hotel
Copy link
Contributor

@magento create issue

@engcom-Hotel
Copy link
Contributor

@magento run all tests

@engcom-Hotel engcom-Hotel self-requested a review November 18, 2024 08:18
Copy link
Contributor

@engcom-Hotel engcom-Hotel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @lbajsarowicz,

Thanks for the contribution!

It seems this PR has been already reviewed by @michalbiarda. We request you to please address them and also please fix the failed automated tests.

Thanks

@engcom-Dash
Copy link
Contributor

@magento run all tests

@engcom-Dash
Copy link
Contributor

I added a few comments with possible improvements. Also, I think you forgot to add CONNECT method.

@michalbiarda @engcom-Hotel: I have added an optional payload for the DELETE, OPTIONS, and HEAD methods. Additionally, I added the CONNECT method. Please review it. Thanks.

cc: @lbajsarowicz

@engcom-Dash
Copy link
Contributor

@magento run all tests

@engcom-Hotel
Copy link
Contributor

@magento run Functional Tests B2B, Functional Tests CE

Copy link
Contributor

@engcom-Hotel engcom-Hotel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @lbajsarowicz @engcom-Dash,

Please refer to the below review comments.

Thanks

declare(strict_types=1);

namespace Magento\TestFramework\Helper;

use Magento\Framework\HTTP\Client\Curl;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In line no. 53:

$this->curl = new Curl();

I suggest you add the parameter $curl as null and use ObjectManager to initialize it. Please refer to the $this->deploymentConfig

@@ -1,30 +0,0 @@
<?php
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not recommended to delete the existing file, as other third-party extensions might use it. Instead, mark it as deprecated.

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: P3 May be fixed according to the position in the backlog. Progress: needs update Project: Community Picked PRs upvoted by the community Triage: Dev.Experience Issue related to Developer Experience and needs help with Triage to Confirm or Reject it
Projects
Status: Changes Requested
Development

Successfully merging this pull request may close these issues.

[Issue] Add missing REST methods to Curl Client (SwiftOtter's SOP-348)
5 participants