[Steemit API] 자산조회, 글로벌 속성값 API golang 으로 조회steemCreated with Sketch.

in kr-dev 커뮤니티2 years ago

안녕하세요 이번에는 자산조회하는 API 와 글로벌 속성값 조회하는 API
golang 으로 조회하는 예제를 만들어 보았습니다.

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

type Steemit struct {
    BaseUrl string
}

func NewSteemit(baseUrl string) *Steemit {
    return &Steemit{baseUrl}
}

func (steemit *Steemit) getAccount() (*GetAccountResponse, error) {
    var Params []interface{}
    var Account [1][1]string
    Account[0][0] = "lku"

    Params = append(Params, "database_api")
    Params = append(Params, "get_accounts")
    Params = append(Params, Account)

    rpcRequest := RpcRequest{1, "2.0", "call", Params}
    pbytes, err := json.Marshal(rpcRequest)
    if err != nil {
        fmt.Println("err", err)
        return nil, err
    }

    buff := bytes.NewBuffer(pbytes)
    resp, err := http.Post(steemit.BaseUrl, "application/json", buff)
    if err != nil {
        fmt.Println("err", err)
        return nil, err
    }

    defer resp.Body.Close()

    // Response 체크.
    getAccountResponse := new(GetAccountResponse)

    respBody, err := io.ReadAll(resp.Body)
    if err == nil {
        err := json.Unmarshal(respBody, getAccountResponse)
        if err != nil {
            fmt.Println("err", err)
            return nil, err
        }
    }

    return getAccountResponse, nil
}

func (steemit *Steemit) GetConfig() (*GlobalPropertiesResponse, error) {
    Params := make([]interface{}, 0)
    rpcRequest := RpcRequest{2, "2.0", "condenser_api.get_dynamic_global_properties", Params}
    pbytes, err := json.Marshal(rpcRequest)
    if err != nil {
        fmt.Println("err", err)
        return nil, err
    }

    buff := bytes.NewBuffer(pbytes)
    resp, err := http.Post(steemit.BaseUrl, "application/json", buff)
    if err != nil {
        fmt.Println("err", err)
        return nil, err
    }

    defer resp.Body.Close()

    // Response 체크.
    globalPropertiesResponse := new(GlobalPropertiesResponse)

    respBody, err := io.ReadAll(resp.Body)
    if err == nil {
        err := json.Unmarshal(respBody, globalPropertiesResponse)
        if err != nil {
            fmt.Println("err", err)
            return nil, err
        }
    }

    return globalPropertiesResponse, nil
}

func main() {
    baseUrl := "https://api.steemit.com"
    steemit := NewSteemit(baseUrl)
    account, err := steemit.getAccount()
    if err != nil {
        return
    }

    fmt.Println("account", account)
    fmt.Println("steem balance", account.Result[0].Balance)
    fmt.Println("SBD balance", account.Result[0].SbdBalance)
    fmt.Println("reward steem balance", account.Result[0].RewardSteemBalance)
    fmt.Println("reward SBD balance", account.Result[0].RewardSbdBalance)
    fmt.Println("reward steem power balance", account.Result[0].RewardVestingSteem)
    fmt.Println("reward steem power balance", account.Result[0].RewardVestingBalance)

    fmt.Println("vest shares", account.Result[0].VestingShares)
    fmt.Println("vest balance", account.Result[0].VestingBalance)
    fmt.Println("deleted vest shares", account.Result[0].DelegatedVestingShares)

    globalProperty, err := steemit.GetConfig()
    if err != nil {
        return
    }

    fmt.Println("============")
    fmt.Println("globalProperty")
    fmt.Println("globalProperty.Result.TotalVestingShares", globalProperty.Result.TotalVestingShares)
    fmt.Println("globalProperty.Result.TotalVestingFundSteem", globalProperty.Result.TotalVestingFundSteem)
}

결과값

steem balance 7.562 STEEM
SBD balance 0.030 SBD
reward steem balance 0.000 STEEM
reward SBD balance 0.000 SBD
reward steem power balance 2.908 STEEM
reward steem power balance 5187.305547 VESTS
vest shares 10679990.460432 VESTS
vest balance 0.000 STEEM
deleted vest shares 10666717.371112 VESTS
============
globalProperty
globalProperty.Result.TotalVestingShares 297902892385.261137 VESTS
globalProperty.Result.TotalVestingFundSteem 167037797.286 STEEM

다음에는 소스코드 한번 정리하고 Steem Power 를 임대해볼께요.
계속 하다보니 눈에 보이네요.

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.20
TRX 0.15
JST 0.030
BTC 65355.38
ETH 2656.67
USDT 1.00
SBD 2.87