a day's hacking. it doesn't work.
This commit is contained in:
parent
fa4dd9785e
commit
b9e7aa782b
4
go.mod
4
go.mod
|
@ -5,9 +5,9 @@ go 1.15
|
||||||
require (
|
require (
|
||||||
git.sr.ht/~adnano/go-gemini v0.1.13
|
git.sr.ht/~adnano/go-gemini v0.1.13
|
||||||
github.com/fogleman/gg v1.3.0
|
github.com/fogleman/gg v1.3.0
|
||||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
|
||||||
github.com/shermp/go-fbink-v2 v1.20.2
|
github.com/shermp/go-fbink-v2 v1.20.2
|
||||||
github.com/shermp/go-fbink-v2/v2 v2.21.0
|
github.com/shermp/go-fbink-v2/v2 v2.21.0
|
||||||
github.com/shermp/go-kobo-input v0.0.0-20180928074949-be0734a2dcc6
|
github.com/shermp/go-kobo-input v0.0.0-20180928074949-be0734a2dcc6
|
||||||
golang.org/x/image v0.0.0-20201208152932-35266b937fa6 // indirect
|
golang.org/x/image v0.0.0-20201208152932-35266b937fa6
|
||||||
)
|
)
|
||||||
|
|
55
main.go
55
main.go
|
@ -1,7 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
// "github.com/fogleman/gg"
|
"github.com/fogleman/gg"
|
||||||
"github.com/shermp/go-fbink-v2/gofbink"
|
"github.com/shermp/go-fbink-v2/gofbink"
|
||||||
"github.com/shermp/go-kobo-input/koboin"
|
"github.com/shermp/go-kobo-input/koboin"
|
||||||
"image"
|
"image"
|
||||||
|
@ -12,6 +12,7 @@ import (
|
||||||
// "bytes"
|
// "bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"golang.org/x/image/font"
|
||||||
"bufio"
|
"bufio"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -19,6 +20,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"log"
|
"log"
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"github.com/golang/freetype/truetype"
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -30,12 +33,25 @@ var (
|
||||||
var height int = 1080
|
var height int = 1080
|
||||||
var width int = 1440 // TODO get from device instead of hardcoding
|
var width int = 1440 // TODO get from device instead of hardcoding
|
||||||
|
|
||||||
|
var f *truetype.Font
|
||||||
|
var face font.Face
|
||||||
|
|
||||||
// drawOSK renders the onscreen keyboard to an image.
|
// drawErrorBox prints the given error on screen, and only proceeds after touch input.
|
||||||
func drawOSK(keymap []string) *image.RGBA {
|
// Returns an error if drawing an error box (lol) fails.
|
||||||
var im image.RGBA
|
// TODO make this work
|
||||||
|
func drawErrorBox(e error, fb *gofbink.FBInk, t *koboin.TouchDevice, opts *gofbink.FBInkConfig ) error {
|
||||||
return &im
|
h := float64(height/2)
|
||||||
|
w := float64(width)
|
||||||
|
i := image.NewRGBA(image.Rect(width,0,width,height/2))
|
||||||
|
dc := gg.NewContextForRGBA(i)
|
||||||
|
dc.SetFontFace(face)
|
||||||
|
dc.SetRGB(1, 1, 1)
|
||||||
|
dc.Clear()
|
||||||
|
dc.SetRGB(0, 0, 0)
|
||||||
|
dc.DrawStringWrapped(e.Error(), h/2, w/2, 0.5, 0.5, float64(width), 1.0, gg.AlignCenter)
|
||||||
|
fb.PrintRBGA(0, 0, i, opts)
|
||||||
|
t.GetInput()
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func trustCertificate(hostname string, cert *x509.Certificate) error {
|
func trustCertificate(hostname string, cert *x509.Certificate) error {
|
||||||
|
@ -112,20 +128,21 @@ func main() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer t.Close()
|
defer t.Close()
|
||||||
|
|
||||||
// Logging setup
|
// Logging setup
|
||||||
var logFile, err= os.Create("/mnt/onboard/gemini.log")
|
var logFile, err= os.Create("/mnt/onboard/gemini.log")
|
||||||
var logger *log.Logger = log.New(logFile, "gemini", log.LstdFlags )
|
var logger *log.Logger = log.New(logFile, "gemini", log.LstdFlags )
|
||||||
|
defer logFile.Close()
|
||||||
|
|
||||||
path := "/mnt/onboard/.adds/gemini/known-hosts" // TODO don't hardcode
|
path := "/mnt/onboard/.adds/gemini/known-hosts" // TODO don't hardcode
|
||||||
|
|
||||||
|
// Reload or create known hosts file
|
||||||
if _, err := os.Stat(path); os.IsNotExist(err) {
|
if _, err := os.Stat(path); os.IsNotExist(err) {
|
||||||
os.Create(path)
|
os.Create(path)
|
||||||
fb.Println("Created hosts file")
|
|
||||||
}
|
}
|
||||||
// Load known hosts file
|
|
||||||
err = hosts.Load(path)
|
err = hosts.Load(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fb.Println(err)
|
drawErrorBox(err, fb, t, &fbinkOpts)
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,16 +151,28 @@ func main() {
|
||||||
fb.Println(err)
|
fb.Println(err)
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load Fonts, Create font face
|
||||||
|
b, err := ioutil.ReadFile("/mnt/onboard/.adds/gemini/NotoSerif.ttf")
|
||||||
|
if err != nil {
|
||||||
|
logger.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
f, err := truetype.Parse(b)
|
||||||
|
if err != nil {
|
||||||
|
logger.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
face = truetype.NewFace(f, &truetype.Options{Size:32})
|
||||||
url := "gemini://gemini.circumlunar.space"
|
url := "gemini://gemini.circumlunar.space"
|
||||||
req, err := gemini.NewRequest(url)
|
req, err := gemini.NewRequest(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fb.Println(err)
|
drawErrorBox(err, fb, t, &fbinkOpts)
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
resp, err := do(req, nil)
|
resp, err := do(req, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fb.Println(err)
|
drawErrorBox(err, fb, t, &fbinkOpts)
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
@ -152,7 +181,7 @@ func main() {
|
||||||
if resp.Status.Class() == gemini.StatusClassSuccess {
|
if resp.Status.Class() == gemini.StatusClassSuccess {
|
||||||
body, err := ioutil.ReadAll(resp.Body)
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fb.Println(err)
|
drawErrorBox(err, fb, t, &fbinkOpts)
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
fb.Println(string(body))
|
fb.Println(string(body))
|
||||||
|
|
Reference in New Issue