2021-10-08 05:00:03 +00:00
|
|
|
package natsio
|
|
|
|
|
2021-10-08 07:41:58 +00:00
|
|
|
import (
|
2022-12-04 16:11:51 +00:00
|
|
|
"encoding/json"
|
2021-10-08 07:41:58 +00:00
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/thoas/go-funk"
|
|
|
|
)
|
2021-10-08 05:00:03 +00:00
|
|
|
|
|
|
|
// mergeAndUniqueArrayStrings ...
|
|
|
|
func mergeAndUniqueArrayStrings(arr1, arr2 []string) []string {
|
|
|
|
var result = make([]string, 0)
|
|
|
|
result = append(result, arr1...)
|
|
|
|
result = append(result, arr2...)
|
|
|
|
result = funk.UniqString(result)
|
|
|
|
return result
|
|
|
|
}
|
2021-10-08 07:41:58 +00:00
|
|
|
|
|
|
|
// generateSubjectNames ...
|
|
|
|
func generateSubjectNames(streamName string, subjects []string) []string {
|
|
|
|
var result = make([]string, 0)
|
|
|
|
for _, subject := range subjects {
|
|
|
|
name := combineStreamAndSubjectName(streamName, subject)
|
|
|
|
result = append(result, name)
|
|
|
|
}
|
|
|
|
return result
|
|
|
|
}
|
|
|
|
|
|
|
|
func combineStreamAndSubjectName(stream, subject string) string {
|
|
|
|
return fmt.Sprintf("%s.%s", stream, subject)
|
|
|
|
}
|
2022-12-04 15:21:30 +00:00
|
|
|
|
2022-12-04 15:36:55 +00:00
|
|
|
// GenerateJetStreamSubject ...
|
|
|
|
// GenerateJetStreamSubject("admin", "help_center", "get_ticket_by_id")
|
|
|
|
func GenerateJetStreamSubject(server, service, subject string) string {
|
|
|
|
return fmt.Sprintf("%s.jetstream.%s.%s.%s", globalConfig.StreamName, server, service, subject)
|
|
|
|
}
|
|
|
|
|
|
|
|
// GenerateReqrepSubject ...
|
|
|
|
// GenerateReqrepSubject("admin", "help_center", "get_ticket_by_id")
|
|
|
|
func GenerateReqrepSubject(server, service, subject string) string {
|
|
|
|
return fmt.Sprintf("%s.reqrep.%s.%s.%s", globalConfig.StreamName, server, service, subject)
|
2022-12-04 15:21:30 +00:00
|
|
|
}
|
2022-12-04 16:11:51 +00:00
|
|
|
|
2022-12-04 16:16:03 +00:00
|
|
|
// InterfaceToBytes ...
|
|
|
|
func InterfaceToBytes(data interface{}) []byte {
|
2022-12-04 16:11:51 +00:00
|
|
|
b, err := json.Marshal(data)
|
|
|
|
if err != nil {
|
2022-12-04 16:16:03 +00:00
|
|
|
fmt.Printf("[natsio.InterfaceToBytes] error: %v with data: %v\n", err, data)
|
2022-12-04 16:11:51 +00:00
|
|
|
}
|
|
|
|
return b
|
|
|
|
}
|
2022-12-04 16:16:03 +00:00
|
|
|
|
|
|
|
func BytesToInterface(b []byte, pointer interface{}) error {
|
|
|
|
err := json.Unmarshal(b, pointer)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("[natsio.BytesToInterface] error: %v with data: %s\n", err, string(b))
|
|
|
|
}
|
|
|
|
return err
|
|
|
|
}
|