@@ -29,50 +29,158 @@ func Router(svc service.RegistryService) http.Handler {
2929
3030 r := chi .NewRouter ()
3131
32- r .Put ("/servers/{id}" , routes .upsertServer )
33- r .Delete ("/servers/{id}" , routes .deleteServer )
32+ r .Get ("/registries" , routes .listRegistries )
33+
34+ r .Get ("/registries/{registryName}" , routes .getRegistry )
35+ r .Put ("/registries/{registryName}" , routes .upsertRegistry )
36+ r .Delete ("/registries/{registryName}" , routes .deleteRegistry )
37+
38+ r .Put ("/registries/{registryName}/servers/{serverName}/versions/{version}" , routes .upsertVersion )
39+ r .Delete ("/registries/{registryName}/servers/{serverName}/versions/{version}" , routes .deleteVersion )
3440
3541 return r
3642}
3743
38- // upsertServer handles PUT /extension/v0/servers/{id}
44+ // listRegistries handles GET /extension/v0/registries
45+ //
46+ // @Summary List registries
47+ // @Description List all registries
48+ // @Tags extension
49+ // @Accept json
50+ // @Produce json
51+ // @Failure 501 {object} map[string]string "Not implemented"
52+ // @Router /extension/v0/registries [get]
53+ func (* Routes ) listRegistries (w http.ResponseWriter , _ * http.Request ) {
54+ common .WriteErrorResponse (w , "Listing registries is not supported" , http .StatusNotImplemented )
55+ }
56+
57+ // getRegistry handles GET /extension/v0/registries/{registryName}
58+ //
59+ // @Summary Get registry
60+ // @Description Get a registry by name
61+ // @Tags extension
62+ // @Accept json
63+ // @Produce json
64+ // @Param registryName path string true "Registry Name"
65+ // @Failure 400 {object} map[string]string "Bad request"
66+ // @Failure 501 {object} map[string]string "Not implemented"
67+ // @Router /extension/v0/registries/{registryName} [get]
68+ func (* Routes ) getRegistry (w http.ResponseWriter , r * http.Request ) {
69+ registryName := chi .URLParam (r , "registryName" )
70+ if strings .TrimSpace (registryName ) == "" {
71+ common .WriteErrorResponse (w , "Registry name is required" , http .StatusBadRequest )
72+ return
73+ }
74+
75+ common .WriteErrorResponse (w , "Getting registry is not supported" , http .StatusNotImplemented )
76+ }
77+
78+ // upsertRegistry handles PUT /extension/v0/registries/{registryName}
79+ //
80+ // @Summary Create or update registry
81+ // @Description Create or update a registry
82+ // @Tags extension
83+ // @Accept json
84+ // @Produce json
85+ // @Param registryName path string true "Registry Name"
86+ // @Failure 400 {object} map[string]string "Bad request"
87+ // @Failure 501 {object} map[string]string "Not implemented"
88+ // @Router /extension/v0/registries/{registryName} [put]
89+ func (* Routes ) upsertRegistry (w http.ResponseWriter , r * http.Request ) {
90+ registryName := chi .URLParam (r , "registryName" )
91+ if strings .TrimSpace (registryName ) == "" {
92+ common .WriteErrorResponse (w , "Registry name is required" , http .StatusBadRequest )
93+ return
94+ }
95+
96+ common .WriteErrorResponse (w , "Creating or updating registry is not supported" , http .StatusNotImplemented )
97+ }
98+
99+ // deleteRegistry handles DELETE /extension/v0/registries/{registryName}
100+ //
101+ // @Summary Delete registry
102+ // @Description Delete a registry
103+ // @Tags extension
104+ // @Accept json
105+ // @Produce json
106+ // @Param registryName path string true "Registry Name"
107+ // @Failure 400 {object} map[string]string "Bad request"
108+ // @Failure 501 {object} map[string]string "Not implemented"
109+ // @Router /extension/v0/registries/{registryName} [delete]
110+ func (* Routes ) deleteRegistry (w http.ResponseWriter , r * http.Request ) {
111+ registryName := chi .URLParam (r , "registryName" )
112+ if strings .TrimSpace (registryName ) == "" {
113+ common .WriteErrorResponse (w , "Registry name is required" , http .StatusBadRequest )
114+ return
115+ }
116+
117+ common .WriteErrorResponse (w , "Deleting registry is not supported" , http .StatusNotImplemented )
118+ }
119+
120+ // upsertVersion handles PUT /extension/v0/registries/{registryName}/servers/{serverName}/versions/{version}
39121//
40122// @Summary Create or update server
41123// @Description Create or update a server in the registry
42124// @Tags extension
43125// @Accept json
44126// @Produce json
45- // @Param id path string true "Server ID"
127+ // @Param registryName path string true "Registry Name"
128+ // @Param serverName path string true "URL-encoded server name (e.g., \"com.example%2Fmy-server\")"
129+ // @Param version path string true "URL-encoded version to retrieve (e.g., \"1.0.0\")"
46130// @Failure 400 {object} map[string]string "Bad request"
47131// @Failure 501 {object} map[string]string "Not implemented"
48- // @Router /extension/v0/servers/{id} [put]
49- func (* Routes ) upsertServer (w http.ResponseWriter , r * http.Request ) {
50- id := chi .URLParam (r , "id" )
51- if strings .TrimSpace (id ) == "" {
132+ // @Router /extension/v0/registries/{registryName}/servers/{serverName}/versions/{version} [put]
133+ func (* Routes ) upsertVersion (w http.ResponseWriter , r * http.Request ) {
134+ registryName := chi .URLParam (r , "registryName" )
135+ serverName := chi .URLParam (r , "serverName" )
136+ version := chi .URLParam (r , "version" )
137+
138+ if strings .TrimSpace (registryName ) == "" {
139+ common .WriteErrorResponse (w , "Registry name is required" , http .StatusBadRequest )
140+ return
141+ }
142+ if strings .TrimSpace (serverName ) == "" {
52143 common .WriteErrorResponse (w , "Server ID is required" , http .StatusBadRequest )
53144 return
54145 }
146+ if strings .TrimSpace (version ) == "" {
147+ common .WriteErrorResponse (w , "Version is required" , http .StatusBadRequest )
148+ return
149+ }
55150
56151 common .WriteErrorResponse (w , "Creating or updating servers is not supported" , http .StatusNotImplemented )
57152}
58153
59- // deleteServer handles DELETE /extension/v0/servers/{id }
154+ // deleteVersion handles DELETE /extension/v0/registries/{registryName}/ servers/{serverName}/versions/{version }
60155//
61156// @Summary Delete server
62157// @Description Delete a server from the registry
63158// @Tags extension
64159// @Accept json
65160// @Produce json
66- // @Param id path string true "Server ID"
161+ // @Param registryName path string true "Registry Name"
162+ // @Param serverName path string true "URL-encoded server name (e.g., \"com.example%2Fmy-server\")"
163+ // @Param version path string true "URL-encoded version to retrieve (e.g., \"1.0.0\")"
67164// @Failure 400 {object} map[string]string "Bad request"
68165// @Failure 501 {object} map[string]string "Not implemented"
69- // @Router /extension/v0/servers/{id} [delete]
70- func (* Routes ) deleteServer (w http.ResponseWriter , r * http.Request ) {
71- id := chi .URLParam (r , "id" )
72- if strings .TrimSpace (id ) == "" {
166+ // @Router /extension/v0/registries/{registryName}/servers/{serverName}/versions/{version} [delete]
167+ func (* Routes ) deleteVersion (w http.ResponseWriter , r * http.Request ) {
168+ registryName := chi .URLParam (r , "registryName" )
169+ serverName := chi .URLParam (r , "serverName" )
170+ version := chi .URLParam (r , "version" )
171+
172+ if strings .TrimSpace (registryName ) == "" {
173+ common .WriteErrorResponse (w , "Registry name is required" , http .StatusBadRequest )
174+ return
175+ }
176+ if strings .TrimSpace (serverName ) == "" {
73177 common .WriteErrorResponse (w , "Server ID is required" , http .StatusBadRequest )
74178 return
75179 }
180+ if strings .TrimSpace (version ) == "" {
181+ common .WriteErrorResponse (w , "Version is required" , http .StatusBadRequest )
182+ return
183+ }
76184
77185 common .WriteErrorResponse (w , "Deleting servers is not supported" , http .StatusNotImplemented )
78186}
0 commit comments