diff --git a/automod/visual/hiveai_rule.go b/automod/visual/hiveai_rule.go index e9d21264..ac1af4bf 100644 --- a/automod/visual/hiveai_rule.go +++ b/automod/visual/hiveai_rule.go @@ -15,7 +15,7 @@ func (hal *HiveAIClient) HiveLabelBlobRule(c *automod.RecordContext, blob lexuti var psclabel string if hal.PreScreenClient != nil { - val, err := hal.PreScreenClient.PreScreenImage(data) + val, err := hal.PreScreenClient.PreScreenImage(c.Ctx, data) if err != nil { c.Logger.Info("prescreen-request-error", "err", err) } else { @@ -31,6 +31,8 @@ func (hal *HiveAIClient) HiveLabelBlobRule(c *automod.RecordContext, blob lexuti if psclabel == "sfw" { if len(labels) > 0 { c.Logger.Info("prescreen-safe-failure", "uri", c.RecordOp.ATURI()) + } else { + c.Logger.Info("prescreen-safe-success", "uri", c.RecordOp.ATURI()) } } diff --git a/automod/visual/prescreen.go b/automod/visual/prescreen.go index df51ef5a..1bb6cfe2 100644 --- a/automod/visual/prescreen.go +++ b/automod/visual/prescreen.go @@ -2,6 +2,7 @@ package visual import ( "bytes" + "context" "encoding/json" "fmt" "mime/multipart" @@ -68,12 +69,12 @@ func (c *PreScreenClient) recordCallResult(success bool) { } } -func (c *PreScreenClient) PreScreenImage(blob []byte) (string, error) { +func (c *PreScreenClient) PreScreenImage(ctx context.Context, blob []byte) (string, error) { if !c.available() { return "", fmt.Errorf("pre-screening temporarily unavailable") } - res, err := c.checkImage(blob) + res, err := c.checkImage(ctx, blob) if err != nil { c.recordCallResult(false) return "", err @@ -87,7 +88,7 @@ type PreScreenResult struct { Result string `json:"result"` } -func (c *PreScreenClient) checkImage(data []byte) (string, error) { +func (c *PreScreenClient) checkImage(ctx context.Context, data []byte) (string, error) { url := c.Host + "/predict" body := new(bytes.Buffer) @@ -109,6 +110,8 @@ func (c *PreScreenClient) checkImage(data []byte) (string, error) { return "", err } + req = req.WithContext(ctx) + req.Header.Set("Content-Type", writer.FormDataContentType()) req.Header.Set("Authorization", "Bearer "+c.Token)