158 lines
3.6 KiB
Go
158 lines
3.6 KiB
Go
package vclaim
|
|
|
|
import (
|
|
"bridging-rssa/models/config"
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"io/ioutil"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
|
|
cfg "bridging-rssa/config"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"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
|
|
|
|
}
|
|
|
|
func GetReferensiDokter(c *gin.Context) {
|
|
baseUrl := os.Getenv("BASEURL_BPJS_DEV")
|
|
endpoint := os.Getenv("VCLAIM_RS_DEV")
|
|
param := os.Getenv("GET_REFERENSI_DOKTER")
|
|
dpjp := c.Param("dpjp")
|
|
url := baseUrl + endpoint + param + dpjp
|
|
|
|
conf := config.ConfigBpjs{}
|
|
|
|
header := cfg.SetHeaderDev(conf)
|
|
|
|
headers := map[string]string{
|
|
"X-cons-id": header.ConsID,
|
|
"X-timestamp": header.TimeStamp,
|
|
"X-signature": header.XSignature,
|
|
"user_key": header.UserKey,
|
|
"Content-Type": "application/json; charset=utf-8",
|
|
}
|
|
log.Println("Headers : ", headers)
|
|
|
|
res, err := ResponseGetReferensiDokter(url, header, headers)
|
|
if err != nil {
|
|
log.Println(err)
|
|
c.JSON(http.StatusInternalServerError, res.MetaData)
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, res)
|
|
}
|