even if we don't save the file, save a donk
This commit is contained in:
parent
014ceea415
commit
2fdd553d8e
70
activity.go
70
activity.go
|
@ -22,7 +22,6 @@ import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"html"
|
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -202,7 +201,10 @@ func jsongetmap(j interface{}, key string) (map[string]interface{}, bool) {
|
||||||
return jsonfindmap(j, []string{key})
|
return jsonfindmap(j, []string{key})
|
||||||
}
|
}
|
||||||
|
|
||||||
func savedonk(url string, name, media string) *Donk {
|
func savedonk(url string, name, media string, localize bool) *Donk {
|
||||||
|
if url == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
var donk Donk
|
var donk Donk
|
||||||
row := stmtFindFile.QueryRow(url)
|
row := stmtFindFile.QueryRow(url)
|
||||||
err := row.Scan(&donk.FileID)
|
err := row.Scan(&donk.FileID)
|
||||||
|
@ -213,31 +215,37 @@ func savedonk(url string, name, media string) *Donk {
|
||||||
if err != nil && err != sql.ErrNoRows {
|
if err != nil && err != sql.ErrNoRows {
|
||||||
log.Printf("error querying: %s", err)
|
log.Printf("error querying: %s", err)
|
||||||
}
|
}
|
||||||
resp, err := http.Get(url)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("error fetching %s: %s", url, err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
if resp.StatusCode != 200 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
var buf bytes.Buffer
|
|
||||||
io.Copy(&buf, resp.Body)
|
|
||||||
|
|
||||||
xid := xfiltrate()
|
xid := xfiltrate()
|
||||||
|
data := []byte{}
|
||||||
data := buf.Bytes()
|
if localize {
|
||||||
if strings.HasPrefix(media, "image") {
|
resp, err := http.Get(url)
|
||||||
img, err := image.Vacuum(&buf)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("unable to decode image: %s", err)
|
log.Printf("error fetching %s: %s", url, err)
|
||||||
return nil
|
localize = false
|
||||||
|
goto saveit
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
localize = false
|
||||||
|
goto saveit
|
||||||
|
}
|
||||||
|
var buf bytes.Buffer
|
||||||
|
io.Copy(&buf, resp.Body)
|
||||||
|
|
||||||
|
data = buf.Bytes()
|
||||||
|
if strings.HasPrefix(media, "image") {
|
||||||
|
img, err := image.Vacuum(&buf)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("unable to decode image: %s", err)
|
||||||
|
localize = false
|
||||||
|
goto saveit
|
||||||
|
}
|
||||||
|
data = img.Data
|
||||||
|
media = "image/" + img.Format
|
||||||
}
|
}
|
||||||
data = img.Data
|
|
||||||
media = "image/" + img.Format
|
|
||||||
}
|
}
|
||||||
res, err := stmtSaveFile.Exec(xid, name, url, media, 1, data)
|
saveit:
|
||||||
|
res, err := stmtSaveFile.Exec(xid, name, url, media, localize, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("error saving file %s: %s", url, err)
|
log.Printf("error saving file %s: %s", url, err)
|
||||||
return nil
|
return nil
|
||||||
|
@ -551,6 +559,7 @@ func xonkxonk(user *WhatAbout, item interface{}, origin string) *Honk {
|
||||||
mt, _ := jsongetstring(att, "mediaType")
|
mt, _ := jsongetstring(att, "mediaType")
|
||||||
u, _ := jsongetstring(att, "url")
|
u, _ := jsongetstring(att, "url")
|
||||||
name, _ := jsongetstring(att, "name")
|
name, _ := jsongetstring(att, "name")
|
||||||
|
localize := false
|
||||||
if i > 4 {
|
if i > 4 {
|
||||||
log.Printf("excessive attachment: %s", at)
|
log.Printf("excessive attachment: %s", at)
|
||||||
} else if at == "Document" || at == "Image" {
|
} else if at == "Document" || at == "Image" {
|
||||||
|
@ -558,18 +567,15 @@ func xonkxonk(user *WhatAbout, item interface{}, origin string) *Honk {
|
||||||
log.Printf("attachment: %s %s", mt, u)
|
log.Printf("attachment: %s %s", mt, u)
|
||||||
if mt == "image/jpeg" || mt == "image/png" ||
|
if mt == "image/jpeg" || mt == "image/png" ||
|
||||||
mt == "text/plain" {
|
mt == "text/plain" {
|
||||||
donk := savedonk(u, name, mt)
|
localize = true
|
||||||
if donk != nil {
|
|
||||||
xonk.Donks = append(xonk.Donks, donk)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
u = html.EscapeString(u)
|
|
||||||
content += fmt.Sprintf(
|
|
||||||
`<p>External attachment: <a href="%s" rel=noreferrer>%s</a>`, u, u)
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.Printf("unknown attachment: %s", at)
|
log.Printf("unknown attachment: %s", at)
|
||||||
}
|
}
|
||||||
|
donk := savedonk(u, name, mt, localize)
|
||||||
|
if donk != nil {
|
||||||
|
xonk.Donks = append(xonk.Donks, donk)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
tags, _ := jsongetarray(obj, "tag")
|
tags, _ := jsongetarray(obj, "tag")
|
||||||
for _, tag := range tags {
|
for _, tag := range tags {
|
||||||
|
@ -582,7 +588,7 @@ func xonkxonk(user *WhatAbout, item interface{}, origin string) *Honk {
|
||||||
mt = "image/png"
|
mt = "image/png"
|
||||||
}
|
}
|
||||||
u, _ := jsongetstring(icon, "url")
|
u, _ := jsongetstring(icon, "url")
|
||||||
donk := savedonk(u, name, mt)
|
donk := savedonk(u, name, mt, true)
|
||||||
if donk != nil {
|
if donk != nil {
|
||||||
xonk.Donks = append(xonk.Donks, donk)
|
xonk.Donks = append(xonk.Donks, donk)
|
||||||
}
|
}
|
||||||
|
|
2
honk.go
2
honk.go
|
@ -911,7 +911,7 @@ func savehonk(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
herd := herdofemus(honk.Noise)
|
herd := herdofemus(honk.Noise)
|
||||||
for _, e := range herd {
|
for _, e := range herd {
|
||||||
donk := savedonk(e.ID, e.Name, "image/png")
|
donk := savedonk(e.ID, e.Name, "image/png", true)
|
||||||
if donk != nil {
|
if donk != nil {
|
||||||
donk.Name = e.Name
|
donk.Name = e.Name
|
||||||
honk.Donks = append(honk.Donks, donk)
|
honk.Donks = append(honk.Donks, donk)
|
||||||
|
|
Loading…
Reference in New Issue