On Sunday, 5 April 2020 at 11:53:29 UTC, Petar Kirov [ZombineDev] wrote:
On Sunday, 5 April 2020 at 08:59:50 UTC, ikod wrote:
Hello!

Just a note that dlang-requests ver 1.1.0 released with new 'ByLine' interfaces added for get/post/put requests.

range algorithms can be applied to server responses, so that simple chain

getContentByLine("https://httpbin.org/anything";)
    .map!"cast(string)a"
    .filter!(a => a.canFind("data"))

should work.

These calls work lazily so you can apply them to large documents.

dlang-requests - HTTP client library, inspired by python-requests with goals:

small memory footprint
performance
simple, high level API
native D implementation

https://github.com/ikod/dlang-requests
https://code.dlang.org/packages/requests

Always waiting for your bugreports and proposals on project page.

Best regards!

Nice work!


I noticed that by default trace logging from requests is turned on, which is quite verbose. I checked the docs in the readme file and at first, I only saw suggestions on how to customize the logging by writing a LoggerInterceptor, which I thought was a bit too much for casual use. Only after a bit more digging I found that you were using std.experimental.logging (e.g. here [1]). Later I found that the SSL example in the readme used std.experimental.logging [2], but I think it would be better to explicitly mention it earlier on, e.g. like this:

/+dub.sdl:
dependency "requests" version="~>1.1"
+/

void main()
{
    import requests : getContentByLine;
import std : assumeUTF, canFind, each, filter, map, write, writeln;

    /*
* dlang_requests uses `std.experimental.logger` for interal logging.
     *
* The globalLogLevel is set to `LogLevel.all` by default in Phobos, which
     * may be too verbose for most applications.
     *
     * This can be changed like this:
     */
    import std.experimental.logger : globalLogLevel, LogLevel;
    globalLogLevel = LogLevel.info;

    getContentByLine("https://httpbin.org/anything";)
        .map!assumeUTF
        .filter!(a => a.canFind("data"))
        .each!write;
}


[1]: https://github.com/ikod/dlang-requests/blob/v1.1.0/source/requests/streams.d#L383

[2]: https://github.com/ikod/dlang-requests/blob/v1.1.0/README.md#ssl-settings

Reply via email to