MCPcopy Index your code
hub / github.com/NdoleStudio/httpsms / createRequest

Method createRequest

api/pkg/services/webhook_service.go:262–291  ·  view source on GitHub ↗
(ctx context.Context, event cloudevents.Event, webhook *entities.Webhook)

Source from the content-addressed store, hash-verified

260}
261
262func (service *WebhookService) createRequest(ctx context.Context, event cloudevents.Event, webhook *entities.Webhook) (*http.Request, error) {
263 ctx, span, ctxLogger := service.tracer.StartWithLogger(ctx, service.logger)
264 defer span.End()
265
266 payload, err := json.Marshal(service.getPayload(ctxLogger, event, webhook))
267 if err != nil {
268 msg := fmt.Sprintf("cannot marshal payload for user [%s] and webhook [%s] for event [%s]", webhook.UserID, webhook.ID, event.ID())
269 return nil, stacktrace.Propagate(err, msg)
270 }
271
272 request, err := http.NewRequestWithContext(ctx, http.MethodPost, webhook.URL, bytes.NewReader(payload))
273 if err != nil {
274 msg := fmt.Sprintf("cannot create request for user [%s] and webhook [%s] for event [%s]", webhook.UserID, webhook.ID, event.ID())
275 return nil, stacktrace.Propagate(err, msg)
276 }
277
278 request.Header.Add("X-Event-Type", event.Type())
279 request.Header.Set("Content-Type", "application/json")
280
281 if strings.TrimSpace(webhook.SigningKey) != "" {
282 token, err := service.getAuthToken(webhook)
283 if err != nil {
284 msg := fmt.Sprintf("cannot generate auth token for user [%s] and webhook [%s]", webhook.UserID, webhook.ID)
285 return nil, stacktrace.Propagate(err, msg)
286 }
287 request.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token))
288 }
289
290 return request, nil
291}
292
293func (service *WebhookService) getPayload(ctxLogger telemetry.Logger, event cloudevents.Event, webhook *entities.Webhook) any {
294 if event.Type() != events.EventTypeMessagePhoneReceived {

Callers 1

sendNotificationMethod · 0.95

Calls 4

getPayloadMethod · 0.95
getAuthTokenMethod · 0.95
StartWithLoggerMethod · 0.65
SetMethod · 0.65

Tested by

no test coverage detected