a bit of renaming things
This commit is contained in:
+2
-2
@@ -41,7 +41,7 @@ type CaddyHugo struct {
|
|||||||
|
|
||||||
Media *MediaSource
|
Media *MediaSource
|
||||||
|
|
||||||
docs map[string]*docref
|
docs map[string]*editSession
|
||||||
mtx sync.Mutex
|
mtx sync.Mutex
|
||||||
|
|
||||||
authorTmpl, adminTmpl, editTmpl *template.Template
|
authorTmpl, adminTmpl, editTmpl *template.Template
|
||||||
@@ -86,7 +86,7 @@ func (ch *CaddyHugo) Publish() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TmplData collects data for template execution
|
// TmplData collects data for template execution
|
||||||
func (ch *CaddyHugo) TmplData(r *http.Request, docref *docref) interface{} {
|
func (ch *CaddyHugo) TmplData(r *http.Request, docref *editSession) interface{} {
|
||||||
var doc *acedoc.Document
|
var doc *acedoc.Document
|
||||||
if docref != nil {
|
if docref != nil {
|
||||||
doc = docref.doc
|
doc = docref.doc
|
||||||
|
|||||||
@@ -13,14 +13,14 @@ import (
|
|||||||
"git.stephensearles.com/stephen/acedoc"
|
"git.stephensearles.com/stephen/acedoc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type docref struct {
|
type editSession struct {
|
||||||
clients uint
|
clients uint
|
||||||
name string
|
name string
|
||||||
doc *acedoc.Document
|
doc *acedoc.Document
|
||||||
tmpdir string
|
tmpdir string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ch *CaddyHugo) newClient(docName string) (*docref, error) {
|
func (ch *CaddyHugo) newEditSession(docName string) (*editSession, error) {
|
||||||
filename := ch.docFilename(docName)
|
filename := ch.docFilename(docName)
|
||||||
|
|
||||||
fmt.Println("opening", filename)
|
fmt.Println("opening", filename)
|
||||||
@@ -32,7 +32,7 @@ func (ch *CaddyHugo) newClient(docName string) (*docref, error) {
|
|||||||
draftPrefix := fmt.Sprintf("draft-%s", base64.RawURLEncoding.EncodeToString([]byte(docName)))
|
draftPrefix := fmt.Sprintf("draft-%s", base64.RawURLEncoding.EncodeToString([]byte(docName)))
|
||||||
tmpdir := path.Join(os.TempDir(), draftPrefix)
|
tmpdir := path.Join(os.TempDir(), draftPrefix)
|
||||||
|
|
||||||
ref := &docref{
|
ref := &editSession{
|
||||||
name: docName,
|
name: docName,
|
||||||
doc: acedoc.NewString(string(contents)),
|
doc: acedoc.NewString(string(contents)),
|
||||||
tmpdir: tmpdir,
|
tmpdir: tmpdir,
|
||||||
@@ -103,26 +103,25 @@ func (ch *CaddyHugo) newClient(docName string) (*docref, error) {
|
|||||||
return ref, nil
|
return ref, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ch *CaddyHugo) hasdocref(docName string) (*docref, bool) {
|
func (ch *CaddyHugo) hasEditSession(docName string) (*editSession, bool) {
|
||||||
dr, ok := ch.docs[ch.docFilename(docName)]
|
dr, ok := ch.docs[ch.docFilename(docName)]
|
||||||
return dr, ok
|
return dr, ok
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ch *CaddyHugo) client(docName string) (*docref, error) {
|
func (ch *CaddyHugo) editSession(docName string) (*editSession, error) {
|
||||||
ch.mtx.Lock()
|
ch.mtx.Lock()
|
||||||
defer ch.mtx.Unlock()
|
defer ch.mtx.Unlock()
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
dr, ok := ch.hasdocref(docName)
|
dr, ok := ch.hasEditSession(docName)
|
||||||
if !ok {
|
if !ok {
|
||||||
dr, err = ch.newClient(docName)
|
dr, err = ch.newEditSession(docName)
|
||||||
}
|
}
|
||||||
|
|
||||||
return dr, err
|
return dr, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ch *CaddyHugo) doc(r *http.Request) (*docref, error) {
|
func docNameFromEditRequest(r *http.Request) string {
|
||||||
name := r.URL.Path[len("/hugo/edit/"):]
|
return r.URL.Path[len("/hugo/edit/"):]
|
||||||
return ch.client(name)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,13 +53,13 @@ func (ch *CaddyHugo) DeltaWebsocket(w http.ResponseWriter, r *http.Request) (int
|
|||||||
|
|
||||||
conn.SetReadDeadline(time.Time{})
|
conn.SetReadDeadline(time.Time{})
|
||||||
|
|
||||||
doc, err := ch.doc(r)
|
doc, err := ch.editSession(docNameFromEditRequest(r))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return http.StatusBadRequest, err
|
return http.StatusBadRequest, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return ch.handleConn(conn, doc)
|
return ch.handleDeltaConn(conn, doc)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ch *CaddyHugo) Message(deltas ...acedoc.Delta) Message {
|
func (ch *CaddyHugo) Message(deltas ...acedoc.Delta) Message {
|
||||||
@@ -69,7 +69,7 @@ func (ch *CaddyHugo) Message(deltas ...acedoc.Delta) Message {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ch *CaddyHugo) handleConn(conn DeltaConn, doc *docref) (int, error) {
|
func (ch *CaddyHugo) handleDeltaConn(conn DeltaConn, doc *editSession) (int, error) {
|
||||||
const idlePing = 15 * time.Second
|
const idlePing = 15 * time.Second
|
||||||
const idlePingShort = 1 * time.Millisecond
|
const idlePingShort = 1 * time.Millisecond
|
||||||
|
|
||||||
|
|||||||
+11
-11
@@ -62,7 +62,7 @@ func TestEdits(t *testing.T) {
|
|||||||
var mtx sync.Mutex
|
var mtx sync.Mutex
|
||||||
received := []acedoc.Delta{}
|
received := []acedoc.Delta{}
|
||||||
|
|
||||||
doc, err := w.CH.client(contentPath)
|
doc, err := w.CH.editSession(contentPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("error creating document client:", err)
|
t.Fatal("error creating document client:", err)
|
||||||
}
|
}
|
||||||
@@ -75,7 +75,7 @@ func TestEdits(t *testing.T) {
|
|||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
|
|
||||||
_, ok := w.CH.hasdocref(contentPath)
|
_, ok := w.CH.hasEditSession(contentPath)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatal("expected there to be an established client")
|
t.Fatal("expected there to be an established client")
|
||||||
}
|
}
|
||||||
@@ -158,12 +158,12 @@ func TestDeltasSingle(t *testing.T) {
|
|||||||
|
|
||||||
client := new(WebsocketTester)
|
client := new(WebsocketTester)
|
||||||
|
|
||||||
doc, err := w.CH.client("content/" + title + ".md")
|
doc, err := w.CH.editSession("content/" + title + ".md")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("couldn't establish docref for client 0:", err)
|
t.Fatal("couldn't establish docref for client 0:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
go w.CH.handleConn(client, doc)
|
go w.CH.handleDeltaConn(client, doc)
|
||||||
|
|
||||||
a := acedoc.Insert(0, 0, "a")
|
a := acedoc.Insert(0, 0, "a")
|
||||||
|
|
||||||
@@ -199,13 +199,13 @@ func TestDeltasDouble(t *testing.T) {
|
|||||||
clientA := new(WebsocketTester)
|
clientA := new(WebsocketTester)
|
||||||
clientB := new(WebsocketTester)
|
clientB := new(WebsocketTester)
|
||||||
|
|
||||||
doc, err := w.CH.client("content/" + title + ".md")
|
doc, err := w.CH.editSession("content/" + title + ".md")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("couldn't establish docref for client 0:", err)
|
t.Fatal("couldn't establish docref for client 0:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
go w.CH.handleConn(clientA, doc)
|
go w.CH.handleDeltaConn(clientA, doc)
|
||||||
go w.CH.handleConn(clientB, doc)
|
go w.CH.handleDeltaConn(clientB, doc)
|
||||||
|
|
||||||
// send the first message, simulating the browser on clientA
|
// send the first message, simulating the browser on clientA
|
||||||
clientA.ReceiveJSON(w.CH.Message(acedoc.Insert(0, 0, "a")))
|
clientA.ReceiveJSON(w.CH.Message(acedoc.Insert(0, 0, "a")))
|
||||||
@@ -266,14 +266,14 @@ func TestDeltasMulti(t *testing.T) {
|
|||||||
|
|
||||||
clients := []*WebsocketTester{{}, {}, {}}
|
clients := []*WebsocketTester{{}, {}, {}}
|
||||||
|
|
||||||
doc, err := w.CH.client("content/" + title + ".md")
|
doc, err := w.CH.editSession("content/" + title + ".md")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("couldn't establish docref:", err)
|
t.Fatal("couldn't establish docref:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
go w.CH.handleConn(clients[0], doc)
|
go w.CH.handleDeltaConn(clients[0], doc)
|
||||||
go w.CH.handleConn(clients[1], doc)
|
go w.CH.handleDeltaConn(clients[1], doc)
|
||||||
go w.CH.handleConn(clients[2], doc)
|
go w.CH.handleDeltaConn(clients[2], doc)
|
||||||
|
|
||||||
a := acedoc.Insert(0, 0, "a")
|
a := acedoc.Insert(0, 0, "a")
|
||||||
b := acedoc.Insert(0, 0, "b")
|
b := acedoc.Insert(0, 0, "b")
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ func (ch *CaddyHugo) Edit(c *caddy.Controller) httpserver.Handler {
|
|||||||
return ch.DeltaWebsocket(w, r)
|
return ch.DeltaWebsocket(w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
doc, err := ch.doc(r)
|
doc, err := ch.editSession(docNameFromEditRequest(r))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return http.StatusNotFound, err
|
return http.StatusNotFound, err
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ func (ch *CaddyHugo) Setup(dir string) error {
|
|||||||
var err error
|
var err error
|
||||||
|
|
||||||
ch.Dir = dir
|
ch.Dir = dir
|
||||||
ch.docs = make(map[string]*docref)
|
ch.docs = make(map[string]*editSession)
|
||||||
|
|
||||||
ch.HugoCfg = &deps.DepsCfg{}
|
ch.HugoCfg = &deps.DepsCfg{}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -67,7 +67,7 @@ type tmplData struct {
|
|||||||
R *http.Request
|
R *http.Request
|
||||||
*CaddyHugo
|
*CaddyHugo
|
||||||
Doc *acedoc.Document
|
Doc *acedoc.Document
|
||||||
docref *docref
|
docref *editSession
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *tmplData) LoadContent() (string, error) {
|
func (t *tmplData) LoadContent() (string, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user