From 53312ee169271878f68c65a702f93ed5a1d06cdb Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Mon, 10 Dec 2018 21:35:50 -0800 Subject: [PATCH] Clean backend code --- Dockerfile | 12 +----- docker-compose.yml | 3 +- pkg/config/config.go | 4 -- pkg/config/config_test.go | 8 ---- pkg/handler/handler.go | 31 --------------- pkg/handler/handler_mock_test.go | 65 ++++++++++++++++---------------- pkg/handler/handler_test.go | 3 +- 7 files changed, 37 insertions(+), 89 deletions(-) diff --git a/Dockerfile b/Dockerfile index 17c8baf..54a268f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,6 @@ -FROM node:8-slim AS frontend_builder -WORKDIR /app -COPY . . -RUN npm install -RUN npm run build - FROM golang:1.11.2 AS backend_builder WORKDIR /podsync -COPY --from=frontend_builder /app . +COPY . . ENV GOOS=linux ENV GOARCH=amd64 ENV CGO_ENABLED=0 @@ -15,9 +9,5 @@ RUN go build -o server -v ./cmd/app FROM alpine RUN apk --update --no-cache add ca-certificates WORKDIR /app/ -COPY --from=frontend_builder /app/templates ./templates -COPY --from=frontend_builder /app/dist ./assets COPY --from=backend_builder /podsync/server . -ENV ASSETS_PATH /app/assets -ENV TEMPLATES_PATH /app/templates ENTRYPOINT ["/app/server"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 6a17e06..742b5a8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -58,5 +58,4 @@ services: - LE_EMAIL=pavlenko.maksym@gmail.com - LE_FQDN=podsync.net,www.podsync.net volumes: - - /data/ssl:/etc/nginx/ssl - - /data/podsync.conf:/etc/nginx/service.conf \ No newline at end of file + - /data/ssl:/etc/nginx/ssl \ No newline at end of file diff --git a/pkg/config/config.go b/pkg/config/config.go index 42b534f..9e35e8b 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -18,8 +18,6 @@ type AppConfig struct { PostgresConnectionURL string `yaml:"postgresConnectionUrl"` RedisURL string `yaml:"redisUrl"` CookieSecret string `yaml:"cookieSecret"` - AssetsPath string `yaml:"assetsPath"` - TemplatesPath string `yaml:"templatesPath"` AWSAccessKey string `yaml:"awsAccessKey"` AWSAccessSecret string `yaml:"awsAccessSecret"` DynamoFeedsTableName string `yaml:"dynamoFeedsTableName"` @@ -47,8 +45,6 @@ func ReadConfiguration() (cfg *AppConfig, err error) { "postgresConnectionUrl": "POSTGRES_CONNECTION_URL", "redisUrl": "REDIS_CONNECTION_URL", "cookieSecret": "COOKIE_SECRET", - "assetsPath": "ASSETS_PATH", - "templatesPath": "TEMPLATES_PATH", "awsAccessKey": "AWS_ACCESS_KEY", "awsAccessSecret": "AWS_ACCESS_SECRET", "dynamoFeedsTableName": "DYNAMO_FEEDS_TABLE_NAME", diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index be61c06..96371a0 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -17,8 +17,6 @@ patreonSecret: "4" postgresConnectionUrl: "5" cookieSecret: "6" patreonRedirectUrl: "7" -assetsPath: "8" -templatesPath: "9" patreonWebhooksSecret: "10" dynamoFeedsTableName: "11" dynamoPledgesTableName: "12" @@ -43,8 +41,6 @@ func TestReadYaml(t *testing.T) { require.Equal(t, "5", cfg.PostgresConnectionURL) require.Equal(t, "6", cfg.CookieSecret) require.Equal(t, "7", cfg.PatreonRedirectURL) - require.Equal(t, "8", cfg.AssetsPath) - require.Equal(t, "9", cfg.TemplatesPath) require.Equal(t, "10", cfg.PatreonWebhooksSecret) require.Equal(t, "11", cfg.DynamoFeedsTableName) require.Equal(t, "12", cfg.DynamoPledgesTableName) @@ -63,8 +59,6 @@ func TestReadEnv(t *testing.T) { os.Setenv("POSTGRES_CONNECTION_URL", "55") os.Setenv("COOKIE_SECRET", "66") os.Setenv("PATREON_REDIRECT_URL", "77") - os.Setenv("ASSETS_PATH", "88") - os.Setenv("TEMPLATES_PATH", "99") os.Setenv("PATREON_WEBHOOKS_SECRET", "1010") os.Setenv("DYNAMO_FEEDS_TABLE_NAME", "1111") os.Setenv("DYNAMO_PLEDGES_TABLE_NAME", "1212") @@ -81,8 +75,6 @@ func TestReadEnv(t *testing.T) { require.Equal(t, "55", cfg.PostgresConnectionURL) require.Equal(t, "66", cfg.CookieSecret) require.Equal(t, "77", cfg.PatreonRedirectURL) - require.Equal(t, "88", cfg.AssetsPath) - require.Equal(t, "99", cfg.TemplatesPath) require.Equal(t, "1010", cfg.PatreonWebhooksSecret) require.Equal(t, "1111", cfg.DynamoFeedsTableName) require.Equal(t, "1212", cfg.DynamoPledgesTableName) diff --git a/pkg/handler/handler.go b/pkg/handler/handler.go index 9a6d30f..3b50588 100644 --- a/pkg/handler/handler.go +++ b/pkg/handler/handler.go @@ -4,7 +4,6 @@ import ( "encoding/json" "io/ioutil" "net/http" - "path" "strings" "github.com/gin-contrib/sessions" @@ -51,18 +50,6 @@ func New(feed feedService, support patreonService, cfg *config.AppConfig) http.H store := sessions.NewCookieStore([]byte(cfg.CookieSecret)) r.Use(sessions.Sessions("podsync", store)) - // Static files + HTML - - log.Printf("using assets path: %s", cfg.AssetsPath) - if cfg.AssetsPath != "" { - r.Static("/assets", cfg.AssetsPath) - } - - log.Printf("using templates path: %s", cfg.TemplatesPath) - if cfg.TemplatesPath != "" { - r.LoadHTMLGlob(path.Join(cfg.TemplatesPath, "*.html")) - } - h := handler{ feed: feed, patreon: support, @@ -84,11 +71,9 @@ func New(feed feedService, support patreonService, cfg *config.AppConfig) http.H // Handlers - r.GET("/", h.index) r.GET("/login", h.login) r.GET("/logout", h.logout) r.GET("/patreon", h.patreonCallback) - r.GET("/robots.txt", h.robots) r.GET("/api/ping", h.ping) r.GET("/api/user", h.user) @@ -101,15 +86,6 @@ func New(feed feedService, support patreonService, cfg *config.AppConfig) http.H return r } -func (h handler) index(c *gin.Context) { - identity, err := session.GetIdentity(c) - if err != nil { - identity = &api.Identity{} - } - - c.HTML(http.StatusOK, "index.html", identity) -} - func (h handler) login(c *gin.Context) { state, err := session.SetState(c) if err != nil { @@ -167,13 +143,6 @@ func (h handler) patreonCallback(c *gin.Context) { c.Redirect(http.StatusFound, "/") } -func (h handler) robots(c *gin.Context) { - c.String(http.StatusOK, `User-agent: * -Allow: /$ -Disallow: / -Host: www.podsync.net`) -} - func (h handler) ping(c *gin.Context) { c.String(http.StatusOK, "ok") } diff --git a/pkg/handler/handler_mock_test.go b/pkg/handler/handler_mock_test.go index 11c687a..e598a6b 100644 --- a/pkg/handler/handler_mock_test.go +++ b/pkg/handler/handler_mock_test.go @@ -1,6 +1,7 @@ // Code generated by MockGen. DO NOT EDIT. // Source: handler.go +// Package handler is a generated GoMock package. package handler import ( @@ -30,59 +31,59 @@ func NewMockfeedService(ctrl *gomock.Controller) *MockfeedService { } // EXPECT returns an object that allows the caller to indicate expected use -func (_m *MockfeedService) EXPECT() *MockfeedServiceMockRecorder { - return _m.recorder +func (m *MockfeedService) EXPECT() *MockfeedServiceMockRecorder { + return m.recorder } // CreateFeed mocks base method -func (_m *MockfeedService) CreateFeed(req *api.CreateFeedRequest, identity *api.Identity) (string, error) { - ret := _m.ctrl.Call(_m, "CreateFeed", req, identity) +func (m *MockfeedService) CreateFeed(req *api.CreateFeedRequest, identity *api.Identity) (string, error) { + ret := m.ctrl.Call(m, "CreateFeed", req, identity) ret0, _ := ret[0].(string) ret1, _ := ret[1].(error) return ret0, ret1 } // CreateFeed indicates an expected call of CreateFeed -func (_mr *MockfeedServiceMockRecorder) CreateFeed(arg0, arg1 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "CreateFeed", reflect.TypeOf((*MockfeedService)(nil).CreateFeed), arg0, arg1) +func (mr *MockfeedServiceMockRecorder) CreateFeed(req, identity interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateFeed", reflect.TypeOf((*MockfeedService)(nil).CreateFeed), req, identity) } // BuildFeed mocks base method -func (_m *MockfeedService) BuildFeed(hashID string) (*podcast.Podcast, error) { - ret := _m.ctrl.Call(_m, "BuildFeed", hashID) +func (m *MockfeedService) BuildFeed(hashID string) (*podcast.Podcast, error) { + ret := m.ctrl.Call(m, "BuildFeed", hashID) ret0, _ := ret[0].(*podcast.Podcast) ret1, _ := ret[1].(error) return ret0, ret1 } // BuildFeed indicates an expected call of BuildFeed -func (_mr *MockfeedServiceMockRecorder) BuildFeed(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "BuildFeed", reflect.TypeOf((*MockfeedService)(nil).BuildFeed), arg0) +func (mr *MockfeedServiceMockRecorder) BuildFeed(hashID interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BuildFeed", reflect.TypeOf((*MockfeedService)(nil).BuildFeed), hashID) } // GetMetadata mocks base method -func (_m *MockfeedService) GetMetadata(hashId string) (*api.Metadata, error) { - ret := _m.ctrl.Call(_m, "GetMetadata", hashId) +func (m *MockfeedService) GetMetadata(hashId string) (*api.Metadata, error) { + ret := m.ctrl.Call(m, "GetMetadata", hashId) ret0, _ := ret[0].(*api.Metadata) ret1, _ := ret[1].(error) return ret0, ret1 } // GetMetadata indicates an expected call of GetMetadata -func (_mr *MockfeedServiceMockRecorder) GetMetadata(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "GetMetadata", reflect.TypeOf((*MockfeedService)(nil).GetMetadata), arg0) +func (mr *MockfeedServiceMockRecorder) GetMetadata(hashId interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMetadata", reflect.TypeOf((*MockfeedService)(nil).GetMetadata), hashId) } // Downgrade mocks base method -func (_m *MockfeedService) Downgrade(patronID string, featureLevel int) error { - ret := _m.ctrl.Call(_m, "Downgrade", patronID, featureLevel) +func (m *MockfeedService) Downgrade(patronID string, featureLevel int) error { + ret := m.ctrl.Call(m, "Downgrade", patronID, featureLevel) ret0, _ := ret[0].(error) return ret0 } // Downgrade indicates an expected call of Downgrade -func (_mr *MockfeedServiceMockRecorder) Downgrade(arg0, arg1 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Downgrade", reflect.TypeOf((*MockfeedService)(nil).Downgrade), arg0, arg1) +func (mr *MockfeedServiceMockRecorder) Downgrade(patronID, featureLevel interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Downgrade", reflect.TypeOf((*MockfeedService)(nil).Downgrade), patronID, featureLevel) } // MockpatreonService is a mock of patreonService interface @@ -104,42 +105,42 @@ func NewMockpatreonService(ctrl *gomock.Controller) *MockpatreonService { } // EXPECT returns an object that allows the caller to indicate expected use -func (_m *MockpatreonService) EXPECT() *MockpatreonServiceMockRecorder { - return _m.recorder +func (m *MockpatreonService) EXPECT() *MockpatreonServiceMockRecorder { + return m.recorder } // Hook mocks base method -func (_m *MockpatreonService) Hook(pledge *patreon_go.Pledge, event string) error { - ret := _m.ctrl.Call(_m, "Hook", pledge, event) +func (m *MockpatreonService) Hook(pledge *patreon_go.Pledge, event string) error { + ret := m.ctrl.Call(m, "Hook", pledge, event) ret0, _ := ret[0].(error) return ret0 } // Hook indicates an expected call of Hook -func (_mr *MockpatreonServiceMockRecorder) Hook(arg0, arg1 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Hook", reflect.TypeOf((*MockpatreonService)(nil).Hook), arg0, arg1) +func (mr *MockpatreonServiceMockRecorder) Hook(pledge, event interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Hook", reflect.TypeOf((*MockpatreonService)(nil).Hook), pledge, event) } // GetFeatureLevelByID mocks base method -func (_m *MockpatreonService) GetFeatureLevelByID(patronID string) int { - ret := _m.ctrl.Call(_m, "GetFeatureLevelByID", patronID) +func (m *MockpatreonService) GetFeatureLevelByID(patronID string) int { + ret := m.ctrl.Call(m, "GetFeatureLevelByID", patronID) ret0, _ := ret[0].(int) return ret0 } // GetFeatureLevelByID indicates an expected call of GetFeatureLevelByID -func (_mr *MockpatreonServiceMockRecorder) GetFeatureLevelByID(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "GetFeatureLevelByID", reflect.TypeOf((*MockpatreonService)(nil).GetFeatureLevelByID), arg0) +func (mr *MockpatreonServiceMockRecorder) GetFeatureLevelByID(patronID interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFeatureLevelByID", reflect.TypeOf((*MockpatreonService)(nil).GetFeatureLevelByID), patronID) } // GetFeatureLevelFromAmount mocks base method -func (_m *MockpatreonService) GetFeatureLevelFromAmount(amount int) int { - ret := _m.ctrl.Call(_m, "GetFeatureLevelFromAmount", amount) +func (m *MockpatreonService) GetFeatureLevelFromAmount(amount int) int { + ret := m.ctrl.Call(m, "GetFeatureLevelFromAmount", amount) ret0, _ := ret[0].(int) return ret0 } // GetFeatureLevelFromAmount indicates an expected call of GetFeatureLevelFromAmount -func (_mr *MockpatreonServiceMockRecorder) GetFeatureLevelFromAmount(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "GetFeatureLevelFromAmount", reflect.TypeOf((*MockpatreonService)(nil).GetFeatureLevelFromAmount), arg0) +func (mr *MockpatreonServiceMockRecorder) GetFeatureLevelFromAmount(amount interface{}) *gomock.Call { + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFeatureLevelFromAmount", reflect.TypeOf((*MockpatreonService)(nil).GetFeatureLevelFromAmount), amount) } diff --git a/pkg/handler/handler_test.go b/pkg/handler/handler_test.go index be042d8..736c672 100644 --- a/pkg/handler/handler_test.go +++ b/pkg/handler/handler_test.go @@ -11,9 +11,10 @@ import ( "github.com/golang/mock/gomock" itunes "github.com/mxpv/podcast" + "github.com/stretchr/testify/require" + "github.com/mxpv/podsync/pkg/api" "github.com/mxpv/podsync/pkg/config" - "github.com/stretchr/testify/require" ) var cfg = &config.AppConfig{}