Delegate ReportDetectedCookies to ReportDetectedTrackers
The compat endpoint now writes to the unified tracker tables instead of the legacy cookies + cookie_patterns tables. Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
@@ -2282,97 +2282,9 @@ func (s *Service) ReportDetectedCookies(
|
|||||||
bannerID gid.GID,
|
bannerID gid.GID,
|
||||||
req ReportDetectedCookiesRequest,
|
req ReportDetectedCookiesRequest,
|
||||||
) error {
|
) error {
|
||||||
return s.pg.WithTx(
|
return s.ReportDetectedTrackers(ctx, bannerID, ReportDetectedTrackersRequest{
|
||||||
ctx,
|
Cookies: req.Cookies,
|
||||||
func(ctx context.Context, tx pg.Tx) error {
|
})
|
||||||
scope := coredata.NewScopeFromObjectID(bannerID)
|
|
||||||
|
|
||||||
var banner coredata.CookieBanner
|
|
||||||
if err := banner.LoadByID(ctx, tx, scope, bannerID); err != nil {
|
|
||||||
if errors.Is(err, coredata.ErrResourceNotFound) {
|
|
||||||
return ErrBannerNotFound
|
|
||||||
}
|
|
||||||
return fmt.Errorf("cannot load cookie banner: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var uncategorised coredata.CookieCategory
|
|
||||||
if err := uncategorised.LoadUncategorisedByCookieBannerID(ctx, tx, scope, banner.ID); err != nil {
|
|
||||||
return fmt.Errorf("cannot load uncategorised category: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
inserted := 0
|
|
||||||
now := time.Now()
|
|
||||||
|
|
||||||
for _, dc := range req.Cookies {
|
|
||||||
var matchedPattern coredata.CookiePattern
|
|
||||||
err := matchedPattern.FindMatchingPattern(ctx, tx, scope, banner.ID, dc.Name)
|
|
||||||
if err != nil && !errors.Is(err, coredata.ErrResourceNotFound) {
|
|
||||||
return fmt.Errorf("cannot find matching pattern: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err == nil && matchedPattern.Excluded {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
patternID := matchedPattern.ID
|
|
||||||
if errors.Is(err, coredata.ErrResourceNotFound) {
|
|
||||||
newPattern := &coredata.CookiePattern{
|
|
||||||
ID: gid.New(scope.GetTenantID(), coredata.CookiePatternEntityType),
|
|
||||||
OrganizationID: banner.OrganizationID,
|
|
||||||
CookieBannerID: banner.ID,
|
|
||||||
CookieCategoryID: uncategorised.ID,
|
|
||||||
Pattern: dc.Name,
|
|
||||||
MatchType: coredata.CookiePatternMatchTypeExact,
|
|
||||||
DisplayName: dc.Name,
|
|
||||||
MaxAgeSeconds: dc.MaxAgeSeconds,
|
|
||||||
Description: "",
|
|
||||||
Source: dc.Source,
|
|
||||||
CreatedAt: now,
|
|
||||||
UpdatedAt: now,
|
|
||||||
}
|
|
||||||
wasInserted, err := newPattern.InsertIfNotExists(ctx, tx, scope)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot insert cookie pattern: %w", err)
|
|
||||||
}
|
|
||||||
if wasInserted {
|
|
||||||
patternID = newPattern.ID
|
|
||||||
inserted++
|
|
||||||
} else {
|
|
||||||
var existingPattern coredata.CookiePattern
|
|
||||||
if err := existingPattern.LoadByBannerIDAndPattern(ctx, tx, scope, banner.ID, dc.Name); err != nil {
|
|
||||||
return fmt.Errorf("cannot load existing cookie pattern: %w", err)
|
|
||||||
}
|
|
||||||
patternID = existingPattern.ID
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cookie := &coredata.Cookie{
|
|
||||||
ID: gid.New(scope.GetTenantID(), coredata.CookieEntityType),
|
|
||||||
OrganizationID: banner.OrganizationID,
|
|
||||||
CookieBannerID: banner.ID,
|
|
||||||
CookiePatternID: patternID,
|
|
||||||
Name: dc.Name,
|
|
||||||
MaxAgeSeconds: dc.MaxAgeSeconds,
|
|
||||||
Source: dc.Source,
|
|
||||||
LastDetectedAt: now,
|
|
||||||
CreatedAt: now,
|
|
||||||
UpdatedAt: now,
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := cookie.InsertIfNotExists(ctx, tx, scope); err != nil {
|
|
||||||
return fmt.Errorf("cannot insert detected cookie: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if inserted > 0 {
|
|
||||||
if err := banner.SetPatternAnalysisRequested(ctx, tx); err != nil {
|
|
||||||
return fmt.Errorf("cannot request pattern analysis: %w", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Service) ReportDetectedTrackers(
|
func (s *Service) ReportDetectedTrackers(
|
||||||
|
|||||||
Reference in New Issue
Block a user