Skip to content

Commit

Permalink
feat: add integrated swagger for finschia (Finschia#223)
Browse files Browse the repository at this point in the history
* feat: add integrated swagger for finschia.

Signed-off-by: zemyblue <zemyblue@gmail.com>

* chore: update changelog

Signed-off-by: zemyblue <zemyblue@gmail.com>

* ci: add a ci to check generated code.

Signed-off-by: zemyblue <zemyblue@gmail.com>

* ci: add a ci to check generated code up-to-date

Signed-off-by: zemyblue <zemyblue@gmail.com>

* fix: ci error

Signed-off-by: zemyblue <zemyblue@gmail.com>
(cherry picked from commit b98ef07008b1a1e93882447e67286a0a2ae6339f)

---------

Signed-off-by: zemyblue <zemyblue@gmail.com>
  • Loading branch information
zemyblue committed Jun 23, 2023
1 parent f81a464 commit d649d83
Show file tree
Hide file tree
Showing 29 changed files with 73,743 additions and 1 deletion.
36 changes: 36 additions & 0 deletions .github/workflows/check-generated.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Verify that generated code is up-to-date.

name: Check generated code
on:
workflow_dispatch:
pull_request:
branches:
- '*'

permissions:
contents: read

jobs:
check-swagger:
runs-on: ubuntu-latest
steps:
- name: Setup Golang
uses: actions/setup-go@v4
with:
go-version: 1.18

- uses: actions/checkout@v3
with:
fetch-depth: 1

- name: Install protoc
uses: arduino/setup-protoc@v2

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "16"
- run: if [ ! -x "$(command -v yarn)" ]; then npm install -g yarn; fi

- name: Check generated swagger docs
run: scripts/ci/check-generated.sh
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,7 @@ dependency-graph.png

# tools
tools/sodium

# docs
/client/docs/tmp-swagger-gen/
/client/docs/node_modules/
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Features

### Improvements
* (swagger) [\#223](https://github.com/Finschia/finschia/pull/223) add integrated swagger for finschia

### Bug Fixes

Expand Down
9 changes: 9 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -392,3 +392,12 @@ libsodium:
$(MAKE) install; \
fi
.PHONY: libsodium

###############################################################################
### Proto ###
###############################################################################

proto-swagger-gen:
@echo "Generating Protobuf Swagger"
./scripts/generate-docs.sh
$(GOPATH)/bin/statik -src=client/docs/swagger-ui -dest=client/docs -f -m
2 changes: 1 addition & 1 deletion app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ import (
appparams "github.com/Finschia/finschia/app/params"

// unnamed import of statik for swagger UI support
_ "github.com/Finschia/finschia-sdk/client/docs/statik"
_ "github.com/Finschia/finschia/client/docs/statik"
)

const appName = "Finschia"
Expand Down
237 changes: 237 additions & 0 deletions client/docs/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
{
"swagger": "2.0",
"info": {
"title": "Finschia - gRPC Gateway docs",
"description": "A REST interface for state queries, legacy transactions",
"version": "1.0.0"
},
"apis": [
{
"url": "./tmp-swagger-gen/cosmos/auth/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "AuthParams"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/bank/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "BankParams"
}
}
},
{
"url": "./tmp-swagger-gen/lbm/base/ostracon/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "BaseParams"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/distribution/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "DistributionParams"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/evidence/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "EvidenceParams"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/gov/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "GovParams"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/mint/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "MintParams"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/params/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "Params"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/slashing/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "SlashingParams"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/staking/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "StakingParams",
"DelegatorValidators": "StakingDelegatorValidators"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/tx/v1beta1/service.swagger.json",
"dereference": {
"circular": "ignore"
}
},
{
"url": "./tmp-swagger-gen/cosmos/upgrade/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "UpgradeParams"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/authz/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "AuthzParams"
}
}
},
{
"url": "./tmp-swagger-gen/lbm/foundation/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "FoundationParams",
"Proposal": "FoundationProposal",
"Proposals": "FoundationProposals",
"Vote": "FoundationVote",
"Votes": "FoundationVotes",
"TallyResult": "FoundationTallyResult",
"Grants": "FoundationGrants"
}
}
},
{
"url": "./tmp-swagger-gen/lbm/token/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "TokenParams",
"Balance": "TokenBalance",
"AllBalances": "TokenAllBalances",
"GranteeGrants": "TokenGranteeGrants",
"Approved": "TokenApproved",
"Approvers": "TokenApprovers",
"Supply": "TokenSupply",
"Minted": "TokenMinted",
"Burnt": "TokenBurnt",
"Contract": "TokenContract"
}
}
},
{
"url": "./tmp-swagger-gen/lbm/collection/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "CollectionParams",
"Balance": "CollectionBalance",
"AllBalances": "CollectionAllBalances",
"GranteeGrants": "CollectionGranteeGrants",
"Approved": "CollectionApproved",
"Approvers": "CollectionApprovers",
"Contract": "CollectionContract"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/feegrant/v1beta1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "FeegrantParams"
}
}
},
{
"url": "./tmp-swagger-gen/cosmos/base/node/v1beta1/query.swagger.json"
},
{
"url": "./tmp-swagger-gen/lbm/tx/v1beta1/service.swagger.json",
"dereference": {
"circular": "ignore"
},
"operationIds": {
"rename": {
"GetBlockWithTxs": "GetBlockWithTxs2"
}
}
},
{
"url": "./tmp-swagger-gen/cosmwasm/wasm/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "WasmParams"
}
}
},
{
"url": "./tmp-swagger-gen/ibc/applications/transfer/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "IBCTransferParams"
}
}
},
{
"url": "./tmp-swagger-gen/ibc/applications/interchain_accounts/controller/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "IBCInterchainAccountsControllerParams"
}
}
},
{
"url": "./tmp-swagger-gen/ibc/applications/interchain_accounts/host/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "IBCInterchainAccountsHostParams"
}
}
},
{
"url": "./tmp-swagger-gen/ibc/core/client/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "IBCClientParams",
"UpgradedConsensusState": "IBCUpgradedConsensusState"
}
}
},
{
"url": "./tmp-swagger-gen/ibc/core/connection/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "IBCConnectionParams"
}
}
},
{
"url": "./tmp-swagger-gen/ibc/core/channel/v1/query.swagger.json",
"operationIds": {
"rename": {
"Params": "IBCChannelParams"
}
}
}
]
}
14 changes: 14 additions & 0 deletions client/docs/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "docs",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"combine": "swagger-combine ./config.json -o swagger-ui/swagger.yaml -f yaml --continueOnConflictingPaths --includeDefinitions"
},
"dependencies": {
"redoc-cli": "^0.9.12",
"swagger-combine": "^1.4.0",
"swagger2openapi": "^7.0.3"
}
}
3 changes: 3 additions & 0 deletions client/docs/statik/init.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package statik

// This just for fixing the error in importing empty github.com/cosmos/cosmos-sdk/client/docs/statik
14 changes: 14 additions & 0 deletions client/docs/statik/statik.go

Large diffs are not rendered by default.

Binary file added client/docs/swagger-ui/favicon-16x16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added client/docs/swagger-ui/favicon-32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
61 changes: 61 additions & 0 deletions client/docs/swagger-ui/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="swagger-ui.css" >
<link rel="icon" type="image/png" href="favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="favicon-16x16.png" sizes="16x16" />
<style>
html
{
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}

*,
*:before,
*:after
{
box-sizing: inherit;
}

body
{
margin:0;
background: #fafafa;
}
</style>
</head>

<body>
<div id="swagger-ui"></div>

<script src="swagger-ui-bundle.js"> </script>
<script src="swagger-ui-standalone-preset.js"> </script>
<script>
window.onload = function() {

// Build a system
const ui = SwaggerUIBundle({
url: "./swagger.yaml",
dom_id: '#swagger-ui',
deepLinking: true,
queryConfigEnabled: false,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})

window.ui = ui
}
</script>
</body>
</html>
Loading

0 comments on commit d649d83

Please sign in to comment.