public void Run() { // curl_global_init() with default flags. var global = CurlNative.Init(); // curl_easy_init() to create easy handle. var easy = CurlNative.Easy.Init(); try { var dataCopier = new DataCallbackCopier(); CurlNative.Easy.SetOpt(easy, CURLoption.URL, "http://httpbin.org/ip"); CurlNative.Easy.SetOpt(easy, CURLoption.WRITEFUNCTION, dataCopier.DataHandler); var result = CurlNative.Easy.Perform(easy); Console.WriteLine($"Result code: {result}."); Console.WriteLine(); Console.WriteLine("Response body:"); Console.WriteLine(Encoding.UTF8.GetString(dataCopier.Stream.ToArray())); } finally { easy.Dispose(); if (global == CURLcode.OK) { CurlNative.Cleanup(); } } }
internal NativeMemory() { ErrorBuffer = Marshal.AllocCoTaskMem(ErrorBufferSize); Curl = CurlNative.EasyInit(); if (Curl == CurlNative.CurlHandle.Null) { throw new CurlEasyInitializeException("Curl Easy failed to initialize!"); } }
public void Run() { if (CurlNative.Init() != CURLcode.OK) { throw new Exception("Could not init curl"); } var reqProvider = new MyRequestProvider(); var resConsumer = new MyResponseConsumer(); using (var pipe = new HyperPipe <MyRequestContext>(4, reqProvider, resConsumer)) { pipe.RunLoopWait(); } }
public void Run() { DllLoader.Init(); // curl_global_init() with default flags. var global = CurlNative.Init(); // curl_easy_init() to create easy handle. var easy = CurlNative.Easy.Init(); try { var postData = "fieldname1=fieldvalue1&fieldname2=fieldvalue2"; CurlNative.Easy.SetOpt(easy, CURLoption.URL, "http://httpbin.org/post"); // This one has to be called before setting COPYPOSTFIELDS. CurlNative.Easy.SetOpt(easy, CURLoption.POSTFIELDSIZE, Encoding.ASCII.GetByteCount(postData)); CurlNative.Easy.SetOpt(easy, CURLoption.COPYPOSTFIELDS, postData); var stream = new MemoryStream(); CurlNative.Easy.SetOpt(easy, CURLoption.WRITEFUNCTION, (data, size, nmemb, user) => { var length = (int)size * (int)nmemb; var buffer = new byte[length]; Marshal.Copy(data, buffer, 0, length); stream.Write(buffer, 0, length); return((UIntPtr)length); }); var result = CurlNative.Easy.Perform(easy); Console.WriteLine($"Result code: {result}."); Console.WriteLine(); Console.WriteLine("Response body:"); Console.WriteLine(Encoding.UTF8.GetString(stream.ToArray())); } finally { easy.Dispose(); if (global == CURLcode.OK) { CurlNative.Cleanup(); } } }
public void Run() { // curl_global_init() with default flags. var global = CurlNative.Init(); // curl_easy_init() to create easy handle. var easy = CurlNative.Easy.Init(); try { var dataCopier = new DataCallbackCopier(); CurlNative.Easy.SetOpt(easy, CURLoption.URL, "http://httpbin.org/headers"); CurlNative.Easy.SetOpt(easy, CURLoption.WRITEFUNCTION, dataCopier.DataHandler); // Initialize HTTP header list with first value. var headers = CurlNative.Slist.Append(SafeSlistHandle.Null, "X-Foo: Bar"); // Add one more value to existing HTTP header list. CurlNative.Slist.Append(headers, "X-Qwerty: Asdfgh"); // Configure libcurl easy handle to send HTTP headers we configured. CurlNative.Easy.SetOpt(easy, CURLoption.HTTPHEADER, headers.DangerousGetHandle()); var result = CurlNative.Easy.Perform(easy); // Cleanup HTTP header list after request has complete. CurlNative.Slist.FreeAll(headers); Console.WriteLine($"Result code: {result}."); Console.WriteLine(); Console.WriteLine("Response body:"); Console.WriteLine(Encoding.UTF8.GetString(dataCopier.Stream.ToArray())); } finally { easy.Dispose(); if (global == CURLcode.OK) { CurlNative.Cleanup(); } } }
private static void UsingCurlThinGet() { var global = CurlNative.Init(); // curl_easy_init() to create easy handle. var easy = CurlNative.Easy.Init(); try { CurlNative.Easy.SetOpt(easy, CURLoption.URL, "https://api.github.com/users/octocat"); // CurlNative.Easy.SetOpt(easy, CURLoption.URL, "http://httpbin.org/ip"); var stream = new MemoryStream(); var curlSlist = new CurlSlist(); curlSlist.Append("User-Agent: Awesome Octocat App"); CurlNative.Easy.SetOpt(easy, CURLoption.HTTPHEADER, curlSlist.Handle); CurlNative.Easy.SetOpt(easy, CURLoption.WRITEFUNCTION, (data, size, nmemb, user) => { var length = (int)size * (int)nmemb; var buffer = new byte[length]; Marshal.Copy(data, buffer, 0, length); stream.Write(buffer, 0, length); return((UIntPtr)length); }); var result = CurlNative.Easy.Perform(easy); Console.WriteLine($"Result code: {result}."); Console.WriteLine(); Console.WriteLine("Response body:"); Console.WriteLine(Encoding.UTF8.GetString(stream.ToArray())); } finally { easy.Dispose(); if (global == CURLcode.OK) { CurlNative.Cleanup(); } } }
public void Run() { DllLoader.Init(); // curl_global_init() with default flags. var global = CurlNative.Init(); // curl_easy_init() to create easy handle. var easy = CurlNative.Easy.Init(); try { CurlNative.Easy.SetOpt(easy, CURLoption.URL, "http://httpbin.org/ip"); var stream = new MemoryStream(); CurlNative.Easy.SetOpt(easy, CURLoption.WRITEFUNCTION, (data, size, nmemb, user) => { var length = (int)size * (int)nmemb; var buffer = new byte[length]; Marshal.Copy(data, buffer, 0, length); stream.Write(buffer, 0, length); return((UIntPtr)length); }); var result = CurlNative.Easy.Perform(easy); Console.WriteLine($"Result code: {result}."); Console.WriteLine(); Console.WriteLine("Response body:"); Console.WriteLine(Encoding.UTF8.GetString(stream.ToArray())); } finally { easy.Dispose(); if (global == CURLcode.OK) { CurlNative.Cleanup(); } } }
public void Run() { // curl_global_init() with default flags. var global = CurlNative.Init(); // curl_easy_init() to create easy handle. var easy = CurlNative.Easy.Init(); try { var postData = "fieldname1=fieldvalue1&fieldname2=fieldvalue2"; CurlNative.Easy.SetOpt(easy, CURLoption.URL, "http://httpbin.org/post"); // This one has to be called before setting COPYPOSTFIELDS. CurlNative.Easy.SetOpt(easy, CURLoption.POSTFIELDSIZE, Encoding.ASCII.GetByteCount(postData)); CurlNative.Easy.SetOpt(easy, CURLoption.COPYPOSTFIELDS, postData); var dataCopier = new DataCallbackCopier(); CurlNative.Easy.SetOpt(easy, CURLoption.WRITEFUNCTION, dataCopier.DataHandler); var result = CurlNative.Easy.Perform(easy); Console.WriteLine($"Result code: {result}."); Console.WriteLine(); Console.WriteLine("Response body:"); Console.WriteLine(Encoding.UTF8.GetString(dataCopier.Stream.ToArray())); } finally { easy.Dispose(); if (global == CURLcode.OK) { CurlNative.Cleanup(); } } }
// ReSharper disable once HeapView.BoxingAllocation internal CurlShareOptionException(CurlShareCode error) : base(CurlNative.GetShareError(error)) { Error = error; }
public void ErrorTest(string result, CurlCode code) { Assert.Equal(result, MarshalString.Utf8ToString(CurlNative.EasyStrError(code))); }