From a84050a5e93f5fb9f5bbb79ca21b37e8359cf289 Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Tue, 6 Feb 2024 16:27:45 +0100 Subject: Server: Refactor internal server package to use new state file This completely rewrites the internal server package. Some advantages: - Caches less - Uses a callback interface so that the client package does not get so convoluted - Introduce a new API package that only deals with the server API and uses github.com/jwijenbergh/eduoauth-go --- internal/server/custom.go | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 internal/server/custom.go (limited to 'internal/server/custom.go') diff --git a/internal/server/custom.go b/internal/server/custom.go new file mode 100644 index 0000000..b4b81cb --- /dev/null +++ b/internal/server/custom.go @@ -0,0 +1,63 @@ +package server + +import ( + "context" + "time" + + "github.com/eduvpn/eduvpn-common/internal/api" + "github.com/eduvpn/eduvpn-common/internal/config/v2" + "github.com/eduvpn/eduvpn-common/types/server" + "github.com/jwijenbergh/eduoauth-go" +) + +func (s *Servers) AddCustom(ctx context.Context, id string, na bool) (*Server, error) { + sd := api.ServerData{ + ID: id, + Type: server.TypeCustom, + BaseWK: id, + BaseAuthWK: id, + } + + var a *api.API + var err error + if !na { + // Authorize by creating the API object + a, err = api.NewAPI(ctx, s.clientID, sd, s.cb, nil) + if err != nil { + return nil, err + } + } + + err = s.config.AddServer(id, server.TypeCustom, v2.Server{LastAuthorizeTime: time.Now()}) + if err != nil { + return nil, err + } + + cust := s.NewServer(id, server.TypeCustom, a) + // Return the server with the API + + return &cust, nil +} + +func (s *Servers) GetCustom(ctx context.Context, id string, tok *eduoauth.Token, disableAuth bool) (*Server, error) { + sd := api.ServerData{ + ID: id, + Type: server.TypeCustom, + BaseWK: id, + BaseAuthWK: id, + DisableAuthorize: disableAuth, + } + + // Get the server from the config + _, err := s.config.GetServer(id, server.TypeCustom) + if err != nil { + return nil, err + } + a, err := api.NewAPI(ctx, s.clientID, sd, s.cb, tok) + if err != nil { + return nil, err + } + + cust := s.NewServer(id, server.TypeCustom, a) + return &cust, nil +} -- cgit v1.2.3