package Vclaim import ( "bytes" "encoding/json" "fmt" "io" "io/ioutil" "log" "net/http" "github.com/mashingan/smapping" ) type Respon_MentahDTO struct { MetaData struct { Code string `json:"code"` Message string `json:"message"` } `json:"metaData"` Response string `json:"response"` } type Respon_DTO struct { MetaData struct { Code string `json:"code"` Message string `json:"message"` } `json:"metaData"` Response interface{} `json:"response"` } func GetRequest(endpoint string, cfg interface{}) interface{} { conf := ConfigBpjs{} err := smapping.FillStruct(&conf, smapping.MapFields(&cfg)) if err != nil { log.Fatalf("Failed map %v: ", err) } cons_id, Secret_key, User_key, tstamp, X_signature := SetHeader(conf) req, _ := http.NewRequest("GET", endpoint, nil) req.Header.Add("Content-Type", "Application/x-www-form-urlencoded") req.Header.Add("X-cons-id", cons_id) req.Header.Add("X-timestamp", tstamp) req.Header.Add("X-signature", X_signature) req.Header.Add("user_key", User_key) res, err := http.DefaultClient.Do(req) if err != nil { fmt.Println(err) } body, err := io.ReadAll(res.Body) if err != nil { fmt.Println(err) } var resp_mentah Respon_MentahDTO var resp Respon_DTO json.Unmarshal([]byte(body), &resp_mentah) resp_decrypt, _ := ResponseVclaim(string(resp_mentah.Response), string(cons_id+Secret_key+tstamp)) resp.MetaData = resp_mentah.MetaData json.Unmarshal([]byte(resp_decrypt), &resp.Response) return &resp } func PostRequest(endpoint string, cfg interface{}, data interface{}) interface{} { conf := ConfigBpjs{} err := smapping.FillStruct(&conf, smapping.MapFields(&cfg)) if err != nil { log.Fatalf("Failed map %v: ", err) } cons_id, Secret_key, User_key, tstamp, X_signature := SetHeader(conf) var buf bytes.Buffer err = json.NewEncoder(&buf).Encode(data) if err != nil { log.Fatal(err) } req, _ := http.NewRequest("POST", endpoint, &buf) req.Header.Add("Content-Type", "Application/x-www-form-urlencoded") req.Header.Add("X-cons-id", cons_id) req.Header.Add("X-timestamp", tstamp) req.Header.Add("X-signature", X_signature) req.Header.Add("user_key", User_key) res, err := http.DefaultClient.Do(req) if err != nil { fmt.Println(err) } body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) } fmt.Println(string(body)) var resp_mentah Respon_MentahDTO var resp Respon_DTO json.Unmarshal([]byte(body), &resp_mentah) resp_decrypt, _ := ResponseVclaim(string(resp_mentah.Response), string(cons_id+Secret_key+tstamp)) resp.MetaData = resp_mentah.MetaData json.Unmarshal([]byte(resp_decrypt), &resp.Response) return &resp }