diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..65bdbe0 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,21 @@ +# Contributing + +If you want to submit a pull request to fix a bug or enhance an existing +feature, please first open an issue and link to that issue when you +submit your pull request. + +If you have any questions about a possible submission, feel free to open +an issue too. + +### Pull request process + +1. Fork this repository +2. Create a branch in your fork to implement the changes. We recommend using + the issue number as part of your branch name, e.g. `1234-fixes` +3. Ensure that any documentation is updated with the changes that are required + by your fix. +4. Ensure that any samples are updated if the base image has been changed. +5. Submit the pull request. *Do not leave the pull request blank*. Explain exactly + what your changes are meant to do and provide simple steps on how to validate + your changes. Ensure that you reference the issue you created as well. + The pull request will be review before it is merged. diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000..e415a86 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,17 @@ +--- +name: Bug Report +about: Report a bug you encountered +labels: bug +--- +**What happened**: + +**What you expected to happen**: + +**How to reproduce it (as minimally and precisely as possible)**: + +**Anything else we need to know?**: + +**Environment**: +- Affected Version: +- OS (e.g: `cat /etc/os-release`): +- Others: diff --git a/.github/ISSUE_TEMPLATE/enhancement.md b/.github/ISSUE_TEMPLATE/enhancement.md new file mode 100644 index 0000000..bfa7836 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/enhancement.md @@ -0,0 +1,8 @@ +--- +name: Enhancement Request +about: Suggest an enhancement +labels: enhancement +--- +**What would you like to be added**: + +**Why is this needed**: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..1b9b846 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,19 @@ +### Type of Change +- [ ] New feature +- [ ] Bug fix +- [ ] Documentation update +- [ ] Refactoring +- [ ] Hotfix +- [ ] Security patch + +### Description +_[Provide a detailed explanation of the changes you have made. Include the reasons behind these changes and any relevant context. Link any related issues.]_ + +### Related Issue +_[If this pull request addresses an issue, please link to it here (e.g., Fixes #123).]_ + +### Checklist +- [ ] My code adheres to the coding and style guidelines of the project. +- [ ] I have performed a self-review of my own code. +- [ ] I have commented my code, particularly in hard-to-understand areas. +- [ ] I have made corresponding changes to the documentation. diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..b9eee3d --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,45 @@ +# Security Guidelines + +## How security is managed on this project + +The foomo team and community take security seriously and wants to ensure that +we maintain a secure environment and provide secure solutions for the open +source community. To help us achieve these goals, please note the +following before using this software: + +- Review the software license to understand the contributor's obligations in + terms of warranties and suitability for purpose +- For any questions or concerns about security, you can + [create an issue][new-issue] or [report a vulnerability][new-sec-issue] +- We request that you work with our security team and opt for + responsible disclosure using the guidelines below +- All security related issues and pull requests you make should be tagged with + "security" for easy identification +- Please monitor this repository and update your environment in a timely manner + as we release patches and updates + +## Responsibly Disclosing Security Bugs + +If you find a security bug in this repository, please work with contributors +following responsible disclosure principles and these guidelines: + +- Do not submit a normal issue or pull request in our public repository, instead + [report it directly][new-sec-issue]. +- We will review your submission and may follow up for additional details +- If you have a patch, we will review it and approve it privately; once approved + for release you can submit it as a pull request publicly in the repository (we + give credit where credit is due) +- We will keep you informed during our investigation, feel free to check in for + a status update +- We will release the fix and publicly disclose the issue as soon as possible, + but want to ensure we due properly due diligence before releasing +- Please do not publicly blog or post about the security issue until after we + have updated the public repo so that other downstream users have an opportunity + to patch + +## Contact / Misc + +If you have any questions, please reach out directly by [creating an issue][new-issue]. + +[new-issue]: https://github.com/foomo/sesamy-cli/issues/new/choose +[new-sec-issue]: https://github.com/foomo/sesamy-cli/security/advisories/new diff --git a/pkg/provider/conversionlinker/server.go b/pkg/provider/conversionlinker/server.go index 7c7e66a..9147fe3 100644 --- a/pkg/provider/conversionlinker/server.go +++ b/pkg/provider/conversionlinker/server.go @@ -11,12 +11,9 @@ import ( ) func Server(tm *tagmanager.TagManager, cfg config.ConversionLinker) error { - { - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } var eventTriggerOpts []trigger.ConversionLinkerEventOption @@ -31,12 +28,12 @@ func Server(tm *tagmanager.TagManager, cfg config.ConversionLinker) error { eventTriggerOpts = append(eventTriggerOpts, trigger.ConversionLinkerEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewConversionLinkerEvent(NameConversionLinkerTrigger, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewConversionLinkerEvent(NameConversionLinkerTrigger, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+NameConversionLinkerTrigger) } - if _, err := tm.UpsertTag(containertag.NewConversionLinker(Name, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, containertag.NewConversionLinker(Name, eventTrigger)); err != nil { return err } diff --git a/pkg/provider/cookiebot/web.go b/pkg/provider/cookiebot/web.go index 4ae4df6..0920ed1 100644 --- a/pkg/provider/cookiebot/web.go +++ b/pkg/provider/cookiebot/web.go @@ -8,12 +8,9 @@ import ( ) func Web(tm *tagmanager.TagManager, cfg config.Cookiebot) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // create event tags @@ -22,7 +19,7 @@ func Web(tm *tagmanager.TagManager, cfg config.Cookiebot) error { return errors.Wrapf(err, "Failed to lookup `%s`, please install the `%s` gallery tag template first (%s)", cfg.TemplateName, "Cookiebot CMP", "https://tagmanager.google.com/gallery/#/owners/cybotcorp/templates/gtm-templates-cookiebot-cmp") } - if _, err := tm.UpsertTag(tag.NewCookiebotInitialization(NameCookiebotTag, cfg, temmplate)); err != nil { + if _, err := tm.UpsertTag(folder, tag.NewCookiebotInitialization(NameCookiebotTag, cfg, temmplate)); err != nil { return err } } diff --git a/pkg/provider/criteo/server.go b/pkg/provider/criteo/server.go index 6d348d5..202e56e 100644 --- a/pkg/provider/criteo/server.go +++ b/pkg/provider/criteo/server.go @@ -15,12 +15,9 @@ import ( ) func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Criteo) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } template, err := tm.LookupTemplate(NameCriteoEventsAPITemplate) @@ -32,17 +29,17 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Criteo) error } { // create tags - callerID, err := tm.UpsertVariable(commonvariable.NewConstant(NameCallerID, cfg.CallerID)) + callerID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameCallerID, cfg.CallerID)) if err != nil { return err } - partnerID, err := tm.UpsertVariable(commonvariable.NewConstant(NamePartnerID, cfg.PartnerID)) + partnerID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NamePartnerID, cfg.PartnerID)) if err != nil { return err } - applicationID, err := tm.UpsertVariable(commonvariable.NewConstant(NameApplicationID, cfg.ApplicationID)) + applicationID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameApplicationID, cfg.ApplicationID)) if err != nil { return err } @@ -65,12 +62,12 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Criteo) error eventTriggerOpts = append(eventTriggerOpts, trigger.CriteoEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewCriteoEvent(event, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewCriteoEvent(event, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+event) } - if _, err := tm.UpsertTag(servertagx.NewEventsAPITag(event, callerID, partnerID, applicationID, template, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, servertagx.NewEventsAPITag(event, callerID, partnerID, applicationID, template, eventTrigger)); err != nil { return err } } diff --git a/pkg/provider/criteo/web.go b/pkg/provider/criteo/web.go index fe0549d..ae52c70 100644 --- a/pkg/provider/criteo/web.go +++ b/pkg/provider/criteo/web.go @@ -11,12 +11,9 @@ import ( ) func Web(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Criteo) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } template, err := tm.LookupTemplate(NameCriteoUserIdentificationTemplate) @@ -28,17 +25,17 @@ func Web(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Criteo) error { } { // setup criteo - callerID, err := tm.UpsertVariable(commonvariable.NewConstant(NameCallerID, cfg.CallerID)) + callerID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameCallerID, cfg.CallerID)) if err != nil { return err } - partnerID, err := tm.UpsertVariable(commonvariable.NewConstant(NamePartnerID, cfg.PartnerID)) + partnerID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NamePartnerID, cfg.PartnerID)) if err != nil { return err } - if _, err = tm.UpsertTag(client.NewUserIdentification(NameCriteoUserIdentificationTag, callerID, partnerID, template)); err != nil { + if _, err = tm.UpsertTag(folder, client.NewUserIdentification(NameCriteoUserIdentificationTag, callerID, partnerID, template)); err != nil { return err } } diff --git a/pkg/provider/emarsys/server.go b/pkg/provider/emarsys/server.go index 9123042..d451094 100644 --- a/pkg/provider/emarsys/server.go +++ b/pkg/provider/emarsys/server.go @@ -17,16 +17,13 @@ import ( ) func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Emarsys) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // conversion - merchantID, err := tm.UpsertVariable(commonvariable.NewConstant(NameMerchantIDConstant, cfg.MerchantID)) + merchantID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameMerchantIDConstant, cfg.MerchantID)) if err != nil { return err } @@ -41,7 +38,7 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Emarsys) error return err } - _, err = tm.UpsertClient(serverclientx.NewEmarsys(NameServerEmarsysClient, cfg, clientTemplate)) + _, err = tm.UpsertClient(folder, serverclientx.NewEmarsys(NameServerEmarsysClient, cfg, clientTemplate)) if err != nil { return err } @@ -65,12 +62,12 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Emarsys) error eventTriggerOpts = append(eventTriggerOpts, trigger.EmarsysEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewEmarsysEvent(event, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewEmarsysEvent(event, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+event) } - if _, err := tm.UpsertTag(servertagx.NewEmarsys(event, merchantID, cfg.TestMode, cfg.DebugMode, tagTemplate, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, servertagx.NewEmarsys(event, merchantID, cfg.TestMode, cfg.DebugMode, tagTemplate, eventTrigger)); err != nil { return err } } diff --git a/pkg/provider/emarsys/web.go b/pkg/provider/emarsys/web.go index 393adcd..171d7f7 100644 --- a/pkg/provider/emarsys/web.go +++ b/pkg/provider/emarsys/web.go @@ -13,12 +13,9 @@ import ( ) func Web(tm *tagmanager.TagManager, cfg config.Emarsys) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // create initialization tag @@ -27,7 +24,7 @@ func Web(tm *tagmanager.TagManager, cfg config.Emarsys) error { return err } - if _, err = tm.UpsertTag(tag.NewEmarsysInitialization(NameWebEmarsysInitalizationTag, tagTemplate)); err != nil { + if _, err = tm.UpsertTag(folder, tag.NewEmarsysInitialization(NameWebEmarsysInitalizationTag, tagTemplate)); err != nil { return err } } @@ -60,7 +57,7 @@ func Web(tm *tagmanager.TagManager, cfg config.Emarsys) error { return errors.Wrap(err, "failed to lookup google tag event setting: "+event) } - if _, err := tm.UpsertTag(containertag.NewGoogleAnalyticsEvent(event, tagID, eventSettings, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, containertag.NewGoogleAnalyticsEvent(event, tagID, eventSettings, eventTrigger)); err != nil { return err } } diff --git a/pkg/provider/facebook/server.go b/pkg/provider/facebook/server.go index 1526129..0fd9410 100644 --- a/pkg/provider/facebook/server.go +++ b/pkg/provider/facebook/server.go @@ -15,25 +15,22 @@ import ( ) func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Facebook) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } - pixelID, err := tm.UpsertVariable(commonvariable.NewConstant(NamePixelIDConstant, cfg.PixelID)) + pixelID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NamePixelIDConstant, cfg.PixelID)) if err != nil { return err } - apiAccessToken, err := tm.UpsertVariable(commonvariable.NewConstant(NameAPIAcessTokenConstant, cfg.APIAccessToken)) + apiAccessToken, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameAPIAcessTokenConstant, cfg.APIAccessToken)) if err != nil { return err } - testEventToken, err := tm.UpsertVariable(commonvariable.NewConstant(NameTestEventTokenConstant, cfg.TestEventToken)) + testEventToken, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameTestEventTokenConstant, cfg.TestEventToken)) if err != nil { return err } @@ -65,12 +62,12 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Facebook) erro eventTriggerOpts = append(eventTriggerOpts, trigger.FacebookEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewFacebookEvent(event, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewFacebookEvent(event, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+event) } - if _, err := tm.UpsertTag(servertagx.NewConversionsAPITag(event, pixelID, apiAccessToken, testEventToken, cfg.ServerContainer.Setting(event), template, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, servertagx.NewConversionsAPITag(event, pixelID, apiAccessToken, testEventToken, cfg.ServerContainer.Setting(event), template, eventTrigger)); err != nil { return err } } diff --git a/pkg/provider/googleads/server.go b/pkg/provider/googleads/server.go index 9c231fe..d1bd44e 100644 --- a/pkg/provider/googleads/server.go +++ b/pkg/provider/googleads/server.go @@ -16,27 +16,24 @@ import ( ) func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.GoogleAds) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } - conversionID, err := tm.UpsertVariable(commonvariable.NewConstant(NameConversionIDConstant, cfg.ConversionID)) + conversionID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameConversionIDConstant, cfg.ConversionID)) if err != nil { return err } // conversion if cfg.Conversion.Enabled { - value, err := tm.UpsertVariable(variable.NewEventData("value")) + value, err := tm.UpsertVariable(folder, variable.NewEventData("value")) if err != nil { return err } - currency, err := tm.UpsertVariable(variable.NewEventData("currency")) + currency, err := tm.UpsertVariable(folder, variable.NewEventData("currency")) if err != nil { return err } @@ -60,12 +57,12 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.GoogleAds) err eventTriggerOpts = append(eventTriggerOpts, trigger.GoogleAdsEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewGoogleAdsEvent(event, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewGoogleAdsEvent(event, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+event) } - if _, err := tm.UpsertTag(servertagx.NewGoogleAdsConversionTracking(event, value, currency, conversionID, cfg.Conversion.ServerContainer.Setting(event), eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, servertagx.NewGoogleAdsConversionTracking(event, value, currency, conversionID, cfg.Conversion.ServerContainer.Setting(event), eventTrigger)); err != nil { return err } } @@ -85,12 +82,12 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.GoogleAds) err eventTriggerOpts = append(eventTriggerOpts, trigger.GoogleAdsRemarketingEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewGoogleAdsRemarketingEvent(NameGoogleAdsRemarketingTrigger, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewGoogleAdsRemarketingEvent(NameGoogleAdsRemarketingTrigger, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+NameGoogleAdsRemarketingTrigger) } - if _, err := tm.UpsertTag(servertagx.NewGoogleAdsRemarketing(NameGoogleAdsRemarketingTag, conversionID, cfg.Remarketing, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, servertagx.NewGoogleAdsRemarketing(NameGoogleAdsRemarketingTag, conversionID, cfg.Remarketing, eventTrigger)); err != nil { return err } } diff --git a/pkg/provider/googleanalytics/server.go b/pkg/provider/googleanalytics/server.go index 0825f1a..6a8d1f7 100644 --- a/pkg/provider/googleanalytics/server.go +++ b/pkg/provider/googleanalytics/server.go @@ -21,12 +21,9 @@ import ( ) func Server(tm *tagmanager.TagManager, cfg config.GoogleAnalytics, redactVisitorIP, enableGeoResolution bool) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // create clients @@ -41,22 +38,22 @@ func Server(tm *tagmanager.TagManager, cfg config.GoogleAnalytics, redactVisitor return err } - client, err := tm.UpsertClient(googleanalyticsclient.NewGoogleAnalyticsGA4(NameGoogleAnalyticsGA4Client, enableGeoResolution, visitorRegion, measurementID)) + client, err := tm.UpsertClient(folder, googleanalyticsclient.NewGoogleAnalyticsGA4(NameGoogleAnalyticsGA4Client, enableGeoResolution, visitorRegion, measurementID)) if err != nil { return err } - if _, err = tm.UpsertTrigger(servertrigger.NewClient(NameGoogleAnalyticsGA4ClientTrigger, client)); err != nil { + if _, err = tm.UpsertTrigger(folder, servertrigger.NewClient(NameGoogleAnalyticsGA4ClientTrigger, client)); err != nil { return err } } { - client, err := tm.UpsertClient(googleanalyticsclient.NewMeasurementProtocolGA4(NameMeasurementProtocolGA4Client)) + client, err := tm.UpsertClient(folder, googleanalyticsclient.NewMeasurementProtocolGA4(NameMeasurementProtocolGA4Client)) if err != nil { return err } - if _, err = tm.UpsertTrigger(servertrigger.NewClient(NameMeasurementProtocolGA4ClientTrigger, client)); err != nil { + if _, err = tm.UpsertTrigger(folder, servertrigger.NewClient(NameMeasurementProtocolGA4ClientTrigger, client)); err != nil { return err } @@ -65,17 +62,17 @@ func Server(tm *tagmanager.TagManager, cfg config.GoogleAnalytics, redactVisitor return err } - userDataVariable, err := tm.UpsertVariable(servervariable.NewMPv2Data("user_data", userDataTemplate)) + userDataVariable, err := tm.UpsertVariable(folder, servervariable.NewMPv2Data("user_data", userDataTemplate)) if err != nil { return err } - debugModeVariable, err := tm.UpsertVariable(servervariable.NewMPv2Data("debug_mode", userDataTemplate)) + debugModeVariable, err := tm.UpsertVariable(folder, servervariable.NewMPv2Data("debug_mode", userDataTemplate)) if err != nil { return err } - _, err = tm.UpsertTransformation(servertransformation.NewMPv2UserData(NameMPv2UserDataTransformation, map[string]*api.Variable{ + _, err = tm.UpsertTransformation(folder, servertransformation.NewMPv2UserData(NameMPv2UserDataTransformation, map[string]*api.Variable{ "user_data": userDataVariable, "debug_mode": debugModeVariable, }, client)) @@ -90,7 +87,7 @@ func Server(tm *tagmanager.TagManager, cfg config.GoogleAnalytics, redactVisitor return err } - _, err = tm.UpsertClient(googleanalyticsclient.NewGoogleGTag(NameGoogleGTagClient, cfg.GoogleGTagJSOverride, template)) + _, err = tm.UpsertClient(folder, googleanalyticsclient.NewGoogleGTag(NameGoogleGTagClient, cfg.GoogleGTagJSOverride, template)) if err != nil { return err } @@ -116,12 +113,12 @@ func Server(tm *tagmanager.TagManager, cfg config.GoogleAnalytics, redactVisitor eventTriggerOpts = append(eventTriggerOpts, trigger.GoogleAnalyticsEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewGoogleAnalyticsEvent(event, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewGoogleAnalyticsEvent(event, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+event) } - if _, err := tm.UpsertTag(containertag.NewGoogleAnalytics(event, redactVisitorIP, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, containertag.NewGoogleAnalytics(event, redactVisitorIP, eventTrigger)); err != nil { return errors.Wrap(err, "failed to upsert google analytics ga4 tag: "+event) } } diff --git a/pkg/provider/googleanalytics/web.go b/pkg/provider/googleanalytics/web.go index 164d30c..d7bb4a4 100644 --- a/pkg/provider/googleanalytics/web.go +++ b/pkg/provider/googleanalytics/web.go @@ -11,12 +11,9 @@ import ( ) func Web(tm *tagmanager.TagManager, cfg config.GoogleAnalytics) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // create event tags @@ -41,7 +38,7 @@ func Web(tm *tagmanager.TagManager, cfg config.GoogleAnalytics) error { return errors.Wrap(err, "failed to lookup google tag event setting: "+event) } - if _, err := tm.UpsertTag(containertag.NewGoogleAnalyticsEvent(event, tagID, eventSettings, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, containertag.NewGoogleAnalyticsEvent(event, tagID, eventSettings, eventTrigger)); err != nil { return err } } diff --git a/pkg/provider/googleconsent/server.go b/pkg/provider/googleconsent/server.go index b25fdba..1cd325e 100644 --- a/pkg/provider/googleconsent/server.go +++ b/pkg/provider/googleconsent/server.go @@ -7,15 +7,9 @@ import ( ) func ServerEnsure(tm *tagmanager.TagManager) error { - folderName := tm.FolderName() - defer tm.SetFolderName(folderName) - - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // create clients @@ -23,10 +17,10 @@ func ServerEnsure(tm *tagmanager.TagManager) error { if err != nil { return err } - if _, err = tm.UpsertVariable(variable.NewGoogleConsentModeAdStorage(consentTemplate)); err != nil { + if _, err = tm.UpsertVariable(folder, variable.NewGoogleConsentModeAdStorage(consentTemplate)); err != nil { return err } - if _, err = tm.UpsertVariable(variable.NewGoogleConsentModeAnalyticsStorage(consentTemplate)); err != nil { + if _, err = tm.UpsertVariable(folder, variable.NewGoogleConsentModeAnalyticsStorage(consentTemplate)); err != nil { return err } } diff --git a/pkg/provider/googletag/server.go b/pkg/provider/googletag/server.go index 805836f..e740f45 100644 --- a/pkg/provider/googletag/server.go +++ b/pkg/provider/googletag/server.go @@ -7,16 +7,13 @@ import ( ) func Server(tm *tagmanager.TagManager, cfg config.GoogleTag) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // create constants - if _, err := tm.UpsertVariable(commonvariable.NewConstant(NameGoogleTagMeasurementID, cfg.TagID)); err != nil { + if _, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameGoogleTagMeasurementID, cfg.TagID)); err != nil { return err } } diff --git a/pkg/provider/googletag/web.go b/pkg/provider/googletag/web.go index 4891e49..a0208bb 100644 --- a/pkg/provider/googletag/web.go +++ b/pkg/provider/googletag/web.go @@ -14,12 +14,9 @@ import ( ) func Web(tm *tagmanager.TagManager, cfg config.GoogleTag) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // setup google tag @@ -32,23 +29,23 @@ func Web(tm *tagmanager.TagManager, cfg config.GoogleTag) error { eventSettings := map[string]*api.Variable{} for k, v := range cfg.DataLayerVariables { - dlv, err := tm.UpsertVariable(variable.NewDataLayer(v)) + dlv, err := tm.UpsertVariable(folder, variable.NewDataLayer(v)) if err != nil { return err } eventSettings[k] = dlv } - tagID, err := tm.UpsertVariable(commonvariable.NewConstant(NameGoogleTagID, cfg.TagID)) + tagID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameGoogleTagID, cfg.TagID)) if err != nil { return err } - settingsVariable, err := tm.UpsertVariable(containervariable.NewGoogleTagConfigurationSettings(NameGoogleTagSettings, configSettings)) + settingsVariable, err := tm.UpsertVariable(folder, containervariable.NewGoogleTagConfigurationSettings(NameGoogleTagSettings, configSettings)) if err != nil { return err } - if _, err = tm.UpsertTag(webtag.NewGoogleTag(NameGoogleTag, tagID, settingsVariable, eventSettings)); err != nil { + if _, err = tm.UpsertTag(folder, webtag.NewGoogleTag(NameGoogleTag, tagID, settingsVariable, eventSettings)); err != nil { return err } } @@ -57,9 +54,10 @@ func Web(tm *tagmanager.TagManager, cfg config.GoogleTag) error { } func CreateWebEventTriggers(tm *tagmanager.TagManager, cfg contemplate.Config) (map[string]map[string]string, error) { - previousFolderName := tm.FolderName() - tm.SetFolderName("Sesamy - " + Name) - defer tm.SetFolderName(previousFolderName) + folder, err := tm.LookupFolder("Sesamy - " + Name) + if err != nil { + return nil, err + } eventParameters, err := utils.LoadEventParams(cfg) if err != nil { @@ -67,7 +65,7 @@ func CreateWebEventTriggers(tm *tagmanager.TagManager, cfg contemplate.Config) ( } for event, parameters := range eventParameters { - if _, err = tm.UpsertTrigger(commontrigger.NewEvent(event)); err != nil { + if _, err = tm.UpsertTrigger(folder, commontrigger.NewEvent(event)); err != nil { return nil, err } @@ -76,7 +74,7 @@ func CreateWebEventTriggers(tm *tagmanager.TagManager, cfg contemplate.Config) ( return nil, err } - if _, err := tm.UpsertVariable(containervariable.NewGoogleTagEventSettings(event, variables)); err != nil { + if _, err := tm.UpsertVariable(folder, containervariable.NewGoogleTagEventSettings(event, variables)); err != nil { return nil, err } } @@ -85,13 +83,14 @@ func CreateWebEventTriggers(tm *tagmanager.TagManager, cfg contemplate.Config) ( } func CreateWebDatalayerVariables(tm *tagmanager.TagManager, parameters map[string]string) (map[string]*api.Variable, error) { - previousFolderName := tm.FolderName() - tm.SetFolderName("Sesamy - " + Name) - defer tm.SetFolderName(previousFolderName) - var err error + folder, err := tm.LookupFolder("Sesamy - " + Name) + if err != nil { + return nil, err + } + variables := make(map[string]*api.Variable, len(parameters)) for parameterName, parameterValue := range parameters { - if variables[parameterName], err = tm.UpsertVariable(variable.NewDataLayer(parameterValue)); err != nil { + if variables[parameterName], err = tm.UpsertVariable(folder, variable.NewDataLayer(parameterValue)); err != nil { return nil, err } } diff --git a/pkg/provider/googletagmanager/server.go b/pkg/provider/googletagmanager/server.go index 6e9ae0b..4656907 100644 --- a/pkg/provider/googletagmanager/server.go +++ b/pkg/provider/googletagmanager/server.go @@ -10,12 +10,9 @@ import ( ) func Server(tm *tagmanager.TagManager, cfg config.GoogleTagManager, enableGeoResolution bool) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // enable build in variables @@ -25,24 +22,24 @@ func Server(tm *tagmanager.TagManager, cfg config.GoogleTagManager, enableGeoRes } { // create client - visitorRegion, err := tm.UpsertVariable(variable.NewVisitorRegion(NameGoogleTagManagerVisitorRegion)) + visitorRegion, err := tm.UpsertVariable(folder, variable.NewVisitorRegion(NameGoogleTagManagerVisitorRegion)) if err != nil { return err } - if _, err := tm.UpsertClient(client.NewGoogleTagManagerWebContainer(NameGoogleTagManagerWebContainerClient, cfg.WebContainer.TagID, enableGeoResolution, visitorRegion)); err != nil { + if _, err := tm.UpsertClient(folder, client.NewGoogleTagManagerWebContainer(NameGoogleTagManagerWebContainerClient, cfg.WebContainer.TagID, enableGeoResolution, visitorRegion)); err != nil { return err } } { // create variables for _, value := range cfg.ServerContaienrVariables.EventData { - if _, err := tm.UpsertVariable(servervariable.NewEventData(value)); err != nil { + if _, err := tm.UpsertVariable(folder, servervariable.NewEventData(value)); err != nil { return err } } for key, value := range cfg.ServerContaienrVariables.LookupTables { - if _, err := tm.UpsertVariable(commonvariable.NewLookupTable(key, value)); err != nil { + if _, err := tm.UpsertVariable(folder, commonvariable.NewLookupTable(key, value)); err != nil { return err } } diff --git a/pkg/provider/googletagmanager/web.go b/pkg/provider/googletagmanager/web.go index a808588..308a277 100644 --- a/pkg/provider/googletagmanager/web.go +++ b/pkg/provider/googletagmanager/web.go @@ -8,22 +8,19 @@ import ( ) func Web(tm *tagmanager.TagManager, cfg config.GoogleTagManager) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // create variables for _, value := range cfg.WebContaienrVariables.DataLayer { - if _, err := tm.UpsertVariable(variable.NewDataLayer(value)); err != nil { + if _, err := tm.UpsertVariable(folder, variable.NewDataLayer(value)); err != nil { return err } } for key, value := range cfg.WebContaienrVariables.LookupTables { - if _, err := tm.UpsertVariable(commonvariable.NewLookupTable(key, value)); err != nil { + if _, err := tm.UpsertVariable(folder, commonvariable.NewLookupTable(key, value)); err != nil { return err } } diff --git a/pkg/provider/hotjar/web.go b/pkg/provider/hotjar/web.go index 96bf711..ebf1096 100644 --- a/pkg/provider/hotjar/web.go +++ b/pkg/provider/hotjar/web.go @@ -8,21 +8,18 @@ import ( ) func Web(tm *tagmanager.TagManager, cfg config.Hotjar) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } { // setup hotjar - siteID, err := tm.UpsertVariable(commonvariable.NewConstant(NameSiteID, cfg.SiteID)) + siteID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameSiteID, cfg.SiteID)) if err != nil { return err } - if _, err = tm.UpsertTag(client.NewHotjar(NameHotjarTag, siteID)); err != nil { + if _, err = tm.UpsertTag(folder, client.NewHotjar(NameHotjarTag, siteID)); err != nil { return err } } diff --git a/pkg/provider/microsoftads/server.go b/pkg/provider/microsoftads/server.go index a8f3219..2fa3c56 100644 --- a/pkg/provider/microsoftads/server.go +++ b/pkg/provider/microsoftads/server.go @@ -16,15 +16,12 @@ import ( ) func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.MicrosoftAds) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } - tagID, err := tm.UpsertVariable(commonvariable.NewConstant(NameTagIDConstant, cfg.TagID)) + tagID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameTagIDConstant, cfg.TagID)) if err != nil { return err } @@ -54,12 +51,12 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.MicrosoftAds) eventTriggerOpts = append(eventTriggerOpts, trigger.ConversionEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewConversionEvent(event, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewConversionEvent(event, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+event) } - if _, err := tm.UpsertTag(servertagx.NewConversion(event, tagID, tagTemplate, cfg.Conversion.ServerContainer.Setting(event), eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, servertagx.NewConversion(event, tagID, tagTemplate, cfg.Conversion.ServerContainer.Setting(event), eventTrigger)); err != nil { return err } } diff --git a/pkg/provider/tracify/server.go b/pkg/provider/tracify/server.go index cd42ef5..691056a 100644 --- a/pkg/provider/tracify/server.go +++ b/pkg/provider/tracify/server.go @@ -16,21 +16,18 @@ import ( ) func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Tracify) error { - { // create folder - if folder, err := tm.UpsertFolder("Tracify - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Tracify - " + Name) + if err != nil { + return err } { // conversion - token, err := tm.UpsertVariable(commonvariable.NewConstant(NameTokenConstant, cfg.Token)) + token, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameTokenConstant, cfg.Token)) if err != nil { return err } - customerSiteID, err := tm.UpsertVariable(commonvariable.NewConstant(NameCustomerSiteIDConstant, cfg.CustomerSiteID)) + customerSiteID, err := tm.UpsertVariable(folder, commonvariable.NewConstant(NameCustomerSiteIDConstant, cfg.CustomerSiteID)) if err != nil { return err } @@ -59,12 +56,12 @@ func Server(l *slog.Logger, tm *tagmanager.TagManager, cfg config.Tracify) error eventTriggerOpts = append(eventTriggerOpts, trigger.TracifyEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewTracifyEvent(event, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewTracifyEvent(event, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+event) } - if _, err := tm.UpsertTag(servertagx.NewTracify(event, token, customerSiteID, tagTemplate, cfg, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, servertagx.NewTracify(event, token, customerSiteID, tagTemplate, cfg, eventTrigger)); err != nil { return err } } diff --git a/pkg/provider/umami/server.go b/pkg/provider/umami/server.go index 69a2bd7..822e42e 100644 --- a/pkg/provider/umami/server.go +++ b/pkg/provider/umami/server.go @@ -13,12 +13,9 @@ import ( ) func Server(tm *tagmanager.TagManager, cfg config.Umami) error { - { // create folder - if folder, err := tm.UpsertFolder("Sesamy - " + Name); err != nil { - return err - } else { - tm.SetFolderName(folder.Name) - } + folder, err := tm.UpsertFolder("Sesamy - " + Name) + if err != nil { + return err } template, err := tm.UpsertCustomTemplate(containertemplate.NewUmami(Name)) @@ -45,12 +42,12 @@ func Server(tm *tagmanager.TagManager, cfg config.Umami) error { eventTriggerOpts = append(eventTriggerOpts, trigger.UmamiEventWithConsentMode(consentVariable)) } - eventTrigger, err := tm.UpsertTrigger(trigger.NewUmamiEvent(event, eventTriggerOpts...)) + eventTrigger, err := tm.UpsertTrigger(folder, trigger.NewUmamiEvent(event, eventTriggerOpts...)) if err != nil { return errors.Wrap(err, "failed to upsert event trigger: "+event) } - if _, err := tm.UpsertTag(containertag.NewUmami(event, cfg, template, eventTrigger)); err != nil { + if _, err := tm.UpsertTag(folder, containertag.NewUmami(event, cfg, template, eventTrigger)); err != nil { return err } } diff --git a/pkg/tagmanager/tagmanager.go b/pkg/tagmanager/tagmanager.go index 79c17e1..f14cf9a 100644 --- a/pkg/tagmanager/tagmanager.go +++ b/pkg/tagmanager/tagmanager.go @@ -2,13 +2,13 @@ package tagmanager import ( "context" + "crypto/md5" //nolint: gosec //just a checksum "encoding/json" "fmt" "log/slog" "time" "github.com/foomo/sesamy-cli/pkg/config" - "github.com/mitchellh/hashstructure/v2" "github.com/pkg/errors" "google.golang.org/api/option" "google.golang.org/api/tagmanager/v2" @@ -16,11 +16,11 @@ import ( type ( TagManager struct { - l *slog.Logger - notes string - accountID string - container config.GoogleTagManagerContainer - folderName string + l *slog.Logger + notes string + accountID string + container config.GoogleTagManagerContainer + // folderName string clientOptions []option.ClientOption requestThrottler *time.Ticker // cache @@ -86,11 +86,11 @@ func WithNotes(v string) Option { } } -func WithFolderName(v string) Option { - return func(o *TagManager) { - o.folderName = v - } -} +// func WithFolderName(v string) Option { +// return func(o *TagManager) { +// o.folderName = v +// } +// } func WithRequestQuota(v int) Option { return func(o *TagManager) { @@ -116,8 +116,8 @@ func New(ctx context.Context, l *slog.Logger, accountID string, container config accountID: accountID, container: container, requestThrottler: time.NewTicker((100 * time.Second) / time.Duration(15)), - notes: "Managed by Sesamy. DO NOT EDIT.", - folderName: "Sesamy", + notes: "DO NOT EDIT!\n\nManaged by Sesamy", + // folderName: "Sesamy", clientOptions: []option.ClientOption{ option.WithLogger(l), option.WithRequestReason("Sesamy container provisioning"), @@ -198,13 +198,13 @@ func (t *TagManager) WorkspaceID() string { return t.container.WorkspaceID } -func (t *TagManager) FolderName() string { - return t.folderName -} +// func (t *TagManager) FolderName() string { +// return t.folderName +// } -func (t *TagManager) SetFolderName(v string) { - t.folderName = v -} +// func (t *TagManager) SetFolderName(v string) { +// t.folderName = v +// } func (t *TagManager) Service() *tagmanager.Service { if t.requestThrottler != nil { @@ -228,10 +228,10 @@ func (t *TagManager) WorkspacePath() string { func (t *TagManager) Notes(v any) string { var hash string if v != nil { - if value, err := hashstructure.Hash(v, hashstructure.FormatV2, nil); err != nil { - t.l.Warn("failed to hash struct:", "error", err) + if out, err := json.Marshal(v); err != nil { + t.l.Warn("failed to marshal tag manager", "error", err) } else { - hash = fmt.Sprintf(" [%d]", value) + hash = fmt.Sprintf(" - %x", md5.Sum(out)) //nolint: gosec //just a checksum } } return t.notes + hash @@ -501,13 +501,9 @@ func (t *TagManager) LoadTransformations() (*AccessedMap[*tagmanager.Transformat return t.transformations, nil } -func (t *TagManager) UpsertClient(item *tagmanager.Client) (*tagmanager.Client, error) { +func (t *TagManager) UpsertClient(folder *tagmanager.Folder, item *tagmanager.Client) (*tagmanager.Client, error) { l := t.l.With("type", "Client", "name", item.Name) - folder, err := t.LookupFolder(t.folderName) - if err != nil { - return nil, errors.Wrap(err, "failed to retrieve folder") - } item.ParentFolderId = folder.FolderId item.Notes = t.Notes(item) @@ -542,13 +538,9 @@ func (t *TagManager) UpsertClient(item *tagmanager.Client) (*tagmanager.Client, return t.LookupClient(item.Name) } -func (t *TagManager) UpsertTransformation(item *tagmanager.Transformation) (*tagmanager.Transformation, error) { +func (t *TagManager) UpsertTransformation(folder *tagmanager.Folder, item *tagmanager.Transformation) (*tagmanager.Transformation, error) { l := t.l.With("type", "Transformation", "name", item.Name) - folder, err := t.LookupFolder(t.folderName) - if err != nil { - return nil, errors.Wrap(err, "failed to retrieve folder") - } item.ParentFolderId = folder.FolderId item.Notes = t.Notes(item) @@ -621,13 +613,9 @@ func (t *TagManager) UpsertFolder(name string) (*tagmanager.Folder, error) { return t.LookupFolder(name) } -func (t *TagManager) UpsertVariable(item *tagmanager.Variable) (*tagmanager.Variable, error) { +func (t *TagManager) UpsertVariable(folder *tagmanager.Folder, item *tagmanager.Variable) (*tagmanager.Variable, error) { l := t.l.With("type", "Variable", "name", item.Name) - folder, err := t.LookupFolder(t.folderName) - if err != nil { - return nil, errors.Wrap(err, "failed to retrieve folder") - } item.ParentFolderId = folder.FolderId item.Notes = t.Notes(item) @@ -688,13 +676,9 @@ func (t *TagManager) EnableBuiltInVariable(typeName string) (*tagmanager.BuiltIn return t.GetBuiltInVariable(typeName) } -func (t *TagManager) UpsertTrigger(item *tagmanager.Trigger) (*tagmanager.Trigger, error) { +func (t *TagManager) UpsertTrigger(folder *tagmanager.Folder, item *tagmanager.Trigger) (*tagmanager.Trigger, error) { l := t.l.With("type", "Trigger", "name", item.Name) - folder, err := t.LookupFolder(t.folderName) - if err != nil { - return nil, errors.Wrap(err, "failed to retrieve folder") - } item.ParentFolderId = folder.FolderId item.Notes = t.Notes(item) @@ -729,13 +713,9 @@ func (t *TagManager) UpsertTrigger(item *tagmanager.Trigger) (*tagmanager.Trigge return t.LookupTrigger(item.Name) } -func (t *TagManager) UpsertTag(item *tagmanager.Tag) (*tagmanager.Tag, error) { +func (t *TagManager) UpsertTag(folder *tagmanager.Folder, item *tagmanager.Tag) (*tagmanager.Tag, error) { l := t.l.With("type", "Tag", "name", item.Name) - folder, err := t.LookupFolder(t.folderName) - if err != nil { - return nil, errors.Wrap(err, "failed to retrieve folder") - } item.ParentFolderId = folder.FolderId item.Notes = t.Notes(item) diff --git a/test/tagmanager/clientweb_test.go b/test/tagmanager/clientweb_test.go index 828705d..27970c1 100644 --- a/test/tagmanager/clientweb_test.go +++ b/test/tagmanager/clientweb_test.go @@ -10,7 +10,6 @@ import ( tagx "github.com/foomo/go/testing/tag" "github.com/foomo/sesamy-cli/pkg/config" "github.com/foomo/sesamy-cli/pkg/tagmanager" - "github.com/foomo/sesamy-cli/pkg/tagmanager/common/trigger" "github.com/joho/godotenv" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -179,11 +178,11 @@ func TestNewClient_Web(t *testing.T) { } }) - t.Run("upsert trigger", func(t *testing.T) { - obj, err := c.UpsertTrigger(trigger.NewEvent(name)) - require.NoError(t, err) - t.Log("ID: " + obj.TriggerId) - }) + // t.Run("upsert trigger", func(t *testing.T) { + // obj, err := c.UpsertTrigger(trigger.NewEvent(name)) + // require.NoError(t, err) + // t.Log("ID: " + obj.TriggerId) + // }) } { // --- Tags ---