2018-11-02 19:19:43 +01:00
package main
import (
"net/http"
2018-11-04 13:22:36 +01:00
//"fmt"
2018-11-02 19:19:43 +01:00
"encoding/json"
2018-11-04 13:22:36 +01:00
"database/sql"
"time"
_ "github.com/mattn/go-sqlite3"
2018-11-02 19:19:43 +01:00
"log"
)
var messages [ ] * string
2018-11-04 13:22:36 +01:00
var db * sql . DB
2018-11-02 19:19:43 +01:00
func main ( ) {
2018-11-04 13:22:36 +01:00
dbo , err := sql . Open ( "sqlite3" , "content" )
if err != nil {
log . Fatal ( "couldn’t open database. exiting..." )
return
} else {
db = dbo
}
2018-11-02 19:19:43 +01:00
//listener, err = net.Listen("socket", "/tmp/
http . HandleFunc ( "/" , get )
http . HandleFunc ( "/add" , post )
log . Fatal ( http . ListenAndServe ( ":12345" , nil ) )
}
2018-11-04 13:22:36 +01:00
func writeToDB ( post BlogPost ) {
stmt , _ := db . Prepare ( "INSERT INTO blogposts(author, title, content, date) VALUES (?, ?, ?, ?)" )
stmt . Exec ( post . Author , post . Title , post . Content , time . Now ( ) . Format ( "2006-01-02" ) )
}
2018-11-02 19:19:43 +01:00
type BlogPost struct {
2018-11-04 13:22:36 +01:00
Content string ` "content" `
2018-11-02 19:19:43 +01:00
Title string ` "title" `
2018-11-04 13:22:36 +01:00
Author string ` "author" `
2018-11-02 19:19:43 +01:00
Secret string ` "secret" `
}
func get ( w http . ResponseWriter , r * http . Request ) {
w . WriteHeader ( http . StatusOK )
2018-11-04 13:22:36 +01:00
w . Write ( [ ] byte ( "response:\n" ) )
//stmt, _ := db.Prepare("SELECT content from blogposts")
//res, _ := stmt.Exec()
res , _ := db . Query ( "SELECT content from blogposts" )
for _ , e := range ( resultToStrings ( res ) ) {
w . Write ( [ ] byte ( e + "\n" ) )
2018-11-02 19:19:43 +01:00
}
}
func post ( w http . ResponseWriter , r * http . Request ) {
var post BlogPost
json . NewDecoder ( r . Body ) . Decode ( & post )
2018-11-04 13:22:36 +01:00
messages = append ( messages , & post . Content )
writeToDB ( post )
}
func resultToStrings ( res * sql . Rows ) [ ] string {
defer res . Close ( )
entries := make ( [ ] string , 0 )
for res . Next ( ) {
var e string
res . Scan ( & e )
entries = append ( entries , e )
}
return entries
2018-11-02 19:19:43 +01:00
}