init
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
package plugin
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/mattermost/mattermost/server/public/plugin"
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
type httpResponse struct {
|
||||
Status string `json:"status"`
|
||||
Error string `json:"error,omitempty"`
|
||||
Data interface{} `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
func (p *Plugin) sendError(w http.ResponseWriter, err string) {
|
||||
errEnc := json.NewEncoder(w).Encode(httpResponse{
|
||||
Status: "error",
|
||||
Error: err,
|
||||
})
|
||||
if errEnc != nil {
|
||||
p.API.LogError("cant encode error response", "error", errEnc)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Plugin) sendRes(w http.ResponseWriter, resp httpResponse) {
|
||||
errEnc := json.NewEncoder(w).Encode(resp)
|
||||
if errEnc != nil {
|
||||
p.API.LogError("cant encode error response", "error", errEnc)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Plugin) InitApi() {
|
||||
p.router = mux.NewRouter()
|
||||
|
||||
p.router.Use(func(next http.Handler) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if userID := r.Header.Get("Mattermost-User-Id"); userID != "" {
|
||||
next.ServeHTTP(w, r)
|
||||
return
|
||||
}
|
||||
http.Error(w, "Not authorized", http.StatusUnauthorized)
|
||||
})
|
||||
})
|
||||
|
||||
// Add your API routes here
|
||||
p.router.HandleFunc("/example", p.handleExample).Methods("GET")
|
||||
p.router.HandleFunc("/assets/{fileName}", p.handleAssetFile).Methods("GET")
|
||||
}
|
||||
|
||||
func (p *Plugin) ServeHTTP(_ *plugin.Context, w http.ResponseWriter, r *http.Request) {
|
||||
p.router.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
func (p *Plugin) handleAssetFile(w http.ResponseWriter, r *http.Request) {
|
||||
fileName := mux.Vars(r)["fileName"]
|
||||
http.ServeFile(w, r, filepath.Join(p.bundlePath, "assets", fileName))
|
||||
}
|
||||
|
||||
func (p *Plugin) handleExample(w http.ResponseWriter, r *http.Request) {
|
||||
p.sendRes(w, httpResponse{
|
||||
Status: "OK",
|
||||
Data: map[string]interface{}{
|
||||
"message": "Hello from template plugin",
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user