tsk-6: Check queue (#12)

Closes #6

Reviewed-on: #12
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
phoenix
2025-11-28 18:01:18 +00:00
committed by phoenix
parent cef7f8a150
commit 6fa19ea4f6
4 changed files with 73 additions and 7 deletions
+2 -1
View File
@@ -8,6 +8,7 @@ import (
"git.kundeng.us/phoenix/catapult/internal/app" "git.kundeng.us/phoenix/catapult/internal/app"
"git.kundeng.us/phoenix/catapult/internal/config" "git.kundeng.us/phoenix/catapult/internal/config"
"git.kundeng.us/phoenix/catapult/internal/service/core"
"git.kundeng.us/phoenix/catapult/internal/version" "git.kundeng.us/phoenix/catapult/internal/version"
) )
@@ -26,7 +27,7 @@ func main() {
return return
} }
service := config.NewService(myApp) service := core.NewService(myApp)
sigChan := make(chan os.Signal, 1) sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
@@ -1,4 +1,4 @@
package auth package service
import ( import (
"bytes" "bytes"
@@ -20,7 +20,7 @@ type service struct {
Passphrase string `json:"passphrase"` Passphrase string `json:"passphrase"`
} }
type response struct { type tokenResponse struct {
Message string `json:"message"` Message string `json:"message"`
Data []*token.Login `json:"data"` Data []*token.Login `json:"data"`
} }
@@ -45,7 +45,7 @@ func (a *Auth) GetToken() (*token.Login, error) {
} }
defer resp.Body.Close() defer resp.Body.Close()
var r response var r tokenResponse
err = json.NewDecoder(resp.Body).Decode(&r) err = json.NewDecoder(resp.Body).Decode(&r)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -1,4 +1,4 @@
package config package core
import ( import (
"context" "context"
@@ -10,7 +10,7 @@ import (
"git.kundeng.us/phoenix/textsender-models/tx0/token" "git.kundeng.us/phoenix/textsender-models/tx0/token"
"git.kundeng.us/phoenix/catapult/internal/app" "git.kundeng.us/phoenix/catapult/internal/app"
"git.kundeng.us/phoenix/catapult/internal/auth" "git.kundeng.us/phoenix/catapult/internal/service"
) )
type Service struct { type Service struct {
@@ -55,7 +55,7 @@ func (s *Service) worker1() {
// Do some work // Do some work
log.Println("Worker 1: Processing...") log.Println("Worker 1: Processing...")
if s.token == nil { if s.token == nil {
catapultAuth := auth.Auth{Application: s.App} catapultAuth := service.Auth{Application: s.App}
if token, err := catapultAuth.GetToken(); err != nil { if token, err := catapultAuth.GetToken(); err != nil {
fmt.Println("Error:", err) fmt.Println("Error:", err)
} else { } else {
@@ -63,6 +63,17 @@ func (s *Service) worker1() {
s.token = token s.token = token
} }
} }
queue := service.Queue{Application: s.App, Token: s.token}
if item, exists, err := queue.GetQueue(); err != nil {
fmt.Println("Error:", err)
} else {
if *exists {
fmt.Println("Id:", item.Id)
} else {
fmt.Println("Empty queue")
}
}
} }
} }
} }
+54
View File
@@ -0,0 +1,54 @@
package service
import (
"encoding/json"
"fmt"
"net/http"
"git.kundeng.us/phoenix/textsender-models/tx0/message/scheduling"
"git.kundeng.us/phoenix/textsender-models/tx0/token"
"git.kundeng.us/phoenix/catapult/internal/app"
)
type Queue struct {
Application *app.App
Token *token.Login
}
type queueResponse struct {
Message string `json:"message"`
Data []*scheduling.ScheduledMessage `json:"data"`
}
func (q *Queue) GetQueue() (*scheduling.ScheduledMessage, *bool, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/api/v1/schedule/message/fetch", q.Application.ApiUrl), nil)
if err != nil {
return nil, nil, err
}
token := q.Token.AccessToken
req.Header.Set("Authorization", "Bearer "+token)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, nil, err
}
defer resp.Body.Close()
var r queueResponse
err = json.NewDecoder(resp.Body).Decode(&r)
if err != nil {
return nil, nil, err
} else {
var exists bool
if len(r.Data) == 0 {
exists = false
return nil, &exists, nil
} else {
exists = true
return r.Data[0], &exists, nil
}
}
}