Skip to content

Commit

Permalink
Update Entry Point
Browse files Browse the repository at this point in the history
  • Loading branch information
lvmingze123 authored Dec 9, 2024
1 parent d2835d3 commit 388bc1b
Showing 1 changed file with 65 additions and 65 deletions.
130 changes: 65 additions & 65 deletions Entry Point
Original file line number Diff line number Diff line change
Expand Up @@ -9,82 +9,82 @@ import (
)

// feat: Define configuration struct
type Config struct {
ListenAddr string
TargetURL string
AuthServiceURL string
}
type Config struct {
ListenAddr string
TargetURL string
AuthServiceURL string
}

// feat: Define entry point struct with core dependencies
type EntryPoint struct {
config *Config
proxy *httputil.ReverseProxy
authClient *http.Client
}
type EntryPoint struct {
config *Config
proxy *httputil.ReverseProxy
authClient *http.Client
}

// feat: Implement EntryPoint constructor
func NewEntryPoint(config *Config) (*EntryPoint, error) {
targetURL, err := url.Parse(config.TargetURL)
if err != nil {
return nil, err
func NewEntryPoint(config *Config) (*EntryPoint, error) {
targetURL, err := url.Parse(config.TargetURL)
if err != nil {
return nil, err
}

return &EntryPoint{
config: config,
proxy: httputil.NewSingleHostReverseProxy(targetURL),
authClient: &http.Client{},
}, nil
}

return &EntryPoint{
config: config,
proxy: httputil.NewSingleHostReverseProxy(targetURL),
authClient: &http.Client{},
}, nil
}

// feat: Add authentication verification method
func (ep *EntryPoint) verifyAuth(token string) (bool, error) {
req, err := http.NewRequest("POST", ep.config.AuthServiceURL, nil)
if err != nil {
return false, err
func (ep *EntryPoint) verifyAuth(token string) (bool, error) {
req, err := http.NewRequest("POST", ep.config.AuthServiceURL, nil)
if err != nil {
return false, err
}

req.Header.Set("Authorization", token)
resp, err := ep.authClient.Do(req)
if err != nil {
return false, err
}
defer resp.Body.Close()

return resp.StatusCode == http.StatusOK, nil
}

req.Header.Set("Authorization", token)
resp, err := ep.authClient.Do(req)
if err != nil {
return false, err
}
defer resp.Body.Close()

return resp.StatusCode == http.StatusOK, nil
}

// feat: Implement proxy handler with authentication
func (ep *EntryPoint) ProxyHandler(w http.ResponseWriter, r *http.Request) {
token := r.Header.Get("Authorization")

authorized, err := ep.verifyAuth(token)
if err != nil {
http.Error(w, "Authorization service error", http.StatusInternalServerError)
return
func (ep *EntryPoint) ProxyHandler(w http.ResponseWriter, r *http.Request) {
token := r.Header.Get("Authorization")

authorized, err := ep.verifyAuth(token)
if err != nil {
http.Error(w, "Authorization service error", http.StatusInternalServerError)
return
}

if !authorized {
http.Error(w, "Unauthorized", http.StatusUnauthorized)
return
}

ep.proxy.ServeHTTP(w, r)
}

if !authorized {
http.Error(w, "Unauthorized", http.StatusUnauthorized)
return
}

ep.proxy.ServeHTTP(w, r)
}

// feat: Set up main function with configuration and server initialization
func main() {
config := &Config{
ListenAddr: ":8080",
TargetURL: "http://target-service:8000",
AuthServiceURL: "http://auth-service:8001/verify",
func main() {
config := &Config{
ListenAddr: ":8080",
TargetURL: "http://target-service:8000",
AuthServiceURL: "http://auth-service:8001/verify",
}

entryPoint, err := NewEntryPoint(config)
if err != nil {
log.Fatal(err)
}

http.HandleFunc("/", entryPoint.ProxyHandler)
log.Printf("Starting entry point on %s", config.ListenAddr)
log.Fatal(http.ListenAndServe(config.ListenAddr, nil))
}

entryPoint, err := NewEntryPoint(config)
if err != nil {
log.Fatal(err)
}

http.HandleFunc("/", entryPoint.ProxyHandler)
log.Printf("Starting entry point on %s", config.ListenAddr)
log.Fatal(http.ListenAndServe(config.ListenAddr, nil))
}

0 comments on commit 388bc1b

Please sign in to comment.