On Fri, May 29, 2020 at 3:23 PM Takashi Yamamoto <yamam...@midokura.com> wrote: > > 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
PR for this step: https://github.com/apache/incubator-nuttx-apps/pull/333 > 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);