Skip to content

Commit

Permalink
module name changed
Browse files Browse the repository at this point in the history
  • Loading branch information
raccoon-mh committed Dec 4, 2024
1 parent 559a042 commit f74ff3c
Show file tree
Hide file tree
Showing 9 changed files with 462 additions and 3 deletions.
149 changes: 149 additions & 0 deletions examples.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
package main

import (
"context"
"encoding/json"
"fmt"
"log"
"os"

"github.com/raccoon-mh/upbitgokit/upbitapi"

"github.com/joho/godotenv"
)

func init() {
if err := godotenv.Load(); err != nil {
log.Fatal("Error loading .env file")
}
}
func main() {
for {
// 메뉴 출력
fmt.Println("\nselect number.")
fmt.Println("1. wsmain")
fmt.Println("2. apimain")
fmt.Println("0. exit")
fmt.Print("select: ")

var choice int
fmt.Scan(&choice)

// 번호에 따른 함수 실행
switch choice {
// case 1:
// wsmain()
case 2:
apimain()
case 0:
fmt.Println("프로그램 종료")
return
default:
fmt.Println("잘못된 입력입니다. 다시 시도하세요.")
}
}
}

// func wsmain() {
// err := godotenv.Load()
// if err != nil {
// log.Fatal("Error loading .env file")
// }

// cred := upbitapi.Credential{
// AccessKey: os.Getenv("UPBIT_OPEN_API_ACCESS_KEY"),
// SecretKey: os.Getenv("UPBIT_OPEN_API_SECRET_KEY"),
// }

// ctx, err := upbitapi.SetCtxCredential(context.Background(), cred)
// if err != nil {
// log.Fatal(err.Error())
// }

// token, err := upbitws.GenerateJwtToken(ctx)
// if err != nil {
// log.Fatal(err.Error())
// }

// url := "wss://api.upbit.com/websocket/v1/private"
// headers := map[string][]string{
// "Authorization": {fmt.Sprintf("Bearer %s", token)},
// }

// conn, _, err := websocket.DefaultDialer.Dial(url, headers)
// if err != nil {
// log.Fatalf("WebSocket 연결 실패: %v", err)
// }
// defer conn.Close()

// fmt.Println("connected!")

// // 메시지 전송
// request := []map[string]string{
// {"ticket": "test example"},
// {"type": "myOrder"},
// }
// requestBytes, _ := json.Marshal(request)

// err = conn.WriteMessage(websocket.TextMessage, requestBytes)
// if err != nil {
// log.Fatalf("메시지 전송 실패: %v", err)
// }

// // 메시지 수신
// go func() {
// for {
// _, message, err := conn.ReadMessage()
// if err != nil {
// log.Println("메시지 수신 중 오류:", err)
// return
// }
// fmt.Println(string(message))
// }
// }()

// // 연결 유지
// select {}
// }

func apimain() {
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}

cred := upbitapi.Credential{
AccessKey: os.Getenv("UPBIT_OPEN_API_ACCESS_KEY"),
SecretKey: os.Getenv("UPBIT_OPEN_API_SECRET_KEY"),
}

ctx, err := upbitapi.SetCtxCredential(context.Background(), cred)
if err != nil {
log.Fatal(err.Error())
}

// data, err := upbitapi.CandlesMonthGet(ctx, "KRW-BTC", "2024-10-01 00:00:00", 1)
// data, err := upbitapi.OrdersChanceGet(ctx, "KRW-SHIB")
// data, err := upbitapi.OrdersPost(ctx, "KRW-SHIB", "bid", 0.0, 5000, "price", "", "")
data, err := upbitapi.AccountsGet(ctx)
// data, err := upbitapi.OrdersPost(ctx, "KRW-SHIB", "bid", 0.0, 5000, "best", "", "ioc")
// data, err := upbitapi.OrdersPost(ctx, "KRW-SHIB", "ask", 200000., 0.0, "best", "", "ioc")
// data, err := upbitapi.MarketAllGet(ctx, true)
// data, err := upbitapi.OrderGet(ctx, "", "")
// data, err := upbitapi.OrdersClosedGet(ctx, "KRW-SHIB", "", "2024-11-09T18:00:00+09:00", "", 10, "")
// data, err := upbitapi.OrderUuidsGet(ctx, "", []string{""}, []string{}, "")
// data, err := upbitapi.OrderOpenGet(ctx, "KRW-SHIB", "wait", 0, 0, "asc")
// data, err := upbitapi.OrderCancelDelete(ctx, "", "")
if err != nil {
log.Fatal(err.Error())
return
}

prettyJSON, err := json.MarshalIndent(data, "", " ")
if err != nil {
fmt.Printf("%+v\n", data)
fmt.Println("Error:", err)
return
}
fmt.Println(string(prettyJSON))
}
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
module upbitgokit
module github.com/raccoon-mh/upbitgokit

go 1.22.4

require (
github.com/golang-jwt/jwt v3.2.2+incompatible
github.com/google/uuid v1.6.0
github.com/gorilla/websocket v1.5.3
github.com/joho/godotenv v1.5.1
)
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@ github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keL
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
3 changes: 1 addition & 2 deletions upbitapi/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -239,8 +239,7 @@ func generateQueryString(rf RequestForm) (string, string, error) {
func generateSignedTokenWithRequstQueryString(ctx context.Context, reqString string) (string, error) {
cred, err := GetCtxCredential(ctx)
if err != nil {
log.Println("error while GetCtxCredentialcfg :", err.Error())
return "", err
return "", fmt.Errorf("error while GetCtxCredentialcfg : %s", err.Error())
}
claims := jwt.MapClaims{
"access_key": cred.AccessKey,
Expand Down
26 changes: 26 additions & 0 deletions upbitws/common.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package upbitws

import (
"context"
"fmt"

"github.com/golang-jwt/jwt"
"github.com/google/uuid"
)

func generateJwtToken(ctx context.Context) (string, error) {
cred, err := GetCtxCredential(ctx)
if err != nil {
return "", fmt.Errorf("error while GetCtxCredentialcfg : %s", err.Error())
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"access_key": cred.AccessKey,
"nonce": uuid.New().String(),
})

signedToken, err := token.SignedString([]byte(cred.SecretKey))
if err != nil {
return "", fmt.Errorf("error while signedString : %s", err.Error())
}
return signedToken, nil
}
33 changes: 33 additions & 0 deletions upbitws/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package upbitws

import (
"context"
"fmt"
)

type contextKey string

const ConfigKey contextKey = "credential"

type Credential struct {
AccessKey string
SecretKey string
}

func SetCtxCredential(ctx context.Context, cred Credential) (context.Context, error) {
if cred.AccessKey == "" || cred.SecretKey == "" {
return ctx, fmt.Errorf("credential is blank")
}
return context.WithValue(ctx, ConfigKey, cred), nil
}

func GetCtxCredential(ctx context.Context) (Credential, error) {
if value := ctx.Value(ConfigKey); value != nil {
if credential, ok := value.(Credential); ok {
return credential, nil
} else {
return Credential{}, fmt.Errorf("credential is malformed")
}
}
return Credential{}, fmt.Errorf("credential has not been set up yet")
}
Loading

0 comments on commit f74ff3c

Please sign in to comment.