You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.3 KiB
Go
93 lines
2.3 KiB
Go
package icsdblog
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"sync"
|
|
|
|
"gitlab.com/cinnamon/voiceagent/icshttpclient"
|
|
)
|
|
|
|
// requiredParam
|
|
type RequiredLogParam struct {
|
|
PrjCode string `json:"prjCode"`
|
|
Uuid string `json:"uuid"`
|
|
SourceIp string `json:"sourceIp"`
|
|
SourcePort string `json:"sourcePort"`
|
|
TrxId string `json:"trxId"`
|
|
TrxRequestDate string `json:"trxRequestDate"`
|
|
TrxType string `json:"trxType"`
|
|
TargetIp string `json:"targetIp"`
|
|
TargetPort string `json:"targetPort"`
|
|
|
|
// NotRequiredParam
|
|
ResultDate string `json:"resultDate"`
|
|
ResultStatus string `json:"resultStatus"`
|
|
BranchCode string `json:"branchCode"`
|
|
PcIp string `json:"pcIp"`
|
|
CustomerCode string `json:"customerCode"`
|
|
SinarioId string `json:"sinarioId"`
|
|
ReRecodeSeq string `json:"reRecodeSeq"`
|
|
}
|
|
|
|
type DbInfo struct {
|
|
Ip string
|
|
Port string
|
|
Url string
|
|
Method string
|
|
|
|
m *sync.Mutex
|
|
}
|
|
|
|
var gDbInfo *DbInfo
|
|
var onceDbLog sync.Once
|
|
|
|
// DB 연동 정보 singleton으로 등록
|
|
func NewDbInfo(ip, port, url, method string) *DbInfo {
|
|
onceDbLog.Do(func() {
|
|
gDbInfo = &DbInfo{
|
|
Ip: ip,
|
|
Port: port,
|
|
Url: url,
|
|
Method: method,
|
|
}
|
|
})
|
|
|
|
return gDbInfo
|
|
}
|
|
|
|
// DB 정보 조회
|
|
func GetDbInfo() *DbInfo {
|
|
return gDbInfo
|
|
}
|
|
|
|
// logInsert
|
|
// 우선 전부 string으로 처리되있어서 string으로 함....
|
|
func DbLogInsert(PrjCode, Uuid, SourceIp, SourcePort, TrxId, TrxRequestDate, TrxType, TargetIp, TargetPort string, args ...string) {
|
|
|
|
// 가변인자도 한번에 같은 구조체에 넣어놨음 (TA, STT, TTS 다르지 않음)
|
|
param := RequiredLogParam{PrjCode, Uuid, SourceIp, SourcePort, TrxId, TrxRequestDate, TrxType, TargetIp, TargetPort, args[0], args[1], args[2], args[3], args[4], args[5], args[6]}
|
|
|
|
p, _ := json.Marshal(param)
|
|
p1 := bytes.NewBuffer(p)
|
|
|
|
logUrlInfo := GetDbInfo()
|
|
c := icshttpclient.NewIcsHttpClient(logUrlInfo.Method, "http://"+logUrlInfo.Ip+":"+logUrlInfo.Port+"/"+logUrlInfo.Url, p1)
|
|
c.Request.Header.Add("apiKey", "aaabbb-cccddd-1234567890")
|
|
c.Request.Header.Add("Content-Type", "application/json")
|
|
c.Request.ParseForm()
|
|
|
|
resp, err := c.Do(c.Request)
|
|
if err != nil {
|
|
|
|
fmt.Println(err)
|
|
} else {
|
|
defer resp.Body.Close()
|
|
fmt.Println(resp.StatusCode, resp)
|
|
body := make([]byte, resp.ContentLength)
|
|
resp.Body.Read(body)
|
|
fmt.Println("==================\n", string(body))
|
|
}
|
|
}
|