Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kompendium-ano/pegnetd-haskell-client
Haskell JSON-RPC client for PegNet
https://github.com/kompendium-ano/pegnetd-haskell-client
api api-client factom haskell pegnet rpc-client
Last synced: about 1 month ago
JSON representation
Haskell JSON-RPC client for PegNet
- Host: GitHub
- URL: https://github.com/kompendium-ano/pegnetd-haskell-client
- Owner: kompendium-ano
- License: bsd-3-clause
- Created: 2019-09-28T16:18:32.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-12-16T09:46:48.000Z (about 4 years ago)
- Last Synced: 2024-03-14T16:48:09.200Z (10 months ago)
- Topics: api, api-client, factom, haskell, pegnet, rpc-client
- Language: Haskell
- Homepage: https://github.com/pegnet/pegnetd/wiki/API
- Size: 61.5 KB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Haskell JSON-RPC client for PegNet daemon
![build](https://github.com/kompendium-ano/pegnetd-haskell-client/workflows/build/badge.svg)
![Hackage](https://img.shields.io/hackage/v/api-rpc-pegnet)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/kompendium-llc/api-rpc-factom/blob/master/LICENSE)A JSON-RPC Haskell client for the PegNet [API](https://github.com/pegnet/pegnetd/wiki/API) daemon. Allows retrieval of data from PegNet dApp. Each response has special ADT(algebraic data type) that automatically converted from JSON response. Using [Remote Monad](https://ku-fpg.github.io/files/Gill-15-RemoteMonad.pdf) pattern multiple request can be batched and executed simulatenously, following more robust approach and reducing usage of expensive RPC calls.
Choosing a batching strategy. There are two strategies:
- `Weak` - a single command or a single procedure, or
- `Strong` - a sequence of commands, optionally terminated by a procedure1. [Installation](#installation)
2. [Usage](#usage)
3. [Contributions](#contributions)## Installation
You can install package from [Hackage](https://hackage.haskell.org/package/api-rpc-pegnet) and build with Cabal, but we recommend to use [Stack](https://haskellstack.org) tool. Add to you dependencies in stack.yaml and cabal file dependency `- api-rpc-pegnet`.
To run and test from repository:
1. Build with stack
```bash
$ stack build
```2. Load REPL with stack for evaluation
```
$ stack repl
```3. execute required methods
## Usage
for basic daemon functionality
1. import with
```haskell
import PegNet.RPC.Api
```
or load in REPL.2. build communication session with
```
weakSession (traceSendAPI "" $ clientSendAPIWithAlt endpoint)
```3. run required methods inside `RPC` monad
## Usage
You can construct simple session with all methods available for further processings. Check following execution
```haskell
main = do
-- build communication session
let s = weakSession $ traceSendAPI "" $ clientSendAPIWithAlt endpointRemote
(h, i) <- send s $ do
h <- reqGetSyncStatus
i <- reqPegNetIssuance
b <- reqPegNetBalances "FA38cwer93mmPw1HxjScLmK1yF9iJTu5P87T2vdkbuLovm2YXyss"
t <- reqGetTransaction "0-e4380e6334b0c42d4d6155fbd1378050b91c02a0df93d7fdfe6656f94c61e7eb"
r <- reqPegNetRates 213000
s <- reqGetTransactionStatus "a33d4f334a2658c17d3f44158af75f1c32cc6b2f3de9ddc337064c93043d8db0"
rich <- reqGetRichList (Just "PEG") 5-- return values as N-ary tuple
return (h, i)
-- process resulted values
print h
-- or use for special business logic
```Variables `h` and `i` mapped to exact data stucture. All types available for detailed overview in `Types` directory.
## Contributions
Please, feel free to contribute, fork the repo and submit PR.
Say thanks, send a tip:
- `btc`: 39oVXpsgsyW8ZgzsnX3sV7HLdtXWfT96qN
- `fct`: FA38cwer93mmPw1HxjScLmK1yF9iJTu5P87T2vdkbuLovm2YXyss
- `eth`: 0x9cDBA6bb44772259B3A3fb89cf233A147a720f34
- `xlm`: GD2FROTYXYSNOQQREYXHCXVOYWV556EM6PAHMVUHJNJEUYTUXUSNUZQ3