package zohal import ( "backend/config" "backend/pkg/util" "backend/pkg/validate/common" "context" "encoding/json" "fmt" "io" "net/http" "net/url" ) type Zohal struct { cfg config.KYC } func NewZohal(cfg config.KYC) *Zohal { return &Zohal{ cfg: cfg, } } // check Phone and NationalID func (z *Zohal) Shahkar(ctx context.Context, phone, nationalID string) (ZohalShahkarResp, error) { var req ZohalShahkarReq var resp ZohalShahkarResp ok, err := common.IsValidPhone(phone) if !ok { return resp, err } ok, err = common.IsValidNationalID(nationalID) if !ok { return resp, err } header := make(map[string]string) header["Content-Type"] = "application/json" header["Accept"] = "application/json" header["Authorization"] = fmt.Sprintf("Bearer %s", z.cfg.APIKey) req.Phone = phone req.NationalID = nationalID u, err := url.Parse(z.cfg.URL) if err != nil { return resp, err } u = u.JoinPath("inquiry", "shahkar") client := util.NewHttpClient() clientResp, err := client.HttpRequest(ctx, http.MethodPost, u.String(), req, header) if err != nil { return resp, err } bodyBytes, err := io.ReadAll(clientResp.Body) if err != nil { return resp, err } err = json.Unmarshal(bodyBytes, &resp) if err != nil { return resp, err } return resp, err } func (z *Zohal) GetPerson(ctx context.Context, nationalID, birthDate string) (ZohalIdentityResp, error) { var req ZohalIdentityReq var resp ZohalIdentityResp header := make(map[string]string) header["Content-Type"] = "application/json" header["Accept"] = "application/json" header["Authorization"] = fmt.Sprintf("Bearer %s", z.cfg.APIKey) req.BirthDate = birthDate req.NationalID = nationalID u, err := url.Parse(z.cfg.URL) if err != nil { return resp, err } u = u.JoinPath("inquiry", "shahkar") client := util.NewHttpClient() clientResp, err := client.HttpRequest(ctx, http.MethodPost, u.String(), req, header) if err != nil { return resp, err } bodyBytes, err := io.ReadAll(clientResp.Body) if err != nil { return resp, err } err = json.Unmarshal(bodyBytes, &resp) if err != nil { return resp, err } return resp, err }