add an autobonker
This commit is contained in:
parent
44702acf96
commit
7dd1b8c851
|
@ -1,5 +1,8 @@
|
||||||
|
|
||||||
all: gettoken saytheday sprayandpray youvegothonks
|
all: autobonker gettoken saytheday sprayandpray youvegothonks
|
||||||
|
|
||||||
|
autobonker: autobonker.go
|
||||||
|
go build autobonker.go
|
||||||
|
|
||||||
gettoken: gettoken.go
|
gettoken: gettoken.go
|
||||||
go build gettoken.go
|
go build gettoken.go
|
||||||
|
|
|
@ -2,6 +2,8 @@ These are all standalone programs, meant to be compiled individually.
|
||||||
|
|
||||||
A little of this, a little of that.
|
A little of this, a little of that.
|
||||||
|
|
||||||
|
autobonker.go - repeats mentioned posts
|
||||||
|
|
||||||
gettoken.go - obtains an authorization token
|
gettoken.go - obtains an authorization token
|
||||||
|
|
||||||
saytheday.go - posts a new honk that's a date based look and say sequence
|
saytheday.go - posts a new honk that's a date based look and say sequence
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Honk struct {
|
||||||
|
ID int
|
||||||
|
XID string
|
||||||
|
Honker string
|
||||||
|
}
|
||||||
|
|
||||||
|
type HonkSet struct {
|
||||||
|
Honks []Honk
|
||||||
|
}
|
||||||
|
|
||||||
|
func gethonks(server, token string, wanted int) HonkSet {
|
||||||
|
form := make(url.Values)
|
||||||
|
form.Add("action", "gethonks")
|
||||||
|
form.Add("page", "atme")
|
||||||
|
form.Add("after", fmt.Sprintf("%d", wanted))
|
||||||
|
form.Add("wait", "30")
|
||||||
|
apiurl := fmt.Sprintf("https://%s/api?%s", server, form.Encode())
|
||||||
|
req, err := http.NewRequest("GET", apiurl, nil)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
req.Header.Add("Authorization", "Bearer "+token)
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
answer, _ := ioutil.ReadAll(resp.Body)
|
||||||
|
log.Fatalf("status: %d: %s", resp.StatusCode, answer)
|
||||||
|
}
|
||||||
|
var honks HonkSet
|
||||||
|
d := json.NewDecoder(resp.Body)
|
||||||
|
err = d.Decode(&honks)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
return honks
|
||||||
|
}
|
||||||
|
|
||||||
|
func bonk(server, token string, honk Honk) {
|
||||||
|
log.Printf("bonking %s from %s", honk.XID, honk.Honker)
|
||||||
|
form := make(url.Values)
|
||||||
|
form.Add("action", "zonkit")
|
||||||
|
form.Add("wherefore", "bonk")
|
||||||
|
form.Add("what", honk.XID)
|
||||||
|
apiurl := fmt.Sprintf("https://%s/api", server)
|
||||||
|
req, err := http.NewRequest("POST", apiurl, strings.NewReader(form.Encode()))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
req.Header.Add("Authorization", "Bearer "+token)
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
answer, _ := ioutil.ReadAll(resp.Body)
|
||||||
|
log.Fatalf("status: %d: %s", resp.StatusCode, answer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
server := ""
|
||||||
|
token := ""
|
||||||
|
flag.StringVar(&server, "server", server, "server to connnect")
|
||||||
|
flag.StringVar(&token, "token", token, "auth token to use")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
if server == "" || token == "" {
|
||||||
|
flag.Usage()
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
wanted := 0
|
||||||
|
|
||||||
|
for {
|
||||||
|
honks := gethonks(server, token, wanted)
|
||||||
|
for i, h := range honks.Honks {
|
||||||
|
bonk(server, token, h)
|
||||||
|
if i > 0 {
|
||||||
|
time.Sleep(3 * time.Second)
|
||||||
|
}
|
||||||
|
if wanted < h.ID {
|
||||||
|
wanted = h.ID
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
time.Sleep(3 * time.Second)
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,7 +11,6 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
func sendmsg(server, token, msg, rcpt string) {
|
func sendmsg(server, token, msg, rcpt string) {
|
||||||
form := make(url.Values)
|
form := make(url.Values)
|
||||||
form.Add("token", token)
|
form.Add("token", token)
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"encoding/json"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
@ -13,9 +13,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Honk struct {
|
type Honk struct {
|
||||||
ID int
|
ID int
|
||||||
Honker string
|
Honker string
|
||||||
Noise string
|
Noise string
|
||||||
}
|
}
|
||||||
|
|
||||||
type HonkSet struct {
|
type HonkSet struct {
|
||||||
|
@ -33,7 +33,7 @@ func gethonks(server, token string, wanted int) HonkSet {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
req.Header.Add("Authorization", "Bearer " + token)
|
req.Header.Add("Authorization", "Bearer "+token)
|
||||||
resp, err := http.DefaultClient.Do(req)
|
resp, err := http.DefaultClient.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|
Loading…
Reference in New Issue