-
Notifications
You must be signed in to change notification settings - Fork 0
/
atom-community-server-backend.go
78 lines (66 loc) · 3.36 KB
/
atom-community-server-backend.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package main
import (
logger "github.com/confused-Techie/atom-community-server-backend/src/pkg/logger"
webrequests "github.com/confused-Techie/atom-community-server-backend/src/pkg/webrequests"
"github.com/gorilla/mux"
"net/http"
"os"
"os/signal"
"syscall"
)
func main() {
// listen to SIGINT calls
captureExit := make(chan os.Signal)
signal.Notify(captureExit, os.Interrupt, syscall.SIGTERM, syscall.SIGTERM)
go func() {
<-captureExit
// add logging, and ensuring to write any data in memory
os.Exit(1)
}()
mux := mux.NewRouter()
// ======== ORIGINAL API SERVER ENDPOINTS ==========
// ERRORS: It seems that other than the frequent 5
// This is the major handler for all Packages
// -- List Packages: GET /api/packages
// -- Search Packages: GET /api/packages/search
// -- Package Details: GET /api/packages/:package_name
// -- Create Package: POST /api/packages
// -- Delete Package: DELETE /api/packages/:package_name
// -- Package Versions: GET /api/packages/:package_name/versions/:version_name
// -- New Package Version: POST /api/packages/:package_name/versions
// -- Delete Version: DELETE /api/packages/:package_name/versions/:version_name
// -- Starring a Package: POST /api/packages/:name/star
// -- Unstar a Package: DELETE /api/packages/:name/star
// --List Package's Stargazers: GET /api/packages/:name/stargazers
// List Packages: GET /api/packages
// Create Package: POST /api/packages
mux.HandleFunc("/api/packages", webrequests.PackageRootHandler)
// Search Packages: GET /api/packages/search
mux.HandleFunc("/api/packages/search", webrequests.PackageSearchHandler)
// Package Details: GET /api/packages/:package_name
// Delete Package: DELETE /api/packages/:package_name
mux.HandleFunc("/api/packages/{package_name}", webrequests.PackageDetailHandler) // ex. /api/packages/zelda-botw-ui
// Starring a Package: POST /api/packages/:name/star
// Unstar a Package: DELETE /api/packages/:name/star
mux.HandleFunc("/api/packages/{package_name}/star", webrequests.PackageStarHandler)
// List Package's Stargazers: GET /api/packages/:name/stargazers
mux.HandleFunc("/api/packages/{package_name}/stargazers", webrequests.PackageStarGazersHandler)
// New Package Version: POST /api/packages/:package_name/versions
mux.HandleFunc("/api/packages/{package_name}/versions", webrequests.PackageUpdateHandler)
// Package Versions: GET /api/packages/:package_name/versions/:version_name
// Delete Version: DELETE /api/packages/:package_name/versions/:version_name
mux.HandleFunc("/api/packages/{package_name}/versions/{version_name}", webrequests.PackageVersionHandler)
//mux.Handle("/api/packages", http.HandlerFunc(webrequests.PackageHandler))
// The User Endpoint
// List a User's Starred Packages: GET /api/users/:login/stars
mux.HandleFunc("/api/users/{login}/stars", webrequests.UserStarsHandler)
//mux.Handle("/api/users", http.HandlerFunc(webrequests.UsersHandler))
// Stars Endpoint
// List Authenticated User's Starred Packages: GET /api/stars
mux.HandleFunc("/api/stars", webrequests.StarsHandler)
//mux.Handle("/api/stars", http.HandlerFunc(webrequests.StarsHandler))
// Listing Atom Updates: GET /api/updates
mux.HandleFunc("/api/updates", webrequests.AtomUpdateHandler)
logger.InfoLogger.Println("Listening on 8080")
logger.ErrorLogger.Fatal(http.ListenAndServe(":8080", mux))
}