@@ -16,6 +16,7 @@ import (
1616const (
1717 AnalyticsMetricsMinXscVersion = "1.7.1"
1818 xscEventApi = "event"
19+ gitIntegrationEventApi = "git_integration_event"
1920 xscDeprecatedEventApiSuffix = "api/v1/" + xscEventApi
2021)
2122
@@ -38,7 +39,11 @@ func (vs *AnalyticsEventService) getAnalyticsEndPoint() string {
3839 return utils .AddTrailingSlashIfNeeded (vs .XscDetails .GetUrl ()) + xscDeprecatedEventApiSuffix
3940}
4041
41- func (vs * AnalyticsEventService ) sendPostRequest (requestContent []byte ) (resp * http.Response , body []byte , err error ) {
42+ func (vs * AnalyticsEventService ) getGitEventEndPoint () string {
43+ return utils .AddTrailingSlashIfNeeded (vs .XrayDetails .GetUrl ()) + xscutils .XscInXraySuffix + gitIntegrationEventApi
44+ }
45+
46+ func (vs * AnalyticsEventService ) sendAddGeneralEventPostRequest (requestContent []byte ) (resp * http.Response , body []byte , err error ) {
4247 var httpClientDetails httputils.HttpClientDetails
4348 if vs .XrayDetails != nil {
4449 httpClientDetails = vs .XrayDetails .CreateHttpClientDetails ()
@@ -50,6 +55,12 @@ func (vs *AnalyticsEventService) sendPostRequest(requestContent []byte) (resp *h
5055 return
5156}
5257
58+ func (vs * AnalyticsEventService ) sendGitIntegrationPostRequest (requestContent []byte ) (resp * http.Response , body []byte , err error ) {
59+ var httpClientDetails = vs .XrayDetails .CreateHttpClientDetails ()
60+ resp , body , err = vs .client .SendPost (utils .AppendScopedProjectKeyParam (vs .getGitEventEndPoint (), vs .ScopeProjectKey ), requestContent , & httpClientDetails )
61+ return
62+ }
63+
5364func (vs * AnalyticsEventService ) sendPutRequest (requestContent []byte ) (resp * http.Response , body []byte , err error ) {
5465 var httpClientDetails httputils.HttpClientDetails
5566 if vs .XrayDetails != nil {
@@ -88,7 +99,7 @@ func (vs *AnalyticsEventService) AddGeneralEvent(event XscAnalyticsGeneralEvent,
8899 return "" , errorutils .CheckError (err )
89100 }
90101 }
91- resp , body , err := vs .sendPostRequest (requestContent )
102+ resp , body , err := vs .sendAddGeneralEventPostRequest (requestContent )
92103 if err != nil {
93104 return "" , err
94105 }
@@ -100,6 +111,25 @@ func (vs *AnalyticsEventService) AddGeneralEvent(event XscAnalyticsGeneralEvent,
100111 return response .MultiScanId , errorutils .CheckError (err )
101112}
102113
114+ // SendGitIntegrationEvent sends a POST request to the /git_integration_event endpoint
115+ func (vs * AnalyticsEventService ) SendGitIntegrationEvent (event GitIntegrationEvent , xrayVersion string ) error {
116+ if err := utils .ValidateMinimumVersion (utils .Xray , xrayVersion , xscutils .MinXrayVersionGitIntegrationEvent ); err != nil {
117+ return fmt .Errorf ("git integration event version error %s: %w" , xscutils .MinXrayVersionGitIntegrationEvent , err )
118+ }
119+ requestBody , err := json .Marshal (event )
120+ if err != nil {
121+ return errorutils .CheckError (err )
122+ }
123+ resp , body , err := vs .sendGitIntegrationPostRequest (requestBody )
124+ if err != nil {
125+ return errorutils .CheckError (err )
126+ }
127+ if err = errorutils .CheckResponseStatus (resp , http .StatusCreated ); err != nil {
128+ return errorutils .CheckError (errorutils .GenerateResponseError (resp .Status , utils .IndentJson (body )))
129+ }
130+ return nil
131+ }
132+
103133// UpdateGeneralEvent update finalized analytics metrics info of an existing event.
104134func (vs * AnalyticsEventService ) UpdateGeneralEvent (event XscAnalyticsGeneralEventFinalize ) error {
105135 requestContent , err := json .Marshal (event )
@@ -201,6 +231,16 @@ type PullRequestContext struct {
201231 PullRequestTitle string `json:"pull_request_title,omitempty"`
202232}
203233
234+ type GitIntegrationEvent struct {
235+ EventType string `json:"event_type"`
236+ GitProvider string `json:"git_provider"`
237+ GitOwner string `json:"git_owner"`
238+ GitRepository string `json:"git_repository"`
239+ GitBranch string `json:"git_branch"`
240+ EventStatus string `json:"event_status"`
241+ FailureReason string `json:"failure_reason,omitempty"`
242+ }
243+
204244type XscAnalyticsGeneralEventFinalize struct {
205245 XscAnalyticsBasicGeneralEvent
206246 MultiScanId string `json:"multi_scan_id,omitempty"`
0 commit comments