-
Notifications
You must be signed in to change notification settings - Fork 161
feat: add /accounts/:accountId/convert endpoint #1007
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
7a9e165
Added the `convert` endpoint
Imod7 0d600b0
Removed getPair
Imod7 cd54947
SS58 Address from Public key (hex)
Imod7 5df7378
Changes in validation code & Adding tests
Imod7 72755fc
Updated the Docs
Imod7 fe5f5d3
Changes in the docs based on Tarik's feedback
Imod7 5813b84
Changes in code & formatting based on Tarik's feedback
Imod7 7273f77
Minor change in the docstrings
Imod7 d6fa7e8
fix merge conflicts
TarikGul 119537a
refactor controller to use validateBoolean
TarikGul e30787f
Rebuilt the docs
Imod7 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
// Copyright 2017-2022 Parity Technologies (UK) Ltd. | ||
// This file is part of Substrate API Sidecar. | ||
// | ||
// Substrate API Sidecar is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// This program is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
import { ApiPromise } from '@polkadot/api'; | ||
import { RequestHandler } from 'express'; | ||
import { BadRequest } from 'http-errors'; | ||
|
||
import { validateBoolean } from '../../middleware'; | ||
import { AccountsConvertService } from '../../services/accounts'; | ||
import { IAddressParam, IConvertQueryParams } from '../../types/requests'; | ||
import AbstractController from '../AbstractController'; | ||
|
||
export default class AccountsConvertController extends AbstractController<AccountsConvertService> { | ||
constructor(api: ApiPromise) { | ||
super(api, '/accounts/:address/convert', new AccountsConvertService(api)); | ||
this.initRoutes(); | ||
} | ||
|
||
protected initRoutes(): void { | ||
this.router.use(this.path, validateBoolean(['publicKey'])); | ||
this.safeMountAsyncGetHandlers([['', this.accountConvert]]); | ||
} | ||
|
||
private accountConvert: RequestHandler< | ||
IAddressParam, | ||
unknown, | ||
unknown, | ||
IConvertQueryParams | ||
> = ({ params: { address }, query: { scheme, prefix, publicKey } }, res) => { | ||
// Validation of the `scheme` query param | ||
const cryptoScheme = scheme ? scheme : 'sr25519'; | ||
if ( | ||
!( | ||
cryptoScheme === 'ed25519' || | ||
cryptoScheme === 'sr25519' || | ||
cryptoScheme === 'ecdsa' | ||
) | ||
) { | ||
throw new BadRequest( | ||
'The `scheme` query parameter provided can be one of the following three values : [ed25519, sr25519, ecdsa]' | ||
); | ||
} | ||
|
||
// Validation of the `prefix` query param | ||
const networkPrefix = prefix ? prefix : '42'; | ||
const ss58Prefix = this.parseNumberOrThrow( | ||
networkPrefix, | ||
'The `prefix` query parameter provided is not a number.' | ||
); | ||
|
||
const pubKey = publicKey === 'true'; | ||
|
||
AccountsConvertController.sanitizedSend( | ||
res, | ||
this.service.accountConvert(address, cryptoScheme, ss58Prefix, pubKey) | ||
); | ||
}; | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Totally happy with this!
When there are lots of conditions you can also use an approach like
if (!['ed25519', 'sr25519', 'ecdsa'].includes(cryptoScheme)) { ... }
, but your way is more efficient :)