this repo has no description
1package state 2 3import ( 4 "encoding/json" 5 "fmt" 6 "io" 7 "log" 8 "net/http" 9 10 "github.com/bluesky-social/indigo/atproto/identity" 11 "github.com/go-chi/chi/v5" 12 "github.com/sotangled/tangled/appview/pages" 13 "github.com/sotangled/tangled/types" 14) 15 16func (s *State) RepoIndex(w http.ResponseWriter, r *http.Request) { 17 ctx := r.Context() 18 repoName := chi.URLParam(r, "repo") 19 20 knot, ok := ctx.Value("knot").(string) 21 if !ok { 22 log.Println("malformed middleware") 23 w.WriteHeader(http.StatusInternalServerError) 24 return 25 } 26 27 id, ok := ctx.Value("resolvedId").(identity.Identity) 28 if !ok { 29 log.Println("malformed middleware") 30 w.WriteHeader(http.StatusInternalServerError) 31 return 32 } 33 34 resp, err := http.Get(fmt.Sprintf("http://%s/%s/%s", knot, id.DID.String(), repoName)) 35 if err != nil { 36 log.Println("failed to reach knotserver", err) 37 return 38 } 39 defer resp.Body.Close() 40 41 // Read the response body 42 body, err := io.ReadAll(resp.Body) 43 if err != nil { 44 log.Fatalf("Error reading response body: %v", err) 45 return 46 } 47 48 var result types.RepoIndexResponse 49 err = json.Unmarshal(body, &result) 50 if err != nil { 51 log.Fatalf("Error unmarshalling response body: %v", err) 52 return 53 } 54 55 log.Println(resp.Status, result) 56 57 user := s.auth.GetUser(r) 58 s.pages.RepoIndexPage(w, pages.RepoIndexParams{ 59 LoggedInUser: user, 60 UserDid: id.DID.String(), 61 UserHandle: id.Handle.String(), 62 Name: repoName, 63 RepoIndexResponse: result, 64 }) 65 66 return 67}