Files
api-bpjs-surkon/handlers/bpjs/vClaim/VclaimBridge.go
2024-09-23 09:00:24 +07:00

123 lines
2.7 KiB
Go

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
}