@@ -20,6 +20,8 @@ type PageHandler interface {
2020 DeleteBucketHandler (w http.ResponseWriter , r * http.Request )
2121 AddItemHandler (w http.ResponseWriter , r * http.Request )
2222 RenderAddItemPage (w http.ResponseWriter , r * http.Request )
23+ RenderViewItemPage (w http.ResponseWriter , r * http.Request )
24+ DeleteItemHandler (w http.ResponseWriter , r * http.Request )
2325}
2426
2527func NewPageHandler (cfg * astra.Config , session * scs.SessionManager , service service.Service ) PageHandler {
@@ -245,3 +247,58 @@ func (h *pageHandler) RenderAddItemPage(w http.ResponseWriter, r *http.Request)
245247 }
246248 renderTemplate (w , r , h .Cfg , "add-item.page.tmpl" , d )
247249}
250+
251+ func (h * pageHandler ) RenderViewItemPage (w http.ResponseWriter , r * http.Request ) {
252+ // remoteIP := r.RemoteAddr
253+
254+ // h.SessMgr.Put(r.Context(), "remote-ip", remoteIP)
255+ bucketName := r .FormValue ("bucket_name" )
256+ key := r .FormValue ("key" )
257+ val , err := h .Svc .Get (bucketName , key )
258+ if err != nil {
259+ h .SessMgr .Put (r .Context (), "error" , "unable to get the value from the bucket" )
260+ http .Redirect (w , r , "/" , http .StatusSeeOther )
261+ return
262+ }
263+ log .Printf ("Bucket Name in the RenderViewItemPage is: %s" , bucketName )
264+ log .Printf ("Key in the RenderViewItemPage is: %s" , key )
265+ log .Printf ("Val in the RenderViewItemPage is: %s" , val )
266+ itemDetails := kvPair {
267+ Key : key ,
268+ Value : val ,
269+ }
270+ data := make (map [string ]interface {})
271+ data ["bucket_name" ] = bucketName
272+ data ["item_details" ] = itemDetails
273+
274+ d := & TemplateData {
275+ Title : "View Item" ,
276+ Form : forms .New (nil ),
277+ Data : data ,
278+ }
279+ renderTemplate (w , r , h .Cfg , "view-item.page.tmpl" , d )
280+ }
281+
282+ func (h * pageHandler ) DeleteItemHandler (w http.ResponseWriter , r * http.Request ) {
283+ bucketName := r .FormValue ("bucket_name" )
284+ key := r .FormValue ("key" )
285+ err := h .Svc .Delete (bucketName , key )
286+ if err != nil {
287+ h .SessMgr .Put (r .Context (), "error" , "unable to delete the item from the bucket" )
288+ http .Redirect (w , r , "/" , http .StatusSeeOther )
289+ return
290+ }
291+
292+ log .Printf ("Bucket Name in the DeleteItemHandler is: %s" , bucketName )
293+ log .Printf ("Key in the DeleteItemHandler is: %s" , key )
294+
295+ // h.SessMgr.Put(r.Context(), "remote-ip", remoteIP)
296+
297+ // d := &TemplateData{
298+ // Title: "View Bucket",
299+ // Form: forms.New(nil),
300+ // Data: data,
301+ // }
302+ http .Redirect (w , r , "/view-bucket?bucket_name=" + bucketName , http .StatusSeeOther )
303+ // renderTemplate(w, r, h.Cfg, "view-bucket.page.tmpl", d)
304+ }
0 commit comments