Skip to content

Commit 1b60e6d

Browse files
committed
Add log for response code
1 parent 198a734 commit 1b60e6d

1 file changed

Lines changed: 36 additions & 10 deletions

File tree

api/pkg/services/integration_3cx_service.go

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package services
22

33
import (
4+
"bytes"
45
"context"
6+
"encoding/json"
57
"fmt"
68
"net/http"
79
"time"
@@ -13,7 +15,6 @@ import (
1315
"github.com/NdoleStudio/httpsms/pkg/entities"
1416
"github.com/NdoleStudio/httpsms/pkg/repositories"
1517
"github.com/NdoleStudio/httpsms/pkg/telemetry"
16-
"github.com/carlmjohnson/requests"
1718
cloudevents "github.com/cloudevents/sdk-go/v2"
1819
"github.com/palantir/stacktrace"
1920
)
@@ -71,22 +72,47 @@ func (service *Integration3CXService) sendNotification(ctx context.Context, even
7172

7273
payload, err := service.getPayload(event)
7374
if err != nil {
74-
msg := fmt.Sprintf("cannot generate payload from [%s] event with ID [%s] for user [%s]", event.Type(), event.ID(), integration.UserID)
75+
msg := fmt.Sprintf("cannot generate [3cx] payload from [%s] event with ID [%s] for user [%s]", event.Type(), event.ID(), integration.UserID)
7576
ctxLogger.Error(service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg)))
77+
return
7678
}
7779

78-
var response string
79-
err = requests.URL(integration.WebhookURL).
80-
Client(service.client).
81-
BodyJSON(payload).
82-
ToString(&response).
83-
Fetch(ctx)
80+
body, err := json.Marshal(payload)
8481
if err != nil {
85-
msg := fmt.Sprintf("cannot send [%s] event to [3cx] webhook [%s] for user [%s]", event.Type(), integration.WebhookURL, integration.UserID)
82+
msg := fmt.Sprintf("cannot marshal [%T] for [%s] event with ID [%s] for user [%s]", payload, event.Type(), event.ID(), integration.UserID)
83+
ctxLogger.Error(service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg)))
84+
}
85+
86+
request, err := http.NewRequestWithContext(ctx, http.MethodPost, integration.WebhookURL, bytes.NewBuffer(body))
87+
if err != nil {
88+
msg := fmt.Sprintf("cannot create [%T] for [%s] event with ID [%s] for user [%s]", request, event.Type(), event.ID(), integration.UserID)
8689
ctxLogger.Error(service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg)))
90+
return
8791
}
92+
request.Header.Set("Content-Type", "application/json; charset=UTF-8")
8893

89-
ctxLogger.Info(fmt.Sprintf("sent [3cx] webhook to url [%s] for event [%s] with ID [%s] and response [%s]", integration.WebhookURL, event.Type(), event.ID(), response))
94+
response, err := service.client.Do(request)
95+
if err != nil {
96+
msg := fmt.Sprintf("cannot send [%s] event to [3cx] webhook [%s] for user [%s]", event.Type(), integration.WebhookURL, integration.UserID)
97+
ctxLogger.Error(service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg)))
98+
}
99+
defer func() {
100+
err = response.Body.Close()
101+
if err != nil {
102+
ctxLogger.Error(stacktrace.Propagate(err, "cannot close response body"))
103+
}
104+
}()
105+
106+
ctxLogger.Info(
107+
fmt.Sprintf(
108+
"sent [3cx] webhook to url [%s] for event [%s] with ID [%s] and response [%s] and code [%d]",
109+
integration.WebhookURL,
110+
event.Type(),
111+
event.ID(),
112+
response.Status,
113+
response.StatusCode,
114+
),
115+
)
90116
}
91117

92118
func (service *Integration3CXService) getPayload(event cloudevents.Event) (fiber.Map, error) {

0 commit comments

Comments
 (0)