forked from sloum/bombadillo
Added ability to view a link's url with the check command
parent
21fe5714a3
commit
8a3ddad58e
@ -1 +1,2 @@
|
||||
bombadillo
|
||||
*.asciinema
|
||||
|
@ -0,0 +1,83 @@
|
||||
package gemini
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"net"
|
||||
"io/ioutil"
|
||||
// "strings"
|
||||
"time"
|
||||
|
||||
// "tildegit.org/sloum/mailcap"
|
||||
)
|
||||
|
||||
|
||||
//------------------------------------------------\\
|
||||
// + + + F U N C T I O N S + + + \\
|
||||
//--------------------------------------------------\\
|
||||
|
||||
func Retrieve(host, port, resource string) ([]byte, error) {
|
||||
nullRes := make([]byte, 0)
|
||||
timeOut := time.Duration(5) * time.Second
|
||||
|
||||
if host == "" || port == "" {
|
||||
return nullRes, fmt.Errorf("Incomplete request url")
|
||||
}
|
||||
|
||||
addr := host + ":" + port
|
||||
|
||||
conf := &tls.Config{
|
||||
InsecureSkipVerify: true,
|
||||
}
|
||||
|
||||
conn, err := net.DialTimeout("tcp", addr, timeOut)
|
||||
if err != nil {
|
||||
return nullRes, err
|
||||
}
|
||||
|
||||
secureConn := tls.Client(conn, conf)
|
||||
|
||||
send := resource + "\n"
|
||||
|
||||
_, err = secureConn.Write([]byte(send))
|
||||
if err != nil {
|
||||
return nullRes, err
|
||||
}
|
||||
|
||||
result, err := ioutil.ReadAll(conn)
|
||||
if err != nil {
|
||||
return nullRes, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func Visit(host, port, resource string) (string, []string, error) {
|
||||
resp, err := Retrieve(host, port, resource)
|
||||
if err != nil {
|
||||
return "", []string{}, err
|
||||
}
|
||||
|
||||
// TODO break out the header
|
||||
// header := ""
|
||||
mime := ""
|
||||
mimeMaj := mime
|
||||
mimeMin := mime
|
||||
// status := ""
|
||||
content := string(resp)
|
||||
|
||||
if mimeMaj == "text" && mimeMin == "gemini" {
|
||||
// text := string(resp)
|
||||
// links := []string{}
|
||||
|
||||
// TODO parse geminimap from 'content'
|
||||
} else if mimeMaj == "text" {
|
||||
// TODO just return the text
|
||||
} else {
|
||||
// TODO use mailcap to try and open the file
|
||||
}
|
||||
|
||||
|
||||
return content, []string{}, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue