From 721d621719675f93b5eb7d8a7dd13547b04fb437 Mon Sep 17 00:00:00 2001 From: Phil Freeman Date: Sun, 5 Jun 2016 13:08:56 -0700 Subject: [PATCH 1/2] Updates for 1.0 core libraries --- bower.json | 12 ++++++------ docs/Node/HTTP.md | 4 ++-- docs/Node/HTTP/Client.md | 9 ++------- src/Node/HTTP.js | 20 -------------------- src/Node/HTTP.purs | 6 +++--- src/Node/HTTP/Client.js | 2 -- src/Node/HTTP/Client.purs | 5 +---- test/Main.js | 2 -- test/Main.purs | 30 +++++++++++++++++------------- 9 files changed, 31 insertions(+), 59 deletions(-) diff --git a/bower.json b/bower.json index e2e3f6c..fb7bd11 100644 --- a/bower.json +++ b/bower.json @@ -12,13 +12,13 @@ "url": "git://github.com/purescript-node/purescript-node-http.git" }, "devDependencies": { - "purescript-console": "^0.1.0" + "purescript-console": "^1.0.0" }, "dependencies": { - "purescript-maps": "^0.5.4", - "purescript-options": "^0.6.0", - "purescript-unsafe-coerce": "^0.1.0", - "purescript-node-streams": "^0.4.0", - "purescript-node-url": "^0.1.1" + "purescript-maps": "^1.0.0", + "purescript-node-streams": "1.0-updates", + "purescript-node-url": "1.0-updates", + "purescript-options": "^1.0.0", + "purescript-unsafe-coerce": "^1.0.0" } } diff --git a/docs/Node/HTTP.md b/docs/Node/HTTP.md index 0af5bc0..f088893 100644 --- a/docs/Node/HTTP.md +++ b/docs/Node/HTTP.md @@ -85,7 +85,7 @@ Get the request URL #### `requestAsStream` ``` purescript -requestAsStream :: forall eff a. Request -> Readable () (http :: HTTP | eff) a +requestAsStream :: forall eff. Request -> Readable () (http :: HTTP | eff) ``` Coerce the request object into a readable stream. @@ -125,7 +125,7 @@ Set the status message. #### `responseAsStream` ``` purescript -responseAsStream :: forall eff a. Response -> Writable () (http :: HTTP | eff) a +responseAsStream :: forall eff. Response -> Writable () (http :: HTTP | eff) ``` Coerce the response object into a writable stream. diff --git a/docs/Node/HTTP/Client.md b/docs/Node/HTTP/Client.md index 327a9ee..356b20f 100644 --- a/docs/Node/HTTP/Client.md +++ b/docs/Node/HTTP/Client.md @@ -27,11 +27,6 @@ newtype RequestHeaders A HTTP request object -##### Instances -``` purescript -instance requestHeadersIsOption :: IsOption RequestHeaders -``` - #### `RequestOptions` ``` purescript @@ -113,7 +108,7 @@ Make a HTTP request from a URI string and response callback. #### `requestAsStream` ``` purescript -requestAsStream :: forall eff r a. Request -> Writable r (http :: HTTP | eff) a +requestAsStream :: forall eff r. Request -> Writable r (http :: HTTP | eff) ``` Create a writable stream from a request object. @@ -121,7 +116,7 @@ Create a writable stream from a request object. #### `responseAsStream` ``` purescript -responseAsStream :: forall eff w a. Response -> Readable w (http :: HTTP | eff) a +responseAsStream :: forall eff w. Response -> Readable w (http :: HTTP | eff) ``` Create a readable stream from a response object. diff --git a/src/Node/HTTP.js b/src/Node/HTTP.js index 47ee714..4c8f410 100644 --- a/src/Node/HTTP.js +++ b/src/Node/HTTP.js @@ -1,7 +1,5 @@ "use strict"; -// module Node.HTTP - var http = require('http'); exports.createServer = function(handleRequest) { @@ -24,14 +22,6 @@ exports.listen = function(server) { }; }; -exports.writeString = function(res) { - return function(s) { - return function() { - res.write(s); - }; - }; -}; - exports.setHeader = function(res) { return function(key) { return function(value) { @@ -67,13 +57,3 @@ exports.setStatusMessage = function(res) { }; }; }; - -exports.end = function(res) { - return function(done) { - return function() { - res.end(null, function() { - done(); - }); - }; - }; -}; diff --git a/src/Node/HTTP.purs b/src/Node/HTTP.purs index 09af4cb..40e60ba 100644 --- a/src/Node/HTTP.purs +++ b/src/Node/HTTP.purs @@ -4,9 +4,9 @@ module Node.HTTP where import Prelude -import Data.StrMap -import Control.Monad.Eff -import Node.Stream +import Control.Monad.Eff (Eff) +import Data.StrMap (StrMap) +import Node.Stream (Writable, Readable) import Unsafe.Coerce (unsafeCoerce) -- | The type of a HTTP server object diff --git a/src/Node/HTTP/Client.js b/src/Node/HTTP/Client.js index 19499ed..fcc8f12 100644 --- a/src/Node/HTTP/Client.js +++ b/src/Node/HTTP/Client.js @@ -1,7 +1,5 @@ "use strict"; -// module Node.HTTP.Client - var http = require('http'); var https = require('https'); diff --git a/src/Node/HTTP/Client.purs b/src/Node/HTTP/Client.purs index 4a8fcdf..10ce4e3 100644 --- a/src/Node/HTTP/Client.purs +++ b/src/Node/HTTP/Client.purs @@ -25,16 +25,13 @@ module Node.HTTP.Client import Prelude (Unit, (<<<)) +import Control.Monad.Eff (Eff) import Data.Foreign (Foreign, toForeign) import Data.Options (Options, Option, options, opt) import Data.StrMap (StrMap()) - import Node.HTTP (HTTP()) import Node.Stream (Readable, Writable) import Node.URL as URL - -import Control.Monad.Eff (Eff) - import Unsafe.Coerce (unsafeCoerce) -- | A HTTP request object diff --git a/test/Main.js b/test/Main.js index aae3500..59240b1 100644 --- a/test/Main.js +++ b/test/Main.js @@ -1,5 +1,3 @@ "use strict"; -// module Test.Main - exports.stdout = process.stdout; diff --git a/test/Main.purs b/test/Main.purs index 21da7cf..765208a 100644 --- a/test/Main.purs +++ b/test/Main.purs @@ -2,22 +2,23 @@ module Test.Main where import Prelude +import Node.Encoding (Encoding(..)) +import Node.HTTP (HTTP, listen, createServer, setHeader, requestMethod, requestURL, responseAsStream, requestAsStream, setStatusCode) +import Node.Stream (Writable, end, pipe, writeString) +import Node.HTTP.Client as Client +import Control.Monad.Eff (Eff) +import Control.Monad.Eff.Console (CONSOLE, log) import Data.Foldable (foldMap) -import Data.Options - -import Control.Monad.Eff.Console - -import Node.HTTP -import qualified Node.HTTP.Client as Client -import Node.Stream -import Node.Encoding +import Partial.Unsafe (unsafeCrashWith) foreign import stdout :: forall eff r. Writable r eff +main :: forall eff. Eff (console :: CONSOLE, http :: HTTP | eff) Unit main = do testBasic testHttps +testBasic :: forall eff. Eff (console :: CONSOLE, http :: HTTP | eff) Unit testBasic = do server <- createServer respond listen server 8080 $ void do @@ -31,24 +32,27 @@ testBasic = do log (requestMethod req <> " " <> requestURL req) case requestMethod req of "GET" -> do - let html = foldMap (<> "\n") + let html = foldMap (_ <> "\n") [ "
" , " " , " " , "
" ] setHeader res "Content-Type" "text/html" - writeString outputStream UTF8 html(return unit) - end outputStream (return unit) + writeString outputStream UTF8 html (pure unit) + end outputStream (pure unit) "POST" -> void $ pipe inputStream outputStream + _ -> unsafeCrashWith "Unexpected HTTP method" +testHttps :: forall eff. Eff (console :: CONSOLE, http :: HTTP | eff) Unit testHttps = - simpleReq "https://api.github.com" + simpleReq "https://pursuit.purescript.org/packages/purescript-node-http/badge" +simpleReq :: forall eff. String -> Eff (console :: CONSOLE, http :: HTTP | eff) Unit simpleReq uri = do log ("GET " <> uri <> ":") req <- Client.requestFromURI uri \response -> void do log "Response:" let responseStream = Client.responseAsStream response pipe responseStream stdout - end (Client.requestAsStream req) (return unit) + end (Client.requestAsStream req) (pure unit) From b533abf1346f44130969de9970a51f01d9957dc3 Mon Sep 17 00:00:00 2001 From: Phil Freeman Date: Fri, 10 Jun 2016 15:05:34 -0700 Subject: [PATCH 2/2] Bump deps to 1.0 --- bower.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index fb7bd11..55f549d 100644 --- a/bower.json +++ b/bower.json @@ -16,8 +16,8 @@ }, "dependencies": { "purescript-maps": "^1.0.0", - "purescript-node-streams": "1.0-updates", - "purescript-node-url": "1.0-updates", + "purescript-node-streams": "^1.0.0", + "purescript-node-url": "^1.0.0", "purescript-options": "^1.0.0", "purescript-unsafe-coerce": "^1.0.0" }