Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

HttpQuery: Allow using http method DELETE. #294

Merged
merged 3 commits into from
Jan 3, 2024

Conversation

joseapontesPrisma
Copy link

Modification in the class HttpQuery to allow using the DELETE method.

Comment on lines +377 to +378
case "DELETE":
return new HttpDelete(url);
Copy link
Contributor

@alcarraz alcarraz Jan 2, 2024

Choose a reason for hiding this comment

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

Why not adding PATCH since we are at it?

Suggested change
case "DELETE":
return new HttpDelete(url);
case "DELETE":
return new HttpDelete(url);
case "PATCH":
HttpPatch patch = new HttpPatch(url);
payload = ctx.getString(requestName);
if (payload != null)
put.setEntity(new StringEntity(payload, getContentType(ctx)));
return patch;

Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn’t PATCH need a request entity body? (Like PUTor POST)

Copy link
Contributor

Choose a reason for hiding this comment

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

You're right, maybe that could be refactored since the setting of the payload is the same for three cases (all except two in fact), maybe that could go in an if? Or a helper method or a lambda that sets the payload. It could go something like this:

In the switch case create the request, or just call a factory method that receives the method name and the url and returns the instance.
Set the body if it's not GET.
Return.

Or with the lambda could be something like:

    Consumer<HttpEntityEnclosingRequestBase> setBody = (HttpEntityEnclosingRequestBase request) -> {
        String payload = ctx.getString(requestName);
        if (payload != null) {
            request.setEntity(new StringEntity(payload, getContentType(ctx)));
        }
    }

    private HttpRequestBase getHttpRequest(Context ctx) {
        String url = getURL(ctx);
        String payload;
        switch (ctx.getString(methodName)) {
            case "POST":
                HttpPost post = new HttpPost(url);
                setEntity.accept(post);
                return post;
            case "PUT":
                HttpPut put = new HttpPut(url);
                setEntity.accept(put);
                return put;
            case "GET":
                return new HttpGet(url);
            case "DELETE":
                return new HttpDelete(url);
            case "PATCH":
                HttpPatch patch = new HttpPatch(url);
                setEntity.accept(patch);
                return patch;

I'm not saying the refactoring should be done, and I'm aware I'm off-topic here :) .

Copy link
Contributor

Choose a reason for hiding this comment

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

FYI: I updated the suggestion.

Copy link
Contributor

Choose a reason for hiding this comment

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

Or just let the switch/case fall through with a little refactoring and comment

Comment on lines +377 to +378
case "DELETE":
return new HttpDelete(url);
Copy link
Contributor

Choose a reason for hiding this comment

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

Shouldn’t PATCH need a request entity body? (Like PUTor POST)

@ar ar merged commit cfaaf2a into jpos:master Jan 3, 2024
5 of 7 checks passed
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants