From 3419e223019cf061c4f0e56e5ccb9c51afa5c8cc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Sat, 31 Oct 2015 19:55:48 -0400 Subject: [PATCH] lib/linux: implement http_request using GDK events and Curl MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- lib/linux/http_request.nit | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/linux/http_request.nit diff --git a/lib/linux/http_request.nit b/lib/linux/http_request.nit new file mode 100644 index 0000000..bcc458b --- /dev/null +++ b/lib/linux/http_request.nit @@ -0,0 +1,39 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Implementation of `app::http_request` using GDK and Curl +module http_request + +intrude import app::http_request +private import curl +private import gtk::gdk + +redef class App + redef fun run_on_ui_thread(task) do gdk_threads_add_idle task +end + +redef class Text + redef fun http_get + do + var req = new CurlHTTPRequest(to_s) + var rep = req.execute + if rep isa CurlResponseSuccess then + return new HttpRequestResult(rep.body_str, null, rep.status_code) + else + assert rep isa CurlResponseFailed + var error = new IOError(rep.error_msg) + return new HttpRequestResult(null, error) + end + end +end -- 1.7.9.5