diff options
Diffstat (limited to 'client/src/http/curl.scala')
-rw-r--r-- | client/src/http/curl.scala | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/client/src/http/curl.scala b/client/src/http/curl.scala new file mode 100644 index 0000000..1eda584 --- /dev/null +++ b/client/src/http/curl.scala @@ -0,0 +1,82 @@ +package triad +package http + +import scala.scalanative.native._ + +object curlh { + final val CURL_ERROR_SIZE = 256 + + type CURL = Ptr[CStruct0] + + /* + * #define CURLOPTTYPE_LONG 0 + * #define CURLOPTTYPE_OBJECTPOINT 10000 + * #define CURLOPTTYPE_STRINGPOINT 10000 + * #define CURLOPTTYPE_FUNCTIONPOINT 20000 + * #define CURLOPTTYPE_OFF_T 30000 + */ + + type CURLcode = CInt + object CURLcode { + final val CURL_OK: CInt = 0 + } + + type CURLoption = CInt + object CURLoption { + final val CURLOPT_VERBOSE: CInt = 41 + final val CURLOPT_POSTFIELDSIZE: CInt = 60 + final val CURLOPT_WRITEDATA: CInt = 10001 + final val CURLOPT_URL: CInt = 10002 + final val CURLOPT_ERRORBUFFER: CInt = 10010 + final val CURLOPT_POSTFIELDS: CInt = 10015 + final val CURLOPT_HTTPHEADER: CInt = 10023 + final val CURLOPT_HEADERDATA: CInt = 10029 + final val CURLOPT_CUSTOMREQUEST: CInt = 10036 + final val CURLOPT_WRITEFUNCTION: CInt = 20011 + } + + type CURLINFO = CInt + object CURLINFO { + final val CURLINFO_RESPONSE_CODE = 0x200002 + } + + type WriteFunction = CFunctionPtr4[ + Ptr[Byte], // data + CSize, // size + CSize, // nmemb + Ptr[Byte], // userdata + CSize // return + ] + + type curl_slist = Ptr[CStruct0] + +} + +@link("curl") +@extern +object curl { + import curlh._ + + def curl_easy_init(): CURL = extern + + def curl_easy_setopt(curl: CURL, + option: CURLoption, + parameter: CVararg*): CURLcode = extern + + def curl_easy_perform(curl: CURL): CURLcode = extern + + def curl_easy_getinfo(curl: CURL, + option: CURLINFO, + parameter: CVararg*): CURLcode = extern + + def curl_easy_cleanup(curl: CURL): Unit = extern + + def curl_easy_strerror(curl: CURL, code: CURLcode): CString = extern + + def curl_slist_append(head: curl_slist, string: CString): curl_slist = extern + + def curl_slist_free_all(head: curl_slist): Unit = extern + + def curl_version(): CString = extern + +} |