Update shield_service.go

This commit is contained in:
Lizandro Guarnizo
2026-05-15 23:30:07 -05:00
parent 49cc56123b
commit b631164091
+21 -37
View File
@@ -50,7 +50,18 @@ func (s *ShieldClient) do(method, path string, body interface{}) ([]byte, int, e
} }
defer resp.Body.Close() defer resp.Body.Close()
data, err := io.ReadAll(resp.Body) data, err := io.ReadAll(resp.Body)
return data, resp.StatusCode, err if err != nil {
return nil, resp.StatusCode, err
}
if resp.StatusCode >= 400 {
// La API puede devolver texto plano en errores; evitamos que el caller intente parsear JSON
msg := string(data)
if msg == "" {
msg = resp.Status
}
return nil, resp.StatusCode, fmt.Errorf("shield API error %d: %s", resp.StatusCode, msg)
}
return data, resp.StatusCode, nil
} }
// ─── Health ────────────────────────────────────────────────────────────────── // ─── Health ──────────────────────────────────────────────────────────────────
@@ -118,13 +129,10 @@ func (s *ShieldClient) ReviewRequests(status string) (map[string]interface{}, er
func (s *ShieldClient) ApproveRequest(id, note, reason string) (map[string]interface{}, error) { func (s *ShieldClient) ApproveRequest(id, note, reason string) (map[string]interface{}, error) {
body := map[string]string{"note": note, "reason": reason} body := map[string]string{"note": note, "reason": reason}
data, code, err := s.do("PUT", "/api/admin/review-requests/"+id+"/approve", body) data, _, err := s.do("PUT", "/api/admin/review-requests/"+id+"/approve", body)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if code >= 400 {
return nil, fmt.Errorf("shield API error %d: %s", code, string(data))
}
var out map[string]interface{} var out map[string]interface{}
json.Unmarshal(data, &out) json.Unmarshal(data, &out)
return out, nil return out, nil
@@ -132,13 +140,10 @@ func (s *ShieldClient) ApproveRequest(id, note, reason string) (map[string]inter
func (s *ShieldClient) RejectRequest(id, note string) (map[string]interface{}, error) { func (s *ShieldClient) RejectRequest(id, note string) (map[string]interface{}, error) {
body := map[string]string{"note": note} body := map[string]string{"note": note}
data, code, err := s.do("PUT", "/api/admin/review-requests/"+id+"/reject", body) data, _, err := s.do("PUT", "/api/admin/review-requests/"+id+"/reject", body)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if code >= 400 {
return nil, fmt.Errorf("shield API error %d: %s", code, string(data))
}
var out map[string]interface{} var out map[string]interface{}
json.Unmarshal(data, &out) json.Unmarshal(data, &out)
return out, nil return out, nil
@@ -157,27 +162,18 @@ func (s *ShieldClient) Whitelist() (map[string]interface{}, error) {
func (s *ShieldClient) AddWhitelist(domain, reason, addedBy string) (map[string]interface{}, error) { func (s *ShieldClient) AddWhitelist(domain, reason, addedBy string) (map[string]interface{}, error) {
body := map[string]string{"domain": domain, "reason": reason, "added_by": addedBy} body := map[string]string{"domain": domain, "reason": reason, "added_by": addedBy}
data, code, err := s.do("POST", "/api/admin/whitelist", body) data, _, err := s.do("POST", "/api/admin/whitelist", body)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if code >= 400 {
return nil, fmt.Errorf("shield API error %d: %s", code, string(data))
}
var out map[string]interface{} var out map[string]interface{}
json.Unmarshal(data, &out) json.Unmarshal(data, &out)
return out, nil return out, nil
} }
func (s *ShieldClient) DeleteWhitelist(domain string) error { func (s *ShieldClient) DeleteWhitelist(domain string) error {
data, code, err := s.do("DELETE", "/api/admin/whitelist/"+domain, nil) _, _, err := s.do("DELETE", "/api/admin/whitelist/"+domain, nil)
if err != nil { return err
return err
}
if code >= 400 {
return fmt.Errorf("shield API error %d: %s", code, string(data))
}
return nil
} }
// ─── Blacklist ─────────────────────────────────────────────────────────────── // ─── Blacklist ───────────────────────────────────────────────────────────────
@@ -193,27 +189,18 @@ func (s *ShieldClient) Blacklist() (map[string]interface{}, error) {
func (s *ShieldClient) AddBlacklist(domain, reason, addedBy string) (map[string]interface{}, error) { func (s *ShieldClient) AddBlacklist(domain, reason, addedBy string) (map[string]interface{}, error) {
body := map[string]string{"domain": domain, "reason": reason, "added_by": addedBy} body := map[string]string{"domain": domain, "reason": reason, "added_by": addedBy}
data, code, err := s.do("POST", "/api/admin/blacklist", body) data, _, err := s.do("POST", "/api/admin/blacklist", body)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if code >= 400 {
return nil, fmt.Errorf("shield API error %d: %s", code, string(data))
}
var out map[string]interface{} var out map[string]interface{}
json.Unmarshal(data, &out) json.Unmarshal(data, &out)
return out, nil return out, nil
} }
func (s *ShieldClient) DeleteBlacklist(domain string) error { func (s *ShieldClient) DeleteBlacklist(domain string) error {
data, code, err := s.do("DELETE", "/api/admin/blacklist/"+domain, nil) _, _, err := s.do("DELETE", "/api/admin/blacklist/"+domain, nil)
if err != nil { return err
return err
}
if code >= 400 {
return fmt.Errorf("shield API error %d: %s", code, string(data))
}
return nil
} }
// ─── Reputación ────────────────────────────────────────────────────────────── // ─── Reputación ──────────────────────────────────────────────────────────────
@@ -229,13 +216,10 @@ func (s *ShieldClient) Reputation(domain string) (map[string]interface{}, error)
func (s *ShieldClient) AdjustScore(domain string, votesReal, votesFake int) (map[string]interface{}, error) { func (s *ShieldClient) AdjustScore(domain string, votesReal, votesFake int) (map[string]interface{}, error) {
body := map[string]int{"votes_real": votesReal, "votes_fake": votesFake} body := map[string]int{"votes_real": votesReal, "votes_fake": votesFake}
data, code, err := s.do("PUT", "/api/admin/reputation/"+domain+"/score", body) data, _, err := s.do("PUT", "/api/admin/reputation/"+domain+"/score", body)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if code >= 400 {
return nil, fmt.Errorf("shield API error %d: %s", code, string(data))
}
var out map[string]interface{} var out map[string]interface{}
json.Unmarshal(data, &out) json.Unmarshal(data, &out)
return out, nil return out, nil