package mux
import (
"github.com/bwmarrin/discordgo"
"fmt"
"net/http"
"strings"
"io/ioutil"
"time"
"strconv"
)
// Fetch a man page
func (m *Mux) Man(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) {
resp := "\n"
var err error
page := ""
section := ""
if len(ctx.Fields) == 3 {
// `man 1 bc` format
section += ctx.Fields[len(ctx.Fields)-2]
page += ctx.Fields[len(ctx.Fields)-1]
// Should allow selection of manual categories beyond 9front
url := "http://man.cat-v.org/9front/" + section + "/" + page
page, err := http.Get(url)
defer page.Body.Close()
body, err := ioutil.ReadAll(page.Body)
if err != nil || strings.Contains(string(body), "The requested document at") {
fmt.Println("Error finding man page, see: x/mux/man.go")
fmt.Println("%s\n", err)
resp += "Invalid manual page requested."
} else {
resp += string(url)
}
} else if len(ctx.Fields) == 2 {
// `man srv` format
page += ctx.Fields[len(ctx.Fields)-1]
any := false
for i:=1; i < 9; i++ {
// Should allow selection of manual categories beyond 9front
url := "http://man.cat-v.org/9front/" + strconv.Itoa(i) + "/" + page
page, err := http.Get(url)
defer page.Body.Close()
body, err := ioutil.ReadAll(page.Body)
if err != nil || strings.Contains(string(body), "The requested document at") {
continue
} else {
if !any {
any = true
resp += ".\n"
}
resp += string(url) + "\n"
}
time.Sleep(1 * time.Second)
}
// No matches
if !any {
resp += "No matching manual page(s) found."
}
} else {
resp += "No op. Please use the 'man 3 srv' format or 'man srv' format."
}
resp += "\n"
_, err = ds.ChannelMessageSend(dm.ChannelID, resp)
if err != nil {
fmt.Println("Error sending man(1) output as message, see: x/mux/man.go")
fmt.Println(err)
}
return
}
// Fetch a summary of a man page
func (m *Mux) Sum(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) {
}
// Call lookman on a given query
func (m *Mux) Lookman(ds *discordgo.Session, dm *discordgo.Message, ctx *Context) {
}