2018-10-30 07:20:13 +01:00
// Copyright 2018 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package private
import (
"fmt"
2019-12-17 01:49:07 +00:00
"io/ioutil"
"net/http"
2018-10-30 07:20:13 +01:00
"code.gitea.io/gitea/modules/setting"
)
2019-06-01 16:00:21 +01:00
// UpdatePublicKeyInRepo update public key and if necessary deploy key updates
func UpdatePublicKeyInRepo ( keyID , repoID int64 ) error {
2018-10-30 07:20:13 +01:00
// Ask for running deliver hook and test pull request tasks.
2019-06-01 16:00:21 +01:00
reqURL := setting . LocalURL + fmt . Sprintf ( "api/internal/ssh/%d/update/%d" , keyID , repoID )
2018-10-30 07:20:13 +01:00
resp , err := newInternalRequest ( reqURL , "POST" ) . Response ( )
if err != nil {
return err
}
defer resp . Body . Close ( )
// All 2XX status codes are accepted and others will return an error
if resp . StatusCode / 100 != 2 {
return fmt . Errorf ( "Failed to update public key: %s" , decodeJSONError ( resp ) . Err )
}
return nil
}
2019-12-17 01:49:07 +00:00
// AuthorizedPublicKeyByContent searches content as prefix (leak e-mail part)
// and returns public key found.
func AuthorizedPublicKeyByContent ( content string ) ( string , error ) {
// Ask for running deliver hook and test pull request tasks.
2020-03-30 19:52:45 +01:00
reqURL := setting . LocalURL + "api/internal/ssh/authorized_keys"
2019-12-17 01:49:07 +00:00
req := newInternalRequest ( reqURL , "POST" )
req . Param ( "content" , content )
resp , err := req . Response ( )
if err != nil {
return "" , err
}
defer resp . Body . Close ( )
// All 2XX status codes are accepted and others will return an error
if resp . StatusCode != http . StatusOK {
return "" , fmt . Errorf ( "Failed to update public key: %s" , decodeJSONError ( resp ) . Err )
}
bs , err := ioutil . ReadAll ( resp . Body )
return string ( bs ) , err
}