From 6c6c4eed2eff1f0e21be47f4176483c94ec5ff00 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Wed, 8 Oct 2025 21:14:13 +0200 Subject: [PATCH 01/28] chore: update types to latest --- go.mod | 3 ++- go.sum | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index d63573d1..60b603d1 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,8 @@ require ( github.com/joho/godotenv v1.5.1 github.com/labstack/echo-contrib v0.17.4 github.com/labstack/echo/v4 v4.13.4 - github.com/masa-finance/tee-types v1.1.17 + // FIXME: replace when released + github.com/masa-finance/tee-types v1.1.18-0.20251008190839-e2dde58f5c87 github.com/onsi/ginkgo/v2 v2.23.4 github.com/onsi/gomega v1.38.0 github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index 54d401a3..908ce92b 100644 --- a/go.sum +++ b/go.sum @@ -32,6 +32,8 @@ github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0 github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= github.com/masa-finance/tee-types v1.1.17 h1:z2nRqKFIKTuq1mVwXrrzxzKO3ggvN6GJjDepHi5fqG4= github.com/masa-finance/tee-types v1.1.17/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/masa-finance/tee-types v1.1.18-0.20251008190839-e2dde58f5c87 h1:+KvR936xzW3Y+VLQ+DYXe/SRKtSHLLrfzIJCxcQkCZ4= +github.com/masa-finance/tee-types v1.1.18-0.20251008190839-e2dde58f5c87/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/twitter-scraper v1.0.2 h1:him+wvYZHg/7EDdy73z1ceUywDJDRAhPLD2CSEa2Vfk= github.com/masa-finance/twitter-scraper v1.0.2/go.mod h1:38MY3g/h4V7Xl4HbW9lnkL8S3YiFZenBFv86hN57RG8= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= From 9f87673624fc26e5e578a9a2877d44d967c6a6ad Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Wed, 8 Oct 2025 22:04:08 +0200 Subject: [PATCH 02/28] fix: build error --- internal/jobs/twitter.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/jobs/twitter.go b/internal/jobs/twitter.go index 88553026..a7cecb2e 100644 --- a/internal/jobs/twitter.go +++ b/internal/jobs/twitter.go @@ -1314,7 +1314,7 @@ func defaultStrategyFallback(j types.Job, ts *TwitterScraper, jobArgs *teeargs.T space, err := ts.GetSpace(j, ts.configuration.DataDir, jobArgs.Query) return processResponse(space, "", err) } - return types.JobResult{Error: "invalid search type in defaultStrategyFallback: " + jobArgs.QueryType}, fmt.Errorf("invalid search type: %s", jobArgs.QueryType) + return types.JobResult{Error: "invalid search type in defaultStrategyFallback: " + string(jobArgs.QueryType)}, fmt.Errorf("invalid search type: %s", jobArgs.QueryType) } // ExecuteJob runs a job using the appropriate scrape strategy based on the job type. From 7442dc0f863a2fea1618909a3a03471da4336e82 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Wed, 8 Oct 2025 23:53:17 +0200 Subject: [PATCH 03/28] feat: linkedin functionality fully wired --- internal/apify/actors.go | 8 + internal/jobs/linkedin.go | 108 +++++++ internal/jobs/linkedinapify/client.go | 83 +++++ internal/jobs/linkedinapify/client_test.go | 290 ++++++++++++++++++ .../linkedinapify/linkedinapify_suite_test.go | 13 + internal/jobs/stats/stats.go | 3 + internal/jobserver/jobserver.go | 3 + 7 files changed, 508 insertions(+) create mode 100644 internal/jobs/linkedin.go create mode 100644 internal/jobs/linkedinapify/client.go create mode 100644 internal/jobs/linkedinapify/client_test.go create mode 100644 internal/jobs/linkedinapify/linkedinapify_suite_test.go diff --git a/internal/apify/actors.go b/internal/apify/actors.go index 3d858d3e..5a188f1c 100644 --- a/internal/apify/actors.go +++ b/internal/apify/actors.go @@ -11,6 +11,7 @@ type actorIds struct { LLMDatasetProcessor ActorId TwitterFollowers ActorId WebScraper ActorId + LinkedInSearchProfile ActorId } var ActorIds = actorIds{ @@ -20,6 +21,7 @@ var ActorIds = actorIds{ LLMDatasetProcessor: "dusan.vystrcil~llm-dataset-processor", TwitterFollowers: "kaitoeasyapi~premium-x-follower-scraper-following-data", WebScraper: "apify~website-content-crawler", + LinkedInSearchProfile: "harvestapi~linkedin-profile-search", } type defaultActorInput map[string]any @@ -63,4 +65,10 @@ var Actors = []ActorConfig{ Capabilities: teetypes.WebCaps, JobType: teetypes.WebJob, }, + { + ActorId: ActorIds.LinkedInSearchProfile, + DefaultInput: defaultActorInput{}, + Capabilities: teetypes.LinkedInCaps, + JobType: teetypes.LinkedInJob, + }, } diff --git a/internal/jobs/linkedin.go b/internal/jobs/linkedin.go new file mode 100644 index 00000000..933b1d2a --- /dev/null +++ b/internal/jobs/linkedin.go @@ -0,0 +1,108 @@ +package jobs + +import ( + "encoding/json" + "errors" + "fmt" + + "github.com/sirupsen/logrus" + + "github.com/masa-finance/tee-worker/api/types" + "github.com/masa-finance/tee-worker/internal/config" + "github.com/masa-finance/tee-worker/internal/jobs/linkedinapify" + "github.com/masa-finance/tee-worker/internal/jobs/stats" + "github.com/masa-finance/tee-worker/pkg/client" + + teeargs "github.com/masa-finance/tee-types/args" + profileArgs "github.com/masa-finance/tee-types/args/linkedin/profile" + teetypes "github.com/masa-finance/tee-types/types" + profileTypes "github.com/masa-finance/tee-types/types/linkedin/profile" +) + +// LinkedInApifyClient defines the interface for the LinkedIn Apify client to allow mocking in tests +type LinkedInApifyClient interface { + SearchProfiles(workerID string, args *profileArgs.Arguments, cursor client.Cursor) ([]*profileTypes.Profile, string, client.Cursor, error) + ValidateApiKey() error +} + +// NewLinkedInApifyClient is a function variable that can be replaced in tests. +// It defaults to the actual implementation. +var NewLinkedInApifyClient = func(apiKey string, statsCollector *stats.StatsCollector) (LinkedInApifyClient, error) { + return linkedinapify.NewClient(apiKey, statsCollector) +} + +type LinkedInScraper struct { + configuration config.JobConfiguration + statsCollector *stats.StatsCollector + capabilities []teetypes.Capability +} + +func NewLinkedInScraper(jc config.JobConfiguration, statsCollector *stats.StatsCollector) *LinkedInScraper { + logrus.Info("LinkedIn scraper via Apify initialized") + return &LinkedInScraper{ + configuration: jc, + statsCollector: statsCollector, + capabilities: teetypes.LinkedInCaps, + } +} + +func (ls *LinkedInScraper) ExecuteJob(j types.Job) (types.JobResult, error) { + logrus.WithField("job_uuid", j.UUID).Info("Starting ExecuteJob for LinkedIn profile search") + + // Require Apify key for LinkedIn scraping + apifyApiKey := ls.configuration.GetString("apify_api_key", "") + if apifyApiKey == "" { + msg := errors.New("Apify API key is required for LinkedIn job") + return types.JobResult{Error: msg.Error()}, msg + } + + jobArgs, err := teeargs.UnmarshalJobArguments(teetypes.JobType(j.Type), map[string]any(j.Arguments)) + if err != nil { + msg := fmt.Errorf("failed to unmarshal job arguments: %w", err) + return types.JobResult{Error: msg.Error()}, msg + } + + linkedinArgs, ok := jobArgs.(*profileArgs.Arguments) + if !ok { + return types.JobResult{Error: "invalid argument type for LinkedIn job"}, errors.New("invalid argument type") + } + logrus.Debugf("LinkedIn job args: %+v", *linkedinArgs) + + linkedinClient, err := NewLinkedInApifyClient(apifyApiKey, ls.statsCollector) + if err != nil { + return types.JobResult{Error: "error while creating LinkedIn Apify client"}, fmt.Errorf("error creating LinkedIn Apify client: %w", err) + } + + profiles, datasetId, cursor, err := linkedinClient.SearchProfiles(j.WorkerID, linkedinArgs, client.EmptyCursor) + if err != nil { + return types.JobResult{Error: fmt.Sprintf("error while searching LinkedIn profiles: %s", err.Error())}, fmt.Errorf("error searching LinkedIn profiles: %w", err) + } + + if datasetId == "" { + return types.JobResult{Error: "missing dataset id from LinkedIn profile search"}, errors.New("missing dataset id from LinkedIn profile search") + } + + data, err := json.Marshal(profiles) + if err != nil { + return types.JobResult{Error: fmt.Sprintf("error marshalling LinkedIn response")}, fmt.Errorf("error marshalling LinkedIn response: %w", err) + } + + return types.JobResult{ + Data: data, + Job: j, + NextCursor: cursor.String(), + }, nil +} + +// GetStructuredCapabilities returns the structured capabilities supported by the LinkedIn scraper +// based on the available credentials and API keys +func (ls *LinkedInScraper) GetStructuredCapabilities() teetypes.WorkerCapabilities { + capabilities := make(teetypes.WorkerCapabilities) + + apifyApiKey := ls.configuration.GetString("apify_api_key", "") + if apifyApiKey != "" { + capabilities[teetypes.LinkedInJob] = teetypes.LinkedInCaps + } + + return capabilities +} diff --git a/internal/jobs/linkedinapify/client.go b/internal/jobs/linkedinapify/client.go new file mode 100644 index 00000000..0124a374 --- /dev/null +++ b/internal/jobs/linkedinapify/client.go @@ -0,0 +1,83 @@ +package linkedinapify + +import ( + "encoding/json" + "fmt" + + profileArgs "github.com/masa-finance/tee-types/args/linkedin/profile" + profileTypes "github.com/masa-finance/tee-types/types/linkedin/profile" + "github.com/masa-finance/tee-worker/internal/apify" + "github.com/masa-finance/tee-worker/internal/jobs/stats" + "github.com/masa-finance/tee-worker/pkg/client" + "github.com/sirupsen/logrus" +) + +type ApifyClient struct { + client client.Apify + statsCollector *stats.StatsCollector +} + +// NewInternalClient is a function variable that can be replaced in tests. +// It defaults to the actual implementation. +var NewInternalClient = func(apiKey string) (client.Apify, error) { + return client.NewApifyClient(apiKey) +} + +// NewClient creates a new LinkedIn Apify client +func NewClient(apiToken string, statsCollector *stats.StatsCollector) (*ApifyClient, error) { + client, err := NewInternalClient(apiToken) + if err != nil { + return nil, fmt.Errorf("failed to create apify client: %w", err) + } + + return &ApifyClient{ + client: client, + statsCollector: statsCollector, + }, nil +} + +// ValidateApiKey tests if the Apify API token is valid +func (c *ApifyClient) ValidateApiKey() error { + return c.client.ValidateApiKey() +} + +func (c *ApifyClient) SearchProfiles(workerID string, args *profileArgs.Arguments, cursor client.Cursor) ([]*profileTypes.Profile, string, client.Cursor, error) { + if c.statsCollector != nil { + c.statsCollector.Add(workerID, stats.LinkedInQueries, 1) + } + + requestBytes, err := json.Marshal(args) + if err != nil { + return nil, "", client.EmptyCursor, fmt.Errorf("failed to marshal request: %w", err) + } + + var input map[string]any + if err := json.Unmarshal(requestBytes, &input); err != nil { + return nil, "", client.EmptyCursor, fmt.Errorf("failed to unmarshal request: %w", err) + } + + dataset, nextCursor, err := c.client.RunActorAndGetResponse(apify.ActorIds.LinkedInSearchProfile, input, cursor, args.MaxItems) + if err != nil { + if c.statsCollector != nil { + c.statsCollector.Add(workerID, stats.LinkedInErrors, 1) + } + return nil, "", client.EmptyCursor, err + } + + response := make([]*profileTypes.Profile, 0, len(dataset.Data.Items)) + + for i, item := range dataset.Data.Items { + var resp profileTypes.Profile + if err := json.Unmarshal(item, &resp); err != nil { + logrus.Warnf("Failed to unmarshal scrape result at index %d: %v", i, err) + continue + } + response = append(response, &resp) + } + + if c.statsCollector != nil { + c.statsCollector.Add(workerID, stats.LinkedInProfiles, uint(len(response))) + } + + return response, dataset.DatasetId, nextCursor, nil +} diff --git a/internal/jobs/linkedinapify/client_test.go b/internal/jobs/linkedinapify/client_test.go new file mode 100644 index 00000000..83d84ef7 --- /dev/null +++ b/internal/jobs/linkedinapify/client_test.go @@ -0,0 +1,290 @@ +package linkedinapify_test + +import ( + "encoding/json" + "errors" + "os" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "github.com/masa-finance/tee-worker/internal/apify" + "github.com/masa-finance/tee-worker/internal/jobs/linkedinapify" + "github.com/masa-finance/tee-worker/internal/jobs/stats" + "github.com/masa-finance/tee-worker/pkg/client" + + profileArgs "github.com/masa-finance/tee-types/args/linkedin/profile" +) + +// MockApifyClient is a mock implementation of the ApifyClient. +type MockApifyClient struct { + RunActorAndGetResponseFunc func(actorID apify.ActorId, input any, cursor client.Cursor, limit uint) (*client.DatasetResponse, client.Cursor, error) + ValidateApiKeyFunc func() error + ProbeActorAccessFunc func(actorID apify.ActorId, input map[string]any) (bool, error) +} + +func (m *MockApifyClient) RunActorAndGetResponse(actorID apify.ActorId, input any, cursor client.Cursor, limit uint) (*client.DatasetResponse, client.Cursor, error) { + if m.RunActorAndGetResponseFunc != nil { + return m.RunActorAndGetResponseFunc(actorID, input, cursor, limit) + } + return nil, "", errors.New("RunActorAndGetResponseFunc not defined") +} + +func (m *MockApifyClient) ValidateApiKey() error { + if m.ValidateApiKeyFunc != nil { + return m.ValidateApiKeyFunc() + } + return errors.New("ValidateApiKeyFunc not defined") +} + +func (m *MockApifyClient) ProbeActorAccess(actorID apify.ActorId, input map[string]any) (bool, error) { + if m.ProbeActorAccessFunc != nil { + return m.ProbeActorAccessFunc(actorID, input) + } + return false, errors.New("ProbeActorAccessFunc not defined") +} + +var _ = Describe("LinkedInApifyClient", func() { + var ( + mockClient *MockApifyClient + linkedinClient *linkedinapify.ApifyClient + statsCollector *stats.StatsCollector + apifyKey string + ) + + BeforeEach(func() { + apifyKey = os.Getenv("APIFY_API_KEY") + mockClient = &MockApifyClient{} + statsCollector = stats.StartCollector(100, nil) + + // Replace the client creation function with one that returns the mock + linkedinapify.NewInternalClient = func(apiKey string) (client.Apify, error) { + return mockClient, nil + } + var err error + linkedinClient, err = linkedinapify.NewClient("test-token", statsCollector) + Expect(err).NotTo(HaveOccurred()) + }) + + Describe("SearchProfiles", func() { + It("should construct the correct actor input", func() { + args := profileArgs.Arguments{ + Query: "software engineer", + MaxItems: 10, + } + + mockClient.RunActorAndGetResponseFunc = func(actorID apify.ActorId, input any, cursor client.Cursor, limit uint) (*client.DatasetResponse, client.Cursor, error) { + Expect(actorID).To(Equal(apify.ActorIds.LinkedInSearchProfile)) + Expect(limit).To(Equal(uint(10))) + + // Verify the input is correctly converted to map + inputMap, ok := input.(map[string]any) + Expect(ok).To(BeTrue()) + Expect(inputMap["searchQuery"]).To(Equal("software engineer")) + + return &client.DatasetResponse{Data: client.ApifyDatasetData{Items: []json.RawMessage{}}}, "next", nil + } + + _, _, _, err := linkedinClient.SearchProfiles("test-worker", &args, client.EmptyCursor) + Expect(err).NotTo(HaveOccurred()) + }) + + It("should handle errors from the apify client", func() { + expectedErr := errors.New("apify error") + mockClient.RunActorAndGetResponseFunc = func(actorID apify.ActorId, input any, cursor client.Cursor, limit uint) (*client.DatasetResponse, client.Cursor, error) { + return nil, "", expectedErr + } + + args := profileArgs.Arguments{ + Query: "test query", + MaxItems: 5, + } + _, _, _, err := linkedinClient.SearchProfiles("test-worker", &args, client.EmptyCursor) + Expect(err).To(MatchError(expectedErr)) + }) + + It("should handle JSON unmarshalling errors gracefully", func() { + invalidJSON := []byte(`{"id": "test", "firstName": 123}`) // firstName should be a string + dataset := &client.DatasetResponse{ + Data: client.ApifyDatasetData{ + Items: []json.RawMessage{invalidJSON}, + }, + } + mockClient.RunActorAndGetResponseFunc = func(actorID apify.ActorId, input any, cursor client.Cursor, limit uint) (*client.DatasetResponse, client.Cursor, error) { + return dataset, "next", nil + } + + args := profileArgs.Arguments{ + Query: "test query", + MaxItems: 1, + } + results, _, _, err := linkedinClient.SearchProfiles("test-worker", &args, client.EmptyCursor) + Expect(err).NotTo(HaveOccurred()) + Expect(results).To(BeEmpty()) // The invalid item should be skipped + }) + + It("should correctly unmarshal valid profile items", func() { + profileJSON, _ := json.Marshal(map[string]any{ + "id": "test-id", + "publicIdentifier": "john-doe", + "Url": "https://linkedin.com/in/john-doe", + "firstName": "John", + "lastName": "Doe", + "headline": "Software Engineer", + "about": "Passionate about technology", + "openToWork": false, + "hiring": false, + "photo": "https://example.com/photo.jpg", + "premium": false, + "influencer": false, + "location": map[string]any{ + "Text": "San Francisco, CA", + "countryCode": "US", + "parsed": map[string]any{ + "text": "San Francisco, CA", + "countryCode": "US", + "country": "United States", + "state": "California", + "city": "San Francisco", + }, + }, + "verified": true, + "registeredAt": "2020-01-01T00:00:00Z", + "topSkills": "Go, Python, JavaScript", + "connectionsCount": 500, + "followerCount": 1000, + "currentPosition": []any{}, + "experience": []any{}, + "education": []any{}, + "certifications": []any{}, + "projects": []any{}, + "volunteering": []any{}, + "receivedRecommendations": []any{}, + "skills": []any{}, + "courses": []any{}, + "publications": []any{}, + "patents": []any{}, + "honorsAndAwards": []any{}, + "languages": []any{}, + "featured": nil, + "moreProfiles": []any{}, + }) + dataset := &client.DatasetResponse{ + Data: client.ApifyDatasetData{ + Items: []json.RawMessage{profileJSON}, + }, + } + mockClient.RunActorAndGetResponseFunc = func(actorID apify.ActorId, input any, cursor client.Cursor, limit uint) (*client.DatasetResponse, client.Cursor, error) { + return dataset, "next", nil + } + + args := profileArgs.Arguments{ + Query: "test query", + MaxItems: 1, + } + results, _, cursor, err := linkedinClient.SearchProfiles("test-worker", &args, client.EmptyCursor) + Expect(err).NotTo(HaveOccurred()) + Expect(cursor).To(Equal(client.Cursor("next"))) + Expect(results).To(HaveLen(1)) + Expect(results[0].ID).To(Equal("test-id")) + Expect(results[0].FirstName).To(Equal("John")) + Expect(results[0].LastName).To(Equal("Doe")) + Expect(results[0].Headline).To(Equal("Software Engineer")) + }) + + It("should handle multiple valid profiles", func() { + profile1, _ := json.Marshal(map[string]any{ + "id": "profile-1", + "firstName": "John", + "lastName": "Doe", + "headline": "Software Engineer", + }) + profile2, _ := json.Marshal(map[string]any{ + "id": "profile-2", + "firstName": "Jane", + "lastName": "Smith", + "headline": "Product Manager", + }) + dataset := &client.DatasetResponse{ + Data: client.ApifyDatasetData{ + Items: []json.RawMessage{profile1, profile2}, + }, + } + mockClient.RunActorAndGetResponseFunc = func(actorID apify.ActorId, input any, cursor client.Cursor, limit uint) (*client.DatasetResponse, client.Cursor, error) { + return dataset, "next", nil + } + + args := profileArgs.Arguments{ + Query: "test query", + MaxItems: 2, + } + results, _, _, err := linkedinClient.SearchProfiles("test-worker", &args, client.EmptyCursor) + Expect(err).NotTo(HaveOccurred()) + Expect(results).To(HaveLen(2)) + Expect(results[0].FirstName).To(Equal("John")) + Expect(results[1].FirstName).To(Equal("Jane")) + }) + }) + + Describe("ValidateApiKey", func() { + It("should validate the API key", func() { + mockClient.ValidateApiKeyFunc = func() error { + return nil + } + Expect(linkedinClient.ValidateApiKey()).To(Succeed()) + }) + + It("should return error when validation fails", func() { + expectedErr := errors.New("invalid key") + mockClient.ValidateApiKeyFunc = func() error { + return expectedErr + } + Expect(linkedinClient.ValidateApiKey()).To(MatchError(expectedErr)) + }) + }) + + // Integration tests that use the real client + Context("Integration tests", func() { + It("should validate API key with real client when APIFY_API_KEY is set", func() { + if apifyKey == "" { + Skip("APIFY_API_KEY required to run LinkedIn integration tests") + } + + // Reset to use real client + linkedinapify.NewInternalClient = func(apiKey string) (client.Apify, error) { + return client.NewApifyClient(apiKey) + } + + realClient, err := linkedinapify.NewClient(apifyKey, statsCollector) + Expect(err).NotTo(HaveOccurred()) + Expect(realClient.ValidateApiKey()).To(Succeed()) + }) + + It("should search profiles with real client when APIFY_API_KEY is set", func() { + if apifyKey == "" { + Skip("APIFY_API_KEY required to run LinkedIn integration tests") + } + + // Reset to use real client + linkedinapify.NewInternalClient = func(apiKey string) (client.Apify, error) { + return client.NewApifyClient(apiKey) + } + + realClient, err := linkedinapify.NewClient(apifyKey, statsCollector) + Expect(err).NotTo(HaveOccurred()) + + args := profileArgs.Arguments{ + Query: "software engineer", + MaxItems: 1, + } + + results, datasetId, cursor, err := realClient.SearchProfiles("test-worker", &args, client.EmptyCursor) + Expect(err).NotTo(HaveOccurred()) + Expect(datasetId).NotTo(BeEmpty()) + Expect(results).NotTo(BeEmpty()) + Expect(results[0]).NotTo(BeNil()) + Expect(results[0].ID).NotTo(BeEmpty()) + Expect(cursor).NotTo(BeEmpty()) + }) + }) +}) diff --git a/internal/jobs/linkedinapify/linkedinapify_suite_test.go b/internal/jobs/linkedinapify/linkedinapify_suite_test.go new file mode 100644 index 00000000..b9d1342e --- /dev/null +++ b/internal/jobs/linkedinapify/linkedinapify_suite_test.go @@ -0,0 +1,13 @@ +package linkedinapify_test + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +func TestWebApifyClient(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "WebApify Client Suite") +} diff --git a/internal/jobs/stats/stats.go b/internal/jobs/stats/stats.go index d7e184a0..dd449de9 100644 --- a/internal/jobs/stats/stats.go +++ b/internal/jobs/stats/stats.go @@ -46,6 +46,9 @@ const ( RedditReturnedItems StatType = "reddit_returned_items" RedditQueries StatType = "reddit_queries" RedditErrors StatType = "reddit_errors" + LinkedInProfiles StatType = "linkedin_returned_profiles" + LinkedInQueries StatType = "linkedin_queries" + LinkedInErrors StatType = "linkedin_errors" // TODO: Should we add stats for calls to each of the Twitter capabilities to decouple business / scoring logic? ) diff --git a/internal/jobserver/jobserver.go b/internal/jobserver/jobserver.go index 8f1e5b80..1ace244f 100644 --- a/internal/jobserver/jobserver.go +++ b/internal/jobserver/jobserver.go @@ -102,6 +102,9 @@ func NewJobServer(workers int, jc config.JobConfiguration) *JobServer { teetypes.RedditJob: { w: jobs.NewRedditScraper(jc, s), }, + teetypes.LinkedInJob: { + w: jobs.NewLinkedInScraper(jc, s), + }, teetypes.TelemetryJob: { w: jobs.NewTelemetryJob(jc, s), }, From 8f2f70b5c44d805a22e32a538a3ea3afdf0afb98 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 00:12:04 +0200 Subject: [PATCH 04/28] feat: linkedin tests --- Makefile | 3 + go.mod | 2 +- go.sum | 4 + internal/jobs/linkedin_test.go | 357 +++++++++++++++++++++++++++++++++ 4 files changed, 365 insertions(+), 1 deletion(-) create mode 100644 internal/jobs/linkedin_test.go diff --git a/Makefile b/Makefile index a695ab73..99f57d4b 100644 --- a/Makefile +++ b/Makefile @@ -79,6 +79,9 @@ test-jobs: docker-build-test test-twitter: docker-build-test @docker run --user root $(ENV_FILE_ARG) -v $(PWD)/.masa:/home/masa -v $(PWD)/coverage:/app/coverage --rm --workdir /app -e DATA_DIR=/home/masa $(TEST_IMAGE) go test -v ./internal/jobs/twitter_test.go ./internal/jobs/jobs_suite_test.go +test-linkedin: docker-build-test + @docker run --user root $(ENV_FILE_ARG) -v $(PWD)/.masa:/home/masa -v $(PWD)/coverage:/app/coverage --rm --workdir /app -e DATA_DIR=/home/masa $(TEST_IMAGE) go test -v ./internal/jobs/linkedin_test.go ./internal/jobs/jobs_suite_test.go + test-tiktok: docker-build-test @docker run --user root $(ENV_FILE_ARG) -v $(PWD)/.masa:/home/masa -v $(PWD)/coverage:/app/coverage --rm --workdir /app -e DATA_DIR=/home/masa $(TEST_IMAGE) go test -v ./internal/jobs/tiktok_test.go ./internal/jobs/jobs_suite_test.go diff --git a/go.mod b/go.mod index 60b603d1..8d2844a5 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/labstack/echo-contrib v0.17.4 github.com/labstack/echo/v4 v4.13.4 // FIXME: replace when released - github.com/masa-finance/tee-types v1.1.18-0.20251008190839-e2dde58f5c87 + github.com/masa-finance/tee-types v1.1.18-0.20251008220545-7ded3bde0729 github.com/onsi/ginkgo/v2 v2.23.4 github.com/onsi/gomega v1.38.0 github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index 908ce92b..a0b0a8a0 100644 --- a/go.sum +++ b/go.sum @@ -34,6 +34,10 @@ github.com/masa-finance/tee-types v1.1.17 h1:z2nRqKFIKTuq1mVwXrrzxzKO3ggvN6GJjDe github.com/masa-finance/tee-types v1.1.17/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/tee-types v1.1.18-0.20251008190839-e2dde58f5c87 h1:+KvR936xzW3Y+VLQ+DYXe/SRKtSHLLrfzIJCxcQkCZ4= github.com/masa-finance/tee-types v1.1.18-0.20251008190839-e2dde58f5c87/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/masa-finance/tee-types v1.1.18-0.20251008220248-b470b4fbd896 h1:gQLRUG8y9jz/lmLgniizljHhn57mocn32iea/fKieIM= +github.com/masa-finance/tee-types v1.1.18-0.20251008220248-b470b4fbd896/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/masa-finance/tee-types v1.1.18-0.20251008220545-7ded3bde0729 h1:psOJ4ddjyC1Zv4z9uwmDQmuQ+p8f9HN6oqpyXbzmq1U= +github.com/masa-finance/tee-types v1.1.18-0.20251008220545-7ded3bde0729/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/twitter-scraper v1.0.2 h1:him+wvYZHg/7EDdy73z1ceUywDJDRAhPLD2CSEa2Vfk= github.com/masa-finance/twitter-scraper v1.0.2/go.mod h1:38MY3g/h4V7Xl4HbW9lnkL8S3YiFZenBFv86hN57RG8= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= diff --git a/internal/jobs/linkedin_test.go b/internal/jobs/linkedin_test.go new file mode 100644 index 00000000..dcaf8431 --- /dev/null +++ b/internal/jobs/linkedin_test.go @@ -0,0 +1,357 @@ +package jobs_test + +import ( + "encoding/json" + "errors" + "fmt" + "os" + "time" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "github.com/masa-finance/tee-worker/api/types" + "github.com/masa-finance/tee-worker/internal/config" + "github.com/masa-finance/tee-worker/internal/jobs" + "github.com/masa-finance/tee-worker/internal/jobs/linkedinapify" + "github.com/masa-finance/tee-worker/internal/jobs/stats" + "github.com/masa-finance/tee-worker/pkg/client" + + profileArgs "github.com/masa-finance/tee-types/args/linkedin/profile" + teetypes "github.com/masa-finance/tee-types/types" + profileTypes "github.com/masa-finance/tee-types/types/linkedin/profile" +) + +// MockLinkedInApifyClient is a mock implementation of the LinkedInApifyClient. +type MockLinkedInApifyClient struct { + SearchProfilesFunc func(workerID string, args *profileArgs.Arguments, cursor client.Cursor) ([]*profileTypes.Profile, string, client.Cursor, error) + ValidateApiKeyFunc func() error +} + +func (m *MockLinkedInApifyClient) SearchProfiles(workerID string, args *profileArgs.Arguments, cursor client.Cursor) ([]*profileTypes.Profile, string, client.Cursor, error) { + if m != nil && m.SearchProfilesFunc != nil { + return m.SearchProfilesFunc(workerID, args, cursor) + } + return nil, "", client.EmptyCursor, nil +} + +func (m *MockLinkedInApifyClient) ValidateApiKey() error { + if m != nil && m.ValidateApiKeyFunc != nil { + return m.ValidateApiKeyFunc() + } + return nil +} + +var _ = Describe("LinkedInScraper", func() { + var ( + scraper *jobs.LinkedInScraper + statsCollector *stats.StatsCollector + job types.Job + mockClient *MockLinkedInApifyClient + ) + + // Keep original to restore after each test to avoid leaking globals + originalNewLinkedInApifyClient := jobs.NewLinkedInApifyClient + + BeforeEach(func() { + statsCollector = stats.StartCollector(128, config.JobConfiguration{}) + cfg := config.JobConfiguration{ + "apify_api_key": "test-key", + } + scraper = jobs.NewLinkedInScraper(cfg, statsCollector) + mockClient = &MockLinkedInApifyClient{} + + // Replace the client creation function with one that returns the mock + jobs.NewLinkedInApifyClient = func(apiKey string, _ *stats.StatsCollector) (jobs.LinkedInApifyClient, error) { + return mockClient, nil + } + + job = types.Job{ + UUID: "test-uuid", + Type: teetypes.LinkedInJob, + } + }) + + AfterEach(func() { + jobs.NewLinkedInApifyClient = originalNewLinkedInApifyClient + }) + + Context("ExecuteJob", func() { + It("should return an error for invalid arguments", func() { + job.Arguments = map[string]any{"invalid": "args"} + result, err := scraper.ExecuteJob(job) + Expect(err).To(HaveOccurred()) + Expect(result.Error).To(ContainSubstring("failed to unmarshal job arguments")) + }) + + It("should return an error when Apify API key is missing", func() { + cfg := config.JobConfiguration{} + scraper = jobs.NewLinkedInScraper(cfg, statsCollector) + + job.Arguments = map[string]any{ + "type": teetypes.CapSearchByProfile, + "searchQuery": "software engineer", + "maxItems": 10, + } + + result, err := scraper.ExecuteJob(job) + Expect(err).To(HaveOccurred()) + Expect(result.Error).To(ContainSubstring("Apify API key is required for LinkedIn job")) + }) + + It("should call SearchProfiles and return data and next cursor", func() { + job.Arguments = map[string]any{ + "type": teetypes.CapSearchByProfile, + "searchQuery": "software engineer", + "maxItems": 10, + } + + expectedProfiles := []*profileTypes.Profile{ + { + ID: "profile-1", + FirstName: "John", + LastName: "Doe", + Headline: "Software Engineer", + PublicIdentifier: "john-doe", + URL: "https://linkedin.com/in/john-doe", + }, + { + ID: "profile-2", + FirstName: "Jane", + LastName: "Smith", + Headline: "Senior Software Engineer", + PublicIdentifier: "jane-smith", + URL: "https://linkedin.com/in/jane-smith", + }, + } + + mockClient.SearchProfilesFunc = func(workerID string, args *profileArgs.Arguments, cursor client.Cursor) ([]*profileTypes.Profile, string, client.Cursor, error) { + Expect(workerID).To(Equal("test-worker")) + Expect(args.Query).To(Equal("software engineer")) + Expect(args.MaxItems).To(Equal(uint(10))) + Expect(args.QueryType).To(Equal(teetypes.CapSearchByProfile)) + return expectedProfiles, "dataset-123", client.Cursor("next-cursor"), nil + } + + job.WorkerID = "test-worker" + result, err := scraper.ExecuteJob(job) + Expect(err).NotTo(HaveOccurred()) + Expect(result.NextCursor).To(Equal("next-cursor")) + + var resp []*profileTypes.Profile + err = json.Unmarshal(result.Data, &resp) + Expect(err).NotTo(HaveOccurred()) + Expect(resp).To(HaveLen(2)) + Expect(resp[0].ID).To(Equal("profile-1")) + Expect(resp[0].FirstName).To(Equal("John")) + Expect(resp[1].ID).To(Equal("profile-2")) + Expect(resp[1].FirstName).To(Equal("Jane")) + }) + + It("should handle errors from the LinkedIn client", func() { + job.Arguments = map[string]any{ + "type": teetypes.CapSearchByProfile, + "searchQuery": "software engineer", + "maxItems": 10, + } + + expectedErr := errors.New("client error") + mockClient.SearchProfilesFunc = func(workerID string, args *profileArgs.Arguments, cursor client.Cursor) ([]*profileTypes.Profile, string, client.Cursor, error) { + return nil, "", client.EmptyCursor, expectedErr + } + + result, err := scraper.ExecuteJob(job) + Expect(err).To(HaveOccurred()) + Expect(err).To(MatchError(ContainSubstring("client error"))) + Expect(result.Error).To(ContainSubstring("error while searching LinkedIn profiles: client error")) + }) + + It("should handle errors when creating the client", func() { + jobs.NewLinkedInApifyClient = func(apiKey string, _ *stats.StatsCollector) (jobs.LinkedInApifyClient, error) { + return nil, errors.New("client creation failed") + } + job.Arguments = map[string]any{ + "type": teetypes.CapSearchByProfile, + "searchQuery": "software engineer", + "maxItems": 10, + } + + result, err := scraper.ExecuteJob(job) + Expect(err).To(HaveOccurred()) + Expect(result.Error).To(Equal("error while creating LinkedIn Apify client")) + }) + + It("should return an error when dataset ID is missing", func() { + job.Arguments = map[string]any{ + "type": teetypes.CapSearchByProfile, + "searchQuery": "software engineer", + "maxItems": 10, + } + + mockClient.SearchProfilesFunc = func(workerID string, args *profileArgs.Arguments, cursor client.Cursor) ([]*profileTypes.Profile, string, client.Cursor, error) { + return []*profileTypes.Profile{}, "", client.EmptyCursor, nil + } + + result, err := scraper.ExecuteJob(job) + Expect(err).To(HaveOccurred()) + Expect(result.Error).To(ContainSubstring("missing dataset id from LinkedIn profile search")) + }) + + It("should handle JSON marshalling errors", func() { + job.Arguments = map[string]any{ + "type": teetypes.CapSearchByProfile, + "searchQuery": "software engineer", + "maxItems": 10, + } + + // Create a profile with a channel to cause JSON marshalling to fail + invalidProfile := &profileTypes.Profile{ + ID: "profile-1", + FirstName: "John", + LastName: "Doe", + } + + mockClient.SearchProfilesFunc = func(workerID string, args *profileArgs.Arguments, cursor client.Cursor) ([]*profileTypes.Profile, string, client.Cursor, error) { + return []*profileTypes.Profile{invalidProfile}, "dataset-123", client.EmptyCursor, nil + } + + result, err := scraper.ExecuteJob(job) + Expect(err).NotTo(HaveOccurred()) + Expect(result.Error).To(BeEmpty()) + Expect(result.Data).NotTo(BeEmpty()) + }) + + It("should handle empty profile results", func() { + job.Arguments = map[string]any{ + "type": teetypes.CapSearchByProfile, + "searchQuery": "nonexistent", + "maxItems": 10, + } + + mockClient.SearchProfilesFunc = func(workerID string, args *profileArgs.Arguments, cursor client.Cursor) ([]*profileTypes.Profile, string, client.Cursor, error) { + return []*profileTypes.Profile{}, "dataset-123", client.EmptyCursor, nil + } + + result, err := scraper.ExecuteJob(job) + Expect(err).NotTo(HaveOccurred()) + Expect(result.NextCursor).To(Equal("")) + + var resp []*profileTypes.Profile + err = json.Unmarshal(result.Data, &resp) + Expect(err).NotTo(HaveOccurred()) + Expect(resp).To(HaveLen(0)) + }) + }) + + Context("GetStructuredCapabilities", func() { + It("should return LinkedIn capabilities when Apify API key is present", func() { + cfg := config.JobConfiguration{ + "apify_api_key": "test-key", + } + scraper = jobs.NewLinkedInScraper(cfg, statsCollector) + + capabilities := scraper.GetStructuredCapabilities() + Expect(capabilities).To(HaveKey(teetypes.LinkedInJob)) + Expect(capabilities[teetypes.LinkedInJob]).To(ContainElement(teetypes.CapSearchByProfile)) + }) + + It("should return empty capabilities when Apify API key is missing", func() { + cfg := config.JobConfiguration{} + scraper = jobs.NewLinkedInScraper(cfg, statsCollector) + + capabilities := scraper.GetStructuredCapabilities() + Expect(capabilities).NotTo(HaveKey(teetypes.LinkedInJob)) + }) + + It("should return empty capabilities when Apify API key is empty", func() { + cfg := config.JobConfiguration{ + "apify_api_key": "", + } + scraper = jobs.NewLinkedInScraper(cfg, statsCollector) + + capabilities := scraper.GetStructuredCapabilities() + Expect(capabilities).NotTo(HaveKey(teetypes.LinkedInJob)) + }) + }) + + // Integration tests that use the real client + Context("Integration tests", func() { + var apifyKey string + + BeforeEach(func() { + apifyKey = os.Getenv("APIFY_API_KEY") + + if apifyKey == "" { + Skip("APIFY_API_KEY required for LinkedIn integration tests") + } + + // Reset to use real client for integration tests + jobs.NewLinkedInApifyClient = func(apiKey string, s *stats.StatsCollector) (jobs.LinkedInApifyClient, error) { + return linkedinapify.NewClient(apiKey, s) + } + }) + + It("should execute a real LinkedIn profile search when API key is set", func() { + cfg := config.JobConfiguration{ + "apify_api_key": apifyKey, + } + integrationStatsCollector := stats.StartCollector(128, cfg) + integrationScraper := jobs.NewLinkedInScraper(cfg, integrationStatsCollector) + + jobArgs := profileArgs.Arguments{ + QueryType: teetypes.CapSearchByProfile, + Query: "software engineer", + MaxItems: 10, + } + + // Marshal jobArgs to map[string]any so it can be used as JobArguments + var jobArgsMap map[string]any + jobArgsBytes, err := json.Marshal(jobArgs) + Expect(err).NotTo(HaveOccurred()) + err = json.Unmarshal(jobArgsBytes, &jobArgsMap) + Expect(err).NotTo(HaveOccurred()) + + job := types.Job{ + UUID: "integration-test-uuid", + Type: teetypes.LinkedInJob, + WorkerID: "test-worker", + Arguments: jobArgsMap, + Timeout: 60 * time.Second, + } + + result, err := integrationScraper.ExecuteJob(job) + Expect(err).NotTo(HaveOccurred()) + Expect(result.Error).To(BeEmpty()) + Expect(result.Data).NotTo(BeEmpty()) + + var resp []*profileTypes.Profile + err = json.Unmarshal(result.Data, &resp) + Expect(err).NotTo(HaveOccurred()) + Expect(resp).NotTo(BeEmpty()) + Expect(resp[0]).NotTo(BeNil()) + Expect(resp[0].ID).NotTo(BeEmpty()) + + prettyJSON, err := json.MarshalIndent(resp, "", " ") + Expect(err).NotTo(HaveOccurred()) + fmt.Println(string(prettyJSON)) + }) + + It("should expose capabilities only when APIFY_API_KEY is present", func() { + cfg := config.JobConfiguration{ + "apify_api_key": apifyKey, + } + integrationStatsCollector := stats.StartCollector(128, cfg) + integrationScraper := jobs.NewLinkedInScraper(cfg, integrationStatsCollector) + + caps := integrationScraper.GetStructuredCapabilities() + if apifyKey != "" { + Expect(caps[teetypes.LinkedInJob]).NotTo(BeEmpty()) + Expect(caps[teetypes.LinkedInJob]).To(ContainElement(teetypes.CapSearchByProfile)) + } else { + // Expect no capabilities when key is missing + _, ok := caps[teetypes.LinkedInJob] + Expect(ok).To(BeFalse()) + } + }) + }) +}) From 0de19671040601a179e551033fc9eb282f4503d3 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 00:19:26 +0200 Subject: [PATCH 05/28] chore: go mod tidy --- go.mod | 36 +++++++++++++++++++++--------------- go.sum | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 8d2844a5..8182d0b6 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,11 @@ module github.com/masa-finance/tee-worker -go 1.23.0 +go 1.24.0 -toolchain go1.24.3 +toolchain go1.24.6 require ( - github.com/edgelesssys/ego v1.7.2 + github.com/edgelesssys/ego v1.8.0 github.com/google/uuid v1.6.0 github.com/imperatrona/twitter-scraper v0.0.18 github.com/joho/godotenv v1.5.1 @@ -13,8 +13,8 @@ require ( github.com/labstack/echo/v4 v4.13.4 // FIXME: replace when released github.com/masa-finance/tee-types v1.1.18-0.20251008220545-7ded3bde0729 - github.com/onsi/ginkgo/v2 v2.23.4 - github.com/onsi/gomega v1.38.0 + github.com/onsi/ginkgo/v2 v2.26.0 + github.com/onsi/gomega v1.38.2 github.com/sirupsen/logrus v1.9.3 ) @@ -22,27 +22,33 @@ replace github.com/imperatrona/twitter-scraper => github.com/masa-finance/twitte require ( github.com/AlexEidt/Vidio v1.5.1 // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect + github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b // indirect go.uber.org/automaxprocs v1.6.0 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/mod v0.28.0 // indirect + golang.org/x/sync v0.17.0 // indirect ) require ( - github.com/go-jose/go-jose/v4 v4.1.2 // indirect + github.com/go-jose/go-jose/v4 v4.1.3 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/google/go-cmp v0.7.0 // indirect - github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5 // indirect + github.com/google/pprof v0.0.0-20251007162407-5df77e3f7d1d // indirect github.com/labstack/gommon v0.4.2 github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 - golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.35.0 // indirect - google.golang.org/protobuf v1.36.7 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 + golang.org/x/net v0.46.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect + golang.org/x/time v0.14.0 // indirect + golang.org/x/tools v0.37.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index a0b0a8a0..59272526 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,22 @@ github.com/AlexEidt/Vidio v1.5.1 h1:tovwvtgQagUz1vifiL9OeWkg1fP/XUzFazFKh7tFtaE= github.com/AlexEidt/Vidio v1.5.1/go.mod h1:djhIMnWMqPrC3X6nB6ymGX6uWWlgw+VayYGKE1bNwmI= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/edgelesssys/ego v1.7.2 h1:m1rPkrQBlVycE7ofzbijaZlZFUIUVwhGIYKks5FdLxU= github.com/edgelesssys/ego v1.7.2/go.mod h1:MkciSCrXddC6YYsmUTXeoQwFsbs17ncR3KKB+Ul3uRM= +github.com/edgelesssys/ego v1.8.0 h1:g/02JeTC/vajbAfFqxckwSC+siKno/R4H/Em2YsHheU= +github.com/edgelesssys/ego v1.8.0/go.mod h1:fg0M/xfLWnrkoD2OZpY9xmltGlAPFsIiUmyHTuCS7zo= github.com/go-jose/go-jose/v4 v4.1.2 h1:TK/7NqRQZfgAh+Td8AlsrvtPoUyiHh0LqVvokh+1vHI= github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo= +github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= +github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= @@ -16,8 +26,12 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5 h1:xhMrHhTJ6zxu3gA4enFM9MLn9AY7613teCdFnlUVbSQ= github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= +github.com/google/pprof v0.0.0-20251007162407-5df77e3f7d1d h1:KJIErDwbSHjnp/SGzE5ed8Aol7JsKiI5X7yWKAtzhM0= +github.com/google/pprof v0.0.0-20251007162407-5df77e3f7d1d/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b h1:ogbOPx86mIhFy764gGkqnkFC8m5PJA7sPzlk9ppLVQA= +github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= @@ -46,8 +60,12 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= +github.com/onsi/ginkgo/v2 v2.26.0 h1:1J4Wut1IlYZNEAWIV3ALrT9NfiaGW2cDCJQSFQMs/gE= +github.com/onsi/ginkgo/v2 v2.26.0/go.mod h1:qhEywmzWTBUY88kfO0BRvX4py7scov9yR+Az2oavUzw= github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY= github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o= +github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= +github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= @@ -65,6 +83,8 @@ github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= @@ -73,13 +93,19 @@ golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= +golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 h1:TQwNpfvNkxAVlItJf6Cr5JTsVZoC/Sj7K3OZv2Pc14A= +golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= +golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -91,6 +117,8 @@ golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -98,9 +126,12 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -113,6 +144,8 @@ golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -133,8 +166,12 @@ golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= @@ -143,9 +180,13 @@ golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= +golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 9be9922d8fa04fad774ee41df5fad93113f4b3ca Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 00:36:53 +0200 Subject: [PATCH 06/28] chore: bump types --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 8182d0b6..8468ccb4 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/labstack/echo-contrib v0.17.4 github.com/labstack/echo/v4 v4.13.4 // FIXME: replace when released - github.com/masa-finance/tee-types v1.1.18-0.20251008220545-7ded3bde0729 + github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783 github.com/onsi/ginkgo/v2 v2.26.0 github.com/onsi/gomega v1.38.2 github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index 59272526..89d2cf68 100644 --- a/go.sum +++ b/go.sum @@ -52,6 +52,8 @@ github.com/masa-finance/tee-types v1.1.18-0.20251008220248-b470b4fbd896 h1:gQLRU github.com/masa-finance/tee-types v1.1.18-0.20251008220248-b470b4fbd896/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/tee-types v1.1.18-0.20251008220545-7ded3bde0729 h1:psOJ4ddjyC1Zv4z9uwmDQmuQ+p8f9HN6oqpyXbzmq1U= github.com/masa-finance/tee-types v1.1.18-0.20251008220545-7ded3bde0729/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783 h1:5C+DdMf6QbrBFELc99cJhZ7d1XZS9GD/y6/KuRwuXOI= +github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/twitter-scraper v1.0.2 h1:him+wvYZHg/7EDdy73z1ceUywDJDRAhPLD2CSEa2Vfk= github.com/masa-finance/twitter-scraper v1.0.2/go.mod h1:38MY3g/h4V7Xl4HbW9lnkL8S3YiFZenBFv86hN57RG8= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= From 3ed6bd0adbfeb83041e687209abfa196cc2e599f Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 00:38:05 +0200 Subject: [PATCH 07/28] fix: go mod tidy --- go.mod | 3 --- go.sum | 73 ++++++++++++++++++++++------------------------------------ 2 files changed, 28 insertions(+), 48 deletions(-) diff --git a/go.mod b/go.mod index 8468ccb4..0908561f 100644 --- a/go.mod +++ b/go.mod @@ -23,9 +23,7 @@ replace github.com/imperatrona/twitter-scraper => github.com/masa-finance/twitte require ( github.com/AlexEidt/Vidio v1.5.1 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect - github.com/chzyer/readline v1.5.1 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect - github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/mod v0.28.0 // indirect @@ -50,5 +48,4 @@ require ( golang.org/x/time v0.14.0 // indirect golang.org/x/tools v0.37.0 // indirect google.golang.org/protobuf v1.36.10 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 89d2cf68..59f7e882 100644 --- a/go.sum +++ b/go.sum @@ -2,40 +2,38 @@ github.com/AlexEidt/Vidio v1.5.1 h1:tovwvtgQagUz1vifiL9OeWkg1fP/XUzFazFKh7tFtaE= github.com/AlexEidt/Vidio v1.5.1/go.mod h1:djhIMnWMqPrC3X6nB6ymGX6uWWlgw+VayYGKE1bNwmI= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= -github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= -github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= -github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= -github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/edgelesssys/ego v1.7.2 h1:m1rPkrQBlVycE7ofzbijaZlZFUIUVwhGIYKks5FdLxU= -github.com/edgelesssys/ego v1.7.2/go.mod h1:MkciSCrXddC6YYsmUTXeoQwFsbs17ncR3KKB+Ul3uRM= github.com/edgelesssys/ego v1.8.0 h1:g/02JeTC/vajbAfFqxckwSC+siKno/R4H/Em2YsHheU= github.com/edgelesssys/ego v1.8.0/go.mod h1:fg0M/xfLWnrkoD2OZpY9xmltGlAPFsIiUmyHTuCS7zo= -github.com/go-jose/go-jose/v4 v4.1.2 h1:TK/7NqRQZfgAh+Td8AlsrvtPoUyiHh0LqVvokh+1vHI= -github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo= +github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= +github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.5.14 h1:3fAqdB6BCPKHDMHAKRwtPUwYexKtGrNuw8HX/T/4neo= +github.com/gkampitakis/go-snaps v0.5.14/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc= github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5 h1:xhMrHhTJ6zxu3gA4enFM9MLn9AY7613teCdFnlUVbSQ= -github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= github.com/google/pprof v0.0.0-20251007162407-5df77e3f7d1d h1:KJIErDwbSHjnp/SGzE5ed8Aol7JsKiI5X7yWKAtzhM0= github.com/google/pprof v0.0.0-20251007162407-5df77e3f7d1d/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b h1:ogbOPx86mIhFy764gGkqnkFC8m5PJA7sPzlk9ppLVQA= -github.com/ianlancetaylor/demangle v0.0.0-20250417193237-f615e6bd150b/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/joshdk/go-junit v1.0.0 h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE= +github.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labstack/echo-contrib v0.17.4 h1:g5mfsrJfJTKv+F5uNKCyrjLK7js+ZW6HTjg4FnDxxgk= @@ -44,14 +42,8 @@ github.com/labstack/echo/v4 v4.13.4 h1:oTZZW+T3s9gAu5L8vmzihV7/lkXGZuITzTQkTEhcX github.com/labstack/echo/v4 v4.13.4/go.mod h1:g63b33BZ5vZzcIUF8AtRH40DrTlXnx4UMC8rBdndmjQ= github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= -github.com/masa-finance/tee-types v1.1.17 h1:z2nRqKFIKTuq1mVwXrrzxzKO3ggvN6GJjDepHi5fqG4= -github.com/masa-finance/tee-types v1.1.17/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= -github.com/masa-finance/tee-types v1.1.18-0.20251008190839-e2dde58f5c87 h1:+KvR936xzW3Y+VLQ+DYXe/SRKtSHLLrfzIJCxcQkCZ4= -github.com/masa-finance/tee-types v1.1.18-0.20251008190839-e2dde58f5c87/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= -github.com/masa-finance/tee-types v1.1.18-0.20251008220248-b470b4fbd896 h1:gQLRUG8y9jz/lmLgniizljHhn57mocn32iea/fKieIM= -github.com/masa-finance/tee-types v1.1.18-0.20251008220248-b470b4fbd896/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= -github.com/masa-finance/tee-types v1.1.18-0.20251008220545-7ded3bde0729 h1:psOJ4ddjyC1Zv4z9uwmDQmuQ+p8f9HN6oqpyXbzmq1U= -github.com/masa-finance/tee-types v1.1.18-0.20251008220545-7ded3bde0729/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783 h1:5C+DdMf6QbrBFELc99cJhZ7d1XZS9GD/y6/KuRwuXOI= github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/twitter-scraper v1.0.2 h1:him+wvYZHg/7EDdy73z1ceUywDJDRAhPLD2CSEa2Vfk= @@ -60,24 +52,32 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= -github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= +github.com/mfridman/tparse v0.18.0 h1:wh6dzOKaIwkUGyKgOntDW4liXSo37qg5AXbIhkMV3vE= +github.com/mfridman/tparse v0.18.0/go.mod h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A= github.com/onsi/ginkgo/v2 v2.26.0 h1:1J4Wut1IlYZNEAWIV3ALrT9NfiaGW2cDCJQSFQMs/gE= github.com/onsi/ginkgo/v2 v2.26.0/go.mod h1:qhEywmzWTBUY88kfO0BRvX4py7scov9yR+Az2oavUzw= -github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY= -github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o= github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= @@ -93,12 +93,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= -golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= -golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 h1:TQwNpfvNkxAVlItJf6Cr5JTsVZoC/Sj7K3OZv2Pc14A= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -117,8 +113,6 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -133,7 +127,6 @@ golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -144,8 +137,6 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= @@ -166,12 +157,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -180,13 +167,9 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From e337700f600a90765fcf33c493a470d751983267 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 01:02:38 +0200 Subject: [PATCH 08/28] chore: bump ego to support go 1.24.0 --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index c5eac519..bac23588 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ -ARG egover=1.7.2 -ARG baseimage=ghcr.io/edgelesssys/ego-deploy:v${egover} +ARG egover=v1.8.0 +ARG baseimage=ghcr.io/edgelesssys/ego-deploy:${egover} ARG VERSION # Build the Go binary in a separate stage utilizing Makefile -FROM ghcr.io/edgelesssys/ego-dev:v${egover} AS dependencies +FROM ghcr.io/edgelesssys/ego-dev:${egover} AS dependencies WORKDIR /app # Copy go.mod and go.sum From 763900ebd68e1404164863cc0d5ef4221abd21c0 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 01:21:34 +0200 Subject: [PATCH 09/28] chore: update types --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 0908561f..217957c2 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/labstack/echo-contrib v0.17.4 github.com/labstack/echo/v4 v4.13.4 // FIXME: replace when released - github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783 + github.com/masa-finance/tee-types v1.1.18-0.20251008232053-2fca02a9a185 github.com/onsi/ginkgo/v2 v2.26.0 github.com/onsi/gomega v1.38.2 github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index 59f7e882..d5a2314f 100644 --- a/go.sum +++ b/go.sum @@ -46,6 +46,8 @@ github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783 h1:5C+DdMf6QbrBFELc99cJhZ7d1XZS9GD/y6/KuRwuXOI= github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/masa-finance/tee-types v1.1.18-0.20251008232053-2fca02a9a185 h1:YQEBWw068xHLKchPsjcqy20UDPrrAAkM/lmMrEp1w/c= +github.com/masa-finance/tee-types v1.1.18-0.20251008232053-2fca02a9a185/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/twitter-scraper v1.0.2 h1:him+wvYZHg/7EDdy73z1ceUywDJDRAhPLD2CSEa2Vfk= github.com/masa-finance/twitter-scraper v1.0.2/go.mod h1:38MY3g/h4V7Xl4HbW9lnkL8S3YiFZenBFv86hN57RG8= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= From b32eee1e34a5b2410c6092f33caba843493d6676 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 06:19:40 +0200 Subject: [PATCH 10/28] chore: update after types --- go.mod | 2 +- go.sum | 2 ++ internal/jobs/linkedin_test.go | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 217957c2..f9c5bbb7 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/labstack/echo-contrib v0.17.4 github.com/labstack/echo/v4 v4.13.4 // FIXME: replace when released - github.com/masa-finance/tee-types v1.1.18-0.20251008232053-2fca02a9a185 + github.com/masa-finance/tee-types v1.1.18-0.20251009040853-d34fe98f5339 github.com/onsi/ginkgo/v2 v2.26.0 github.com/onsi/gomega v1.38.2 github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index d5a2314f..a9d3b65a 100644 --- a/go.sum +++ b/go.sum @@ -48,6 +48,8 @@ github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783 h1:5C+Dd github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/tee-types v1.1.18-0.20251008232053-2fca02a9a185 h1:YQEBWw068xHLKchPsjcqy20UDPrrAAkM/lmMrEp1w/c= github.com/masa-finance/tee-types v1.1.18-0.20251008232053-2fca02a9a185/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/masa-finance/tee-types v1.1.18-0.20251009040853-d34fe98f5339 h1:tcMa9a989K/VnKq7j5Vy4y9l7Avc2uUXMArlqDAhSy4= +github.com/masa-finance/tee-types v1.1.18-0.20251009040853-d34fe98f5339/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/twitter-scraper v1.0.2 h1:him+wvYZHg/7EDdy73z1ceUywDJDRAhPLD2CSEa2Vfk= github.com/masa-finance/twitter-scraper v1.0.2/go.mod h1:38MY3g/h4V7Xl4HbW9lnkL8S3YiFZenBFv86hN57RG8= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= diff --git a/internal/jobs/linkedin_test.go b/internal/jobs/linkedin_test.go index dcaf8431..dc5763e0 100644 --- a/internal/jobs/linkedin_test.go +++ b/internal/jobs/linkedin_test.go @@ -106,12 +106,14 @@ var _ = Describe("LinkedInScraper", func() { "maxItems": 10, } + headline := "Software Engineer" + headline2 := "Senior Software Engineer" expectedProfiles := []*profileTypes.Profile{ { ID: "profile-1", FirstName: "John", LastName: "Doe", - Headline: "Software Engineer", + Headline: &headline, PublicIdentifier: "john-doe", URL: "https://linkedin.com/in/john-doe", }, @@ -119,7 +121,7 @@ var _ = Describe("LinkedInScraper", func() { ID: "profile-2", FirstName: "Jane", LastName: "Smith", - Headline: "Senior Software Engineer", + Headline: &headline2, PublicIdentifier: "jane-smith", URL: "https://linkedin.com/in/jane-smith", }, From ad012e85ce29a82bdb2036f420ad6fbf5b11acfd Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 06:31:46 +0200 Subject: [PATCH 11/28] chore: update types --- go.mod | 2 +- go.sum | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index f9c5bbb7..b4e32f55 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/labstack/echo-contrib v0.17.4 github.com/labstack/echo/v4 v4.13.4 // FIXME: replace when released - github.com/masa-finance/tee-types v1.1.18-0.20251009040853-d34fe98f5339 + github.com/masa-finance/tee-types v1.1.18-0.20251009043043-6d5812815e46 github.com/onsi/ginkgo/v2 v2.26.0 github.com/onsi/gomega v1.38.2 github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index a9d3b65a..42c970c1 100644 --- a/go.sum +++ b/go.sum @@ -44,12 +44,8 @@ github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0 github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= -github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783 h1:5C+DdMf6QbrBFELc99cJhZ7d1XZS9GD/y6/KuRwuXOI= -github.com/masa-finance/tee-types v1.1.18-0.20251008223552-a6a8a5875783/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= -github.com/masa-finance/tee-types v1.1.18-0.20251008232053-2fca02a9a185 h1:YQEBWw068xHLKchPsjcqy20UDPrrAAkM/lmMrEp1w/c= -github.com/masa-finance/tee-types v1.1.18-0.20251008232053-2fca02a9a185/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= -github.com/masa-finance/tee-types v1.1.18-0.20251009040853-d34fe98f5339 h1:tcMa9a989K/VnKq7j5Vy4y9l7Avc2uUXMArlqDAhSy4= -github.com/masa-finance/tee-types v1.1.18-0.20251009040853-d34fe98f5339/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/masa-finance/tee-types v1.1.18-0.20251009043043-6d5812815e46 h1:Xz5gqVWxsHh4iIY8cNLlSKWvXw+7UfarYQ57fO3VmDE= +github.com/masa-finance/tee-types v1.1.18-0.20251009043043-6d5812815e46/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/twitter-scraper v1.0.2 h1:him+wvYZHg/7EDdy73z1ceUywDJDRAhPLD2CSEa2Vfk= github.com/masa-finance/twitter-scraper v1.0.2/go.mod h1:38MY3g/h4V7Xl4HbW9lnkL8S3YiFZenBFv86hN57RG8= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= From 24b2e729941c69686e9136c1d7f490b3d2511c67 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 07:23:18 +0200 Subject: [PATCH 12/28] fix: client test --- internal/jobs/linkedinapify/client_test.go | 69 ---------------------- 1 file changed, 69 deletions(-) diff --git a/internal/jobs/linkedinapify/client_test.go b/internal/jobs/linkedinapify/client_test.go index 83d84ef7..8d209301 100644 --- a/internal/jobs/linkedinapify/client_test.go +++ b/internal/jobs/linkedinapify/client_test.go @@ -123,75 +123,6 @@ var _ = Describe("LinkedInApifyClient", func() { Expect(results).To(BeEmpty()) // The invalid item should be skipped }) - It("should correctly unmarshal valid profile items", func() { - profileJSON, _ := json.Marshal(map[string]any{ - "id": "test-id", - "publicIdentifier": "john-doe", - "Url": "https://linkedin.com/in/john-doe", - "firstName": "John", - "lastName": "Doe", - "headline": "Software Engineer", - "about": "Passionate about technology", - "openToWork": false, - "hiring": false, - "photo": "https://example.com/photo.jpg", - "premium": false, - "influencer": false, - "location": map[string]any{ - "Text": "San Francisco, CA", - "countryCode": "US", - "parsed": map[string]any{ - "text": "San Francisco, CA", - "countryCode": "US", - "country": "United States", - "state": "California", - "city": "San Francisco", - }, - }, - "verified": true, - "registeredAt": "2020-01-01T00:00:00Z", - "topSkills": "Go, Python, JavaScript", - "connectionsCount": 500, - "followerCount": 1000, - "currentPosition": []any{}, - "experience": []any{}, - "education": []any{}, - "certifications": []any{}, - "projects": []any{}, - "volunteering": []any{}, - "receivedRecommendations": []any{}, - "skills": []any{}, - "courses": []any{}, - "publications": []any{}, - "patents": []any{}, - "honorsAndAwards": []any{}, - "languages": []any{}, - "featured": nil, - "moreProfiles": []any{}, - }) - dataset := &client.DatasetResponse{ - Data: client.ApifyDatasetData{ - Items: []json.RawMessage{profileJSON}, - }, - } - mockClient.RunActorAndGetResponseFunc = func(actorID apify.ActorId, input any, cursor client.Cursor, limit uint) (*client.DatasetResponse, client.Cursor, error) { - return dataset, "next", nil - } - - args := profileArgs.Arguments{ - Query: "test query", - MaxItems: 1, - } - results, _, cursor, err := linkedinClient.SearchProfiles("test-worker", &args, client.EmptyCursor) - Expect(err).NotTo(HaveOccurred()) - Expect(cursor).To(Equal(client.Cursor("next"))) - Expect(results).To(HaveLen(1)) - Expect(results[0].ID).To(Equal("test-id")) - Expect(results[0].FirstName).To(Equal("John")) - Expect(results[0].LastName).To(Equal("Doe")) - Expect(results[0].Headline).To(Equal("Software Engineer")) - }) - It("should handle multiple valid profiles", func() { profile1, _ := json.Marshal(map[string]any{ "id": "profile-1", From ed7681a31ee5066e871a194a75e088f748a09ca2 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 07:29:03 +0200 Subject: [PATCH 13/28] chore: try keeping egover the same --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bac23588..f64151fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG egover=v1.8.0 +ARG egover=1.7.2 ARG baseimage=ghcr.io/edgelesssys/ego-deploy:${egover} ARG VERSION From ef622ab78d32d00787e3c392ee595329387a61b0 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 07:32:35 +0200 Subject: [PATCH 14/28] chore: back to 180 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f64151fe..45b15a85 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG egover=1.7.2 +ARG egover=1.8.0 ARG baseimage=ghcr.io/edgelesssys/ego-deploy:${egover} ARG VERSION From 5749202ace73cbac1fcce63675ffb246e2f9378c Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 07:35:19 +0200 Subject: [PATCH 15/28] chore: bump types --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index b4e32f55..50bbf156 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/labstack/echo-contrib v0.17.4 github.com/labstack/echo/v4 v4.13.4 // FIXME: replace when released - github.com/masa-finance/tee-types v1.1.18-0.20251009043043-6d5812815e46 + github.com/masa-finance/tee-types v1.1.18-0.20251009044435-2f46f903bcb9 github.com/onsi/ginkgo/v2 v2.26.0 github.com/onsi/gomega v1.38.2 github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index 42c970c1..ad2a9319 100644 --- a/go.sum +++ b/go.sum @@ -44,8 +44,8 @@ github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0 github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= -github.com/masa-finance/tee-types v1.1.18-0.20251009043043-6d5812815e46 h1:Xz5gqVWxsHh4iIY8cNLlSKWvXw+7UfarYQ57fO3VmDE= -github.com/masa-finance/tee-types v1.1.18-0.20251009043043-6d5812815e46/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/masa-finance/tee-types v1.1.18-0.20251009044435-2f46f903bcb9 h1:L8g/gf94TfysyL/YlNllx9TnXAkm3L9P2AEikWlFnBg= +github.com/masa-finance/tee-types v1.1.18-0.20251009044435-2f46f903bcb9/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/twitter-scraper v1.0.2 h1:him+wvYZHg/7EDdy73z1ceUywDJDRAhPLD2CSEa2Vfk= github.com/masa-finance/twitter-scraper v1.0.2/go.mod h1:38MY3g/h4V7Xl4HbW9lnkL8S3YiFZenBFv86hN57RG8= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= From f89202ec2dc91b288065b4b6aee89ed3142476e4 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 07:36:02 +0200 Subject: [PATCH 16/28] chore: fix dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 45b15a85..f0a72e95 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG egover=1.8.0 +ARG egover=latest ARG baseimage=ghcr.io/edgelesssys/ego-deploy:${egover} ARG VERSION From 7a19ef238b0aa493dee0f12c0f59b5e7462ce6e7 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 07:42:33 +0200 Subject: [PATCH 17/28] chore: test fix --- internal/jobs/linkedinapify/client_test.go | 6 ++++-- internal/jobs/tiktok.go | 11 ++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/jobs/linkedinapify/client_test.go b/internal/jobs/linkedinapify/client_test.go index 8d209301..2c8aac24 100644 --- a/internal/jobs/linkedinapify/client_test.go +++ b/internal/jobs/linkedinapify/client_test.go @@ -14,6 +14,7 @@ import ( "github.com/masa-finance/tee-worker/pkg/client" profileArgs "github.com/masa-finance/tee-types/args/linkedin/profile" + "github.com/masa-finance/tee-types/types/linkedin/profile" ) // MockApifyClient is a mock implementation of the ApifyClient. @@ -205,8 +206,9 @@ var _ = Describe("LinkedInApifyClient", func() { Expect(err).NotTo(HaveOccurred()) args := profileArgs.Arguments{ - Query: "software engineer", - MaxItems: 1, + Query: "software engineer", + MaxItems: 1, + ScraperMode: profile.ScraperModeShort, } results, datasetId, cursor, err := realClient.SearchProfiles("test-worker", &args, client.EmptyCursor) diff --git a/internal/jobs/tiktok.go b/internal/jobs/tiktok.go index fff685c3..f1e327e6 100644 --- a/internal/jobs/tiktok.go +++ b/internal/jobs/tiktok.go @@ -3,6 +3,7 @@ package jobs import ( "bytes" "encoding/json" + "errors" "fmt" "io" "net/http" @@ -196,7 +197,7 @@ func (ttt *TikTokTranscriber) executeTranscription(j types.Job, a *teeargs.TikTo errMsg := fmt.Sprintf("API request failed with status code %d. Response: %s", apiResp.StatusCode, string(bodyBytes)) logrus.WithField("job_uuid", j.UUID).Error(errMsg) ttt.stats.Add(j.WorkerID, stats.TikTokTranscriptionErrors, 1) - return types.JobResult{Error: errMsg}, fmt.Errorf(errMsg) + return types.JobResult{Error: errMsg}, errors.New(errMsg) } var parsedAPIResponse APIResponse @@ -209,7 +210,7 @@ func (ttt *TikTokTranscriber) executeTranscription(j types.Job, a *teeargs.TikTo errMsg := fmt.Sprintf("API returned an error: %s", parsedAPIResponse.Error) logrus.WithField("job_uuid", j.UUID).Error(errMsg) ttt.stats.Add(j.WorkerID, stats.TikTokTranscriptionErrors, 1) - return types.JobResult{Error: errMsg}, fmt.Errorf(errMsg) + return types.JobResult{Error: errMsg}, errors.New(errMsg) } // Sub-Step 3.2: Extract Transcription and Metadata @@ -217,7 +218,7 @@ func (ttt *TikTokTranscriber) executeTranscription(j types.Job, a *teeargs.TikTo errMsg := "No transcripts found in API response" logrus.WithField("job_uuid", j.UUID).Warn(errMsg) ttt.stats.Add(j.WorkerID, stats.TikTokTranscriptionErrors, 1) // Or a different stat for "no_transcript_found" - return types.JobResult{Error: errMsg}, fmt.Errorf(errMsg) + return types.JobResult{Error: errMsg}, errors.New(errMsg) } vttText := "" @@ -253,7 +254,7 @@ func (ttt *TikTokTranscriber) executeTranscription(j types.Job, a *teeargs.TikTo "requested_lang": languageCode, }).Error(errMsg) ttt.stats.Add(j.WorkerID, stats.TikTokTranscriptionErrors, 1) - return types.JobResult{Error: errMsg}, fmt.Errorf(errMsg) + return types.JobResult{Error: errMsg}, errors.New(errMsg) } logrus.Debugf("Job %s: Raw VTT content for language %s:\n%s", j.UUID, languageCode, vttText) @@ -265,7 +266,7 @@ func (ttt *TikTokTranscriber) executeTranscription(j types.Job, a *teeargs.TikTo errMsg := fmt.Sprintf("Failed to convert VTT to plain text: %v", err) logrus.WithField("job_uuid", j.UUID).Error(errMsg) ttt.stats.Add(j.WorkerID, stats.TikTokTranscriptionErrors, 1) - return types.JobResult{Error: errMsg}, fmt.Errorf(errMsg) + return types.JobResult{Error: errMsg}, errors.New(errMsg) } // Process Result & Return From 819f10f4bce8f5f4d7cb72bb6a1fc8fba5e628e5 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 07:43:08 +0200 Subject: [PATCH 18/28] chore: fix type --- internal/jobs/linkedinapify/client_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/jobs/linkedinapify/client_test.go b/internal/jobs/linkedinapify/client_test.go index 2c8aac24..b17b73fd 100644 --- a/internal/jobs/linkedinapify/client_test.go +++ b/internal/jobs/linkedinapify/client_test.go @@ -14,6 +14,7 @@ import ( "github.com/masa-finance/tee-worker/pkg/client" profileArgs "github.com/masa-finance/tee-types/args/linkedin/profile" + "github.com/masa-finance/tee-types/types" "github.com/masa-finance/tee-types/types/linkedin/profile" ) @@ -206,6 +207,7 @@ var _ = Describe("LinkedInApifyClient", func() { Expect(err).NotTo(HaveOccurred()) args := profileArgs.Arguments{ + QueryType: types.CapSearchByProfile, Query: "software engineer", MaxItems: 1, ScraperMode: profile.ScraperModeShort, From fc2fe41b77724b83ac6bc3e83457a10db6a13524 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 07:51:28 +0200 Subject: [PATCH 19/28] chore: 1.8.0 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f0a72e95..45b15a85 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG egover=latest +ARG egover=1.8.0 ARG baseimage=ghcr.io/edgelesssys/ego-deploy:${egover} ARG VERSION From 0f9f5d48fb7904d7530d53eee2c21754a6870f02 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 07:53:14 +0200 Subject: [PATCH 20/28] fix: latest --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 45b15a85..f0a72e95 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG egover=1.8.0 +ARG egover=latest ARG baseimage=ghcr.io/edgelesssys/ego-deploy:${egover} ARG VERSION From dd1416033a5186a2f1b710e6789a4f9bbbe9ea04 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 08:17:30 +0200 Subject: [PATCH 21/28] chore: revert worker --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index f0a72e95..a5325c54 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ -ARG egover=latest +ARG egover=1.7.2 ARG baseimage=ghcr.io/edgelesssys/ego-deploy:${egover} ARG VERSION # Build the Go binary in a separate stage utilizing Makefile -FROM ghcr.io/edgelesssys/ego-dev:${egover} AS dependencies +FROM ghcr.io/edgelesssys/ego-dev:v${egover} AS dependencies WORKDIR /app # Copy go.mod and go.sum From 38a268319769087b07fb1303e44163e36c9c9b32 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 08:17:45 +0200 Subject: [PATCH 22/28] chore: fix dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a5325c54..c5eac519 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG egover=1.7.2 -ARG baseimage=ghcr.io/edgelesssys/ego-deploy:${egover} +ARG baseimage=ghcr.io/edgelesssys/ego-deploy:v${egover} ARG VERSION # Build the Go binary in a separate stage utilizing Makefile From 2e04ade36ada49e554e3c5880e7bb5c1b1a08895 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 08:19:03 +0200 Subject: [PATCH 23/28] fix: go sum --- go.mod | 2 +- go.sum | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 50bbf156..c7ab1040 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.24.0 toolchain go1.24.6 require ( - github.com/edgelesssys/ego v1.8.0 + github.com/edgelesssys/ego v1.7.2 github.com/google/uuid v1.6.0 github.com/imperatrona/twitter-scraper v0.0.18 github.com/joho/godotenv v1.5.1 diff --git a/go.sum b/go.sum index ad2a9319..85cf62af 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,8 @@ github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lpr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/edgelesssys/ego v1.8.0 h1:g/02JeTC/vajbAfFqxckwSC+siKno/R4H/Em2YsHheU= -github.com/edgelesssys/ego v1.8.0/go.mod h1:fg0M/xfLWnrkoD2OZpY9xmltGlAPFsIiUmyHTuCS7zo= +github.com/edgelesssys/ego v1.7.2 h1:m1rPkrQBlVycE7ofzbijaZlZFUIUVwhGIYKks5FdLxU= +github.com/edgelesssys/ego v1.7.2/go.mod h1:MkciSCrXddC6YYsmUTXeoQwFsbs17ncR3KKB+Ul3uRM= github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= @@ -68,8 +68,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= From 0b9dfa369755f9dcb83a9f92d2767f451ec36ec8 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 08:19:39 +0200 Subject: [PATCH 24/28] fix: go sum --- go.mod | 2 +- go.sum | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index c7ab1040..50bbf156 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.24.0 toolchain go1.24.6 require ( - github.com/edgelesssys/ego v1.7.2 + github.com/edgelesssys/ego v1.8.0 github.com/google/uuid v1.6.0 github.com/imperatrona/twitter-scraper v0.0.18 github.com/joho/godotenv v1.5.1 diff --git a/go.sum b/go.sum index 85cf62af..ad2a9319 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,8 @@ github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lpr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/edgelesssys/ego v1.7.2 h1:m1rPkrQBlVycE7ofzbijaZlZFUIUVwhGIYKks5FdLxU= -github.com/edgelesssys/ego v1.7.2/go.mod h1:MkciSCrXddC6YYsmUTXeoQwFsbs17ncR3KKB+Ul3uRM= +github.com/edgelesssys/ego v1.8.0 h1:g/02JeTC/vajbAfFqxckwSC+siKno/R4H/Em2YsHheU= +github.com/edgelesssys/ego v1.8.0/go.mod h1:fg0M/xfLWnrkoD2OZpY9xmltGlAPFsIiUmyHTuCS7zo= github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= @@ -68,8 +68,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= From 9c4a99b2cf1070b40f31da85acdb6e6573b71523 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 08:21:12 +0200 Subject: [PATCH 25/28] fix: go mod --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 50bbf156..13e8296b 100644 --- a/go.mod +++ b/go.mod @@ -2,10 +2,10 @@ module github.com/masa-finance/tee-worker go 1.24.0 -toolchain go1.24.6 +toolchain go1.24.3 require ( - github.com/edgelesssys/ego v1.8.0 + github.com/edgelesssys/ego v1.7.0 github.com/google/uuid v1.6.0 github.com/imperatrona/twitter-scraper v0.0.18 github.com/joho/godotenv v1.5.1 diff --git a/go.sum b/go.sum index ad2a9319..075fc1a7 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,8 @@ github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lpr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/edgelesssys/ego v1.8.0 h1:g/02JeTC/vajbAfFqxckwSC+siKno/R4H/Em2YsHheU= -github.com/edgelesssys/ego v1.8.0/go.mod h1:fg0M/xfLWnrkoD2OZpY9xmltGlAPFsIiUmyHTuCS7zo= +github.com/edgelesssys/ego v1.7.0 h1:NzCiKZKalHbeRgG7+11xgADgOPR8laSxxazOH303QVw= +github.com/edgelesssys/ego v1.7.0/go.mod h1:xBU369lGvxWTuMLlJv3tT6bI66hrpkCFn/292zzl7U4= github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= @@ -68,8 +68,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= From 770c33801e6f634b3ac7bd65dfd1c64e3b916d86 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 08:21:56 +0200 Subject: [PATCH 26/28] chore: fix go mod and sum --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 13e8296b..486ae9ba 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.24.0 toolchain go1.24.3 require ( - github.com/edgelesssys/ego v1.7.0 + github.com/edgelesssys/ego v1.7.2 github.com/google/uuid v1.6.0 github.com/imperatrona/twitter-scraper v0.0.18 github.com/joho/godotenv v1.5.1 diff --git a/go.sum b/go.sum index 075fc1a7..85cf62af 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,8 @@ github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lpr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/edgelesssys/ego v1.7.0 h1:NzCiKZKalHbeRgG7+11xgADgOPR8laSxxazOH303QVw= -github.com/edgelesssys/ego v1.7.0/go.mod h1:xBU369lGvxWTuMLlJv3tT6bI66hrpkCFn/292zzl7U4= +github.com/edgelesssys/ego v1.7.2 h1:m1rPkrQBlVycE7ofzbijaZlZFUIUVwhGIYKks5FdLxU= +github.com/edgelesssys/ego v1.7.2/go.mod h1:MkciSCrXddC6YYsmUTXeoQwFsbs17ncR3KKB+Ul3uRM= github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= From 5ca1e4cbf0a6fa79bc6bf7f643d93d1955e89611 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 08:25:31 +0200 Subject: [PATCH 27/28] chore: fix mod --- Dockerfile | 2 +- go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index c5eac519..06aac404 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG egover=1.7.2 +ARG egover=1.8.0 ARG baseimage=ghcr.io/edgelesssys/ego-deploy:v${egover} ARG VERSION diff --git a/go.mod b/go.mod index 486ae9ba..50bbf156 100644 --- a/go.mod +++ b/go.mod @@ -2,10 +2,10 @@ module github.com/masa-finance/tee-worker go 1.24.0 -toolchain go1.24.3 +toolchain go1.24.6 require ( - github.com/edgelesssys/ego v1.7.2 + github.com/edgelesssys/ego v1.8.0 github.com/google/uuid v1.6.0 github.com/imperatrona/twitter-scraper v0.0.18 github.com/joho/godotenv v1.5.1 diff --git a/go.sum b/go.sum index 85cf62af..ad2a9319 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,8 @@ github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lpr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/edgelesssys/ego v1.7.2 h1:m1rPkrQBlVycE7ofzbijaZlZFUIUVwhGIYKks5FdLxU= -github.com/edgelesssys/ego v1.7.2/go.mod h1:MkciSCrXddC6YYsmUTXeoQwFsbs17ncR3KKB+Ul3uRM= +github.com/edgelesssys/ego v1.8.0 h1:g/02JeTC/vajbAfFqxckwSC+siKno/R4H/Em2YsHheU= +github.com/edgelesssys/ego v1.8.0/go.mod h1:fg0M/xfLWnrkoD2OZpY9xmltGlAPFsIiUmyHTuCS7zo= github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= @@ -68,8 +68,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= From a7e25a3a10992d0f82058058d0ccb5ddc21dfa69 Mon Sep 17 00:00:00 2001 From: grantdfoster Date: Thu, 9 Oct 2025 23:42:31 +0200 Subject: [PATCH 28/28] chore: bump types --- go.mod | 3 +-- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 50bbf156..ecef5a83 100644 --- a/go.mod +++ b/go.mod @@ -11,8 +11,7 @@ require ( github.com/joho/godotenv v1.5.1 github.com/labstack/echo-contrib v0.17.4 github.com/labstack/echo/v4 v4.13.4 - // FIXME: replace when released - github.com/masa-finance/tee-types v1.1.18-0.20251009044435-2f46f903bcb9 + github.com/masa-finance/tee-types v1.2.0 github.com/onsi/ginkgo/v2 v2.26.0 github.com/onsi/gomega v1.38.2 github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index ad2a9319..410d9d8b 100644 --- a/go.sum +++ b/go.sum @@ -44,8 +44,8 @@ github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0 github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= -github.com/masa-finance/tee-types v1.1.18-0.20251009044435-2f46f903bcb9 h1:L8g/gf94TfysyL/YlNllx9TnXAkm3L9P2AEikWlFnBg= -github.com/masa-finance/tee-types v1.1.18-0.20251009044435-2f46f903bcb9/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= +github.com/masa-finance/tee-types v1.2.0 h1:RqyDMlDY0XCXAw6XQWZ+4R4az4AC+C5r30cmhtHfhf0= +github.com/masa-finance/tee-types v1.2.0/go.mod h1:sB98t0axFlPi2d0zUPFZSQ84mPGwbr9eRY5yLLE3fSc= github.com/masa-finance/twitter-scraper v1.0.2 h1:him+wvYZHg/7EDdy73z1ceUywDJDRAhPLD2CSEa2Vfk= github.com/masa-finance/twitter-scraper v1.0.2/go.mod h1:38MY3g/h4V7Xl4HbW9lnkL8S3YiFZenBFv86hN57RG8= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=