mkcsrc: clear OLDNITCOPT in src/Makefile
[nit.git] / examples / curl_http.nit
index e86514b..079f12c 100644 (file)
@@ -26,13 +26,11 @@ class MyHttpFetcher
        var curl: Curl
        var our_body: String = ""
 
-       init do self.curl = new Curl
+       init(curl: Curl) do self.curl = curl
 
        # Release curl object
        fun destroy do self.curl.destroy
 
-       fun request(url: String): nullable CurlRequest do return self.curl.http_request(url)
-
        # Header callback
        redef fun header_callback(line: String) do
                # We keep this callback silent for testing purposes
@@ -51,84 +49,64 @@ end
 if args.length < 2 then
        print "Usage: curl_http <method wished [POST, GET, GET_FILE]> <target url>"
 else
-
-       var myHttpFetcher = new MyHttpFetcher
+       var curl = new Curl
        var url = args[1]
+       var request = new CurlHTTPRequest(url, curl)
 
        # HTTP Get Request
        if args[0] == "GET" then
-               var getContentRequest = myHttpFetcher.request(url)
-               if getContentRequest isa CurlHTTPRequest then
-
-                       getContentRequest.verbose = false
-                       var getResponse = getContentRequest.execute
-
-                       if getResponse isa CurlResponseSuccess then
-                               print "Status code : {getResponse.status_code}"
-                               print "Body : {getResponse.body_str}"
-                       else if getResponse isa CurlResponseFailed then
-                               print "Error code : {getResponse.error_code}"
-                               print "Error msg : {getResponse.error_msg}"
-                       end
-
-               else
-                       print "Wrong init with Curl HTTP request"
+               request.verbose = false
+               var getResponse = request.execute
+
+               if getResponse isa CurlResponseSuccess then
+                       print "Status code : {getResponse.status_code}"
+                       print "Body : {getResponse.body_str}"
+               else if getResponse isa CurlResponseFailed then
+                       print "Error code : {getResponse.error_code}"
+                       print "Error msg : {getResponse.error_msg}"
                end
 
-               # HTTP Post Request
+       # HTTP Post Request
        else if args[0] == "POST" then
-               var postContentRequest = myHttpFetcher.request(url)
-               if postContentRequest isa CurlHTTPRequest then
-
-                       postContentRequest.delegate = myHttpFetcher
-                       var postDatas = new HeaderMap
-                       postDatas["Bugs Bunny"] = "Daffy Duck"
-                       postDatas["Batman"] = "Robin likes special characters @#ùà!è§'(\"é&://,;<>∞~*"
-                       postDatas["Batman"] = "Yes you can set multiple identical keys, but APACHE will consider only once, the last one"
-                       postContentRequest.datas = postDatas
-                       postContentRequest.verbose = false
-                       var postResponse = postContentRequest.execute
-
-                       print "Our body from the callback : {myHttpFetcher.our_body}"
-
-                       if postResponse isa CurlResponseSuccess then
-                               print "*** Answer ***"
-                               print "Status code : {postResponse.status_code}"
-                               print "Body should be empty, because we decided to manage callbacks : {postResponse.body_str.length}"
-                       else if postResponse isa CurlResponseFailed then
-                               print "Error code : {postResponse.error_code}"
-                               print "Error msg : {postResponse.error_msg}"
-                       end
-
-               else
-                       print "Wrong init with Curl HTTP request"
+               var myHttpFetcher = new MyHttpFetcher(curl)
+               request.delegate = myHttpFetcher
+
+               var postDatas = new HeaderMap
+               postDatas["Bugs Bunny"] = "Daffy Duck"
+               postDatas["Batman"] = "Robin likes special characters @#ùà!è§'(\"é&://,;<>∞~*"
+               postDatas["Batman"] = "Yes you can set multiple identical keys, but APACHE will consider only once, the last one"
+               request.datas = postDatas
+               request.verbose = false
+               var postResponse = request.execute
+
+               print "Our body from the callback : {myHttpFetcher.our_body}"
+
+               if postResponse isa CurlResponseSuccess then
+                       print "*** Answer ***"
+                       print "Status code : {postResponse.status_code}"
+                       print "Body should be empty, because we decided to manage callbacks : {postResponse.body_str.length}"
+               else if postResponse isa CurlResponseFailed then
+                       print "Error code : {postResponse.error_code}"
+                       print "Error msg : {postResponse.error_msg}"
                end
 
-               # HTTP Get to file Request
+       # HTTP Get to file Request
        else if args[0] == "GET_FILE" then
-               var downloadFileRequest = myHttpFetcher.request(url)
-               if downloadFileRequest isa CurlHTTPRequest then
-
-                       var headers = new HeaderMap
-                       headers["Accept"] = "Moo"
-                       downloadFileRequest.headers = headers
-                       downloadFileRequest.verbose = false
-                       var downloadResponse = downloadFileRequest.download_to_file(null)
-
-                       if downloadResponse isa CurlFileResponseSuccess then
-                               print "*** Answer ***"
-                               print "Status code : {downloadResponse.status_code}"
-                               print "Size downloaded : {downloadResponse.size_download}"
-                       else if downloadResponse isa CurlResponseFailed then
-                               print "Error code : {downloadResponse.error_code}"
-                               print "Error msg : {downloadResponse.error_msg}"
-                       end
-
-               else
-                       print "Wrong init with Curl HTTP request"
+               var headers = new HeaderMap
+               headers["Accept"] = "Moo"
+               request.headers = headers
+               request.verbose = false
+               var downloadResponse = request.download_to_file(null)
+
+               if downloadResponse isa CurlFileResponseSuccess then
+                       print "*** Answer ***"
+                       print "Status code : {downloadResponse.status_code}"
+                       print "Size downloaded : {downloadResponse.size_download}"
+               else if downloadResponse isa CurlResponseFailed then
+                       print "Error code : {downloadResponse.error_code}"
+                       print "Error msg : {downloadResponse.error_msg}"
                end
-
-               # Program logic
+       # Program logic
        else
                print "Usage : Method[POST, GET, GET_FILE]"
        end