From 04181247f8a42fe8313a28df864224cd2e4850e8 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Wed, 5 Jun 2024 09:58:04 -0700 Subject: [PATCH] Move HTTP service to public for plugin use (#27284) * Move httpservice for use in plugins * Adapt httpservice for plugin use * Fix lint --- server/channels/app/app.go | 2 +- server/channels/app/app_iface.go | 2 +- .../app/opentracing/opentracing_layer.go | 2 +- server/channels/app/post_metadata_test.go | 2 +- server/channels/app/server.go | 2 +- server/channels/jobs/export_delete/worker.go | 2 +- server/channels/jobs/export_process/worker.go | 2 +- server/channels/jobs/import_delete/worker.go | 2 +- server/channels/jobs/import_process/worker.go | 2 +- .../jobs/resend_invitation_email/worker.go | 2 +- server/channels/jobs/server.go | 2 +- server/channels/jobs/workers.go | 2 +- .../services/imageproxy/atmos_camo_test.go | 2 +- .../services/imageproxy/imageproxy.go | 4 ++-- .../services/imageproxy/local_test.go | 2 +- .../platform/services/marketplace/client.go | 2 +- .../services/telemetry/mocks/ServerIface.go | 2 +- .../platform/services/telemetry/telemetry.go | 2 +- .../services/telemetry/telemetry_test.go | 2 +- .../shared}/configservice/configservice.go | 0 .../shared}/httpservice/client.go | 0 .../shared}/httpservice/client_test.go | 3 ++- .../shared}/httpservice/httpservice.go | 23 ++++++++++++++++--- .../shared}/httpservice/transport.go | 0 24 files changed, 42 insertions(+), 24 deletions(-) rename server/{platform/services => public/shared}/configservice/configservice.go (100%) rename server/{platform/services => public/shared}/httpservice/client.go (100%) rename server/{platform/services => public/shared}/httpservice/client_test.go (99%) rename server/{platform/services => public/shared}/httpservice/httpservice.go (83%) rename server/{platform/services => public/shared}/httpservice/transport.go (100%) diff --git a/server/channels/app/app.go b/server/channels/app/app.go index f4dab46ed7..c8bf07bbbe 100644 --- a/server/channels/app/app.go +++ b/server/channels/app/app.go @@ -10,10 +10,10 @@ import ( "time" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/timezones" "github.com/mattermost/mattermost/server/v8/einterfaces" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" "github.com/mattermost/mattermost/server/v8/platform/services/imageproxy" "github.com/mattermost/mattermost/server/v8/platform/services/searchengine" "github.com/mattermost/mattermost/server/v8/platform/shared/templates" diff --git a/server/channels/app/app_iface.go b/server/channels/app/app_iface.go index e10af6ba1f..d4f44af53c 100644 --- a/server/channels/app/app_iface.go +++ b/server/channels/app/app_iface.go @@ -20,6 +20,7 @@ import ( "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/plugin" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/public/shared/i18n" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" @@ -28,7 +29,6 @@ import ( "github.com/mattermost/mattermost/server/v8/channels/audit" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/einterfaces" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" "github.com/mattermost/mattermost/server/v8/platform/services/imageproxy" "github.com/mattermost/mattermost/server/v8/platform/services/remotecluster" "github.com/mattermost/mattermost/server/v8/platform/services/searchengine" diff --git a/server/channels/app/opentracing/opentracing_layer.go b/server/channels/app/opentracing/opentracing_layer.go index 2b3171a736..02ea5ab508 100644 --- a/server/channels/app/opentracing/opentracing_layer.go +++ b/server/channels/app/opentracing/opentracing_layer.go @@ -20,6 +20,7 @@ import ( "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/plugin" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/public/shared/i18n" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" @@ -29,7 +30,6 @@ import ( "github.com/mattermost/mattermost/server/v8/channels/audit" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/einterfaces" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" "github.com/mattermost/mattermost/server/v8/platform/services/imageproxy" "github.com/mattermost/mattermost/server/v8/platform/services/remotecluster" "github.com/mattermost/mattermost/server/v8/platform/services/searchengine" diff --git a/server/channels/app/post_metadata_test.go b/server/channels/app/post_metadata_test.go index 80fff213da..982c6156f6 100644 --- a/server/channels/app/post_metadata_test.go +++ b/server/channels/app/post_metadata_test.go @@ -28,9 +28,9 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/v8/channels/app/platform" "github.com/mattermost/mattermost/server/v8/channels/utils/testutils" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" "github.com/mattermost/mattermost/server/v8/platform/services/imageproxy" ) diff --git a/server/channels/app/server.go b/server/channels/app/server.go index 2630ab0aa5..5dd56419ba 100644 --- a/server/channels/app/server.go +++ b/server/channels/app/server.go @@ -28,6 +28,7 @@ import ( "golang.org/x/crypto/acme/autocert" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/public/shared/i18n" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" @@ -66,7 +67,6 @@ import ( "github.com/mattermost/mattermost/server/v8/einterfaces" "github.com/mattermost/mattermost/server/v8/platform/services/awsmeter" "github.com/mattermost/mattermost/server/v8/platform/services/cache" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" "github.com/mattermost/mattermost/server/v8/platform/services/remotecluster" "github.com/mattermost/mattermost/server/v8/platform/services/searchengine/bleveengine" "github.com/mattermost/mattermost/server/v8/platform/services/searchengine/bleveengine/indexer" diff --git a/server/channels/jobs/export_delete/worker.go b/server/channels/jobs/export_delete/worker.go index 6c052203e1..a08e644223 100644 --- a/server/channels/jobs/export_delete/worker.go +++ b/server/channels/jobs/export_delete/worker.go @@ -10,9 +10,9 @@ import ( "github.com/wiggin77/merror" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/configservice" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/v8/channels/jobs" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" ) type AppIface interface { diff --git a/server/channels/jobs/export_process/worker.go b/server/channels/jobs/export_process/worker.go index be84a72f3b..f53ee17a1d 100644 --- a/server/channels/jobs/export_process/worker.go +++ b/server/channels/jobs/export_process/worker.go @@ -9,10 +9,10 @@ import ( "path/filepath" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/configservice" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/jobs" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" ) type AppIface interface { diff --git a/server/channels/jobs/import_delete/worker.go b/server/channels/jobs/import_delete/worker.go index 2b789f4987..d85c44c9c5 100644 --- a/server/channels/jobs/import_delete/worker.go +++ b/server/channels/jobs/import_delete/worker.go @@ -11,11 +11,11 @@ import ( "github.com/wiggin77/merror" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/configservice" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/jobs" "github.com/mattermost/mattermost/server/v8/channels/store" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" ) type AppIface interface { diff --git a/server/channels/jobs/import_process/worker.go b/server/channels/jobs/import_process/worker.go index 724291ebbd..1ff5304e74 100644 --- a/server/channels/jobs/import_process/worker.go +++ b/server/channels/jobs/import_process/worker.go @@ -16,10 +16,10 @@ import ( "strings" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/configservice" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/jobs" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" "github.com/mattermost/mattermost/server/v8/platform/shared/filestore" ) diff --git a/server/channels/jobs/resend_invitation_email/worker.go b/server/channels/jobs/resend_invitation_email/worker.go index 0de4c1afa4..b989a499fb 100644 --- a/server/channels/jobs/resend_invitation_email/worker.go +++ b/server/channels/jobs/resend_invitation_email/worker.go @@ -9,11 +9,11 @@ import ( "strconv" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/configservice" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/jobs" "github.com/mattermost/mattermost/server/v8/channels/store" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" "github.com/mattermost/mattermost/server/v8/platform/services/telemetry" ) diff --git a/server/channels/jobs/server.go b/server/channels/jobs/server.go index e87763319d..7ec664fc84 100644 --- a/server/channels/jobs/server.go +++ b/server/channels/jobs/server.go @@ -8,10 +8,10 @@ import ( "time" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/configservice" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/einterfaces" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" ) type JobServer struct { diff --git a/server/channels/jobs/workers.go b/server/channels/jobs/workers.go index a945fd091d..0c4798be0a 100644 --- a/server/channels/jobs/workers.go +++ b/server/channels/jobs/workers.go @@ -7,8 +7,8 @@ import ( "errors" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/configservice" "github.com/mattermost/mattermost/server/public/shared/mlog" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" ) type Workers struct { diff --git a/server/platform/services/imageproxy/atmos_camo_test.go b/server/platform/services/imageproxy/atmos_camo_test.go index 45f5b0f6d8..d11036f30b 100644 --- a/server/platform/services/imageproxy/atmos_camo_test.go +++ b/server/platform/services/imageproxy/atmos_camo_test.go @@ -14,8 +14,8 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/v8/channels/utils/testutils" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" ) func makeTestAtmosCamoProxy() *ImageProxy { diff --git a/server/platform/services/imageproxy/imageproxy.go b/server/platform/services/imageproxy/imageproxy.go index 13a9309b0d..a62a49336c 100644 --- a/server/platform/services/imageproxy/imageproxy.go +++ b/server/platform/services/imageproxy/imageproxy.go @@ -13,9 +13,9 @@ import ( "sync" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/configservice" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/public/shared/mlog" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" ) var ErrNotEnabled = Error{errors.New("imageproxy.ImageProxy: image proxy not enabled")} diff --git a/server/platform/services/imageproxy/local_test.go b/server/platform/services/imageproxy/local_test.go index 59c82cc7e0..ce899a5be3 100644 --- a/server/platform/services/imageproxy/local_test.go +++ b/server/platform/services/imageproxy/local_test.go @@ -14,8 +14,8 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/v8/channels/utils/testutils" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" ) func makeTestLocalProxy() *ImageProxy { diff --git a/server/platform/services/marketplace/client.go b/server/platform/services/marketplace/client.go index 4165b42789..eed710bea3 100644 --- a/server/platform/services/marketplace/client.go +++ b/server/platform/services/marketplace/client.go @@ -13,7 +13,7 @@ import ( "github.com/pkg/errors" "github.com/mattermost/mattermost/server/public/model" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" + "github.com/mattermost/mattermost/server/public/shared/httpservice" ) // Client is the programmatic interface to the marketplace server API. diff --git a/server/platform/services/telemetry/mocks/ServerIface.go b/server/platform/services/telemetry/mocks/ServerIface.go index 569c01a7d2..5e2e85ec44 100644 --- a/server/platform/services/telemetry/mocks/ServerIface.go +++ b/server/platform/services/telemetry/mocks/ServerIface.go @@ -7,7 +7,7 @@ package mocks import ( context "context" - httpservice "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" + httpservice "github.com/mattermost/mattermost/server/public/shared/httpservice" mock "github.com/stretchr/testify/mock" model "github.com/mattermost/mattermost/server/public/model" diff --git a/server/platform/services/telemetry/telemetry.go b/server/platform/services/telemetry/telemetry.go index 7989f56837..d9778eb868 100644 --- a/server/platform/services/telemetry/telemetry.go +++ b/server/platform/services/telemetry/telemetry.go @@ -16,10 +16,10 @@ import ( "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/plugin" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/channels/utils" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" "github.com/mattermost/mattermost/server/v8/platform/services/marketplace" "github.com/mattermost/mattermost/server/v8/platform/services/searchengine" ) diff --git a/server/platform/services/telemetry/telemetry_test.go b/server/platform/services/telemetry/telemetry_test.go index e846a7743a..4f6b14e3f9 100644 --- a/server/platform/services/telemetry/telemetry_test.go +++ b/server/platform/services/telemetry/telemetry_test.go @@ -23,10 +23,10 @@ import ( "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/plugin" "github.com/mattermost/mattermost/server/public/plugin/plugintest" + "github.com/mattermost/mattermost/server/public/shared/httpservice" "github.com/mattermost/mattermost/server/public/shared/mlog" storeMocks "github.com/mattermost/mattermost/server/v8/channels/store/storetest/mocks" "github.com/mattermost/mattermost/server/v8/config" - "github.com/mattermost/mattermost/server/v8/platform/services/httpservice" "github.com/mattermost/mattermost/server/v8/platform/services/searchengine" "github.com/mattermost/mattermost/server/v8/platform/services/telemetry/mocks" ) diff --git a/server/platform/services/configservice/configservice.go b/server/public/shared/configservice/configservice.go similarity index 100% rename from server/platform/services/configservice/configservice.go rename to server/public/shared/configservice/configservice.go diff --git a/server/platform/services/httpservice/client.go b/server/public/shared/httpservice/client.go similarity index 100% rename from server/platform/services/httpservice/client.go rename to server/public/shared/httpservice/client.go diff --git a/server/platform/services/httpservice/client_test.go b/server/public/shared/httpservice/client_test.go similarity index 99% rename from server/platform/services/httpservice/client_test.go rename to server/public/shared/httpservice/client_test.go index 0af7fd7751..a65ce5f77d 100644 --- a/server/platform/services/httpservice/client_test.go +++ b/server/public/shared/httpservice/client_test.go @@ -173,7 +173,8 @@ func TestUserAgentIsSet(t *testing.T) { require.NoError(t, err, "NewRequest failed", err) - client.Do(req) + _, err = client.Do(req) + require.NoError(t, err, "Do failed", err) } func NewHTTPClient(transport http.RoundTripper) *http.Client { diff --git a/server/platform/services/httpservice/httpservice.go b/server/public/shared/httpservice/httpservice.go similarity index 83% rename from server/platform/services/httpservice/httpservice.go rename to server/public/shared/httpservice/httpservice.go index 9a2b941a26..3fe49d5598 100644 --- a/server/platform/services/httpservice/httpservice.go +++ b/server/public/shared/httpservice/httpservice.go @@ -10,7 +10,8 @@ import ( "time" "unicode" - "github.com/mattermost/mattermost/server/v8/platform/services/configservice" + "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/plugin" ) // HTTPService wraps the functionality for making http requests to provide some improvements to the default client @@ -28,8 +29,12 @@ type HTTPService interface { MakeTransport(trustURLs bool) *MattermostTransport } +type getConfig interface { + Config() *model.Config +} + type HTTPServiceImpl struct { - configService configservice.ConfigService + configService getConfig RequestTimeout time.Duration } @@ -38,13 +43,25 @@ func splitFields(c rune) bool { return unicode.IsSpace(c) || c == ',' } -func MakeHTTPService(configService configservice.ConfigService) HTTPService { +func MakeHTTPService(configService getConfig) HTTPService { return &HTTPServiceImpl{ configService, RequestTimeout, } } +type pluginAPIConfigServiceAdapter struct { + pluginAPIConfigService plugin.API +} + +func (p *pluginAPIConfigServiceAdapter) Config() *model.Config { + return p.pluginAPIConfigService.GetConfig() +} + +func MakeHTTPServicePlugin(configService plugin.API) HTTPService { + return MakeHTTPService(&pluginAPIConfigServiceAdapter{configService}) +} + func (h *HTTPServiceImpl) MakeClient(trustURLs bool) *http.Client { return &http.Client{ Transport: h.MakeTransport(trustURLs), diff --git a/server/platform/services/httpservice/transport.go b/server/public/shared/httpservice/transport.go similarity index 100% rename from server/platform/services/httpservice/transport.go rename to server/public/shared/httpservice/transport.go