PastePipe 1.1 → 1.2
raw patch · 2 files changed
+17/−10 lines, 2 files
Files
- PastePipe.cabal +1/−1
- pastepipe.hs +16/−9
PastePipe.cabal view
@@ -1,7 +1,7 @@ -- cabal configure --prefix=$HOME --user -- cabal build name: PastePipe-version: 1.1+version: 1.2 synopsis: CLI for pasting to hpaste.org description: PastePipe reads from standard in and posts to hpaste.org. It will auto-detect your username, but that can be
pastepipe.hs view
@@ -45,9 +45,10 @@ buildURI coreUri str = fromJust $ parseURI $ coreUri ++ str -- | Posts the given content to hpaste.org, returning the new uri.-post :: URI -> String -> String -> String -> String -> IO URI-post posturi usr lang title str = do +post :: (String -> IO ()) -> URI -> String -> String -> String -> String -> IO URI+post outHandler posturi usr lang title str = do (uri, _) <- Network.Browser.browse $ do+ setOutHandler outHandler setAllowRedirects True -- handle HTTP redirects request $ buildRequest posturi usr lang title str return uri@@ -61,8 +62,8 @@ , ("language", lang) , ("channel", "")] -fakePost :: URI -> String -> String -> String -> String -> IO URI-fakePost uri usr lang title str = do +fakePost :: (String -> IO ()) -> URI -> String -> String -> String -> String -> IO URI+fakePost _ uri usr lang title str = do putStrLn $ "uri: "++show uri putStrLn $ "user: "++usr putStrLn $ "lang: "++lang@@ -83,7 +84,8 @@ title = getTitle args coreUri = getCoreUri args postFn = getPostFn args- uri <- postFn (saveUri coreUri) usr lang title content+ outHandler = getOutHandler args+ uri <- postFn outHandler (saveUri coreUri) usr lang title content putStrLn $ show uri -- | Determines the language from the list of arguments.@@ -96,11 +98,15 @@ getCoreUri :: [String] -> String getCoreUri = getArgVal "--uri" defaultUri -getPostFn :: [String] -> URI -> String -> String -> String -> String -> IO URI-getPostFn args = case (getArgVal "--test" "testFn" args) of- "testFn" -> fakePost- _ -> post+getPostFn :: [String] -> (String -> IO ()) -> URI -> String -> String -> String -> String -> IO URI+getPostFn args = case (elem "--test" args) of+ True -> fakePost+ False -> post +getOutHandler :: [String] -> (String -> IO ())+getOutHandler args = case (elem "--verbose" args) of + True -> putStr+ False -> const (return ()) --squelch output. -- | Prints the usage information. printHelp :: IO ()@@ -114,6 +120,7 @@ putStrLn " -l <language> Defaults to haskell" putStrLn $ " --uri <hpaste_uri> Defaults to "++ defaultUri putStrLn " --test Fake the post--does not send anything to the server (used for testing)"+ putStrLn " --verbose Print the web chatter from Network.Browse" -- | given a flag and a default value, returns the first