telega 0.1.2 → 0.1.3
raw patch · 11 files changed
+72/−50 lines, 11 files
Files
- CHANGELOG.md +10/−1
- Network/Telegram/API/Bot.hs +1/−1
- Network/Telegram/API/Bot/Access.hs +6/−0
- Network/Telegram/API/Bot/Has.hs +0/−6
- Network/Telegram/API/Bot/Object.hs +1/−1
- Network/Telegram/API/Bot/Object/Callback.hs +9/−0
- Network/Telegram/API/Bot/Object/Member.hs +0/−19
- Network/Telegram/API/Bot/Object/Message.hs +9/−0
- Network/Telegram/API/Bot/Object/Moving.hs +24/−0
- Network/Telegram/API/Bot/Object/Update.hs +9/−19
- telega.cabal +3/−3
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