cisco-spark-api alternatives and similar packages
Based on the "Web" category.
Alternatively, view cisco-spark-api alternatives based on common mentions on social networks and blogs.
-
yesod-persistent
A RESTful Haskell web framework built on WAI. -
haskell-bitmex-rest
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. -
scotty
Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository) -
servant
Main repository for the servant libraries — DSL for describing, serving, querying, mocking, documenting web applications and more! -
swagger-petstore
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. -
neuron
Future-proof note-taking and publishing based on Zettelkasten (superseded by Emanote: https://github.com/srid/emanote) -
haskell-kubernetes
Haskell bindings to the Kubernetes API (via swagger-codegen) -
apecs-gloss
a fast, extensible, type driven Haskell ECS framework for games -
digestive-functors
A general way to consume input using applicative functors -
tagsoup
Haskell library for parsing and extracting information from (possibly malformed) HTML/XML documents -
airship
Helium + Webmachine = Airship. A toolkit for building declarative, RESTful web apps. -
hbro
[Unmaintained] A minimal web-browser written and configured in Haskell. -
servant-elm
Automatically derive Elm functions to query servant webservices -
backprop
Heterogeneous automatic differentiation ("backpropagation") in Haskell -
kubernetes-client-core
Haskell client for the kubernetes API. A work in progress. -
keera-hails-reactive-htmldom
Keera Hails: Haskell on Rails - Reactive Programming Framework for Interactive Haskell applications -
ghcjs-base
base library for GHCJS for JavaScript interaction and marshalling, used by higher level libraries like JSC -
telegram-bot-simple
Easy to use library for building Telegram bots in Haskell. -
ghcjs-dom
Make Document Object Model (DOM) apps that run in any browser and natively using WebKitGtk
InfluxDB - Power Real-Time Data Analytics at Scale
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of cisco-spark-api or a related project?
README
webex-teams-api
A Haskell bindings for Cisco Webex Teams (formerly Cisco Spark) API
Webex-teams-api (formerly cisco-spark-api) package provides types and functions for accessing Cisco Webex Teams REST API. Details of the API is available from developer site of Cisco Webex
This package is designed to improve type safety over the API. Each entity is separately typed. JSON messages contained in REST responses are decoded into appropriate type of Haskell record. JSON messages sent in REST requests are encoded only from correct type of record.
Some Webex Teams REST API return list of objects. Those APIs require HTTP Link Header based pagination. Haskell functions for those APIs automatically request subsequent pages as needed. This repo provides optional packages for streaming response of list API. Webex-teams-conduit and webex-teams-pipes are thin wrappers of list API. They transform chunky response from list API into seamless stream of elements.
This package also provides some sample usage in command line application style. See source under app directory of the source package.
Sample Usage
Sending a message to a Room.
let auth = Authorization "your authorization token"
roomId = RoomId "Room ID your message to be sent"
messageText = MessageText "your message"
message = CreateMessage (Just roomId) Nothing Nothing (Just messageText) Nothing Nothing
createEntity auth def createMessage >>= print . getResponseBody
Following example is calling List Membership API which returns membership between
Rooms and users (Person). You can extract each Membership from
Conduit pipe. The streamListWithFilter
, provided by webex-teams-conduit,
automatically performs pagenation when it is asked more element and last
response had link of subsequent page in HTTP Link Header.
let auth = Authorization "your authorization token"
filter = MembershipFilter yourRoomId Nothing Nothing
runConduit $ streamListWithFilter auth def filter .| takeC 200 .| mapM_C print
You can find more examples in app/Main.hs under webex-teams-pipes or webex-teams-conduit.
Support for Lens
This package provides many of records representing objects communicated via Webex Teams REST API. Those records are designed to allow create lenses by Control.Lens.TH.makeFields.
Following example creates overloaded accessors for 'Person', 'Room' and 'Team'.
makeFields ''Person
makeFields ''Room
makeFields ''Team
You can access 'personId', 'roomId' and 'teamId' via overloaded accessor function 'id' like this.
let yourPersonId = yourPerson ^. id
yourRoomId = yourRoom ^. id
yourTeamId = yourTeam ^. id
This package does not provide pre-generated lenses for you because not everyone need it but you can make it by yourself so easily as described.
Limitation
- WebHook API is not yet implemented.
- Relative reference in Link Header is not recognized as next page
*Note that all licence references and agreements mentioned in the cisco-spark-api README section above
are relevant to that project's source code only.