mirror of
https://github.com/jonathan-martz/pocketbase-php-sdk.git
synced 2026-04-03 07:27:42 +00:00
tdd - refactor mailer go
This commit is contained in:
131
mailer.go
131
mailer.go
@@ -1,20 +1,20 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"flag"
|
||||||
"log"
|
"fmt"
|
||||||
"flag"
|
"log"
|
||||||
"net/smtp"
|
"net/smtp"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
|
|
||||||
// Define flags
|
// Define flags
|
||||||
smtpPass := flag.String("password", "", "SMTP password")
|
smtpPass := flag.String("password", "", "SMTP password")
|
||||||
sender := flag.String("sender", "", "SMTP sender")
|
sender := flag.String("sender", "", "SMTP sender")
|
||||||
smtpUser := flag.String("user", "", "SMTP username")
|
smtpUser := flag.String("user", "", "SMTP username")
|
||||||
@@ -22,68 +22,75 @@ func main() {
|
|||||||
// Parse the flags
|
// Parse the flags
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
// Check if password is provided
|
// Check if required flags are provided
|
||||||
if *smtpPass == "" {
|
if *smtpPass == "" {
|
||||||
fmt.Println("Error: Password is required. Use -password flag.")
|
log.Fatal("Error: Password is required. Use -password flag.")
|
||||||
return
|
}
|
||||||
|
if *smtpUser == "" {
|
||||||
|
log.Fatal("Error: SMTP username is required. Use -user flag.")
|
||||||
|
}
|
||||||
|
if *sender == "" {
|
||||||
|
log.Fatal("Error: Sender email is required. Use -sender flag.")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Format the date as YYYY-MM-DD
|
// Format the date as YYYY-MM-DD
|
||||||
currentDate := now.Format("01.02.2006")
|
currentDate := now.Format("01-02-2006")
|
||||||
|
|
||||||
recipient := "support@jonathan-martz.de"
|
recipient := "support@jonathan-martz.de"
|
||||||
subject := "PHPUnit - PocketBase PHP SDK -" + currentDate
|
subject := "PHPUnit - PocketBase PHP SDK - " + currentDate
|
||||||
smtpHost := "smtps.udag.de" // Replace with your SMTP host
|
smtpHost := "smtps.udag.de" // Replace with your SMTP host
|
||||||
smtpPort := "587" // Replace with your SMTP port
|
smtpPort := "587" // Replace with your SMTP port
|
||||||
|
|
||||||
// Run PHPUnit with combined stdout and stderr
|
// Run PHPUnit with combined stdout and stderr
|
||||||
cmd := exec.Command("php", "vendor/bin/phpunit")
|
cmd := exec.Command("php", "vendor/bin/phpunit")
|
||||||
var output bytes.Buffer
|
var output bytes.Buffer
|
||||||
cmd.Stdout = &output
|
cmd.Stdout = &output
|
||||||
cmd.Stderr = &output
|
cmd.Stderr = &output
|
||||||
|
|
||||||
if err := cmd.Run(); err != nil {
|
if err := cmd.Run(); err != nil {
|
||||||
log.Printf("PHPUnit command failed: %v", err)
|
log.Printf("PHPUnit command failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if output is empty
|
// Check if output is empty
|
||||||
if output.Len() == 0 {
|
if output.Len() == 0 {
|
||||||
log.Fatal("PHPUnit output is empty. Please check your configuration.")
|
log.Fatal("PHPUnit output is empty. Please check your configuration.")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse the JSON output
|
// Parse the JSON output
|
||||||
var result map[string]interface{}
|
var result map[string]interface{}
|
||||||
if err := json.Unmarshal(output.Bytes(), &result); err != nil {
|
if err := json.Unmarshal(output.Bytes(), &result); err != nil {
|
||||||
log.Fatalf("Failed to parse JSON output: %v", err)
|
log.Fatalf("Failed to parse JSON output: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract the 'counts' field
|
// Extract the 'counts' field
|
||||||
counts, ok := result["counts"].(map[string]interface{})
|
counts, ok := result["counts"].(map[string]interface{})
|
||||||
if !ok {
|
if !ok {
|
||||||
log.Fatal("Counts field not found in PHPUnit output.")
|
log.Fatal("Counts field not found in PHPUnit output.")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Serialize the counts field to JSON for the email body
|
fmt.Println(output.String())
|
||||||
countsJSON, err := json.MarshalIndent(counts, "", " ")
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("Failed to serialize counts to JSON: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prepare the email body
|
// Serialize the counts field to JSON for the email body
|
||||||
emailBody := fmt.Sprintf("Subject: %s\r\n\r\n%s", subject, string(countsJSON))
|
countsJSON, err := json.MarshalIndent(counts, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to serialize counts to JSON: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
// Connect to the SMTP server
|
// Prepare the email body
|
||||||
auth := smtp.PlainAuth("", *smtpUser, *smtpPass, smtpHost)
|
emailBody := fmt.Sprintf("Subject: %s\r\n\r\n%s", subject, string(countsJSON))
|
||||||
err = smtp.SendMail(
|
|
||||||
smtpHost+":"+smtpPort,
|
|
||||||
auth,
|
|
||||||
*sender,
|
|
||||||
[]string{recipient},
|
|
||||||
[]byte(emailBody),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("Failed to send email: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Println("Test results sent to", recipient)
|
// Connect to the SMTP server
|
||||||
}
|
auth := smtp.PlainAuth("", *smtpUser, *smtpPass, smtpHost)
|
||||||
|
err = smtp.SendMail(
|
||||||
|
smtpHost+":"+smtpPort,
|
||||||
|
auth,
|
||||||
|
*sender,
|
||||||
|
[]string{recipient},
|
||||||
|
[]byte(emailBody),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to send email: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Println("Test results sent to", recipient)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user