2020-04-07 13:28:09 +00:00
## BDLedger API
### Documentation
See [API documentation ](..\docs\apis.md )
### Development
#### Generating gRPC code in languages
##### Installling tools
2020-09-22 08:21:24 +00:00
Download the [Protocol Buffers compiler ](https://github.com/protocolbuffers/protobuf/releases ) (protoc-3.13.0-*) for your platform and add `protoc` to `PATH` environment variable
2020-04-07 13:28:09 +00:00
2020-09-22 08:21:24 +00:00
For generating Go code, install `protoc-gen-go` (v1.32.0):
2020-04-07 13:28:09 +00:00
```bash
2020-09-22 08:21:24 +00:00
GIT_TAG="v1.32.0"
go get -d -u google.golang.org/protobuf/cmd/protoc-gen-go
git -C "$(go env GOPATH)"/src/google.golang.org/protobuf checkout $GIT_TAG
go install google.golang.org/protobuf/cmd/protoc-gen-go
2020-04-07 13:28:09 +00:00
```
2020-09-22 08:21:24 +00:00
Also install `protoc-gen-go-grpc` :
```bash
go get -u google.golang.org/protobuf/cmd/protoc-gen-go
```
Or install using [gobin ](https://github.com/myitcv/gobin ):
```bash
gobin google.golang.org/protobuf/cmd/protoc-gen-go
gobin google.golang.org/grpc/cmd/protoc-gen-go-grpc
```
For generating HTTP JSON APIs with [grpc-gateway ](https://grpc-ecosystem.github.io/grpc-gateway/ ), follow the [documentation ](https://github.com/grpc-ecosystem/grpc-gateway/tree/v2#installation ).
2020-04-07 13:28:09 +00:00
For generating Java code: From `bdledger-sdk-java` run `gradle generateProto`
For generating Node.js code, install Node.js then run:
```bash
npm install -g grpc-tools
```
For generating TypeScript definitions, also run:
```bash
npm install -g protoc-gen-ts
```
For frontend JavaScript:
```bash
git clone https://github.com/grpc/grpc-web
cd grpc-web
sudo make install-plugin
```
References:
- [Go Quick Start ](https://grpc.io/docs/quickstart/go.html#prerequisites )
- [gRPC Go FAQ ](https://github.com/grpc/grpc-go#faq )
**TODO: Look into [protobuf.js ](https://github.com/protobufjs/protobuf.js ) for Nodes.js and frontend**
**TODO: Look into [Kroto+ ](https://github.com/marcoferrer/kroto-plus ) for Kotlin**
##### Generating code
Run:
```bash
2020-09-22 08:21:24 +00:00
./scripts/gen [-a, --async] [go] [gohttp] [nodejs] [ts] [docs]
2020-04-07 13:28:09 +00:00
```
2020-04-07 16:49:17 +00:00
Use `-a` or `--async` to speed up generation by asynchronously and concurrently generating all code and documentation (script will exit without waiting for completion)
2020-04-07 13:28:09 +00:00
#### Generateing documentation
Install Go then run:
```bash
go get -u github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc
2020-04-07 16:49:17 +00:00
./scripts/gen [-a, --async] docs
2020-04-07 13:28:09 +00:00
```