First HTTP API commit

This commit is contained in:
chteufleur 2016-05-18 17:58:51 +02:00
parent d4996aaea3
commit 44a8e325c6
3 changed files with 130 additions and 0 deletions

63
http/http.go Normal file
View File

@ -0,0 +1,63 @@
package http
import (
"fmt"
"net/http"
"strconv"
"strings"
"log"
)
const (
PARAM_JID = "jid"
METHOD_ACCESS = "method"
DOMAIN_ACCESS = "domain"
TRANSACTION_ID = "transaction_id"
RETURN_VALUE_OK = "OK"
RETURN_VALUE_NOK = "NOK"
)
var (
HttpPortBind = 9090
ChanRequest = make(chan interface{}, 5)
)
func indexHandler(w http.ResponseWriter, r *http.Request) {
// TODO
fmt.Fprintf(w, "Welcome to HTTP authentification over XMPP")
}
func authHandler(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
chanAnswer := make(chan bool)
ChanRequest <- strings.Join(r.Form[PARAM_JID], "")
ChanRequest <- strings.Join(r.Form[METHOD_ACCESS], "")
ChanRequest <- strings.Join(r.Form[DOMAIN_ACCESS], "")
ChanRequest <- strings.Join(r.Form[TRANSACTION_ID], "")
ChanRequest <- chanAnswer
answer := <- chanAnswer
ret := RETURN_VALUE_NOK
if answer {
ret = RETURN_VALUE_OK
}
fmt.Fprintf(w, ret)
}
func Run() {
http.HandleFunc("/", indexHandler) // set router
http.HandleFunc("/toto", authHandler)
port := strconv.Itoa(HttpPortBind)
log.Println("Listenning on port "+port)
err := http.ListenAndServe(":"+port, nil) // set listen port
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}

0
httpAuth.cfg Normal file
View File

67
main.go Normal file
View File

@ -0,0 +1,67 @@
package main
import (
"git.kingpenguin.tk/chteufleur/HTTPAuthentificationOverXMPP.git/http"
"github.com/jimlawless/cfg"
"log"
"os"
"os/signal"
"syscall"
"time"
)
const (
Version = "v0.1.0"
configurationFilePath = "httpAuth.cfg"
)
var (
mapConfig = make(map[string]string)
)
func init() {
err := cfg.Load(configurationFilePath, mapConfig)
if err != nil {
log.Fatal("Failed to load configuration file.", err)
}
// TODO make config
}
func request() {
for {
jid := <- http.ChanRequest
log.Println(jid)
method := <- http.ChanRequest
log.Println(method)
domain := <- http.ChanRequest
log.Println(domain)
transaction := <- http.ChanRequest
log.Println(transaction)
chanResult := <- http.ChanRequest
// TODO make the XMPP request
if v, ok := chanResult.(chan bool); ok {
v <- false
}
}
}
func main() {
// TODO start ressources
go http.Run()
go request()
sigchan := make(chan os.Signal, 1)
signal.Notify(sigchan, os.Interrupt)
signal.Notify(sigchan, syscall.SIGTERM)
signal.Notify(sigchan, os.Kill)
<-sigchan
// TODO close all ressources
log.Println("Exit main()")
time.Sleep(1 * time.Second)
}