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

No easy way to set options in client requests #89

Closed
doxxx opened this issue Jan 9, 2024 · 8 comments
Closed

No easy way to set options in client requests #89

doxxx opened this issue Jan 9, 2024 · 8 comments

Comments

@doxxx
Copy link

doxxx commented Jan 9, 2024

Using CoAPClient, there is no way to set options in a request. It's possible to do so by constructing a CoapRequest manually, but to do so requires re-implementing a bunch of functionality already present in CoAPClient (gen_message_id, request_path_with_timeout and parse_coap_url in particular).

@Covertness
Copy link
Owner

Which option do you want to set ? Coap has many options, each of them has its own special role. I think generic set function won't be very useful. I would like to implement a specific function if you have a common scenario.

@doxxx
Copy link
Author

doxxx commented Jan 10, 2024

The ones I'm interested in are the Accept and Content-Format options.

@doxxx
Copy link
Author

doxxx commented Jan 10, 2024

If the CoAPClient interface is getting too complex, a request builder may be something to explore.

@osobiehl
Copy link
Contributor

I'm down to rework part of the client and expose a low-level perform_request_through_transport method to replace request_path_with_timeout as the lowest-level method to allow you to customize whatever you want on the request. Honestly a Builder isn't something I see in scope because we just use coap-lite.

If you're willing to be a little bit patient I can do the change after the DTLS support PR.

@doxxx
Copy link
Author

doxxx commented Jan 10, 2024

Right now it's a nice to have. I couldn't find a CLI CoAP client, so I wrote my own. When I was contemplating the features it should include, one of the main ones that occurred to me was content-type support. However, I don't need content-type support for my own purposes yet.

@Covertness
Copy link
Owner

Closed. Reopen it if you have any new problem about it.

@doxxx
Copy link
Author

doxxx commented Jan 19, 2024

Thanks, I was able to rework my CLI tool to use the latest git version of coap-rs.

For those who may be interested: Instead of going the full builder route, I implemented a helper extension trait to make it easier to set some options on a request: https://bitbucket.org/gordon_tyler/workspace/snippets/XEB45a

@doxxx
Copy link
Author

doxxx commented Jan 22, 2024

Although, a similar situation has cropped up with observe and observe_with_timeout -- there's no way to set options on the request without re-implementing those rather non-trivial functions myself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants