43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package sam
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
// HTTP handlers are a superset of internal APIs
|
|
type MessageHandlers struct {
|
|
*Message
|
|
}
|
|
|
|
func (MessageHandlers) new() *MessageHandlers {
|
|
return &MessageHandlers{
|
|
Message{}.new(),
|
|
}
|
|
}
|
|
|
|
// Internal API interface
|
|
type MessageAPI interface {
|
|
Edit(*messageEditRequest) (interface{}, error)
|
|
Attach(*messageAttachRequest) (interface{}, error)
|
|
Remove(*messageRemoveRequest) (interface{}, error)
|
|
Read(*messageReadRequest) (interface{}, error)
|
|
Search(*messageSearchRequest) (interface{}, error)
|
|
Pin(*messagePinRequest) (interface{}, error)
|
|
Flag(*messageFlagRequest) (interface{}, error)
|
|
}
|
|
|
|
// HTTP API interface
|
|
type MessageHandlersAPI interface {
|
|
Edit(http.ResponseWriter, *http.Request)
|
|
Attach(http.ResponseWriter, *http.Request)
|
|
Remove(http.ResponseWriter, *http.Request)
|
|
Read(http.ResponseWriter, *http.Request)
|
|
Search(http.ResponseWriter, *http.Request)
|
|
Pin(http.ResponseWriter, *http.Request)
|
|
Flag(http.ResponseWriter, *http.Request)
|
|
}
|
|
|
|
// Compile time check to see if we implement the interfaces
|
|
var _ MessageHandlersAPI = &MessageHandlers{}
|
|
var _ MessageAPI = &Message{}
|