packages feed

haskell-fake-user-agent 0.0.1 → 0.0.2

raw patch · 4 files changed

+54/−35 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- HTTP.FakeUserAgent: getBrowserString :: String -> IO String
+ HTTP.ThirdParty.FakeUserAgent: getBrowserStrings :: String -> IO [String]
+ HTTP.ThirdParty.FakeUserAgent: getLatestBrowserString :: String -> IO String

Files

− HTTP/FakeUserAgent.hs
@@ -1,32 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module HTTP.FakeUserAgent (getBrowserString) where--import Control.Lens ((^?))-import Data.ByteString.Lazy (ByteString, unpack)-import Data.Char (chr)-import Network.Wreq (get, responseBody)-import Text.HTML.TagSoup (parseTags, innerText, Tag(TagOpen, TagClose), (~/=))--getVersionsList :: [Tag ByteString] -> [Tag ByteString]-getVersionsList tags =-    let tags1 = (drop 1 . dropWhile (~/= TagOpen ("div" :: String) [("id", "liste")])) tags in-        takeWhile (~/= TagClose ("div" :: String)) tags1--getVersions :: [Tag ByteString] -> [ByteString] -> [ByteString]-getVersions [] accum = reverse accum-getVersions tags accum = -    let tags1 = (drop 1 . dropWhile (~/= TagOpen ("li" :: String) [])) tags-        match = takeWhile (~/= TagClose ("li" :: String)) tags1-        tags2 = (drop 1 . dropWhile (~/= TagClose ("li" :: String))) tags1 in-        case match of-            [] -> getVersions tags2 accum-            _  -> getVersions tags2 ((innerText match):accum)--getBrowserString :: String -> IO String-getBrowserString name = do-    resp <- get ("http://useragentstring.com/pages/" ++ name ++ "/")-    let Just body = resp ^? responseBody-    let tags = parseTags body-    let versions = getVersions (getVersionsList tags) []-    let v:_ = versions-    return $ (map (chr . fromEnum) . unpack) v
+ HTTP/ThirdParty/FakeUserAgent.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE OverloadedStrings #-}+module HTTP.ThirdParty.FakeUserAgent (getBrowserStrings, getLatestBrowserString) where++import Control.Lens ((^?))+import Data.ByteString.Lazy (ByteString, unpack)+import Data.Char (chr)+import Network.Wreq (get, responseBody)+import Text.HTML.TagSoup (parseTags, innerText, Tag(TagOpen, TagClose), (~/=))++getVersionsList :: [Tag ByteString] -> [Tag ByteString]+getVersionsList tags =+    let tags1 = (drop 1 . dropWhile (~/= TagOpen ("div" :: String) [("id", "liste")])) tags in+        takeWhile (~/= TagClose ("div" :: String)) tags1++getVersions :: [Tag ByteString] -> [ByteString] -> [ByteString]+getVersions [] accum = reverse accum+getVersions tags accum = +    let tags1 = (drop 1 . dropWhile (~/= TagOpen ("li" :: String) [])) tags+        match = takeWhile (~/= TagClose ("li" :: String)) tags1+        tags2 = (drop 1 . dropWhile (~/= TagClose ("li" :: String))) tags1 in+        case match of+            [] -> getVersions tags2 accum+            _  -> getVersions tags2 ((innerText match):accum)++getBrowserStrings :: String -> IO [String]+getBrowserStrings name = do+    resp <- get ("http://useragentstring.com/pages/" ++ name ++ "/")+    let Just body = resp ^? responseBody+    let tags = parseTags body+    let versions = getVersions (getVersionsList tags) []+    return $ map ((map (chr . fromEnum) . unpack)) versions++getLatestBrowserString :: String -> IO String+getLatestBrowserString name = do+    latest:strings <- getBrowserStrings name+    return latest
README.md view
@@ -0,0 +1,15 @@+FAKE USER AGENT STRING+----------------------++Very simple library downloading current user agent strings from http://useragentstring.com++HOW TO USE+----------++# getBrowserStrings :: String -> IO [String]++returns a list of user agent strings for a given browser, where browser may be "Chrome", "Firefox", etc. (see http://useragentstring.com for the list of browsers)++# getLatestBrowserString :: String -> IO String++returns a head of the above list
haskell-fake-user-agent.cabal view
@@ -2,7 +2,7 @@ -- further documentation, see http://haskell.org/cabal/users-guide/  name:                haskell-fake-user-agent-version:             0.0.1+version:             0.0.2 synopsis:            Simple library for retrieving current user agent strings -- description:          license:             PublicDomain@@ -16,9 +16,9 @@ cabal-version:       >=1.10  library-  exposed-modules:     HTTP.FakeUserAgent+  exposed-modules:     HTTP.ThirdParty.FakeUserAgent   -- other-modules:          other-extensions:    OverloadedStrings-  build-depends:       base >=4.8 && <4.9, lens >=4.14 && <4.15, bytestring >=0.10 && <0.11, wreq >=0.4 && <0.5, tagsoup >=0.13 && <0.14+  build-depends:       base >=4.9 && <4.10, lens >=4.14, bytestring >=0.10, wreq >=0.4, tagsoup >=0.13   -- hs-source-dirs:         default-language:    Haskell2010