packages feed

telega 0.1.2 → 0.1.3

raw patch · 11 files changed

+72/−50 lines, 11 files

Files

CHANGELOG.md view
@@ -8,4 +8,13 @@ * Define `Member` datatype * Add new `Membership` constructor to `Update` datatype * Define `Has` typeclass to get access objects within other objects-* Replace `chat` lens on `Has Update Chat` instance+* Replace `chat` lens on `Access Update Chat` instance++# 0.1.3+* Rename `Has` typeclass to `Access` and swap parameters+* Rename `Member` datatype to `Moving`+* Define `Access Chat Callback` instance+* Define `Access From Callback` instance+* Define `Access From Moving` instance+* Define `Access Chat Message` instance+* Define `Access From Message` instance
Network/Telegram/API/Bot.hs view
@@ -3,5 +3,5 @@ import Network.Telegram.API.Bot.Property as Exports import Network.Telegram.API.Bot.Capacity as Exports import Network.Telegram.API.Bot.Object as Exports-import Network.Telegram.API.Bot.Has as Exports+import Network.Telegram.API.Bot.Access as Exports import Network.Telegram.API.Bot.Core as Exports
+ Network/Telegram/API/Bot/Access.hs view
@@ -0,0 +1,6 @@+module Network.Telegram.API.Bot.Access (Access (..)) where++import "lens" Control.Lens (Lens')++class Access target source where+	access :: Lens' source target
− Network/Telegram/API/Bot/Has.hs
@@ -1,6 +0,0 @@-module Network.Telegram.API.Bot.Has (Has (..)) where--import "lens" Control.Lens (Lens')--class Has source target where-	focus :: Lens' source target
Network/Telegram/API/Bot/Object.hs view
@@ -2,7 +2,7 @@  import Network.Telegram.API.Bot.Object.Update as Exports import Network.Telegram.API.Bot.Object.Notification as Exports-import Network.Telegram.API.Bot.Object.Member as Exports+import Network.Telegram.API.Bot.Object.Moving as Exports import Network.Telegram.API.Bot.Object.Message as Exports import Network.Telegram.API.Bot.Object.Keyboard as Exports import Network.Telegram.API.Bot.Object.From as Exports
Network/Telegram/API/Bot/Object/Callback.hs view
@@ -3,6 +3,9 @@ import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:)) import "text" Data.Text (Text) +import Network.Telegram.API.Bot.Access (Access (access))+import Network.Telegram.API.Bot.Object.Chat (Chat)+import Network.Telegram.API.Bot.Object.From (From) import Network.Telegram.API.Bot.Object.Message (Message)  data Callback = Datatext Text Message Text deriving Show@@ -10,3 +13,9 @@ instance FromJSON Callback where 	parseJSON = withObject "Callback" $ \v -> 		Datatext <$> v .: "id" <*> v .: "message" <*> v .: "data"++instance Access Chat Callback where+	access f (Datatext cq_id msg dttxt) = flip (Datatext cq_id) dttxt <$> access f msg++instance Access From Callback where+	access f (Datatext cq_id msg dttxt) = flip (Datatext cq_id) dttxt <$> access f msg
− Network/Telegram/API/Bot/Object/Member.hs
@@ -1,19 +0,0 @@-module Network.Telegram.API.Bot.Object.Member (Member (..)) where--import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:))-import "aeson" Data.Aeson.Types (Object, Parser)-import "base" Control.Applicative (Alternative ((<|>)))--import Network.Telegram.API.Bot.Object.Chat (Chat)-import Network.Telegram.API.Bot.Object.From (From)--data Member = Gone Chat From | Joined Chat [From] deriving Show--instance FromJSON Member where-	parseJSON = withObject "Member" $ \v -> gone v <|> joined v where--		gone :: Object -> Parser Member-		gone v = Gone <$> v .: "chat" <*> v .: "left_chat_member"--		joined :: Object -> Parser Member-		joined v = Joined <$> v .: "chat" <*> v .: "new_chat_members"
Network/Telegram/API/Bot/Object/Message.hs view
@@ -9,6 +9,7 @@  import qualified "text" Data.Text as T (drop, take) +import Network.Telegram.API.Bot.Access (Access (access)) import Network.Telegram.API.Bot.Object.Chat (Chat) import Network.Telegram.API.Bot.Object.From (From) import Network.Telegram.API.Bot.Object.Keyboard (Keyboard)@@ -66,3 +67,11 @@ 	marking_value (chat_id, message_id) = 		object ["chat_id" .= chat_id, "message_id" .= message_id] 	purge_endpoint _ = "deleteMessage"++instance Access Chat Message where+	access f (Textual msg_id chat from txt) = (\chat' -> Textual msg_id chat' from txt) <$> f chat+	access f (Command msg_id chat from cmd) = (\chat' -> Command msg_id chat' from cmd) <$> f chat++instance Access From Message where+	access f (Textual msg_id chat from txt) = (\from' -> Textual msg_id chat from' txt) <$> f from+	access f (Command msg_id chat from cmd) = (\from' -> Command msg_id chat from' cmd) <$> f from
+ Network/Telegram/API/Bot/Object/Moving.hs view
@@ -0,0 +1,24 @@+module Network.Telegram.API.Bot.Object.Moving (Moving (..)) where++import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:))+import "aeson" Data.Aeson.Types (Object, Parser)+import "base" Control.Applicative (Alternative ((<|>)))++import Network.Telegram.API.Bot.Access (Access (access))+import Network.Telegram.API.Bot.Object.Chat (Chat)+import Network.Telegram.API.Bot.Object.From (From)++data Moving = Gone Chat From | Joined Chat [From] deriving Show++instance FromJSON Moving where+	parseJSON = withObject "Moving" $ \v -> gone v <|> joined v where++		gone :: Object -> Parser Moving+		gone v = Gone <$> v .: "chat" <*> v .: "left_chat_member"++		joined :: Object -> Parser Moving+		joined v = Joined <$> v .: "chat" <*> v .: "new_chat_members"++instance Access Chat Moving where+	access f (Gone chat from) = (\chat' -> Gone chat' from) <$> f chat+	access f (Joined chat froms) = (\chat' -> Joined chat' froms) <$> f chat
Network/Telegram/API/Bot/Object/Update.hs view
@@ -3,19 +3,18 @@ import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:)) import "aeson" Data.Aeson.Types (Object, Parser) import "base" Control.Applicative (Alternative ((<|>)))-import "lens" Control.Lens (Lens') -import Network.Telegram.API.Bot.Has (Has (focus))-import Network.Telegram.API.Bot.Object.Callback (Callback (Datatext))+import Network.Telegram.API.Bot.Access (Access (access))+import Network.Telegram.API.Bot.Object.Callback (Callback) import Network.Telegram.API.Bot.Object.Chat (Chat)-import Network.Telegram.API.Bot.Object.Member (Member (Gone, Joined))-import Network.Telegram.API.Bot.Object.Message (Message (Textual, Command))+import Network.Telegram.API.Bot.Object.Moving (Moving)+import Network.Telegram.API.Bot.Object.Message (Message) import Network.Telegram.API.Bot.Property.Identifiable 	(Identifiable (identificator), Identificator)  data Update 	= Query Int Callback-	| Membership Int Member+	| Membership Int Moving 	| Incoming Int Message 	deriving Show @@ -39,16 +38,7 @@ 		incoming :: Object -> Parser Update 		incoming v = Incoming <$> v .: "update_id" <*> v .: "message" -instance Has Update Chat where-	focus f (Incoming upd_id (Command msg_id chat_ from cmd)) =-		(\chat' -> Incoming upd_id (Command msg_id chat' from cmd)) <$> f chat_-	focus f (Incoming upd_id (Textual msg_id chat_ from txt)) =-		(\chat' -> Incoming upd_id (Textual msg_id chat' from txt)) <$> f chat_-	focus f (Query upd_id (Datatext cq_id (Command msg_id chat_ from cmd) dttxt)) =-		(\chat' -> Query upd_id (Datatext cq_id (Command msg_id chat' from cmd) dttxt)) <$> f chat_-	focus f (Query upd_id (Datatext cq_id (Textual msg_id chat_ from txt) dttxt)) =-		(\chat' -> Query upd_id (Datatext cq_id (Textual msg_id chat' from txt) dttxt)) <$> f chat_-	focus f (Membership upd_id (Gone chat_ users)) =-		(\chat' -> Membership upd_id (Gone chat' users)) <$> f chat_-	focus f (Membership upd_id (Joined chat_ users)) =-		(\chat' -> Membership upd_id (Joined chat' users)) <$> f chat_+instance Access Chat Update where+	access f (Incoming upd_id msg) = Incoming upd_id <$> access f msg+	access f (Query upd_id cb) = Query upd_id <$> access f cb+	access f (Membership upd_id mmb) = Membership upd_id <$> access f mmb
telega.cabal view
@@ -1,5 +1,5 @@ name:                telega-version:             0.1.2+version:             0.1.3 synopsis:            Telegram Bot API binding description:         High-level bindings, typed entities, inline mode only homepage:            https://github.com/iokasimov/telega@@ -21,14 +21,14 @@   exposed-modules:     Network.Telegram.API.Bot     Network.Telegram.API.Bot.Core-    Network.Telegram.API.Bot.Has+    Network.Telegram.API.Bot.Access     Network.Telegram.API.Bot.Object     Network.Telegram.API.Bot.Object.Chat     Network.Telegram.API.Bot.Object.From     Network.Telegram.API.Bot.Object.Button     Network.Telegram.API.Bot.Object.Callback     Network.Telegram.API.Bot.Object.Keyboard-    Network.Telegram.API.Bot.Object.Member+    Network.Telegram.API.Bot.Object.Moving     Network.Telegram.API.Bot.Object.Message     Network.Telegram.API.Bot.Object.Notification     Network.Telegram.API.Bot.Object.Update