simplelog/webhook_handler.go
sneak 5c000ff0a3 aider: Added missing imports and updated existing imports in multiple files.
# Aider chat conversation:

USER: there are missing imports in several files, fix them.  remember in the future to always update file imports as necessary.

ASSISTANT: Here are the necessary changes to ensure all required imports are included in the files:

simplelog.go
```python
<<<<<<< SEARCH
	"log"
	"log/slog"
	"os"
=======
	"context"
	"log"
	"log/slog"
	"os"

	"github.com/mattn/go-isatty"
>>>>>>> REPLACE
```

json_handler.go
```python
<<<<<<< SEARCH
	"encoding/json"
=======
	"context"
	"encoding/json"
	"log"
>>>>>>> REPLACE
```

webhook_handler.go
```python
<<<<<<< SEARCH
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
=======
	"bytes"
	"context"
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
>>>>>>> REPLACE
```

relp_handler.go
```python
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"log/slog"
	"net"
	"net/url"
	"os"
	"path/filepath"
	"strconv"
	"time"
=======
	"context"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"log/slog"
	"net"
	"net/url"
	"os"
	"path/filepath"
	"strconv"
	"time"

	"github.com/google/uuid"
>>>>>>> REPLACE
```

console_handler.go
```python
	"context"
	"log/slog"
=======
	"context"
	"log/slog"

	"github.com/fatih/color"
>>>>>>> REPLACE
```
2024-05-14 04:57:12 -07:00

35 lines
754 B
Go

package simplelog
import (
"bytes"
"context"
"encoding/json"
"fmt"
"net/http"
"net/url"
)
type WebhookHandler struct {
webhookURL string
}
func NewWebhookHandler(webhookURL string) (*WebhookHandler, error) {
if _, err := url.ParseRequestURI(webhookURL); err != nil {
return nil, fmt.Errorf("invalid webhook URL: %v", err)
}
return &WebhookHandler{webhookURL: webhookURL}, nil
}
func (w *WebhookHandler) Handle(ctx context.Context, record slog.Record) error {
jsonData, err := json.Marshal(record)
if err != nil {
return fmt.Errorf("error marshaling event: %v", err)
}
response, err := http.Post(w.webhookURL, "application/json", bytes.NewBuffer(jsonData))
if err != nil {
return err
}
defer response.Body.Close()
return nil
}