messente 0.1.0.0 → 0.1.0.1
raw patch · 2 files changed
+40/−4 lines, 2 filesdep ~HTTPdep ~basedep ~bytestring
Dependency ranges changed: HTTP, base, bytestring, http-conduit, network
Files
- Messente.hs +33/−2
- messente.cabal +7/−2
Messente.hs view
@@ -1,4 +1,32 @@ {-# LANGUAGE OverloadedStrings, DeriveDataTypeable #-}+{-|+Module : Messente+Description : Messente SMS Gateway wrapper library+License : MIT+Maintainer : kaiko@zazler.com++Example++@+import Messente++smsSend = send \"api-username\" \"api-password\"+main = do+ result <- smsSend Nothing \"+00000000000\" \"my first sms\"+ putStrLn $ case result of+ Right id -> \"sms sent, id: \" ++ id+ Left (errNo, errStr) -> \"not sent: \" ++ show errNo ++ \", \" ++ errStr++ listen 9000 delivery++delivery :: Delivery -> IO ()+delivery del = putStrLn $+ case del of+ Delivered id -> \"delivered \" ++ id+ DeliveryError id errNo errStr -> \"not delivered \" ++ id ++ \": \" ++ errStr+ DeliveryProgress id status -> \"progress \" ++ id ++ \": \" ++ status+@+-} module Messente ( Delivery(..) , MessenteError(..)@@ -25,6 +53,7 @@ servers = [ "api2.messente.com", "api3.messente.com" ] +-- |Messente SMS textual id type SmsID = String -- |Exceptions for Messente API@@ -34,7 +63,7 @@ | InvalidParameters [(String, String)] | InvalidSender String | MissingPin- | ServersDown -- ^ All servers gave "FAILED 209"+ | ServersDown -- ^ All servers gave @FAILED 209@ | Unknown String -- ^ Just in case. Argument contains http response as it is. deriving (Typeable) @@ -48,7 +77,6 @@ show (InvalidSender s ) = "You must register this sender from Messente API (" ++ s ++ ")" show (Unknown s ) = "Unknown Messente error: " ++ s --- |All possible delivery states. data Delivery = Delivered SmsID -- ^ Happy final state | DeliveryError SmsID Int String -- ^ Negative final state@@ -73,6 +101,7 @@ ] ++ maybe [] (\f -> [("from", f)]) from -- |Listens delivery reports+-- Takes port number and callback function as arguments. listen :: Int -> (Delivery -> IO ()) -> IO () listen port fn = withSocketsDo $@@ -110,6 +139,8 @@ q = [ ("username", apiUser ) , ("password", apiPassword) , ("sms_uniq_id", id ) ]++------------ doRequest :: [String] -> String -> IO BL.ByteString doRequest [] _ = throw ServersDown
messente.cabal view
@@ -1,5 +1,5 @@ name: messente-version: 0.1.0.0+version: 0.1.0.1 cabal-Version: >= 1.8 license: MIT license-File: LICENSE@@ -9,9 +9,14 @@ category: API synopsis: Messente SMS Gateway build-type: Simple+-- description: ... +source-repository head+ type: git+ location: https://github.com/kaiko/messente-haskell+ Library- Build-Depends: base >= 4.6 && <= 4.7, http-conduit >= 2.0 && <=2.1, bytestring == 0.10.*, network == 2.6.*, HTTP == 4000.2.*+ Build-Depends: base > 4.2 && < 5, bytestring >= 0.9, network > 2.2 && < 2.7, HTTP > 4000.1 && < 4000.3, http-conduit > 2.0 && < 2.2 Exposed-modules: Messente Extensions: OverloadedStrings, DeriveDataTypeable