Skip to content

Commit

Permalink
add POST pages to backend
Browse files Browse the repository at this point in the history
  • Loading branch information
lucas-clemente committed Jun 2, 2015
1 parent d285f45 commit 5d56eec
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 12 deletions.
47 changes: 35 additions & 12 deletions server/handler2.go
Expand Up @@ -96,17 +96,9 @@ func NewHandler2(repo repository.Repo) http.Handler {
router.GET("/v2/pages/:id", errorHandler(func(c *gin.Context) error {
id := c.Params.ByName("id")

file, err := repo.ReadFile(idToPath(id))
if err != nil {
return err
}

jsonPage, err := getPageJSON(file)
if err != nil {
if err := respondWithPage(c, repo, 200, id); err != nil {
return err
}

c.JSON(200, map[string]interface{}{"page": jsonPage})
return nil
}))

Expand All @@ -127,17 +119,33 @@ func NewHandler2(repo repository.Repo) http.Handler {
return err
}

file, err := repo.ReadFile(idToPath(id))
if err := respondWithPage(c, repo, 200, id); err != nil {
return err
}
return nil
}))

router.POST("/v2/pages", errorHandler(func(c *gin.Context) error {
var jsonData struct {
Page struct {
ID string
MarkdownSource string
}
}

err := c.BindJSON(&jsonData)
if err != nil {
return err
}

jsonPage, err := getPageJSON(file)
err = repo.StoreFile(idToPath(jsonData.Page.ID), bytes.NewBufferString(jsonData.Page.MarkdownSource))
if err != nil {
return err
}

c.JSON(200, map[string]interface{}{"page": jsonPage})
if err := respondWithPage(c, repo, 201, jsonData.Page.ID); err != nil {
return err
}
return nil
}))

Expand Down Expand Up @@ -261,3 +269,18 @@ func errorHandler(h func(*gin.Context) error) gin.HandlerFunc {
}
}
}

func respondWithPage(c *gin.Context, repo repository.Repo, statusOnSuccess int, id string) error {
file, err := repo.ReadFile(idToPath(id))
if err != nil {
return err
}

jsonPage, err := getPageJSON(file)
if err != nil {
return err
}

c.JSON(statusOnSuccess, map[string]interface{}{"page": jsonPage})
return nil
}
20 changes: 20 additions & 0 deletions server/handler2_test.go
Expand Up @@ -218,4 +218,24 @@ var _ = Describe("Handler", func() {
Expect(resp.Code).To(Equal(http.StatusOK))
Expect(resp.Body.String()).To(MatchJSON(`{"page":{"id":"|baz.md","folder":"|","markdownSource":"foobar","modifiedAt": "0001-01-01T00:00:00Z"}}`))
})

It("PUTs pages with null markdownSource", func() {
handler := server.NewHandler2(repo)
body := bytes.NewBufferString(`{"page":{"id":"|baz.md","markdownSource":null}}`)
req, err := http.NewRequest("PUT", "/v2/pages/|baz.md", body)
Expect(err).To(BeNil())
handler.ServeHTTP(resp, req)
Expect(resp.Code).To(Equal(http.StatusOK))
Expect(resp.Body.String()).To(MatchJSON(`{"page":{"id":"|baz.md","folder":"|","markdownSource":"","modifiedAt": "0001-01-01T00:00:00Z"}}`))
})

It("POSTs pages", func() {
handler := server.NewHandler2(repo)
body := bytes.NewBufferString(`{"page":{"id":"|baz.md","markdownSource":"foobar"}}`)
req, err := http.NewRequest("POST", "/v2/pages", body)
Expect(err).To(BeNil())
handler.ServeHTTP(resp, req)
Expect(resp.Code).To(Equal(http.StatusCreated))
Expect(resp.Body.String()).To(MatchJSON(`{"page":{"id":"|baz.md","folder":"|","markdownSource":"foobar","modifiedAt": "0001-01-01T00:00:00Z"}}`))
})
})

0 comments on commit 5d56eec

Please sign in to comment.