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
Eliminate RCurl dependency #172
Comments
|
I can help with this by implementing the required stuff in the |
@jeroenooms hmmmmm, that'd be great actually |
Do we really need all of those functions? It seems like |
@jeroenooms that was just a list of all the functions I currently use. I imagine a new interface would be considerably simpler Ideally, I'd like to eliminate |
That might be a bit specific to my needs, but it would be useful to have an interface that sets options, does the request and always resets the handle on failure. |
I don't understand |
That might be the better solution (most of httr is working around RCurl's binding to curl, so I'm not surprised if there's many better ways of doing things). I think the main reason to re-use a handle is to retain the http connection pool and cookies |
It turns out that The more typical and reliable use is to hardcode a list of curl options (and their integer) in the client, in our case the R package. If the user tries sets an option which is not available (because his package was built against an old version of libcurl), then Do you think that this would be sufficient, or do we really need support for listing available options in |
That seems fine to me. |
I should mention that I'd actually prefer to include libcurl sources in the package - then we'd always know exactly what version of curl we're binding against. |
@hadley that is unfortunately not going to work. First of all libcurl depends on openssl, libz, libidn, libssh, all of which are a bitch to build. Also CRAN has policy against duplicating sources already available on major systems, for copyright and maintenance reasons I think. But especially on linux this is really not done, and you should always build against libraries that ship with the OS. This is quite important for system administration. For example, if there is a critical security patch in openssl, the sysadmin should be able to update libssl on the system, which automatically fixes any software on the system using ssl. If all software would ship their own version of dependencies, servers would be a complete mess. |
I didn't realise curl shipped with most oses. I'm mostly concerned about the windows cran versions which seem to be very up to date - but you're dealing with windows separately, right? |
Yes I'm taking care of windows. |
I saw this announced for the future R 3.2.0 release. Will this help avoid the dependency on RCurl?
|
Follow https://github.com/jeroenooms/curl strategy to link to system curl.
Need to implement:
RCurl::listCurlOptions()
RCurl::getCurlOptionsConstants()
RCurl::getCurlOptionTypes(constants)
RCurl::curlVersion()$version
RCurl::curlVersion()$ssl_version)
RCurl::curlEscape()
andRCurl::curlUnescape()
RCurl::getCurlInfo()
RCurl::getCurlHandle(cookiefile = cookie_path, .defaults = list())
RCurl::base64(hash)
RCurl::curlSetOpt()
RCurl::.postForm()
RCurl::curlPerform()
RCurl::fileUpload()
RCurl::CFILE()
RCurl::binaryBuffer()
The text was updated successfully, but these errors were encountered: