@@ -10,6 +10,7 @@ import (
1010 "encoding/base64"
1111 "errors"
1212 "fmt"
13+ "net/url"
1314
1415 "code.gitea.io/sdk/gitea"
1516 deliveryv1alpha1 "github.com/open-component-model/git-controller/apis/delivery/v1alpha1"
@@ -22,9 +23,8 @@ import (
2223)
2324
2425const (
25- tokenKey = "password"
26- providerType = "gitea"
27- defaultDomain = "gitea.com"
26+ tokenKey = "password"
27+ providerType = "gitea"
2828)
2929
3030// Client gitea.
@@ -65,9 +65,9 @@ func (c *Client) CreateRepository(ctx context.Context, obj mpasv1alpha1.Reposito
6565 return fmt .Errorf ("token '%s' not found in secret" , tokenKey )
6666 }
6767
68- domain := defaultDomain
69- if obj . Spec . Domain != "" {
70- domain = obj . Spec . Domain
68+ domain , err := c . getDomain ( obj )
69+ if err != nil {
70+ return fmt . Errorf ( "failed to generate domain url: %w" , err )
7171 }
7272
7373 client , err := gitea .NewClient (domain , gitea .SetToken (string (token )))
@@ -167,9 +167,9 @@ func (c *Client) CreatePullRequest(ctx context.Context, branch string, sync deli
167167 return - 1 , fmt .Errorf ("token '%s' not found in secret" , tokenKey )
168168 }
169169
170- domain := defaultDomain
171- if repository . Spec . Domain != "" {
172- domain = repository . Spec . Domain
170+ domain , err := c . getDomain ( repository )
171+ if err != nil {
172+ return - 1 , fmt . Errorf ( "failed to generate domain url: %w" , err )
173173 }
174174
175175 gclient , err := gitea .NewClient (domain , gitea .SetToken (string (token )))
@@ -237,9 +237,9 @@ func (c *Client) CreateBranchProtection(ctx context.Context, repository mpasv1al
237237
238238 logger .Info ("got secret" )
239239
240- domain := defaultDomain
241- if repository . Spec . Domain != "" {
242- domain = repository . Spec . Domain
240+ domain , err := c . getDomain ( repository )
241+ if err != nil {
242+ return fmt . Errorf ( "failed to generate domain url: %w" , err )
243243 }
244244
245245 logger .Info ("default domain set" , "domain" , domain )
@@ -267,3 +267,15 @@ func (c *Client) CreateBranchProtection(ctx context.Context, repository mpasv1al
267267
268268 return nil
269269}
270+
271+ func (c * Client ) getDomain (obj mpasv1alpha1.Repository ) (string , error ) {
272+ u , err := url .Parse (obj .GetRepositoryURL ())
273+ if err != nil {
274+ return "" , fmt .Errorf ("failed to parse repository url: %w" , err )
275+ }
276+
277+ // construct the domain including the scheme and host but without the path
278+ // gitea requires a host and a scheme
279+ domain := fmt .Sprintf ("%s://%s" , u .Scheme , u .Host )
280+ return domain , nil
281+ }
0 commit comments