]> gitweb.factorcode.org Git - factor.git/blob - extra/curl/curl.factor
Revert "Fixes #2966"
[factor.git] / extra / curl / curl.factor
1 ! Copyright (C) 2014 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3
4 USING: alien alien.c-types alien.data alien.destructors
5 alien.syntax command-line curl.ffi destructors io
6 io.encodings.string io.encodings.utf8 io.streams.c kernel math
7 namespaces present sequences ;
8
9 IN: curl
10
11 <PRIVATE
12
13 DESTRUCTOR: curl_easy_cleanup
14
15 DESTRUCTOR: fclose
16
17 : check-code ( code -- )
18     CURLE_OK assert= ;
19
20 : curl-init ( -- CURL )
21     curl_easy_init &curl_easy_cleanup ;
22
23 : curl-set-opt ( CURL key value -- )
24     curl_easy_setopt check-code ;
25
26 : curl-set-url ( CURL url -- )
27     CURLOPT_URL swap present curl-set-opt ;
28
29 : curl-set-file ( CURL path -- )
30     CURLOPT_FILE swap "wb" fopen &fclose curl-set-opt ;
31
32 : curl-perform ( CURL -- )
33     curl_easy_perform check-code ;
34
35 PRIVATE>
36
37 : curl-download-to ( url path -- )
38     [
39         curl-init
40         [ swap curl-set-file ]
41         [ swap curl-set-url ]
42         [ curl-perform ] tri
43     ] with-destructors ;
44
45 : curl-main ( -- )
46     command-line get [
47         curl-init
48         [ swap curl-set-url ]
49         [ curl-perform ] bi
50     ] each ;
51
52 MAIN: curl-main