On Mon, Nov 9, 2020 at 9:50 PM rinfz via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:
On Monday, 9 November 2020 at 20:40:59 UTC, rinfz wrote:
> On Monday, 9 November 2020 at 19:55:07 UTC, Vino wrote:
>> ...
>
> The only curl option you need to set within the loop is the
> CurlOption.url. So your foreach block should look more like:
>
> foreach (...) {
>     string url = chain(apihost, only(':'), to!string(apiport),
> apiuri).to!string;
>     https.handle.set(CurlOption.url, url);
>     https.perform();
>     scope(failure) exit(-4);
>     scope(exit) https.shutdown;
>     apidata.insert(tuple(seq, cast(string) content));
>     content = [];
> }
>
> Every other line can be placed before the foreach.

In fact, you don't need url in there either since it's not
dependent on loop variables, and you don't need the scope guards
if this is running in main (you can move them out of the loop
too).

foreach (...) {
     https.handle.set(CurlOption.url, url);
     https.perform();
     apidata.insert(tuple(seq, cast(string) content));
     content = [];
}

In fact he does not need foreach. Because he use it on empty result