package httpcall // //import ( // "context" // "encoding/json" // "errors" // "finclip-app-manager/infrastructure/config" // "net/http" // // "github.com/gin-gonic/gin" //) // //const ( // Opcreate = "create" //) // //const ( // ObjectTypeApp = "app" //) // //type Notification struct { // ObjectType string `json:"objectType"` // ObjectID string `json:"objectId"` // Operator string `json:"operator"` // Operation string `json:"operation"` // Timestamp int64 `json:"timestamp"` // CustomData map[string]interface{} `json:"customData"` //} // //type NotifyResponse struct { // Errcode string `json:"errcode"` // Error string `json:"error"` // Data map[string]interface{} `json:"data"` //} // //type DeveloperData struct { // AccountId string `json:"accountId" bson:"accountId"` //mysql改造使用 // Type int `json:"type" bson:"type"` //类型,1:个人账号,2:企业账号(已经提交企业资料申请) // OrganTraceId string `json:"organTraceId" bson:"organTraceId"` //企业绑定id // Name string `json:"name" bson:"name"` //姓名 // Email string `json:"email" bson:"email"` //邮箱 // Account string `json:"account" bson:"account"` //账号 // Status int `json:"status" bson:"status"` //1--正常 2--已冻结 3--已延期 //} // //const ( // ORGAN_ACCOUNT_TYPE_PERSON = 1 // ORGAN_ACCOUNT_TYPE_BUSINESS = 2 //) // //const ( // ORGAN_STATUS_NORMAL = 1 //正常 // ORGAN_STATUS_FREEZE = 2 //已冻结 // ORGAN_STATUS_DELAY = 3 //已延期 //) // //type GetDevelopResponse struct { // Data DeveloperData `json:"data"` //} // //type Provider struct { // ClientBase //} // //func NewProvider() *Provider { // return &Provider{ // ClientBase: ClientBase{ // Service: "Provider", // }, // } //} // //func (p *Provider) GetGroupID(ctx context.Context, c *gin.Context, url string) (string, error) { // if url == "" { // log.Errorf("GetGroupID url empty!") // return "", errors.New(ErrEmptyURL) // } // p.Method = "GET" // p.URL = url // p.RequestHeader = make(map[string]string) // //zipkin上报 // if c != nil { // spanId := c.Request.Header.Get("Zipkin-Span-Id") // value := c.GetString("zipkin_trace_span_id_" + spanId) // p.RequestHeader["Zipkin-Span-Context"] = value // } // log.Infof("GetGroupID url:%s", url) // err := p.Fetch(ctx) // if err != nil { // log.Errorf("GetGroupID fetch err:%s", err.Error()) // return "", err // } else if p.StatusCode != http.StatusOK { // log.Errorf("GetGroupID StatusCode err,body:%s", string(p.ResponseBody)) // return "", errors.New(ErrHttpCode) // } // resp := GetGroupIDResponse{} // if err := json.Unmarshal(p.ResponseBody, &resp); err != nil { // log.Errorf("Failed to unmarshal response to GetGroupIDResponse: %v\n", err) // return "", err // } // return resp.Data.GroupID, nil //} // //func (p *Provider) GetGroupInfoByUserId(ctx context.Context, url string) (*GroupIDData, error) { // if url == "" { // log.Errorf(ErrEmptyURL) // return nil, errors.New(ErrEmptyURL) // } // p.Method = "GET" // p.URL = url // p.RequestHeader = make(map[string]string) // log.Infof("GetGroupInfoByUserId url:%s", url) // err := p.Fetch(ctx) // if err != nil { // log.Errorf("GetGroupInfoByUserId fetch err:%s", err.Error()) // return nil, err // } else if p.StatusCode != http.StatusOK { // log.Errorf("GetGroupInfoByUserId StatusCode err,body:%s", string(p.ResponseBody)) // return nil, errors.New(ErrHttpCode) // } // resp := GetGroupIDResponse{} // if err := json.Unmarshal(p.ResponseBody, &resp); err != nil { // log.Errorf("Failed to unmarshal response to GetGroupIDResponse, error: %v\n", err) // return nil, err // } // return &resp.Data, nil //} // //func (p *Provider) Notify(ctx context.Context, c *gin.Context, n *Notification) (int, *NotifyResponse, error) { // resp := &NotifyResponse{} // url := config.Cfg.NotificationProviderURL // if url == "" { // log.Errorf("Notify url empty!") // return http.StatusInternalServerError, nil, errors.New(ErrEmptyURL) // } // log.Infof("Notify url:%s", url) // data, err := json.Marshal(n) // if err != nil { // log.Errorf("Failed to marshal notification: %v\n", err) // return http.StatusInternalServerError, resp, errors.New(ErrSystemCall) // } // p.Method = "POST" // p.RequestBody = data // p.URL = url // p.RequestHeader = map[string]string{ // "Accept": "application/json, text/plain, */*", // "Content-Type": "application/json", // "url-call": "internal", // } // //zipkin上报 // { // spanId := c.Request.Header.Get("Zipkin-Span-Id") // value := c.GetString("zipkin_trace_span_id_" + spanId) // p.RequestHeader["Zipkin-Span-Context"] = value // } // err = p.Fetch(ctx) // if err != nil { // log.Errorf("Notify fetch err:%s", err.Error()) // return http.StatusInternalServerError, resp, err // } else if p.StatusCode != http.StatusOK { // log.Errorf("Notify StatusCode err,body:%s", string(p.ResponseBody)) // if err := json.Unmarshal(p.ResponseBody, &resp); err != nil { // log.Errorf("Failed to unmarshal to NotifyResponse: %v", err) // return http.StatusInternalServerError, resp, err // } // return p.StatusCode, resp, errors.New(ErrHttpCode) // } // return http.StatusOK, resp, nil //} // //func (p *Provider) AddLimitInfo(ctx context.Context, c *gin.Context, n *AddLimitInfoReq) (int, *AddLimitInfoRsp, error) { // resp := &AddLimitInfoRsp{} // url := config.Cfg.AddLimitInfoURL // if url == "" { // log.Errorf("Notify url empty!") // return http.StatusInternalServerError, nil, errors.New(ErrEmptyURL) // } // data, err := json.Marshal(n) // if err != nil { // log.Errorf("Failed to marshal notification: %v\n", err) // return http.StatusInternalServerError, resp, errors.New(ErrSystemCall) // } // p.Method = "POST" // p.RequestBody = data // p.URL = url // p.RequestHeader = map[string]string{ // "Accept": "application/json, text/plain, */*", // "Content-Type": "application/json", // "url-call": "internal", // } // //zipkin上报 // { // spanId := c.Request.Header.Get("Zipkin-Span-Id") // value := c.GetString("zipkin_trace_span_id_" + spanId) // p.RequestHeader["Zipkin-Span-Context"] = value // } // log.Infof("AddLimitInfo info:%+v,url:%s", n, url) // err = p.Fetch(ctx) // if err != nil { // log.Errorf("AddLimitInfo fetch err:%s", err.Error()) // return http.StatusInternalServerError, resp, err // } else if p.StatusCode != http.StatusOK { // log.Debugln("Notify StatusCode err,body:%s", string(p.ResponseBody)) // if err := json.Unmarshal(p.ResponseBody, &resp); err != nil { // log.Errorf("Failed to unmarshal to NotifyResponse: %v\n", err) // return http.StatusInternalServerError, resp, err // } // return p.StatusCode, resp, errors.New(ErrHttpCode) // } // return http.StatusOK, resp, nil //} // //func (p *Provider) GetAccountInfo(ctx context.Context, c *gin.Context, url string, accountId string) (*AccountInfoData, error) { // if url == "" { // log.Errorf("GetAccountInfo url empty!") // return nil, errors.New(ErrEmptyURL) // } // p.Method = "GET" // p.URL = url // p.RequestHeader = make(map[string]string) // p.RequestHeader["X-Consumer-Custom-ID"] = accountId // p.RequestHeader["Content-Type"] = "application/json" // p.RequestHeader["url-call"] = "internal" // //zipkin上报 // log.Infof("GetAccountInfo url:%s", url) // err := p.Fetch(ctx) // if err != nil { // log.Errorf("GetAccountInfo fetch err:%s", err.Error()) // //p.LogError(err) // return nil, err // } else if p.StatusCode != http.StatusOK { // log.Errorf("Notify StatusCode err,body:%s", string(p.ResponseBody)) // //p.LogError(err) // return nil, errors.New(ErrHttpCode) // } // resp := GetAccountInfoResponse{} // if err := json.Unmarshal(p.ResponseBody, &resp); err != nil { // log.Errorf("Failed to unmarshal response to GetAccountInfoResponse, error: %v\n", err) // return nil, err // } // return &resp.Data, nil //} // //func (p *Provider) GetAdminAccountInfo(ctx context.Context, c *gin.Context, url string) (*AdminAccountInfo, error) { // if url == "" { // log.Errorf("GetAdminAccountInfo url empty!") // return nil, errors.New(ErrEmptyURL) // } // p.Method = "GET" // p.URL = url // p.RequestHeader = make(map[string]string) // //zipkin上报 // { // spanId := c.Request.Header.Get("Zipkin-Span-Id") // value := c.GetString("zipkin_trace_span_id_" + spanId) // p.RequestHeader["Zipkin-Span-Context"] = value // } // err := p.Fetch(ctx) // if err != nil { // log.Errorf("GetAdminAccountInfo fetch err:%s", err.Error()) // return nil, err // } else if p.StatusCode != http.StatusOK { // log.Errorf("GetAdminAccountInfo StatusCode err,body:%s", string(p.ResponseBody)) // return nil, errors.New(ErrHttpCode) // } // resp := GetAdminAccountInfoResponse{} // if err := json.Unmarshal(p.ResponseBody, &resp); err != nil { // log.Errorf("Failed to unmarshal response to GetAdminAccountInfo Response, error: %v\n", err) // return nil, err // } // return &resp.Data.Info, nil //} // //func (p *Provider) SearchAccountInfo(ctx context.Context, c *gin.Context, url string, account string) (*AccountInfoData, error) { // if url == "" { // log.Errorf("GetAccountInfo url empty!") // return nil, errors.New(ErrEmptyURL) // } // p.Method = "GET" // p.URL = url + "?account=" + account // p.RequestHeader = make(map[string]string) // p.RequestHeader["Content-Type"] = "application/json" // p.RequestHeader["url-call"] = "internal" // //zipkin上报 // log.Infof("GetAccountInfo url:%s", url) // err := p.Fetch(ctx) // if err != nil { // log.Errorf("GetAccountInfo fetch err:%s", err.Error()) // //p.LogError(err) // return nil, err // } else if p.StatusCode != http.StatusOK { // log.Errorf("Notify StatusCode err,body:%s", string(p.ResponseBody)) // //p.LogError(err) // return nil, errors.New(ErrHttpCode) // } // resp := GetAccountInfoResponse{} // if err := json.Unmarshal(p.ResponseBody, &resp); err != nil { // log.Errorf("Failed to unmarshal response to GetAccountInfoResponse, error: %v\n", err) // return nil, err // } // return &resp.Data, nil //}