On Wed, Jun 3, 2020 at 4:23 AM Alan Carvalho de Assis <acas...@gmail.com> wrote:
>
> Hi Takashi,
>
> Do you think it could be possible to create a HTTP REST framework for
> NuttX similar to Ulfius:
>
> https://babelouest.github.io/ulfius/
>
> https://www.hackster.io/babelouest/http-rest-framework-in-c-for-embedded-systems-d34b0c
>
> It should be very useful feature.

do you mean the particular api? or its feature set?
anyway i can't think of any reason it's impossible for nuttx.

in case you are asking if i volunteer to create such a rich framework,
no, i don't. (sorry!)

>
> BR,
>
> Alan
>
> On 5/29/20, Takashi Yamamoto <yamam...@midokura.com.invalid> wrote:
> > hi,
> >
> > On Fri, May 29, 2020 at 11:53 PM Sebastien Lorquet <sebast...@lorquet.fr>
> > wrote:
> >>
> >> I think the web client could be rewritten to benefit from the curl port
> >> I started a while a go, which is available upstream:
> >>
> >> https://github.com/apache/incubator-nuttx-apps/tree/master/netutils/libcurl4nx
> >>
> >> Improving this curl port would benefit any app using it, not just the
> >> web client.
> >
> > i have looked at libcurl4n before i decided to use webclient.
> > my problem with libcurl4nx were:
> >
> > * weird name :-)
> > * it looked even less mature and incomplete than webclient.
> > * no users as far as i know.
> > * "easy" api was not that attractive. i hope it were "multi" api.
> > * it looked like an abandoned project. (i guess i was wrong on this
> > point as apparently you still care.)
> >
> > btw, is it a curl port?
> > i thought it was an independent project with a similar api.
> >
> >>
> >> Sebastien
> >>
> >> Le 29/05/2020 à 08:23, Takashi Yamamoto a écrit :
> >> > hi,
> >> >
> >> > On Fri, May 29, 2020 at 7:00 AM Gregory Nutt <spudan...@gmail.com>
> >> > wrote:
> >> >>
> >> >>> i want to add some stuff to apps/netutils/webclient.
> >> >>> for example,
> >> >>>
> >> >>> * ability to report http status to the caller
> >> >>> * ability to add some request headers
> >> >>> * put
> >> >>> * other content-type for post
> >> >>> * tls
> >> >>>
> >> >>> a question: how much api stability is expected for this?
> >> >> Of course we would like the code to be stable in the sense that it
> >> >> continues to behave correctly; I assume that you would carefully
> >> >> verify
> >> >> new features. But I think by stable you are referring to a fixed API.
> >> >> I
> >> >> don't think that is necessary either.  This is not a standard
> >> >> interface
> >> >> and it is not even documented.  People using non-standard,
> >> >> undocumented
> >> >> interfaces need to accept that they are subject to change without
> >> >> notice.
> >> >>
> >> >> A good explanation in comments of how to get legacy behavior I think
> >> >> is
> >> >> sufficient.  Do other people agree with that?
> >> >>
> >> >>> can i just add extra arguments to wget() etc?
> >> >>> or should i keep wget() intact and introduce a new set of symbols?
> >> >> I don't see any problems with extending wget().   We should do that
> >> >> wisely.  Perhaps it would be better if wget took a structure as an
> >> >> argument rather than a long, long parameter list.  I would personally
> >> >> prefer to see one wget() rather than the old wget() with a new wget2()
> >> >> which is the same but with different parameters.
> >> >>
> >> >> All current usage of wget() should be modified to use any changes that
> >> >> you make to the interface.  I find only examples/wget/ and nshlib/.
> >> >> Is
> >> >> that everything?
> >> > right now i'm thinking
> >> > 1. introduce something like the following. keep wget() etc as wrappers
> >> > of this in the meantime
> >> > 2. once things get stable, inline the existing users of wget() etc in
> >> > the tree, like examples/wget, one-by-one
> >> > 3. consider removing wget() etc
> >> >
> >> > struct webclient_context
> >> > {
> >> >      /* request parameters */
> >> >
> >> >      FAR const char *method;
> >> >      FAR const char *url;
> >> >      FAR const char * FAR const *headers;
> >> >      unsigned int *nheaders;
> >> >
> >> >      /* other parameters */
> >> >
> >> >      FAR char *buffer;
> >> >      int buflen;
> >> >      wget_callback_t callback,
> >> >      FAR void *callback_arg;
> >> >      FAR const struct webclient_tls_ops *tls_ops;
> >> >      FAR void *tls_ctx;
> >> >
> >> >      /* result */
> >> >
> >> >      int http_status;
> >> > };
> >> >
> >> > struct webclient_context ctx;
> >> > webclient_set_defaults(&ctx);
> >> > ctx.method = "GET";
> >> > ctx.url = "..."
> >> > :
> >> > ret = webclient_perform(&ctx);
> >

Reply via email to