ss/cmd/hook/main.go
2024-05-19 22:48:06 +05:00

113 lines
2.4 KiB
Go

package main
import (
"surdeus.su/core/ss"
//"surdeus.su/core/ss/urlenc"
//"surdeus.su/core/ss/methods"
"surdeus.su/core/ss/statuses"
"surdeus.su/core/ss/jsons"
"fmt"
//"io"
//"net/url"
//"strconv"
)
type GetNotesOptions struct {
Id int `json:"id"`
Name string `json:"name"`
}
type WebhookRequest struct {
Leads Leads `json:"leads"`
Account Account `json:"account"`
}
type Leads struct {
Status jsons.ArrayMap[Status]`json:"status"`
Add jsons.ArrayMap[Status] `json:"add"`
}
type Status struct {
Id jsons.Int `json:"id"`
StatusId jsons.Int`json:"status_id"`
PipelineId jsons.Int `json:"pipeline_id"`
OldStatusId jsons.Int `json:"old_status_id"`
OldPipelineId jsons.Int `json:"old_pipeline_id"`
}
type Account struct {
Id jsons.Int `json:"id"`
SubDomain string `json:"subdomain"`
}
var root = ss.Root(ss.Path(
nil,
).Case(
"hook",
/*ss.Method().Def(
methods.Post,*/
ss.Func(func(c *ss.Context){
reciever := WebhookRequest{}
c.Scan(&reciever)
if c.ScanErr() != nil {
fmt.Printf("err: %s\n", c.ScanErr())
}
fmt.Printf("%#v\n", reciever)
return
/*fmt.Printf("Content-Type: %q\n", c.ContentType())
body, err := io.ReadAll(c.R.Body)
if err != nil {
fmt.Printf("err:%s\n", err)
return
}
fmt.Printf("rawBody: %q\n", body)
unesc, err := url.QueryUnescape(string(body))
if err != nil {
fmt.Printf("err:%s\n", err)
return
}
fmt.Printf("unescapeBody: %q\n", unesc)
mp := map[string] any{}
err = ss.ParseStr(unesc, mp)
if err != nil {
fmt.Printf("err:%s\n", err)
return
}
js, err := json.MarshalIndent(mp, "", "\t")
if err != nil {
fmt.Printf("err:%s\n", err)
return
}
fmt.Printf("\nparsed: %v\n", string(js))*/
c.SetStatus(statuses.OK)
}),
//),
).Case(
"auth",
ss.Func(func(c *ss.Context){
}),
))
func main() {
/*requestString := "leads[status][0][id]=2050297&" +
"leads[status][0][status_id]=35573056&" +
"leads[status][0][pipeline_id]=3643927&" +
"leads[status][0][old_status_id]=35572897&" +
"leads[status][0][old_pipeline_id]=3643927&" +
"account[id]=29085955&" +
"account[subdomain]=domain"
reciever := WebhookRequest{}
err := urlenc.Unmarshal([]byte(requestString), &reciever)
if err != nil {
panic(err)
}*/
//fmt.Printf("%#v\n", reciever)
srv := ss.Server{
Addr: ":15080",
Handler: root,
}
err := srv.ListenAndServe()
if err != nil {
panic(err)
}
}