Account to get is now part of url

This commit is contained in:
Romain de Laage 2021-02-28 16:30:59 +01:00
parent d97284e59d
commit d77383be08
Signed by: rdelaage
GPG Key ID: 534845FADDF0C329
1 changed files with 57 additions and 2 deletions

View File

@ -2,10 +2,13 @@ package main
import (
"crypto/tls"
"net/url"
"log"
"net"
"net/http"
"bufio"
"os"
"strconv"
"fmt"
"encoding/json"
"io/ioutil"
@ -95,12 +98,64 @@ func serve(listener net.Listener, baseURL string) {
}
}
func getRawURL(conn *tls.Conn) (string, error) {
scanner := bufio.NewScanner(conn)
if ok := scanner.Scan(); !ok {
return "", scanner.Err()
}
rawURL := scanner.Text()
if strings.Contains(rawURL, "://") {
return rawURL, nil
}
return fmt.Sprintf("gemini://%s", rawURL), nil
}
func getPath(conn *tls.Conn) (string, error) {
rawURL, err := getRawURL(conn)
if err != nil {
return "", err
}
parsedURL, err := url.Parse(rawURL)
if err != nil {
return "", err
}
return parsedURL.Path, nil
}
func handleConn(conn *tls.Conn, baseURL string) {
defer conn.Close()
blogs := getBlog(baseURL, "138624")
path, err := getPath(conn)
if err != nil {
log.Println("get url: %s", err)
_, err = fmt.Fprintf(conn, "59 Can't parse request\r\n")
if err != nil {
log.Println("send error: %s", err)
return
}
return
}
_, err := fmt.Fprintf(conn, "20 text/gemini\r\n# Picasoft account toots\n")
path = path[1:]
_, err = strconv.ParseUint(path, 10, 64)
if err != nil {
log.Println("invalid request: %s", err)
_, err = fmt.Fprintf(conn, "59 Can't parse request\r\n")
if err != nil {
log.Println("send error: %s", err)
return
}
return
}
blogs := getBlog(baseURL, path)
_, err = fmt.Fprintf(conn, "20 text/gemini\r\n# Picasoft account toots\n")
if err != nil {
log.Println("handleConn: %s", err)
return