-
Notifications
You must be signed in to change notification settings - Fork 152
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
HttpQuery: Allow using http method DELETE. #294
Conversation
case "DELETE": | ||
return new HttpDelete(url); |
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.
Why not adding PATCH
since we are at it?
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; |
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.
Shouldn’t PATCH need a request entity body? (Like PUTor POST)
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.
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 :) .
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.
FYI: I updated the suggestion.
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.
Or just let the switch/case fall through with a little refactoring and comment
case "DELETE": | ||
return new HttpDelete(url); |
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.
Shouldn’t PATCH need a request entity body? (Like PUTor POST)
Modification in the class HttpQuery to allow using the DELETE method.