Merge pull request #434 from gabriel-samfira/update-deps
Update dependencies.
This commit is contained in:
commit
77b3ec3cdd
390 changed files with 1318 additions and 61176 deletions
27
go.mod
27
go.mod
|
|
@ -6,15 +6,15 @@ toolchain go1.23.6
|
|||
|
||||
require (
|
||||
github.com/BurntSushi/toml v1.5.0
|
||||
github.com/bradleyfalzon/ghinstallation/v2 v2.15.0
|
||||
github.com/cloudbase/garm-provider-common v0.1.4
|
||||
github.com/bradleyfalzon/ghinstallation/v2 v2.16.0
|
||||
github.com/cloudbase/garm-provider-common v0.1.5
|
||||
github.com/felixge/httpsnoop v1.0.4
|
||||
github.com/go-openapi/errors v0.22.1
|
||||
github.com/go-openapi/runtime v0.28.0
|
||||
github.com/go-openapi/strfmt v0.23.0
|
||||
github.com/go-openapi/swag v0.23.1
|
||||
github.com/golang-jwt/jwt/v5 v5.2.2
|
||||
github.com/google/go-github/v57 v57.0.0
|
||||
github.com/google/go-github/v72 v72.0.0
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/gorilla/handlers v1.5.2
|
||||
github.com/gorilla/mux v1.8.1
|
||||
|
|
@ -28,15 +28,15 @@ require (
|
|||
github.com/prometheus/client_golang v1.22.0
|
||||
github.com/spf13/cobra v1.9.1
|
||||
github.com/stretchr/testify v1.10.0
|
||||
golang.org/x/crypto v0.38.0
|
||||
golang.org/x/crypto v0.39.0
|
||||
golang.org/x/oauth2 v0.30.0
|
||||
golang.org/x/sync v0.14.0
|
||||
golang.org/x/sync v0.15.0
|
||||
gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1
|
||||
gorm.io/datatypes v1.2.5
|
||||
gorm.io/driver/mysql v1.5.7
|
||||
gorm.io/driver/sqlite v1.5.7
|
||||
gorm.io/gorm v1.26.1
|
||||
gorm.io/driver/mysql v1.6.0
|
||||
gorm.io/driver/sqlite v1.6.0
|
||||
gorm.io/gorm v1.30.0
|
||||
)
|
||||
|
||||
require (
|
||||
|
|
@ -46,7 +46,7 @@ require (
|
|||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/chzyer/readline v1.5.1 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/go-logr/logr v1.4.2 // indirect
|
||||
github.com/go-logr/logr v1.4.3 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-openapi/analysis v0.23.0 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.21.1 // indirect
|
||||
|
|
@ -54,9 +54,8 @@ require (
|
|||
github.com/go-openapi/loads v0.22.0 // indirect
|
||||
github.com/go-openapi/spec v0.21.0 // indirect
|
||||
github.com/go-openapi/validate v0.24.0 // indirect
|
||||
github.com/go-sql-driver/mysql v1.9.2 // indirect
|
||||
github.com/go-sql-driver/mysql v1.9.3 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
|
||||
github.com/google/go-github/v71 v71.0.0 // indirect
|
||||
github.com/google/go-querystring v1.1.0 // indirect
|
||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||
|
|
@ -82,14 +81,14 @@ require (
|
|||
github.com/spf13/pflag v1.0.6 // indirect
|
||||
github.com/stretchr/objx v0.5.2 // indirect
|
||||
github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569 // indirect
|
||||
go.mongodb.org/mongo-driver v1.17.3 // indirect
|
||||
go.mongodb.org/mongo-driver v1.17.4 // indirect
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
||||
go.opentelemetry.io/otel v1.36.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.36.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.36.0 // indirect
|
||||
golang.org/x/net v0.40.0 // indirect
|
||||
golang.org/x/net v0.41.0 // indirect
|
||||
golang.org/x/sys v0.33.0 // indirect
|
||||
golang.org/x/text v0.25.0 // indirect
|
||||
golang.org/x/text v0.26.0 // indirect
|
||||
google.golang.org/protobuf v1.36.6 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
|
|
|||
56
go.sum
56
go.sum
|
|
@ -6,8 +6,8 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3d
|
|||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/bradleyfalzon/ghinstallation/v2 v2.15.0 h1:7r2rPUM04rgszMP0U1UZ1M5VoVVIlsaBSnpABfYxcQY=
|
||||
github.com/bradleyfalzon/ghinstallation/v2 v2.15.0/go.mod h1:PoH9Vhy82OeRFZfxsVrk3mfQhVkEzou9OOwPOsEhiXE=
|
||||
github.com/bradleyfalzon/ghinstallation/v2 v2.16.0 h1:B91r9bHtXp/+XRgS5aZm6ZzTdz3ahgJYmkt4xZkgDz8=
|
||||
github.com/bradleyfalzon/ghinstallation/v2 v2.16.0/go.mod h1:OeVe5ggFzoBnmgitZe/A+BqGOnv1DvU/0uiLQi1wutM=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||
|
|
@ -19,8 +19,8 @@ github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObk
|
|||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
|
||||
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
|
||||
github.com/cloudbase/garm-provider-common v0.1.4 h1:spRjl0PV4r8vKaCTNp6xBQbRKfls/cmbBEl/i/eGWSo=
|
||||
github.com/cloudbase/garm-provider-common v0.1.4/go.mod h1:sK26i2NpjjAjhanNKiWw8iPkqt+XeohTKpFnEP7JdZ4=
|
||||
github.com/cloudbase/garm-provider-common v0.1.5 h1:aJL646l+VnZceQ2grbDYhWfxYpaQR2/QsUSD76kSZVs=
|
||||
github.com/cloudbase/garm-provider-common v0.1.5/go.mod h1:2O51WbcfqRx5fDHyyJgIFq7KdTZZnefsM+aoOchyleU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
|
|
@ -28,8 +28,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
|
|||
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
||||
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
|
||||
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU=
|
||||
|
|
@ -52,9 +52,8 @@ github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZ
|
|||
github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
|
||||
github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58=
|
||||
github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ=
|
||||
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
|
||||
github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU=
|
||||
github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
|
||||
github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo=
|
||||
github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
|
||||
|
|
@ -66,10 +65,8 @@ github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EO
|
|||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||
github.com/google/go-github/v57 v57.0.0 h1:L+Y3UPTY8ALM8x+TV0lg+IEBI+upibemtBD8Q9u7zHs=
|
||||
github.com/google/go-github/v57 v57.0.0/go.mod h1:s0omdnye0hvK/ecLvpsGfJMiRt85PimQh4oygmLIxHw=
|
||||
github.com/google/go-github/v71 v71.0.0 h1:Zi16OymGKZZMm8ZliffVVJ/Q9YZreDKONCr+WUd0Z30=
|
||||
github.com/google/go-github/v71 v71.0.0/go.mod h1:URZXObp2BLlMjwu0O8g4y6VBneUj2bCHgnI8FfgZ51M=
|
||||
github.com/google/go-github/v72 v72.0.0 h1:FcIO37BLoVPBO9igQQ6tStsv2asG4IPcYFi655PPvBM=
|
||||
github.com/google/go-github/v72 v72.0.0/go.mod h1:WWtw8GMRiL62mvIquf1kO3onRHeWWKmK01qdCY8c5fg=
|
||||
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
|
||||
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
|
|
@ -178,8 +175,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf
|
|||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569 h1:xzABM9let0HLLqFypcxvLmlvEciCHL7+Lv+4vwZqecI=
|
||||
github.com/teris-io/shortid v0.0.0-20220617161101-71ec9f2aa569/go.mod h1:2Ly+NIftZN4de9zRmENdYbvPQeaVIYKWpLFStLFEBgI=
|
||||
go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ=
|
||||
go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
|
||||
go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw=
|
||||
go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
|
||||
go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg=
|
||||
|
|
@ -190,21 +187,21 @@ go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucg
|
|||
go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
|
||||
go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w=
|
||||
go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA=
|
||||
golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8=
|
||||
golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
|
||||
golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY=
|
||||
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
|
||||
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
|
||||
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
|
||||
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
|
||||
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
|
||||
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
|
||||
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
|
||||
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
|
||||
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
|
||||
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
|
||||
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
|
||||
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
|
||||
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
|
||||
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
||||
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
||||
|
|
@ -222,14 +219,13 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gorm.io/datatypes v1.2.5 h1:9UogU3jkydFVW1bIVVeoYsTpLRgwDVW3rHfJG6/Ek9I=
|
||||
gorm.io/datatypes v1.2.5/go.mod h1:I5FUdlKpLb5PMqeMQhm30CQ6jXP8Rj89xkTeCSAaAD4=
|
||||
gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
|
||||
gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
|
||||
gorm.io/driver/mysql v1.6.0 h1:eNbLmNTpPpTOVZi8MMxCi2aaIm0ZpInbORNXDwyLGvg=
|
||||
gorm.io/driver/mysql v1.6.0/go.mod h1:D/oCC2GWK3M/dqoLxnOlaNKmXz8WNTfcS9y5ovaSqKo=
|
||||
gorm.io/driver/postgres v1.5.0 h1:u2FXTy14l45qc3UeCJ7QaAXZmZfDDv0YrthvmRq1l0U=
|
||||
gorm.io/driver/postgres v1.5.0/go.mod h1:FUZXzO+5Uqg5zzwzv4KK49R8lvGIyscBOqYrtI1Ce9A=
|
||||
gorm.io/driver/sqlite v1.5.7 h1:8NvsrhP0ifM7LX9G4zPB97NwovUakUxc+2V2uuf3Z1I=
|
||||
gorm.io/driver/sqlite v1.5.7/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4=
|
||||
gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ=
|
||||
gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8=
|
||||
gorm.io/driver/sqlserver v1.5.4 h1:xA+Y1KDNspv79q43bPyjDMUgHoYHLhXYmdFcYPobg8g=
|
||||
gorm.io/driver/sqlserver v1.5.4/go.mod h1:+frZ/qYmuna11zHPlh5oc2O6ZA/lS88Keb0XSH1Zh/g=
|
||||
gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
|
||||
gorm.io/gorm v1.26.1 h1:ghB2gUI9FkS46luZtn6DLZ0f6ooBJ5IbVej2ENFDjRw=
|
||||
gorm.io/gorm v1.26.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
|
||||
gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs=
|
||||
gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/bradleyfalzon/ghinstallation/v2"
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
"github.com/google/uuid"
|
||||
"golang.org/x/oauth2"
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ package mocks
|
|||
import (
|
||||
context "context"
|
||||
|
||||
github "github.com/google/go-github/v57/github"
|
||||
github "github.com/google/go-github/v72/github"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
|
||||
params "github.com/cloudbase/garm/params"
|
||||
|
|
@ -302,7 +302,7 @@ func (_m *GithubClient) ListEntityRunnerApplicationDownloads(ctx context.Context
|
|||
}
|
||||
|
||||
// ListEntityRunners provides a mock function with given fields: ctx, opts
|
||||
func (_m *GithubClient) ListEntityRunners(ctx context.Context, opts *github.ListOptions) (*github.Runners, *github.Response, error) {
|
||||
func (_m *GithubClient) ListEntityRunners(ctx context.Context, opts *github.ListRunnersOptions) (*github.Runners, *github.Response, error) {
|
||||
ret := _m.Called(ctx, opts)
|
||||
|
||||
if len(ret) == 0 {
|
||||
|
|
@ -312,10 +312,10 @@ func (_m *GithubClient) ListEntityRunners(ctx context.Context, opts *github.List
|
|||
var r0 *github.Runners
|
||||
var r1 *github.Response
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *github.ListOptions) (*github.Runners, *github.Response, error)); ok {
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *github.ListRunnersOptions) (*github.Runners, *github.Response, error)); ok {
|
||||
return rf(ctx, opts)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *github.ListOptions) *github.Runners); ok {
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *github.ListRunnersOptions) *github.Runners); ok {
|
||||
r0 = rf(ctx, opts)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
|
|
@ -323,7 +323,7 @@ func (_m *GithubClient) ListEntityRunners(ctx context.Context, opts *github.List
|
|||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(context.Context, *github.ListOptions) *github.Response); ok {
|
||||
if rf, ok := ret.Get(1).(func(context.Context, *github.ListRunnersOptions) *github.Response); ok {
|
||||
r1 = rf(ctx, opts)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
|
|
@ -331,7 +331,7 @@ func (_m *GithubClient) ListEntityRunners(ctx context.Context, opts *github.List
|
|||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(2).(func(context.Context, *github.ListOptions) error); ok {
|
||||
if rf, ok := ret.Get(2).(func(context.Context, *github.ListRunnersOptions) error); ok {
|
||||
r2 = rf(ctx, opts)
|
||||
} else {
|
||||
r2 = ret.Error(2)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ package mocks
|
|||
import (
|
||||
context "context"
|
||||
|
||||
github "github.com/google/go-github/v57/github"
|
||||
github "github.com/google/go-github/v72/github"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ package mocks
|
|||
import (
|
||||
context "context"
|
||||
|
||||
github "github.com/google/go-github/v57/github"
|
||||
github "github.com/google/go-github/v72/github"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
|
||||
params "github.com/cloudbase/garm/params"
|
||||
|
|
@ -263,7 +263,7 @@ func (_m *GithubEntityOperations) ListEntityRunnerApplicationDownloads(ctx conte
|
|||
}
|
||||
|
||||
// ListEntityRunners provides a mock function with given fields: ctx, opts
|
||||
func (_m *GithubEntityOperations) ListEntityRunners(ctx context.Context, opts *github.ListOptions) (*github.Runners, *github.Response, error) {
|
||||
func (_m *GithubEntityOperations) ListEntityRunners(ctx context.Context, opts *github.ListRunnersOptions) (*github.Runners, *github.Response, error) {
|
||||
ret := _m.Called(ctx, opts)
|
||||
|
||||
if len(ret) == 0 {
|
||||
|
|
@ -273,10 +273,10 @@ func (_m *GithubEntityOperations) ListEntityRunners(ctx context.Context, opts *g
|
|||
var r0 *github.Runners
|
||||
var r1 *github.Response
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *github.ListOptions) (*github.Runners, *github.Response, error)); ok {
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *github.ListRunnersOptions) (*github.Runners, *github.Response, error)); ok {
|
||||
return rf(ctx, opts)
|
||||
}
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *github.ListOptions) *github.Runners); ok {
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *github.ListRunnersOptions) *github.Runners); ok {
|
||||
r0 = rf(ctx, opts)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
|
|
@ -284,7 +284,7 @@ func (_m *GithubEntityOperations) ListEntityRunners(ctx context.Context, opts *g
|
|||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(1).(func(context.Context, *github.ListOptions) *github.Response); ok {
|
||||
if rf, ok := ret.Get(1).(func(context.Context, *github.ListRunnersOptions) *github.Response); ok {
|
||||
r1 = rf(ctx, opts)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
|
|
@ -292,7 +292,7 @@ func (_m *GithubEntityOperations) ListEntityRunners(ctx context.Context, opts *g
|
|||
}
|
||||
}
|
||||
|
||||
if rf, ok := ret.Get(2).(func(context.Context, *github.ListOptions) error); ok {
|
||||
if rf, ok := ret.Get(2).(func(context.Context, *github.ListRunnersOptions) error); ok {
|
||||
r2 = rf(ctx, opts)
|
||||
} else {
|
||||
r2 = ret.Error(2)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ package mocks
|
|||
import (
|
||||
context "context"
|
||||
|
||||
github "github.com/google/go-github/v57/github"
|
||||
github "github.com/google/go-github/v72/github"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ package mocks
|
|||
import (
|
||||
context "context"
|
||||
|
||||
github "github.com/google/go-github/v57/github"
|
||||
github "github.com/google/go-github/v72/github"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package common
|
|||
import (
|
||||
"context"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
|
||||
"github.com/cloudbase/garm/params"
|
||||
)
|
||||
|
|
@ -14,7 +14,7 @@ type GithubEntityOperations interface {
|
|||
CreateEntityHook(ctx context.Context, hook *github.Hook) (ret *github.Hook, err error)
|
||||
DeleteEntityHook(ctx context.Context, id int64) (ret *github.Response, err error)
|
||||
PingEntityHook(ctx context.Context, id int64) (ret *github.Response, err error)
|
||||
ListEntityRunners(ctx context.Context, opts *github.ListOptions) (*github.Runners, *github.Response, error)
|
||||
ListEntityRunners(ctx context.Context, opts *github.ListRunnersOptions) (*github.Runners, *github.Response, error)
|
||||
ListEntityRunnerApplicationDownloads(ctx context.Context) ([]*github.RunnerApplicationDownload, *github.Response, error)
|
||||
RemoveEntityRunner(ctx context.Context, runnerID int64) (*github.Response, error)
|
||||
CreateEntityRegistrationToken(ctx context.Context) (*github.RegistrationToken, *github.Response, error)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
runnerErrors "github.com/cloudbase/garm-provider-common/errors"
|
||||
|
|
@ -21,16 +21,12 @@ func validateHookRequest(controllerID, baseURL string, allHooks []*github.Hook,
|
|||
|
||||
partialMatches := []string{}
|
||||
for _, hook := range allHooks {
|
||||
hookURL, ok := hook.Config["url"].(string)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
hookURL = strings.ToLower(hookURL)
|
||||
hookURL := strings.ToLower(hook.GetURL())
|
||||
|
||||
if hook.Config["url"] == req.Config["url"] {
|
||||
if hook.GetURL() == req.GetURL() {
|
||||
return runnerErrors.NewConflictError("hook already installed")
|
||||
} else if strings.Contains(hookURL, controllerID) || strings.Contains(hookURL, parsed.Hostname()) {
|
||||
partialMatches = append(partialMatches, hook.Config["url"].(string))
|
||||
partialMatches = append(partialMatches, hook.GetURL())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -42,23 +38,15 @@ func validateHookRequest(controllerID, baseURL string, allHooks []*github.Hook,
|
|||
}
|
||||
|
||||
func hookToParamsHookInfo(hook *github.Hook) params.HookInfo {
|
||||
var hookURL string
|
||||
url, ok := hook.Config["url"]
|
||||
if ok {
|
||||
hookURL = url.(string)
|
||||
}
|
||||
|
||||
var insecureSSL bool
|
||||
insecureSSLConfig, ok := hook.Config["insecure_ssl"]
|
||||
if ok {
|
||||
if insecureSSLConfig.(string) == "1" {
|
||||
insecureSSL = true
|
||||
}
|
||||
config := hook.GetConfig()
|
||||
if config != nil {
|
||||
insecureSSL = config.GetInsecureSSL() == "1"
|
||||
}
|
||||
|
||||
return params.HookInfo{
|
||||
ID: *hook.ID,
|
||||
URL: hookURL,
|
||||
URL: hook.GetURL(),
|
||||
Events: hook.Events,
|
||||
Active: *hook.Active,
|
||||
InsecureSSL: insecureSSL,
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
"github.com/google/uuid"
|
||||
"github.com/pkg/errors"
|
||||
"golang.org/x/sync/errgroup"
|
||||
|
|
@ -1931,12 +1931,12 @@ func (r *basePoolManager) InstallWebhook(ctx context.Context, param params.Insta
|
|||
insecureSSL = "1"
|
||||
}
|
||||
req := &github.Hook{
|
||||
Active: github.Bool(true),
|
||||
Config: map[string]interface{}{
|
||||
"url": r.controllerInfo.ControllerWebhookURL,
|
||||
"content_type": "json",
|
||||
"insecure_ssl": insecureSSL,
|
||||
"secret": r.WebhookSecret(),
|
||||
Active: github.Ptr(true),
|
||||
Config: &github.HookConfig{
|
||||
URL: github.Ptr(r.controllerInfo.ControllerWebhookURL),
|
||||
ContentType: github.Ptr("json"),
|
||||
InsecureSSL: github.Ptr(insecureSSL),
|
||||
Secret: github.Ptr(r.WebhookSecret()),
|
||||
},
|
||||
Events: []string{
|
||||
"workflow_job",
|
||||
|
|
@ -1998,8 +1998,10 @@ func (r *basePoolManager) FetchTools() ([]commonParams.RunnerApplicationDownload
|
|||
}
|
||||
|
||||
func (r *basePoolManager) GetGithubRunners() ([]*github.Runner, error) {
|
||||
opts := github.ListOptions{
|
||||
PerPage: 100,
|
||||
opts := github.ListRunnersOptions{
|
||||
ListOptions: github.ListOptions{
|
||||
PerPage: 100,
|
||||
},
|
||||
}
|
||||
var allRunners []*github.Runner
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package pool
|
|||
import (
|
||||
"context"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
|
||||
"github.com/cloudbase/garm/params"
|
||||
)
|
||||
|
|
@ -32,7 +32,7 @@ func (s *stubGithubClient) PingEntityHook(_ context.Context, _ int64) (*github.R
|
|||
return nil, s.err
|
||||
}
|
||||
|
||||
func (s *stubGithubClient) ListEntityRunners(_ context.Context, _ *github.ListOptions) (*github.Runners, *github.Response, error) {
|
||||
func (s *stubGithubClient) ListEntityRunners(_ context.Context, _ *github.ListRunnersOptions) (*github.Runners, *github.Response, error) {
|
||||
return nil, nil, s.err
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"sync"
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
|
||||
runnerErrors "github.com/cloudbase/garm-provider-common/errors"
|
||||
commonParams "github.com/cloudbase/garm-provider-common/params"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"log/slog"
|
||||
"os"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
"golang.org/x/oauth2"
|
||||
)
|
||||
|
||||
|
|
@ -141,8 +141,8 @@ func getGhOrgWebhook(url, ghToken, orgName string) (*github.Hook, error) {
|
|||
}
|
||||
|
||||
for _, hook := range ghOrgHooks {
|
||||
hookURL, ok := hook.Config["url"].(string)
|
||||
if ok && hookURL == url {
|
||||
hookURL := hook.GetURL()
|
||||
if hookURL == url {
|
||||
return hook, nil
|
||||
}
|
||||
}
|
||||
|
|
@ -158,8 +158,8 @@ func getGhRepoWebhook(url, ghToken, orgName, repoName string) (*github.Hook, err
|
|||
}
|
||||
|
||||
for _, hook := range ghRepoHooks {
|
||||
hookURL, ok := hook.Config["url"].(string)
|
||||
if ok && hookURL == url {
|
||||
hookURL := hook.GetURL()
|
||||
if hookURL == url {
|
||||
return hook, nil
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import (
|
|||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
|
||||
commonParams "github.com/cloudbase/garm-provider-common/params"
|
||||
"github.com/cloudbase/garm/params"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import (
|
|||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
|
||||
commonParams "github.com/cloudbase/garm-provider-common/params"
|
||||
"github.com/cloudbase/garm/params"
|
||||
|
|
@ -99,8 +99,8 @@ func getGhOrgWebhook(url, ghToken, orgName string) (*github.Hook, error) {
|
|||
}
|
||||
|
||||
for _, hook := range ghOrgHooks {
|
||||
hookURL, ok := hook.Config["url"].(string)
|
||||
if ok && hookURL == url {
|
||||
hookURL := hook.GetURL()
|
||||
if hookURL == url {
|
||||
return hook, nil
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import (
|
|||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
"golang.org/x/oauth2"
|
||||
|
||||
commonParams "github.com/cloudbase/garm-provider-common/params"
|
||||
|
|
@ -109,8 +109,8 @@ func getGhRepoWebhook(url, ghToken, orgName, repoName string) (*github.Hook, err
|
|||
}
|
||||
|
||||
for _, hook := range ghRepoHooks {
|
||||
hookURL, ok := hook.Config["url"].(string)
|
||||
if ok && hookURL == url {
|
||||
hookURL := hook.GetURL()
|
||||
if hookURL == url {
|
||||
return hook, nil
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import (
|
|||
"log/slog"
|
||||
"net/http"
|
||||
|
||||
"github.com/google/go-github/v57/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
runnerErrors "github.com/cloudbase/garm-provider-common/errors"
|
||||
|
|
@ -160,7 +160,7 @@ func (g *githubClient) PingEntityHook(ctx context.Context, id int64) (ret *githu
|
|||
return ret, err
|
||||
}
|
||||
|
||||
func (g *githubClient) ListEntityRunners(ctx context.Context, opts *github.ListOptions) (*github.Runners, *github.Response, error) {
|
||||
func (g *githubClient) ListEntityRunners(ctx context.Context, opts *github.ListRunnersOptions) (*github.Runners, *github.Response, error) {
|
||||
var ret *github.Runners
|
||||
var response *github.Response
|
||||
var err error
|
||||
|
|
@ -383,7 +383,7 @@ func (g *githubClient) GetEntityJITConfig(ctx context.Context, instance string,
|
|||
Labels: labels,
|
||||
// nolint:golangci-lint,godox
|
||||
// TODO(gabriel-samfira): Should we make this configurable?
|
||||
WorkFolder: github.String("_work"),
|
||||
WorkFolder: github.Ptr("_work"),
|
||||
}
|
||||
|
||||
metrics.GithubOperationCount.WithLabelValues(
|
||||
|
|
|
|||
2
vendor/github.com/bradleyfalzon/ghinstallation/v2/transport.go
generated
vendored
2
vendor/github.com/bradleyfalzon/ghinstallation/v2/transport.go
generated
vendored
|
|
@ -13,7 +13,7 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/google/go-github/v71/github"
|
||||
"github.com/google/go-github/v72/github"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
|||
1
vendor/github.com/cloudbase/garm-provider-common/params/params.go
generated
vendored
1
vendor/github.com/cloudbase/garm-provider-common/params/params.go
generated
vendored
|
|
@ -45,6 +45,7 @@ const (
|
|||
InstancePendingDelete InstanceStatus = "pending_delete"
|
||||
InstancePendingForceDelete InstanceStatus = "pending_force_delete"
|
||||
InstanceDeleting InstanceStatus = "deleting"
|
||||
InstanceDeleted InstanceStatus = "deleted"
|
||||
InstancePendingCreate InstanceStatus = "pending_create"
|
||||
InstanceCreating InstanceStatus = "creating"
|
||||
InstanceStatusUnknown InstanceStatus = "unknown"
|
||||
|
|
|
|||
16
vendor/github.com/go-logr/logr/.golangci.yaml
generated
vendored
16
vendor/github.com/go-logr/logr/.golangci.yaml
generated
vendored
|
|
@ -1,26 +1,28 @@
|
|||
version: "2"
|
||||
|
||||
run:
|
||||
timeout: 1m
|
||||
tests: true
|
||||
|
||||
linters:
|
||||
disable-all: true
|
||||
enable:
|
||||
default: none
|
||||
enable: # please keep this alphabetized
|
||||
- asasalint
|
||||
- asciicheck
|
||||
- copyloopvar
|
||||
- dupl
|
||||
- errcheck
|
||||
- forcetypeassert
|
||||
- goconst
|
||||
- gocritic
|
||||
- gofmt
|
||||
- goimports
|
||||
- gosimple
|
||||
- govet
|
||||
- ineffassign
|
||||
- misspell
|
||||
- musttag
|
||||
- revive
|
||||
- staticcheck
|
||||
- typecheck
|
||||
- unused
|
||||
|
||||
issues:
|
||||
exclude-use-default: false
|
||||
max-issues-per-linter: 0
|
||||
max-same-issues: 10
|
||||
|
|
|
|||
8
vendor/github.com/go-logr/logr/funcr/funcr.go
generated
vendored
8
vendor/github.com/go-logr/logr/funcr/funcr.go
generated
vendored
|
|
@ -77,7 +77,7 @@ func newSink(fn func(prefix, args string), formatter Formatter) logr.LogSink {
|
|||
write: fn,
|
||||
}
|
||||
// For skipping fnlogger.Info and fnlogger.Error.
|
||||
l.Formatter.AddCallDepth(1)
|
||||
l.AddCallDepth(1) // via Formatter
|
||||
return l
|
||||
}
|
||||
|
||||
|
|
@ -164,17 +164,17 @@ type fnlogger struct {
|
|||
}
|
||||
|
||||
func (l fnlogger) WithName(name string) logr.LogSink {
|
||||
l.Formatter.AddName(name)
|
||||
l.AddName(name) // via Formatter
|
||||
return &l
|
||||
}
|
||||
|
||||
func (l fnlogger) WithValues(kvList ...any) logr.LogSink {
|
||||
l.Formatter.AddValues(kvList)
|
||||
l.AddValues(kvList) // via Formatter
|
||||
return &l
|
||||
}
|
||||
|
||||
func (l fnlogger) WithCallDepth(depth int) logr.LogSink {
|
||||
l.Formatter.AddCallDepth(depth)
|
||||
l.AddCallDepth(depth) // via Formatter
|
||||
return &l
|
||||
}
|
||||
|
||||
|
|
|
|||
3
vendor/github.com/go-sql-driver/mysql/AUTHORS
generated
vendored
3
vendor/github.com/go-sql-driver/mysql/AUTHORS
generated
vendored
|
|
@ -25,6 +25,7 @@ Asta Xie <xiemengjun at gmail.com>
|
|||
B Lamarche <blam413 at gmail.com>
|
||||
Bes Dollma <bdollma@thousandeyes.com>
|
||||
Bogdan Constantinescu <bog.con.bc at gmail.com>
|
||||
Brad Higgins <brad at defined.net>
|
||||
Brian Hendriks <brian at dolthub.com>
|
||||
Bulat Gaifullin <gaifullinbf at gmail.com>
|
||||
Caine Jette <jette at alum.mit.edu>
|
||||
|
|
@ -37,6 +38,7 @@ Daniel Montoya <dsmontoyam at gmail.com>
|
|||
Daniel Nichter <nil at codenode.com>
|
||||
Daniël van Eeden <git at myname.nl>
|
||||
Dave Protasowski <dprotaso at gmail.com>
|
||||
Diego Dupin <diego.dupin at gmail.com>
|
||||
Dirkjan Bussink <d.bussink at gmail.com>
|
||||
DisposaBoy <disposaboy at dby.me>
|
||||
Egor Smolyakov <egorsmkv at gmail.com>
|
||||
|
|
@ -133,6 +135,7 @@ Ziheng Lyu <zihenglv at gmail.com>
|
|||
|
||||
Barracuda Networks, Inc.
|
||||
Counting Ltd.
|
||||
Defined Networking Inc.
|
||||
DigitalOcean Inc.
|
||||
Dolthub Inc.
|
||||
dyves labs AG
|
||||
|
|
|
|||
11
vendor/github.com/go-sql-driver/mysql/CHANGELOG.md
generated
vendored
11
vendor/github.com/go-sql-driver/mysql/CHANGELOG.md
generated
vendored
|
|
@ -1,5 +1,16 @@
|
|||
# Changelog
|
||||
|
||||
## v1.9.3 (2025-06-13)
|
||||
|
||||
* `tx.Commit()` and `tx.Rollback()` returned `ErrInvalidConn` always.
|
||||
Now they return cached real error if present. (#1690)
|
||||
|
||||
* Optimize reading small resultsets to fix performance regression
|
||||
introduced by compression protocol support. (#1707)
|
||||
|
||||
* Fix `db.Ping()` on compressed connection. (#1723)
|
||||
|
||||
|
||||
## v1.9.2 (2025-04-07)
|
||||
|
||||
v1.9.2 is a re-release of v1.9.1 due to a release process issue; no changes were made to the content.
|
||||
|
|
|
|||
18
vendor/github.com/go-sql-driver/mysql/buffer.go
generated
vendored
18
vendor/github.com/go-sql-driver/mysql/buffer.go
generated
vendored
|
|
@ -42,6 +42,11 @@ func (b *buffer) busy() bool {
|
|||
return len(b.buf) > 0
|
||||
}
|
||||
|
||||
// len returns how many bytes in the read buffer.
|
||||
func (b *buffer) len() int {
|
||||
return len(b.buf)
|
||||
}
|
||||
|
||||
// fill reads into the read buffer until at least _need_ bytes are in it.
|
||||
func (b *buffer) fill(need int, r readerFunc) error {
|
||||
// we'll move the contents of the current buffer to dest before filling it.
|
||||
|
|
@ -86,17 +91,10 @@ func (b *buffer) fill(need int, r readerFunc) error {
|
|||
|
||||
// returns next N bytes from buffer.
|
||||
// The returned slice is only guaranteed to be valid until the next read
|
||||
func (b *buffer) readNext(need int, r readerFunc) ([]byte, error) {
|
||||
if len(b.buf) < need {
|
||||
// refill
|
||||
if err := b.fill(need, r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
data := b.buf[:need]
|
||||
func (b *buffer) readNext(need int) []byte {
|
||||
data := b.buf[:need:need]
|
||||
b.buf = b.buf[need:]
|
||||
return data, nil
|
||||
return data
|
||||
}
|
||||
|
||||
// takeBuffer returns a buffer with the requested size.
|
||||
|
|
|
|||
21
vendor/github.com/go-sql-driver/mysql/compress.go
generated
vendored
21
vendor/github.com/go-sql-driver/mysql/compress.go
generated
vendored
|
|
@ -84,9 +84,9 @@ func (c *compIO) reset() {
|
|||
c.buff.Reset()
|
||||
}
|
||||
|
||||
func (c *compIO) readNext(need int, r readerFunc) ([]byte, error) {
|
||||
func (c *compIO) readNext(need int) ([]byte, error) {
|
||||
for c.buff.Len() < need {
|
||||
if err := c.readCompressedPacket(r); err != nil {
|
||||
if err := c.readCompressedPacket(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
|
@ -94,8 +94,8 @@ func (c *compIO) readNext(need int, r readerFunc) ([]byte, error) {
|
|||
return data[:need:need], nil // prevent caller writes into c.buff
|
||||
}
|
||||
|
||||
func (c *compIO) readCompressedPacket(r readerFunc) error {
|
||||
header, err := c.mc.buf.readNext(7, r) // size of compressed header
|
||||
func (c *compIO) readCompressedPacket() error {
|
||||
header, err := c.mc.readNext(7)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -103,7 +103,7 @@ func (c *compIO) readCompressedPacket(r readerFunc) error {
|
|||
|
||||
// compressed header structure
|
||||
comprLength := getUint24(header[0:3])
|
||||
compressionSequence := uint8(header[3])
|
||||
compressionSequence := header[3]
|
||||
uncompressedLength := getUint24(header[4:7])
|
||||
if debug {
|
||||
fmt.Printf("uncompress cmplen=%v uncomplen=%v pkt_cmp_seq=%v expected_cmp_seq=%v\n",
|
||||
|
|
@ -113,14 +113,13 @@ func (c *compIO) readCompressedPacket(r readerFunc) error {
|
|||
// Server may return error packet (e.g. 1153 Got a packet bigger than 'max_allowed_packet' bytes)
|
||||
// before receiving all packets from client. In this case, seqnr is younger than expected.
|
||||
// NOTE: Both of mariadbclient and mysqlclient do not check seqnr. Only server checks it.
|
||||
if debug && compressionSequence != c.mc.sequence {
|
||||
if debug && compressionSequence != c.mc.compressSequence {
|
||||
fmt.Printf("WARN: unexpected cmpress seq nr: expected %v, got %v",
|
||||
c.mc.sequence, compressionSequence)
|
||||
c.mc.compressSequence, compressionSequence)
|
||||
}
|
||||
c.mc.sequence = compressionSequence + 1
|
||||
c.mc.compressSequence = c.mc.sequence
|
||||
c.mc.compressSequence = compressionSequence + 1
|
||||
|
||||
comprData, err := c.mc.buf.readNext(comprLength, r)
|
||||
comprData, err := c.mc.readNext(comprLength)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -200,7 +199,7 @@ func (c *compIO) writeCompressedPacket(data []byte, uncompressedLen int) (int, e
|
|||
comprLength := len(data) - 7
|
||||
if debug {
|
||||
fmt.Printf(
|
||||
"writeCompressedPacket: comprLength=%v, uncompressedLen=%v, seq=%v",
|
||||
"writeCompressedPacket: comprLength=%v, uncompressedLen=%v, seq=%v\n",
|
||||
comprLength, uncompressedLen, mc.compressSequence)
|
||||
}
|
||||
|
||||
|
|
|
|||
49
vendor/github.com/go-sql-driver/mysql/packets.go
generated
vendored
49
vendor/github.com/go-sql-driver/mysql/packets.go
generated
vendored
|
|
@ -17,6 +17,7 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
"math"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
|
@ -25,19 +26,30 @@ import (
|
|||
// https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_PROTOCOL.html
|
||||
// https://mariadb.com/kb/en/clientserver-protocol/
|
||||
|
||||
// read n bytes from mc.buf
|
||||
func (mc *mysqlConn) readNext(n int) ([]byte, error) {
|
||||
if mc.buf.len() < n {
|
||||
err := mc.buf.fill(n, mc.readWithTimeout)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return mc.buf.readNext(n), nil
|
||||
}
|
||||
|
||||
// Read packet to buffer 'data'
|
||||
func (mc *mysqlConn) readPacket() ([]byte, error) {
|
||||
var prevData []byte
|
||||
invalidSequence := false
|
||||
|
||||
readNext := mc.buf.readNext
|
||||
readNext := mc.readNext
|
||||
if mc.compress {
|
||||
readNext = mc.compIO.readNext
|
||||
}
|
||||
|
||||
for {
|
||||
// read packet header
|
||||
data, err := readNext(4, mc.readWithTimeout)
|
||||
data, err := readNext(4)
|
||||
if err != nil {
|
||||
mc.close()
|
||||
if cerr := mc.canceled.Value(); cerr != nil {
|
||||
|
|
@ -51,17 +63,11 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
|
|||
pktLen := getUint24(data[:3])
|
||||
seq := data[3]
|
||||
|
||||
if mc.compress {
|
||||
// check packet sync [8 bit]
|
||||
if seq != mc.sequence {
|
||||
mc.log(fmt.Sprintf("[warn] unexpected sequence nr: expected %v, got %v", mc.sequence, seq))
|
||||
// MySQL and MariaDB doesn't check packet nr in compressed packet.
|
||||
if debug && seq != mc.compressSequence {
|
||||
fmt.Printf("[debug] mismatched compression sequence nr: expected: %v, got %v",
|
||||
mc.compressSequence, seq)
|
||||
}
|
||||
mc.compressSequence = seq + 1
|
||||
} else {
|
||||
// check packet sync [8 bit]
|
||||
if seq != mc.sequence {
|
||||
mc.log(fmt.Sprintf("[warn] unexpected seq nr: expected %v, got %v", mc.sequence, seq))
|
||||
if !mc.compress {
|
||||
// For large packets, we stop reading as soon as sync error.
|
||||
if len(prevData) > 0 {
|
||||
mc.close()
|
||||
|
|
@ -69,8 +75,8 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
|
|||
}
|
||||
invalidSequence = true
|
||||
}
|
||||
mc.sequence++
|
||||
}
|
||||
mc.sequence = seq + 1
|
||||
|
||||
// packets with length 0 terminate a previous packet which is a
|
||||
// multiple of (2^24)-1 bytes long
|
||||
|
|
@ -85,7 +91,7 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
|
|||
}
|
||||
|
||||
// read packet body [pktLen bytes]
|
||||
data, err = readNext(pktLen, mc.readWithTimeout)
|
||||
data, err = readNext(pktLen)
|
||||
if err != nil {
|
||||
mc.close()
|
||||
if cerr := mc.canceled.Value(); cerr != nil {
|
||||
|
|
@ -135,7 +141,7 @@ func (mc *mysqlConn) writePacket(data []byte) error {
|
|||
|
||||
// Write packet
|
||||
if debug {
|
||||
fmt.Printf("writePacket: size=%v seq=%v", size, mc.sequence)
|
||||
fmt.Fprintf(os.Stderr, "writePacket: size=%v seq=%v\n", size, mc.sequence)
|
||||
}
|
||||
|
||||
n, err := writeFunc(data[:4+size])
|
||||
|
|
@ -434,7 +440,9 @@ func (mc *mysqlConn) writeCommandPacket(command byte) error {
|
|||
data[4] = command
|
||||
|
||||
// Send CMD packet
|
||||
return mc.writePacket(data)
|
||||
err = mc.writePacket(data)
|
||||
mc.syncSequence()
|
||||
return err
|
||||
}
|
||||
|
||||
func (mc *mysqlConn) writeCommandPacketStr(command byte, arg string) error {
|
||||
|
|
@ -475,7 +483,9 @@ func (mc *mysqlConn) writeCommandPacketUint32(command byte, arg uint32) error {
|
|||
binary.LittleEndian.PutUint32(data[5:], arg)
|
||||
|
||||
// Send CMD packet
|
||||
return mc.writePacket(data)
|
||||
err = mc.writePacket(data)
|
||||
mc.syncSequence()
|
||||
return err
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
|
@ -945,7 +955,6 @@ func (stmt *mysqlStmt) writeCommandLongData(paramID int, arg []byte) error {
|
|||
pktLen = dataOffset + argLen
|
||||
}
|
||||
|
||||
stmt.mc.resetSequence()
|
||||
// Add command byte [1 byte]
|
||||
data[4] = comStmtSendLongData
|
||||
|
||||
|
|
@ -957,6 +966,8 @@ func (stmt *mysqlStmt) writeCommandLongData(paramID int, arg []byte) error {
|
|||
|
||||
// Send CMD packet
|
||||
err := stmt.mc.writePacket(data[:4+pktLen])
|
||||
// Every COM_LONG_DATA packet reset Packet Sequence
|
||||
stmt.mc.resetSequence()
|
||||
if err == nil {
|
||||
data = data[pktLen-dataOffset:]
|
||||
continue
|
||||
|
|
@ -964,8 +975,6 @@ func (stmt *mysqlStmt) writeCommandLongData(paramID int, arg []byte) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Reset Packet Sequence
|
||||
stmt.mc.resetSequence()
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
18
vendor/github.com/go-sql-driver/mysql/transaction.go
generated
vendored
18
vendor/github.com/go-sql-driver/mysql/transaction.go
generated
vendored
|
|
@ -13,18 +13,32 @@ type mysqlTx struct {
|
|||
}
|
||||
|
||||
func (tx *mysqlTx) Commit() (err error) {
|
||||
if tx.mc == nil || tx.mc.closed.Load() {
|
||||
if tx.mc == nil {
|
||||
return ErrInvalidConn
|
||||
}
|
||||
if tx.mc.closed.Load() {
|
||||
err = tx.mc.error()
|
||||
if err == nil {
|
||||
err = ErrInvalidConn
|
||||
}
|
||||
return
|
||||
}
|
||||
err = tx.mc.exec("COMMIT")
|
||||
tx.mc = nil
|
||||
return
|
||||
}
|
||||
|
||||
func (tx *mysqlTx) Rollback() (err error) {
|
||||
if tx.mc == nil || tx.mc.closed.Load() {
|
||||
if tx.mc == nil {
|
||||
return ErrInvalidConn
|
||||
}
|
||||
if tx.mc.closed.Load() {
|
||||
err = tx.mc.error()
|
||||
if err == nil {
|
||||
err = ErrInvalidConn
|
||||
}
|
||||
return
|
||||
}
|
||||
err = tx.mc.exec("ROLLBACK")
|
||||
tx.mc = nil
|
||||
return
|
||||
|
|
|
|||
487
vendor/github.com/google/go-github/v57/AUTHORS
generated
vendored
487
vendor/github.com/google/go-github/v57/AUTHORS
generated
vendored
|
|
@ -1,487 +0,0 @@
|
|||
# This is the official list of go-github authors for copyright purposes.
|
||||
#
|
||||
# This does not necessarily list everyone who has contributed code, since in
|
||||
# some cases, their employer may be the copyright holder. To see the full list
|
||||
# of contributors, see the revision history in source control or
|
||||
# https://github.com/google/go-github/graphs/contributors.
|
||||
#
|
||||
# Authors who wish to be recognized in this file should add themselves (or
|
||||
# their employer, as appropriate).
|
||||
|
||||
178inaba <masahiro.furudate@gmail.com>
|
||||
2BFL <imqksl@gmail.com>
|
||||
413x <dedifferentiator@gmail.com>
|
||||
6543 <6543@obermui.de>
|
||||
Abed Kibbe <abed.kibbe@gmail.com>
|
||||
Abhinav Gupta <mail@abhinavg.net>
|
||||
Abhishek Veeramalla <abhishek.veeramalla@gmail.com>
|
||||
aboy <b1011211@gmail.com>
|
||||
Adam Kohring <ajkohring@gmail.com>
|
||||
adrienzieba <adrien.zieba@appdirect.com>
|
||||
afdesk <work@afdesk.com>
|
||||
Ahmad Nurus S <ahmadnurus.sh@gmail.com>
|
||||
Ahmed Hagy <a.akram93@gmail.com>
|
||||
Aidan <aidan@artificial.com>
|
||||
Aidan Steele <aidan.steele@glassechidna.com.au>
|
||||
Ainsley Chong <ainsley.chong@gmail.com>
|
||||
ajz01 <azdenek@yahoo.com>
|
||||
Akeda Bagus <akeda@x-team.com>
|
||||
Akhil Mohan <akhilerm@gmail.com>
|
||||
Alec Thomas <alec@swapoff.org>
|
||||
Aleks Clark <aleks.clark@gmail.com>
|
||||
Alex Bramley <a.bramley@gmail.com>
|
||||
Alex Ellis <alexellis2@gmail.com>
|
||||
Alex Orr <Alexorr.CSE@gmail.com>
|
||||
Alex Su <alexsu@17.media>
|
||||
Alex Unger <zyxancf@gmail.com>
|
||||
Alexander Harkness <me@bearbin.net>
|
||||
Alexis Gauthiez <alexis.gauthiez@gmail.com>
|
||||
Ali Farooq <ali.farooq0@pm.me>
|
||||
Allan Guwatudde <guwats10@gmail.com>
|
||||
Allen Sun <shlallen1990@gmail.com>
|
||||
Amey Sakhadeo <me@ameyms.com>
|
||||
Anders Janmyr <anders@janmyr.com>
|
||||
Andreas Garnæs <https://github.com/andreas>
|
||||
Andrew Ryabchun <aryabchun@mail.ua>
|
||||
Andrew Svoboda <svoboda.andrew@gmail.com>
|
||||
Andy Grunwald <andygrunwald@gmail.com>
|
||||
Andy Hume <andyhume@gmail.com>
|
||||
Andy Lindeman <andy@lindeman.io>
|
||||
angie pinilla <angelinepinilla@gmail.com>
|
||||
anjanashenoy <anjanashenoy1@gmail.com>
|
||||
Anshuman Bhartiya <anshuman.bhartiya@gmail.com>
|
||||
Antoine <antoine.tu@mail.mcgill.ca>
|
||||
Antoine Pelisse <apelisse@gmail.com>
|
||||
Anton Nguyen <afnguyen85@gmail.com>
|
||||
Anubha Kushwaha <anubha_bt2k14@dtu.ac.in>
|
||||
appilon <apilon@hashicorp.com>
|
||||
aprp <doelaudi@gmail.com>
|
||||
apurwaj2 <apurwaj2@gmail.com>
|
||||
Aravind <aravindkp@outlook.in>
|
||||
Arda Kuyumcu <kuyumcuarda@gmail.com>
|
||||
Arıl Bozoluk <arilbozoluk@hotmail.com>
|
||||
Asier Marruedo <asiermarruedo@gmail.com>
|
||||
Austin Burdine <acburdine@gmail.com>
|
||||
Austin Dizzy <dizzy@wow.com>
|
||||
Azuka Okuleye <azuka@zatechcorp.com>
|
||||
Ben Batha <bhbatha@gmail.com>
|
||||
Benjamen Keroack <benjamen@dollarshaveclub.com>
|
||||
Berkay Tacyildiz <berkaytacyildiz@gmail.com>
|
||||
Beshr Kayali <beshrkayali@gmail.com>
|
||||
Beyang Liu <beyang.liu@gmail.com>
|
||||
Billy Keyes <bluekeyes@gmail.com>
|
||||
Billy Lynch <wlynch92@gmail.com>
|
||||
Bingtan Lu <lubingtan@126.com>
|
||||
Bjorn Neergaard <bjorn@neersighted.com>
|
||||
Björn Häuser <b.haeuser@rebuy.de>
|
||||
Bo Huang <bo.huang@datadoghq.com>
|
||||
boljen <bol.christophe@gmail.com>
|
||||
Bracken <abdawson@gmail.com>
|
||||
Brad Harris <bmharris@gmail.com>
|
||||
Brad Moylan <moylan.brad@gmail.com>
|
||||
Bradley Falzon <brad@teambrad.net>
|
||||
Bradley McAllister <brad.mcallister@hotmail.com>
|
||||
Brandon Butler <b.butler@chia.net>
|
||||
Brandon Cook <phylake@gmail.com>
|
||||
Brandon Stubbs <brstubbs1@gmail.com>
|
||||
Brett Kuhlman <kuhlman-labs@github.com>
|
||||
Brett Logan <lindluni@github.com>
|
||||
Brian Egizi <brian@mojotech.com>
|
||||
Bryan Boreham <bryan@weave.works>
|
||||
Bryan Peterson <Lazyshot@gmail.com>
|
||||
Cami Diez <diezcami@gmail.com>
|
||||
Carl Johnson <me@carlmjohnson.net>
|
||||
Carlos Alexandro Becker <caarlos0@gmail.com>
|
||||
Carlos Tadeu Panato Junior <ctadeu@gmail.com>
|
||||
ChandanChainani <chainanichan@gmail.com>
|
||||
chandresh-pancholi <chandreshpancholi007@gmail.com>
|
||||
Charles Fenwick Elliott <Charles@FenwickElliott.io>
|
||||
Charlie Yan <charlieyan08@gmail.com>
|
||||
Chmouel Boudjnah <chmouel@chmouel.com>
|
||||
Chris King <chriskingnet@gmail.com>
|
||||
Chris Mc <prince.chrismc@gmail.com>
|
||||
Chris Raborg <craborg57@gmail.com>
|
||||
Chris Roche <chris@vsco.co>
|
||||
Chris Schaefer <chris@dtzq.com>
|
||||
chrisforrette <chris@chrisforrette.com>
|
||||
Christian Bargmann <chris@cbrgm.net>
|
||||
Christian Muehlhaeuser <muesli@gmail.com>
|
||||
Christoph Jerolimov <jerolimov@gmail.com>
|
||||
Christoph Sassenberg <defsprite@gmail.com>
|
||||
CI Monk <ci-monk@protonmail.com>
|
||||
Colin Misare <github.com/cmisare>
|
||||
Craig Gumbley <craiggumbley@gmail.com>
|
||||
Craig Peterson <cpeterson@stackoverflow.com>
|
||||
Cristian Maglie <c.maglie@bug.st>
|
||||
Cyb3r Jak3 <jake@jwhite.network>
|
||||
Daehyeok Mun <daehyeok@gmail.com>
|
||||
Dalton Hubble <dghubble@gmail.com>
|
||||
Daniel Lanner <lanner.dan@gmail.com>
|
||||
Daniel Leavitt <daniel.leavitt@gmail.com>
|
||||
Daniel Nilsson <daniel.nilsson1989@gmail.com>
|
||||
Daoq <masseto2002@gmail.com>
|
||||
Dave Du Cros <davidducros@gmail.com>
|
||||
Dave Henderson <dhenderson@gmail.com>
|
||||
Dave Perrett <hello@daveperrett.com>
|
||||
Dave Protasowski <dprotaso@gmail.com>
|
||||
David Deng <daviddengcn@gmail.com>
|
||||
David Gamba <davidgamba@gmail.com>
|
||||
David J. M. Karlsen <david@davidkarlsen.com>
|
||||
David Jannotta <djannotta@gmail.com>
|
||||
David Ji <github.com/davidji99>
|
||||
David Lopez Reyes <davidlopezre@gmail.com>
|
||||
Davide Zipeto <dawez1@gmail.com>
|
||||
Dennis Webb <dennis@bluesentryit.com>
|
||||
Derek Jobst <derekjobst@gmail.com>
|
||||
DeviousLab <deviouslab@gmail.com>
|
||||
Dhi Aurrahman <diorahman@rockybars.com>
|
||||
Diego Lapiduz <diego.lapiduz@cfpb.gov>
|
||||
Diogo Vilela <be0x74a@gmail.com>
|
||||
Dmitri Shuralyov <shurcooL@gmail.com>
|
||||
dmnlk <seikima2demon@gmail.com>
|
||||
Don Petersen <don@donpetersen.net>
|
||||
Doug Turner <doug.turner@gmail.com>
|
||||
Drew Fradette <drew.fradette@gmail.com>
|
||||
Dustin Deus <deusdustin@gmail.com>
|
||||
Dustin Lish <dustin.lish@onepeloton.com>
|
||||
Eivind <eivindkn@gmail.com>
|
||||
Eli Uriegas <seemethere101@gmail.com>
|
||||
Elliott Beach <elliott2.71828@gmail.com>
|
||||
Emerson Wood <emersonwood94@gmail.com>
|
||||
Emil V <emil.vaagland@schibsted.com>
|
||||
Eng Zer Jun <engzerjun@gmail.com>
|
||||
eperm <staffordworrell@gmail.com>
|
||||
Erick Fejta <erick@fejta.com>
|
||||
Erik Nobel <hendrik.nobel@transferwise.com>
|
||||
erwinvaneyk <erwinvaneyk@gmail.com>
|
||||
Evan Anderson <evan.k.anderson@gmail.com>
|
||||
Evan Elias <evanjelias@gmail.com>
|
||||
Fabian Holler <fabian.holler@simplesurance.de>
|
||||
Fabrice <fabrice.vaillant@student.ecp.fr>
|
||||
Fatema-Moaiyadi <fatema.i.moaiyadi@gmail.com>
|
||||
Federico Di Pierro <nierro92@gmail.com>
|
||||
Felix Geisendörfer <felix@debuggable.com>
|
||||
Filippo Valsorda <hi@filippo.io>
|
||||
Florian Forster <ff@octo.it>
|
||||
Florian Wagner <h2floh@github.com>
|
||||
Francesc Gil <xescugil@gmail.com>
|
||||
Francis <hello@francismakes.com>
|
||||
Francisco Guimarães <francisco.cpg@gmail.com>
|
||||
François de Metz <francois@2metz.fr>
|
||||
Fredrik Jönsson <fredrik.jonsson@izettle.com>
|
||||
Gabriel <samfiragabriel@gmail.com>
|
||||
Gal Ofri <galmenashofri@gmail.com>
|
||||
Garrett Squire <garrettsquire@gmail.com>
|
||||
George Kontridze <george.kontridze@gmail.com>
|
||||
Georgy Buranov <gburanov@gmail.com>
|
||||
Glen Mailer <glenjamin@gmail.com>
|
||||
Gnahz <p@oath.pl>
|
||||
Google Inc.
|
||||
Grachev Mikhail <work@mgrachev.com>
|
||||
griffin_stewie <panterathefamilyguy@gmail.com>
|
||||
guangwu <guoguangwu@magic-shield.com>
|
||||
Guillaume Jacquet <guillaume.jacquet@gmail.com>
|
||||
Guz Alexander <kalimatas@gmail.com>
|
||||
Guðmundur Bjarni Ólafsson <gudmundur@github.com>
|
||||
Hanno Hecker <hanno.hecker@zalando.de>
|
||||
Hari haran <hariharan.uno@gmail.com>
|
||||
Harikesh00 <prajapatiharikesh16@gmail.com>
|
||||
haya14busa <haya14busa@gmail.com>
|
||||
haya14busa <hayabusa1419@gmail.com>
|
||||
Hiroki Ito <hiroki.ito.dev@gmail.com>
|
||||
Hubot Jr <rreichel3@github.com>
|
||||
Huy Tr <kingbazoka@gmail.com>
|
||||
huydx <doxuanhuy@gmail.com>
|
||||
i2bskn <i2bskn@gmail.com>
|
||||
Iain Steers <iainsteers@gmail.com>
|
||||
Ikko Ashimine <eltociear@gmail.com>
|
||||
Ilia Choly <ilia.choly@gmail.com>
|
||||
Ioannis Georgoulas <igeorgoulas21@gmail.com>
|
||||
Isao Jonas <isao.jonas@gmail.com>
|
||||
ishan upadhyay <ishanupadhyay412@gmail.com>
|
||||
isqua <isqua@isqua.ru>
|
||||
Jacob Valdemar <jan@lunar.app>
|
||||
Jake Krammer <jake.krammer1@gmail.com>
|
||||
Jake White <jake@jwhite.network>
|
||||
Jameel Haffejee <RC1140@republiccommandos.co.za>
|
||||
James Bowes <jbowes@repl.ca>
|
||||
James Cockbain <james.cockbain@ibm.com>
|
||||
James Loh <github@jloh.co>
|
||||
James Maguire <jvm986@gmail.com>
|
||||
James Turley <jamesturley1905@googlemail.com>
|
||||
Jamie West <jamieianwest@hotmail.com>
|
||||
Jan Kosecki <jan.kosecki91@gmail.com>
|
||||
Jan Švábík <jansvabik@jansvabik.cz>
|
||||
Jason Field <Jason@avon-lea.co.uk>
|
||||
Javier Campanini <jcampanini@palantir.com>
|
||||
Jef LeCompte <jeffreylec@gmail.com>
|
||||
Jeff Wenzbauer <jeff.wenzbauer@niceincontact.com>
|
||||
Jens Rantil <jens.rantil@gmail.com>
|
||||
Jeremy Morris <jeremylevanmorris@gmail.com>
|
||||
Jesse Haka <haka.jesse@gmail.com>
|
||||
Jesse Newland <jesse@jnewland.com>
|
||||
Jihoon Chung <j.c@navercorp.com>
|
||||
Jille Timmermans <jille@quis.cx>
|
||||
Jimmi Dyson <jimmidyson@gmail.com>
|
||||
Joan Saum <joan.saum@epitech.eu>
|
||||
Joe Tsai <joetsai@digital-static.net>
|
||||
John Barton <jrbarton@gmail.com>
|
||||
John Engelman <john.r.engelman@gmail.com>
|
||||
John Jones <john@exthilion.org>
|
||||
John Liu <john.liu@mongodb.com>
|
||||
Jordan Brockopp <jdbro94@gmail.com>
|
||||
Jordan Burandt <jordanburandt@gmail.com>
|
||||
Jordan Sussman <jordansail22@gmail.com>
|
||||
Jorge Gómez Reus <j-g1996@live.com>
|
||||
Joshua Bezaleel Abednego <joshua.bezaleel@gmail.com>
|
||||
João Cerqueira <joao@cerqueira.io>
|
||||
JP Phillips <jonphill9@gmail.com>
|
||||
jpbelanger-mtl <jp.belanger@gmail.com>
|
||||
Juan <juan.rios.28@gmail.com>
|
||||
Juan Basso <jrbasso@gmail.com>
|
||||
Julien Garcia Gonzalez <garciagonzalez.julien@gmail.com>
|
||||
Julien Rostand <jrostand@users.noreply.github.com>
|
||||
Junya Kono <junya03dance@gmail.com>
|
||||
Justin Abrahms <justin@abrah.ms>
|
||||
Justin Toh <tohjustin@hotmail.com>
|
||||
Jusung Lee <e.jusunglee@gmail.com>
|
||||
jzhoucliqr <jzhou@cliqr.com>
|
||||
k0ral <mail@cmoreau.info>
|
||||
k1rnt <eru08tera15mora@gmail.com>
|
||||
kadern0 <kaderno@gmail.com>
|
||||
Karthik Sundari <karthiksundari2315@gmail.com>
|
||||
Katrina Owen <kytrinyx@github.com>
|
||||
Kautilya Tripathi <tripathi.kautilya@gmail.com>
|
||||
Keita Urashima <ursm@ursm.jp>
|
||||
Kevin Burke <kev@inburke.com>
|
||||
Kevin Wang <kwangsan@gmail.com>
|
||||
Kevin Zhao <kzhao@lyft.com>
|
||||
kgalli <mail@kgalli.de>
|
||||
Kirill <g4s8.public@gmail.com>
|
||||
Konrad Malawski <konrad.malawski@project13.pl>
|
||||
Kookheon Kwon <kucuny@gmail.com>
|
||||
Krishna Indani <indanikrishna@gmail.com>
|
||||
Krzysztof Kowalczyk <kkowalczyk@gmail.com>
|
||||
Kshitij Saraogi <KshitijSaraogi@gmail.com>
|
||||
Kumar Saurabh <itsksaurabh@gmail.com>
|
||||
Kyle Kurz <kyle@doublekaudio.com>
|
||||
kyokomi <kyoko1220adword@gmail.com>
|
||||
Lars Lehtonen <lars.lehtonen@gmail.com>
|
||||
Laurent Verdoïa <verdoialaurent@gmail.com>
|
||||
leopoldwang <leopold.wang@gmail.com>
|
||||
Liam Galvin <liam@liam-galvin.co.uk>
|
||||
Lluis Campos <lluis.campos@northern.tech>
|
||||
Lovro Mažgon <lovro.mazgon@gmail.com>
|
||||
Loïs Postula <lois@postu.la>
|
||||
Luca Campese <me@campesel.net>
|
||||
Lucas Alcantara <lucasalcantaraf@gmail.com>
|
||||
Lucas Martin-King <lmartinking@gmail.com>
|
||||
Luis Davim <luis.davim@sendoso.com>
|
||||
Luke Evers <me@lukevers.com>
|
||||
Luke Hinds <luke@stacklok.com>
|
||||
Luke Kysow <lkysow@gmail.com>
|
||||
Luke Roberts <email@luke-roberts.co.uk>
|
||||
Luke Young <luke@hydrantlabs.org>
|
||||
lynn [they] <lynncyrin@gmail.com>
|
||||
Magnus Kulke <mkulke@gmail.com>
|
||||
Maksim Zhylinski <uzzable@gmail.com>
|
||||
Marc Binder <marcandrebinder@gmail.com>
|
||||
Marcelo Carlos <marcelo@permutive.com>
|
||||
Mark Tareshawty <tarebyte@github.com>
|
||||
Martin Holman <me@martinholman.co.nz>
|
||||
Martin-Louis Bright <mlbright@gmail.com>
|
||||
Martins Sipenko <martins.sipenko@gmail.com>
|
||||
Marwan Sulaiman <marwan.sameer@gmail.com>
|
||||
Masayuki Izumi <m@izum.in>
|
||||
Mat Geist <matgeist@gmail.com>
|
||||
Matija Horvat <horvat2112@gmail.com>
|
||||
Matin Rahmanian <itsmatinx@gmail.com>
|
||||
Matt <alpmatthew@gmail.com>
|
||||
Matt Brender <mjbrender@gmail.com>
|
||||
Matt Dainty <matt@bodgit-n-scarper.com>
|
||||
Matt Gaunt <matt@gauntface.co.uk>
|
||||
Matt Landis <landis.matt@gmail.com>
|
||||
Matt Moore <mattmoor@vmware.com>
|
||||
Matt Simons <mattsimons@ntlworld.com>
|
||||
Maxime Bury <maxime.bury@gmail.com>
|
||||
Michael Meng <mmeng@lyft.com>
|
||||
Michael Spiegel <michael.m.spiegel@gmail.com>
|
||||
Michael Tiller <michael.tiller@gmail.com>
|
||||
Michał Glapa <michal.glapa@gmail.com>
|
||||
Michelangelo Morrillo <michelangelo@morrillo.it>
|
||||
Miguel Elias dos Santos <migueleliasweb@gmail.com>
|
||||
Mike Chen <mchen300@gmail.com>
|
||||
mohammad ali <2018cs92@student.uet.edu.pk>
|
||||
Mohammed AlDujaili <avainer11@gmail.com>
|
||||
Mukundan Senthil <mukundan314@gmail.com>
|
||||
Munia Balayil <munia.247@gmail.com>
|
||||
Mustafa Abban <mustafaabban@utexas.edu>
|
||||
Nadav Kaner <nadavkaner1@gmail.com>
|
||||
Naoki Kanatani <k12naoki@gmail.com>
|
||||
Nathan VanBenschoten <nvanbenschoten@gmail.com>
|
||||
Navaneeth Suresh <navaneeths1998@gmail.com>
|
||||
Neal Caffery <neal1991@sina.com>
|
||||
Neil O'Toole <neilotoole@apache.org>
|
||||
Nick Miyake <nmiyake@palantir.com>
|
||||
Nick Platt <hello@nickplatt.co.uk>
|
||||
Nick Spragg <nick.spragg@bbc.co.uk>
|
||||
Nicolas Chapurlat <nc@coorganix.com>
|
||||
Nikhita Raghunath <nikitaraghunath@gmail.com>
|
||||
Nilesh Singh <nilesh.singh24@outlook.com>
|
||||
Noah Hanjun Lee <noah.lee@buzzvil.com>
|
||||
Noah Zoschke <noah+sso2@convox.com>
|
||||
ns-cweber <cweber@narrativescience.com>
|
||||
nxya <nathacutlan@gmail.com>
|
||||
Ole Orhagen <ole.orhagen@northern.tech>
|
||||
Oleg Kovalov <iamolegkovalov@gmail.com>
|
||||
Ondřej Kupka <ondra.cap@gmail.com>
|
||||
Ori Talmor <talmorori@gmail.com>
|
||||
Osama Faqhruldin <onfaqhru@gmail.com>
|
||||
oslowalk <den.cs@pm.me>
|
||||
Pablo Pérez Schröder <pablo.perezschroder@wetransfer.com>
|
||||
Palash Nigam <npalash25@gmail.com>
|
||||
Panagiotis Moustafellos <pmoust@gmail.com>
|
||||
Parham Alvani <parham.alvani@gmail.com>
|
||||
pari-27 <sonamajumdar2012@gmail.com>
|
||||
Parker Moore <parkrmoore@gmail.com>
|
||||
parkhyukjun89 <park.hyukjun89@gmail.com>
|
||||
Pat Alwell <pat.alwell@gmail.com>
|
||||
Patrick DeVivo <patrick.devivo@gmail.com>
|
||||
Patrick Marabeas <patrick@marabeas.io>
|
||||
Patrik Nordlén <patriki@gmail.com>
|
||||
Pavel Dvoinos <pavel.dvoinos@transferwise.com>
|
||||
Pavel Shtanko <pavel.shtanko@gmail.com>
|
||||
Pete Wagner <thepwagner@github.com>
|
||||
Petr Shevtsov <petr.shevtsov@gmail.com>
|
||||
Pierce McEntagart <pierce@nightfall.ai>
|
||||
Pierre Carrier <pierre@meteor.com>
|
||||
Piotr Zurek <p.zurek@gmail.com>
|
||||
Piyush Chugh <piyushchugh1993@gmail.com>
|
||||
Pratik Mallya <pratik.mallya@gmail.com>
|
||||
Qais Patankar <qaisjp@gmail.com>
|
||||
Quang Le Hong <iamquang95@gmail.com>
|
||||
Quentin Leffray <fiahil@gmail.com>
|
||||
Quinn Slack <qslack@qslack.com>
|
||||
Rackspace US, Inc.
|
||||
Radek Simko <radek.simko@gmail.com>
|
||||
Radliński Ignacy <radlinsk@student.agh.edu.pl>
|
||||
Rafael Aramizu Gomes <rafael.aramizu@mercadolivre.com>
|
||||
Rajat Jindal <rajatjindal83@gmail.com>
|
||||
Rajendra arora <rajendraarora16@yahoo.com>
|
||||
Rajkumar <princegosavi12@gmail.com>
|
||||
Ranbir Singh <binkkatal.r@gmail.com>
|
||||
Ravi Shekhar Jethani <rsjethani@gmail.com>
|
||||
RaviTeja Pothana <ravi-teja@live.com>
|
||||
rc1140 <jameel@republiccommandos.co.za>
|
||||
Red Hat, Inc.
|
||||
Reetuparna Mukherjee <reetuparna.1988@gmail.com>
|
||||
reeves122 <reeves122@gmail.com>
|
||||
Reinier Timmer <reinier.timmer@ah.nl>
|
||||
Renjith R <renjithr201097@gmail.com>
|
||||
Ricco Førgaard <ricco@fiskeben.dk>
|
||||
Richard de Vries <richard.de.vries@topicus.nl>
|
||||
Rob Figueiredo <robfig@yext.com>
|
||||
Rohit Upadhyay <urohit011@gmail.com>
|
||||
Rojan Dinc <rojand94@gmail.com>
|
||||
Ronak Jain <ronakjain@outlook.in>
|
||||
Ronan Pelliard <ronan.pelliard@datadoghq.com>
|
||||
Ross Gustafson <srgustafson8@icloud.com>
|
||||
Ruben Vereecken <rubenvereecken@gmail.com>
|
||||
Russell Boley <raboley@gmail.com>
|
||||
Ryan Leung <rleungx@gmail.com>
|
||||
Ryan Lower <rpjlower@gmail.com>
|
||||
Ryo Nakao <nakabonne@gmail.com>
|
||||
Saaarah <sarah.liusy@gmail.com>
|
||||
Safwan Olaimat <safwan.olaimat@gmail.com>
|
||||
Sahil Dua <sahildua2305@gmail.com>
|
||||
Sai Ravi Teja Chintakrindi <srt2712@gmail.com>
|
||||
saisi <saisi@users.noreply.github.com>
|
||||
Sam Minnée <sam@silverstripe.com>
|
||||
Sandeep Sukhani <sandeep.d.sukhani@gmail.com>
|
||||
Sander Knape <s.knape88@gmail.com>
|
||||
Sander van Harmelen <svanharmelen@schubergphilis.com>
|
||||
Sanket Payghan <sanket.payghan8@gmail.com>
|
||||
Sarah Funkhouser <sarah.k.funkhouser@gmail.com>
|
||||
Sarasa Kisaragi <lingsamuelgrace@gmail.com>
|
||||
Sasha Melentyev <sasha@melentyev.io>
|
||||
Sean Wang <sean@decrypted.org>
|
||||
Sebastian Mandrean <sebastian.mandrean@gmail.com>
|
||||
Sebastian Mæland Pedersen <sem.pedersen@stud.uis.no>
|
||||
Sergei Popinevskii <gurza000@gmail.com>
|
||||
Sergey Romanov <xxsmotur@gmail.com>
|
||||
Sergio Garcia <sergio.garcia@gmail.com>
|
||||
Seth Vargo <seth@sethvargo.com>
|
||||
Sevki <s@sevki.org>
|
||||
Shagun Khemka <shagun.khemka60@gmail.com>
|
||||
shakeelrao <shakeelrao79@gmail.com>
|
||||
Shawn Catanzarite <me@shawncatz.com>
|
||||
Shawn Smith <shawnpsmith@gmail.com>
|
||||
Shibasis Patel <patelshibasis@gmail.com>
|
||||
Sho Okada <shokada3@gmail.com>
|
||||
Shrikrishna Singh <krishnasingh.ss30@gmail.com>
|
||||
Simon Davis <sdavis@hashicorp.com>
|
||||
sona-tar <sona.zip@gmail.com>
|
||||
soniachikh <sonia.chikh@gmail.com>
|
||||
SoundCloud, Ltd.
|
||||
Sridhar Mocherla <srmocher@microsoft.com>
|
||||
SriVignessh Pss <sriknowledge@gmail.com>
|
||||
Stefan Sedich <stefan.sedich@gmail.com>
|
||||
Steve Teuber <github@steveteuber.com>
|
||||
Stian Eikeland <stian@eikeland.se>
|
||||
Suhaib Mujahid <suhaibmujahid@gmail.com>
|
||||
sushmita wable <sw09007@gmail.com>
|
||||
Szymon Kodrebski <simonkey007@gmail.com>
|
||||
Søren Hansen <soren@dinero.dk>
|
||||
T.J. Corrigan <tjcorr@github.com>
|
||||
Takashi Yoneuchi <takashi.yoneuchi@shift-js.info>
|
||||
Takayuki Watanabe <takanabe.w@gmail.com>
|
||||
Taketoshi Fujiwara <fujiwara@leapmind.io>
|
||||
Taketoshi Fujiwara <taketoshi.fujiwara@gmail.com>
|
||||
Takuma Kajikawa <kj1ktk@gmail.com>
|
||||
Tasya Aditya Rukmana <tadityar@gmail.com>
|
||||
Theo Henson <theodorehenson@protonmail.com>
|
||||
Theofilos Petsios <theofilos.pe@gmail.com>
|
||||
Thomas Aidan Curran <thomas@ory.sh>
|
||||
Thomas Bruyelle <thomas.bruyelle@gmail.com>
|
||||
Tim Rogers <timrogers@github.com>
|
||||
Timothy O'Brien <obrien.timothy.a@gmail.com>
|
||||
Timothée Peignier <timothee.peignier@tryphon.org>
|
||||
Tingluo Huang <tingluohuang@github.com>
|
||||
tkhandel <tarunkhandelwal.iitr@gmail.com>
|
||||
Tobias Gesellchen <tobias@gesellix.de>
|
||||
Tom Payne <twpayne@gmail.com>
|
||||
Trey Tacon <ttacon@gmail.com>
|
||||
tsbkw <tsbkw0@gmail.com>
|
||||
ttacon <ttacon@gmail.com>
|
||||
Vaibhav Singh <vaibhav.singh.14cse@bml.edu.in>
|
||||
Varadarajan Aravamudhan <varadaraajan@gmail.com>
|
||||
Victor Castell <victor@victorcastell.com>
|
||||
Victor Vrantchan <vrancean+github@gmail.com>
|
||||
Victory Osikwemhe <osikwemhev@gmail.com>
|
||||
vikkyomkar <vikky.omkar@samsung.com>
|
||||
Vivek <y.vivekanand@gmail.com>
|
||||
Vlad Ungureanu <vladu@palantir.com>
|
||||
Wasim Thabraze <wasim@thabraze.me>
|
||||
Weslei Juan Moser Pereira <wesleimsr@gmail.com>
|
||||
Wheeler Law <wheeler.law@outlook.com>
|
||||
Will Maier <wcmaier@gmail.com>
|
||||
Will Norris <will@tailscale.com>
|
||||
Willem D'Haeseleer <dhwillem@gmail.com>
|
||||
William Bailey <mail@williambailey.org.uk>
|
||||
William Cooke <pipeston@gmail.com>
|
||||
Xabi <xmartinez1702@gmail.com>
|
||||
xibz <impactbchang@gmail.com>
|
||||
Yann Malet <yann.malet@gmail.com>
|
||||
Yannick Utard <yannickutard@gmail.com>
|
||||
Yarden Shoham <git@yardenshoham.com>
|
||||
Yicheng Qin <qycqycqycqycqyc@gmail.com>
|
||||
Yosuke Akatsuka <yosuke.akatsuka@access-company.com>
|
||||
Yumikiyo Osanai <yumios.art@gmail.com>
|
||||
Yurii Soldak <ysoldak@gmail.com>
|
||||
Yusef Mohamadi <yuseferi@gmail.com>
|
||||
Yusuke Kuoka <ykuoka@gmail.com>
|
||||
Zach Latta <zach@zachlatta.com>
|
||||
zhouhaibing089 <zhouhaibing089@gmail.com>
|
||||
六开箱 <lkxed@outlook.com>
|
||||
缘生 <i@ysicing.me>
|
||||
蒋航 <hang.jiang@daocloud.io>
|
||||
167
vendor/github.com/google/go-github/v57/github/actions_artifacts.go
generated
vendored
167
vendor/github.com/google/go-github/v57/github/actions_artifacts.go
generated
vendored
|
|
@ -1,167 +0,0 @@
|
|||
// Copyright 2020 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
// ArtifactWorkflowRun represents a GitHub artifact's workflow run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/artifacts
|
||||
type ArtifactWorkflowRun struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
RepositoryID *int64 `json:"repository_id,omitempty"`
|
||||
HeadRepositoryID *int64 `json:"head_repository_id,omitempty"`
|
||||
HeadBranch *string `json:"head_branch,omitempty"`
|
||||
HeadSHA *string `json:"head_sha,omitempty"`
|
||||
}
|
||||
|
||||
// Artifact represents a GitHub artifact. Artifacts allow sharing
|
||||
// data between jobs in a workflow and provide storage for data
|
||||
// once a workflow is complete.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/artifacts
|
||||
type Artifact struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
SizeInBytes *int64 `json:"size_in_bytes,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
ArchiveDownloadURL *string `json:"archive_download_url,omitempty"`
|
||||
Expired *bool `json:"expired,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
ExpiresAt *Timestamp `json:"expires_at,omitempty"`
|
||||
WorkflowRun *ArtifactWorkflowRun `json:"workflow_run,omitempty"`
|
||||
}
|
||||
|
||||
// ArtifactList represents a list of GitHub artifacts.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/artifacts#artifacts
|
||||
type ArtifactList struct {
|
||||
TotalCount *int64 `json:"total_count,omitempty"`
|
||||
Artifacts []*Artifact `json:"artifacts,omitempty"`
|
||||
}
|
||||
|
||||
// ListArtifacts lists all artifacts that belong to a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/artifacts#list-artifacts-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/artifacts
|
||||
func (s *ActionsService) ListArtifacts(ctx context.Context, owner, repo string, opts *ListOptions) (*ArtifactList, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/artifacts", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
artifactList := new(ArtifactList)
|
||||
resp, err := s.client.Do(ctx, req, artifactList)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return artifactList, resp, nil
|
||||
}
|
||||
|
||||
// ListWorkflowRunArtifacts lists all artifacts that belong to a workflow run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/artifacts#list-workflow-run-artifacts
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts
|
||||
func (s *ActionsService) ListWorkflowRunArtifacts(ctx context.Context, owner, repo string, runID int64, opts *ListOptions) (*ArtifactList, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/artifacts", owner, repo, runID)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
artifactList := new(ArtifactList)
|
||||
resp, err := s.client.Do(ctx, req, artifactList)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return artifactList, resp, nil
|
||||
}
|
||||
|
||||
// GetArtifact gets a specific artifact for a workflow run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/artifacts#get-an-artifact
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}
|
||||
func (s *ActionsService) GetArtifact(ctx context.Context, owner, repo string, artifactID int64) (*Artifact, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/artifacts/%v", owner, repo, artifactID)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
artifact := new(Artifact)
|
||||
resp, err := s.client.Do(ctx, req, artifact)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return artifact, resp, nil
|
||||
}
|
||||
|
||||
// DownloadArtifact gets a redirect URL to download an archive for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/artifacts#download-an-artifact
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}
|
||||
func (s *ActionsService) DownloadArtifact(ctx context.Context, owner, repo string, artifactID int64, maxRedirects int) (*url.URL, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/artifacts/%v/zip", owner, repo, artifactID)
|
||||
|
||||
resp, err := s.client.roundTripWithOptionalFollowRedirect(ctx, u, maxRedirects)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusFound {
|
||||
return nil, newResponse(resp), fmt.Errorf("unexpected status code: %s", resp.Status)
|
||||
}
|
||||
|
||||
parsedURL, err := url.Parse(resp.Header.Get("Location"))
|
||||
if err != nil {
|
||||
return nil, newResponse(resp), err
|
||||
}
|
||||
|
||||
return parsedURL, newResponse(resp), nil
|
||||
}
|
||||
|
||||
// DeleteArtifact deletes a workflow run artifact.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/artifacts#delete-an-artifact
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}
|
||||
func (s *ActionsService) DeleteArtifact(ctx context.Context, owner, repo string, artifactID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/artifacts/%v", owner, repo, artifactID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
249
vendor/github.com/google/go-github/v57/github/actions_cache.go
generated
vendored
249
vendor/github.com/google/go-github/v57/github/actions_cache.go
generated
vendored
|
|
@ -1,249 +0,0 @@
|
|||
// Copyright 2022 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ActionsCache represents a GitHub action cache.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#about-the-cache-api
|
||||
type ActionsCache struct {
|
||||
ID *int64 `json:"id,omitempty" url:"-"`
|
||||
Ref *string `json:"ref,omitempty" url:"ref"`
|
||||
Key *string `json:"key,omitempty" url:"key"`
|
||||
Version *string `json:"version,omitempty" url:"-"`
|
||||
LastAccessedAt *Timestamp `json:"last_accessed_at,omitempty" url:"-"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty" url:"-"`
|
||||
SizeInBytes *int64 `json:"size_in_bytes,omitempty" url:"-"`
|
||||
}
|
||||
|
||||
// ActionsCacheList represents a list of GitHub actions Cache.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository
|
||||
type ActionsCacheList struct {
|
||||
TotalCount int `json:"total_count"`
|
||||
ActionsCaches []*ActionsCache `json:"actions_caches,omitempty"`
|
||||
}
|
||||
|
||||
// ActionsCacheUsage represents a GitHub Actions Cache Usage object.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#get-github-actions-cache-usage-for-a-repository
|
||||
type ActionsCacheUsage struct {
|
||||
FullName string `json:"full_name"`
|
||||
ActiveCachesSizeInBytes int64 `json:"active_caches_size_in_bytes"`
|
||||
ActiveCachesCount int `json:"active_caches_count"`
|
||||
}
|
||||
|
||||
// ActionsCacheUsageList represents a list of repositories with GitHub Actions cache usage for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#get-github-actions-cache-usage-for-a-repository
|
||||
type ActionsCacheUsageList struct {
|
||||
TotalCount int `json:"total_count"`
|
||||
RepoCacheUsage []*ActionsCacheUsage `json:"repository_cache_usages,omitempty"`
|
||||
}
|
||||
|
||||
// TotalCacheUsage represents total GitHub actions cache usage of an organization or enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#get-github-actions-cache-usage-for-an-enterprise
|
||||
type TotalCacheUsage struct {
|
||||
TotalActiveCachesUsageSizeInBytes int64 `json:"total_active_caches_size_in_bytes"`
|
||||
TotalActiveCachesCount int `json:"total_active_caches_count"`
|
||||
}
|
||||
|
||||
// ActionsCacheListOptions represents a list of all possible optional Query parameters for ListCaches method.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository
|
||||
type ActionsCacheListOptions struct {
|
||||
ListOptions
|
||||
// The Git reference for the results you want to list.
|
||||
// The ref for a branch can be formatted either as refs/heads/<branch name>
|
||||
// or simply <branch name>. To reference a pull request use refs/pull/<number>/merge
|
||||
Ref *string `url:"ref,omitempty"`
|
||||
Key *string `url:"key,omitempty"`
|
||||
// Can be one of: "created_at", "last_accessed_at", "size_in_bytes". Default: "last_accessed_at"
|
||||
Sort *string `url:"sort,omitempty"`
|
||||
// Can be one of: "asc", "desc" Default: desc
|
||||
Direction *string `url:"direction,omitempty"`
|
||||
}
|
||||
|
||||
// ListCaches lists the GitHub Actions caches for a repository.
|
||||
// You must authenticate using an access token with the repo scope to use this endpoint.
|
||||
//
|
||||
// Permissions: must have the actions:read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#list-github-actions-caches-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/caches
|
||||
func (s *ActionsService) ListCaches(ctx context.Context, owner, repo string, opts *ActionsCacheListOptions) (*ActionsCacheList, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/caches", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
actionCacheList := new(ActionsCacheList)
|
||||
resp, err := s.client.Do(ctx, req, actionCacheList)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return actionCacheList, resp, nil
|
||||
}
|
||||
|
||||
// DeleteCachesByKey deletes one or more GitHub Actions caches for a repository, using a complete cache key.
|
||||
// By default, all caches that match the provided key are deleted, but you can optionally provide
|
||||
// a Git ref to restrict deletions to caches that match both the provided key and the Git ref.
|
||||
// The ref for a branch can be formatted either as "refs/heads/<branch name>" or simply "<branch name>".
|
||||
// To reference a pull request use "refs/pull/<number>/merge". If you don't want to use ref just pass nil in parameter.
|
||||
//
|
||||
// Permissions: You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the actions:write permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#delete-github-actions-caches-for-a-repository-using-a-cache-key
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/actions/caches
|
||||
func (s *ActionsService) DeleteCachesByKey(ctx context.Context, owner, repo, key string, ref *string) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/caches", owner, repo)
|
||||
u, err := addOptions(u, ActionsCache{Key: &key, Ref: ref})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// DeleteCachesByID deletes a GitHub Actions cache for a repository, using a cache ID.
|
||||
//
|
||||
// Permissions: You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the actions:write permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#delete-a-github-actions-cache-for-a-repository-using-a-cache-id
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}
|
||||
func (s *ActionsService) DeleteCachesByID(ctx context.Context, owner, repo string, cacheID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/caches/%v", owner, repo, cacheID)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// GetCacheUsageForRepo gets GitHub Actions cache usage for a repository. The data fetched using this API is refreshed approximately every 5 minutes,
|
||||
// so values returned from this endpoint may take at least 5 minutes to get updated.
|
||||
//
|
||||
// Permissions: Anyone with read access to the repository can use this endpoint. If the repository is private, you must use an
|
||||
// access token with the repo scope. GitHub Apps must have the actions:read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#get-github-actions-cache-usage-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/cache/usage
|
||||
func (s *ActionsService) GetCacheUsageForRepo(ctx context.Context, owner, repo string) (*ActionsCacheUsage, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/cache/usage", owner, repo)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
cacheUsage := new(ActionsCacheUsage)
|
||||
res, err := s.client.Do(ctx, req, cacheUsage)
|
||||
if err != nil {
|
||||
return nil, res, err
|
||||
}
|
||||
|
||||
return cacheUsage, res, err
|
||||
}
|
||||
|
||||
// ListCacheUsageByRepoForOrg lists repositories and their GitHub Actions cache usage for an organization. The data fetched using this API is
|
||||
// refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.
|
||||
//
|
||||
// Permissions: You must authenticate using an access token with the read:org scope to use this endpoint.
|
||||
// GitHub Apps must have the organization_admistration:read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#list-repositories-with-github-actions-cache-usage-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/cache/usage-by-repository
|
||||
func (s *ActionsService) ListCacheUsageByRepoForOrg(ctx context.Context, org string, opts *ListOptions) (*ActionsCacheUsageList, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/cache/usage-by-repository", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
cacheUsage := new(ActionsCacheUsageList)
|
||||
res, err := s.client.Do(ctx, req, cacheUsage)
|
||||
if err != nil {
|
||||
return nil, res, err
|
||||
}
|
||||
|
||||
return cacheUsage, res, err
|
||||
}
|
||||
|
||||
// GetTotalCacheUsageForOrg gets the total GitHub Actions cache usage for an organization. The data fetched using this API is refreshed approximately every
|
||||
// 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.
|
||||
//
|
||||
// Permissions: You must authenticate using an access token with the read:org scope to use this endpoint.
|
||||
// GitHub Apps must have the organization_admistration:read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/cache#get-github-actions-cache-usage-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/cache/usage
|
||||
func (s *ActionsService) GetTotalCacheUsageForOrg(ctx context.Context, org string) (*TotalCacheUsage, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/cache/usage", org)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
cacheUsage := new(TotalCacheUsage)
|
||||
res, err := s.client.Do(ctx, req, cacheUsage)
|
||||
if err != nil {
|
||||
return nil, res, err
|
||||
}
|
||||
|
||||
return cacheUsage, res, err
|
||||
}
|
||||
|
||||
// GetTotalCacheUsageForEnterprise gets the total GitHub Actions cache usage for an enterprise. The data fetched using this API is refreshed approximately every 5 minutes,
|
||||
// so values returned from this endpoint may take at least 5 minutes to get updated.
|
||||
//
|
||||
// Permissions: You must authenticate using an access token with the "admin:enterprise" scope to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/cache#get-github-actions-cache-usage-for-an-enterprise
|
||||
//
|
||||
//meta:operation GET /enterprises/{enterprise}/actions/cache/usage
|
||||
func (s *ActionsService) GetTotalCacheUsageForEnterprise(ctx context.Context, enterprise string) (*TotalCacheUsage, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/cache/usage", enterprise)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
cacheUsage := new(TotalCacheUsage)
|
||||
res, err := s.client.Do(ctx, req, cacheUsage)
|
||||
if err != nil {
|
||||
return nil, res, err
|
||||
}
|
||||
|
||||
return cacheUsage, res, err
|
||||
}
|
||||
207
vendor/github.com/google/go-github/v57/github/actions_permissions_enterprise.go
generated
vendored
207
vendor/github.com/google/go-github/v57/github/actions_permissions_enterprise.go
generated
vendored
|
|
@ -1,207 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ActionsEnabledOnEnterpriseRepos represents all the repositories in an enterprise for which Actions is enabled.
|
||||
type ActionsEnabledOnEnterpriseRepos struct {
|
||||
TotalCount int `json:"total_count"`
|
||||
Organizations []*Organization `json:"organizations"`
|
||||
}
|
||||
|
||||
// ActionsPermissionsEnterprise represents a policy for allowed actions in an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions
|
||||
type ActionsPermissionsEnterprise struct {
|
||||
EnabledOrganizations *string `json:"enabled_organizations,omitempty"`
|
||||
AllowedActions *string `json:"allowed_actions,omitempty"`
|
||||
SelectedActionsURL *string `json:"selected_actions_url,omitempty"`
|
||||
}
|
||||
|
||||
func (a ActionsPermissionsEnterprise) String() string {
|
||||
return Stringify(a)
|
||||
}
|
||||
|
||||
// GetActionsPermissionsInEnterprise gets the GitHub Actions permissions policy for an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#get-github-actions-permissions-for-an-enterprise
|
||||
//
|
||||
//meta:operation GET /enterprises/{enterprise}/actions/permissions
|
||||
func (s *ActionsService) GetActionsPermissionsInEnterprise(ctx context.Context, enterprise string) (*ActionsPermissionsEnterprise, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/permissions", enterprise)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
permissions := new(ActionsPermissionsEnterprise)
|
||||
resp, err := s.client.Do(ctx, req, permissions)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return permissions, resp, nil
|
||||
}
|
||||
|
||||
// EditActionsPermissionsInEnterprise sets the permissions policy in an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#set-github-actions-permissions-for-an-enterprise
|
||||
//
|
||||
//meta:operation PUT /enterprises/{enterprise}/actions/permissions
|
||||
func (s *ActionsService) EditActionsPermissionsInEnterprise(ctx context.Context, enterprise string, actionsPermissionsEnterprise ActionsPermissionsEnterprise) (*ActionsPermissionsEnterprise, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/permissions", enterprise)
|
||||
req, err := s.client.NewRequest("PUT", u, actionsPermissionsEnterprise)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
p := new(ActionsPermissionsEnterprise)
|
||||
resp, err := s.client.Do(ctx, req, p)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return p, resp, nil
|
||||
}
|
||||
|
||||
// ListEnabledOrgsInEnterprise lists the selected organizations that are enabled for GitHub Actions in an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#list-selected-organizations-enabled-for-github-actions-in-an-enterprise
|
||||
//
|
||||
//meta:operation GET /enterprises/{enterprise}/actions/permissions/organizations
|
||||
func (s *ActionsService) ListEnabledOrgsInEnterprise(ctx context.Context, owner string, opts *ListOptions) (*ActionsEnabledOnEnterpriseRepos, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/permissions/organizations", owner)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
orgs := &ActionsEnabledOnEnterpriseRepos{}
|
||||
resp, err := s.client.Do(ctx, req, orgs)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return orgs, resp, nil
|
||||
}
|
||||
|
||||
// SetEnabledOrgsInEnterprise replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#set-selected-organizations-enabled-for-github-actions-in-an-enterprise
|
||||
//
|
||||
//meta:operation PUT /enterprises/{enterprise}/actions/permissions/organizations
|
||||
func (s *ActionsService) SetEnabledOrgsInEnterprise(ctx context.Context, owner string, organizationIDs []int64) (*Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/permissions/organizations", owner)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, struct {
|
||||
IDs []int64 `json:"selected_organization_ids"`
|
||||
}{IDs: organizationIDs})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// AddEnabledOrgInEnterprise adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#enable-a-selected-organization-for-github-actions-in-an-enterprise
|
||||
//
|
||||
//meta:operation PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}
|
||||
func (s *ActionsService) AddEnabledOrgInEnterprise(ctx context.Context, owner string, organizationID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/permissions/organizations/%v", owner, organizationID)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// RemoveEnabledOrgInEnterprise removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#disable-a-selected-organization-for-github-actions-in-an-enterprise
|
||||
//
|
||||
//meta:operation DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}
|
||||
func (s *ActionsService) RemoveEnabledOrgInEnterprise(ctx context.Context, owner string, organizationID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/permissions/organizations/%v", owner, organizationID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// GetActionsAllowedInEnterprise gets the actions that are allowed in an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-enterprise
|
||||
//
|
||||
//meta:operation GET /enterprises/{enterprise}/actions/permissions/selected-actions
|
||||
func (s *ActionsService) GetActionsAllowedInEnterprise(ctx context.Context, enterprise string) (*ActionsAllowed, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/permissions/selected-actions", enterprise)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
actionsAllowed := new(ActionsAllowed)
|
||||
resp, err := s.client.Do(ctx, req, actionsAllowed)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return actionsAllowed, resp, nil
|
||||
}
|
||||
|
||||
// EditActionsAllowedInEnterprise sets the actions that are allowed in an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#set-allowed-actions-and-reusable-workflows-for-an-enterprise
|
||||
//
|
||||
//meta:operation PUT /enterprises/{enterprise}/actions/permissions/selected-actions
|
||||
func (s *ActionsService) EditActionsAllowedInEnterprise(ctx context.Context, enterprise string, actionsAllowed ActionsAllowed) (*ActionsAllowed, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/permissions/selected-actions", enterprise)
|
||||
req, err := s.client.NewRequest("PUT", u, actionsAllowed)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
p := new(ActionsAllowed)
|
||||
resp, err := s.client.Do(ctx, req, p)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return p, resp, nil
|
||||
}
|
||||
220
vendor/github.com/google/go-github/v57/github/actions_permissions_orgs.go
generated
vendored
220
vendor/github.com/google/go-github/v57/github/actions_permissions_orgs.go
generated
vendored
|
|
@ -1,220 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ActionsPermissions represents a policy for repositories and allowed actions in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions
|
||||
type ActionsPermissions struct {
|
||||
EnabledRepositories *string `json:"enabled_repositories,omitempty"`
|
||||
AllowedActions *string `json:"allowed_actions,omitempty"`
|
||||
SelectedActionsURL *string `json:"selected_actions_url,omitempty"`
|
||||
}
|
||||
|
||||
func (a ActionsPermissions) String() string {
|
||||
return Stringify(a)
|
||||
}
|
||||
|
||||
// ActionsEnabledOnOrgRepos represents all the repositories in an organization for which Actions is enabled.
|
||||
type ActionsEnabledOnOrgRepos struct {
|
||||
TotalCount int `json:"total_count"`
|
||||
Repositories []*Repository `json:"repositories"`
|
||||
}
|
||||
|
||||
// ActionsAllowed represents selected actions that are allowed.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions
|
||||
type ActionsAllowed struct {
|
||||
GithubOwnedAllowed *bool `json:"github_owned_allowed,omitempty"`
|
||||
VerifiedAllowed *bool `json:"verified_allowed,omitempty"`
|
||||
PatternsAllowed []string `json:"patterns_allowed,omitempty"`
|
||||
}
|
||||
|
||||
func (a ActionsAllowed) String() string {
|
||||
return Stringify(a)
|
||||
}
|
||||
|
||||
// GetActionsPermissions gets the GitHub Actions permissions policy for repositories and allowed actions in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/permissions
|
||||
func (s *ActionsService) GetActionsPermissions(ctx context.Context, org string) (*ActionsPermissions, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/permissions", org)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
permissions := new(ActionsPermissions)
|
||||
resp, err := s.client.Do(ctx, req, permissions)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return permissions, resp, nil
|
||||
}
|
||||
|
||||
// EditActionsPermissions sets the permissions policy for repositories and allowed actions in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#set-github-actions-permissions-for-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/permissions
|
||||
func (s *ActionsService) EditActionsPermissions(ctx context.Context, org string, actionsPermissions ActionsPermissions) (*ActionsPermissions, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/permissions", org)
|
||||
req, err := s.client.NewRequest("PUT", u, actionsPermissions)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
p := new(ActionsPermissions)
|
||||
resp, err := s.client.Do(ctx, req, p)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return p, resp, nil
|
||||
}
|
||||
|
||||
// ListEnabledReposInOrg lists the selected repositories that are enabled for GitHub Actions in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/permissions/repositories
|
||||
func (s *ActionsService) ListEnabledReposInOrg(ctx context.Context, owner string, opts *ListOptions) (*ActionsEnabledOnOrgRepos, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/permissions/repositories", owner)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
repos := &ActionsEnabledOnOrgRepos{}
|
||||
resp, err := s.client.Do(ctx, req, repos)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return repos, resp, nil
|
||||
}
|
||||
|
||||
// SetEnabledReposInOrg replaces the list of selected repositories that are enabled for GitHub Actions in an organization..
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#set-selected-repositories-enabled-for-github-actions-in-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/permissions/repositories
|
||||
func (s *ActionsService) SetEnabledReposInOrg(ctx context.Context, owner string, repositoryIDs []int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/permissions/repositories", owner)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, struct {
|
||||
IDs []int64 `json:"selected_repository_ids"`
|
||||
}{IDs: repositoryIDs})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// AddEnabledReposInOrg adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#enable-a-selected-repository-for-github-actions-in-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/permissions/repositories/{repository_id}
|
||||
func (s *ActionsService) AddEnabledReposInOrg(ctx context.Context, owner string, repositoryID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/permissions/repositories/%v", owner, repositoryID)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// RemoveEnabledReposInOrg removes a single repository from the list of enabled repos for GitHub Actions in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#disable-a-selected-repository-for-github-actions-in-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}
|
||||
func (s *ActionsService) RemoveEnabledReposInOrg(ctx context.Context, owner string, repositoryID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/permissions/repositories/%v", owner, repositoryID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// GetActionsAllowed gets the actions that are allowed in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/permissions/selected-actions
|
||||
func (s *ActionsService) GetActionsAllowed(ctx context.Context, org string) (*ActionsAllowed, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/permissions/selected-actions", org)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
actionsAllowed := new(ActionsAllowed)
|
||||
resp, err := s.client.Do(ctx, req, actionsAllowed)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return actionsAllowed, resp, nil
|
||||
}
|
||||
|
||||
// EditActionsAllowed sets the actions that are allowed in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#set-allowed-actions-and-reusable-workflows-for-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/permissions/selected-actions
|
||||
func (s *ActionsService) EditActionsAllowed(ctx context.Context, org string, actionsAllowed ActionsAllowed) (*ActionsAllowed, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/permissions/selected-actions", org)
|
||||
req, err := s.client.NewRequest("PUT", u, actionsAllowed)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
p := new(ActionsAllowed)
|
||||
resp, err := s.client.Do(ctx, req, p)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return p, resp, nil
|
||||
}
|
||||
267
vendor/github.com/google/go-github/v57/github/actions_required_workflows.go
generated
vendored
267
vendor/github.com/google/go-github/v57/github/actions_required_workflows.go
generated
vendored
|
|
@ -1,267 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// OrgRequiredWorkflow represents a required workflow object at the org level.
|
||||
type OrgRequiredWorkflow struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Path *string `json:"path,omitempty"`
|
||||
Scope *string `json:"scope,omitempty"`
|
||||
Ref *string `json:"ref,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
SelectedRepositoriesURL *string `json:"selected_repositories_url,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
Repository *Repository `json:"repository,omitempty"`
|
||||
}
|
||||
|
||||
// OrgRequiredWorkflows represents the required workflows for the org.
|
||||
type OrgRequiredWorkflows struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
RequiredWorkflows []*OrgRequiredWorkflow `json:"required_workflows,omitempty"`
|
||||
}
|
||||
|
||||
// CreateUpdateRequiredWorkflowOptions represents the input object used to create or update required workflows.
|
||||
type CreateUpdateRequiredWorkflowOptions struct {
|
||||
WorkflowFilePath *string `json:"workflow_file_path,omitempty"`
|
||||
RepositoryID *int64 `json:"repository_id,omitempty"`
|
||||
Scope *string `json:"scope,omitempty"`
|
||||
SelectedRepositoryIDs *SelectedRepoIDs `json:"selected_repository_ids,omitempty"`
|
||||
}
|
||||
|
||||
// RequiredWorkflowSelectedRepos represents the repos that a required workflow is applied to.
|
||||
type RequiredWorkflowSelectedRepos struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
Repositories []*Repository `json:"repositories,omitempty"`
|
||||
}
|
||||
|
||||
// RepoRequiredWorkflow represents a required workflow object at the repo level.
|
||||
type RepoRequiredWorkflow struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Path *string `json:"path,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
BadgeURL *string `json:"badge_url,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
SourceRepository *Repository `json:"source_repository,omitempty"`
|
||||
}
|
||||
|
||||
// RepoRequiredWorkflows represents the required workflows for a repo.
|
||||
type RepoRequiredWorkflows struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
RequiredWorkflows []*RepoRequiredWorkflow `json:"required_workflows,omitempty"`
|
||||
}
|
||||
|
||||
// ListOrgRequiredWorkflows lists the RequiredWorkflows for an org.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/required_workflows
|
||||
func (s *ActionsService) ListOrgRequiredWorkflows(ctx context.Context, org string, opts *ListOptions) (*OrgRequiredWorkflows, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/required_workflows", org)
|
||||
u, err := addOptions(url, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
requiredWorkflows := new(OrgRequiredWorkflows)
|
||||
resp, err := s.client.Do(ctx, req, &requiredWorkflows)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return requiredWorkflows, resp, nil
|
||||
}
|
||||
|
||||
// CreateRequiredWorkflow creates the required workflow in an org.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/actions/required_workflows
|
||||
func (s *ActionsService) CreateRequiredWorkflow(ctx context.Context, org string, createRequiredWorkflowOptions *CreateUpdateRequiredWorkflowOptions) (*OrgRequiredWorkflow, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/required_workflows", org)
|
||||
req, err := s.client.NewRequest("POST", url, createRequiredWorkflowOptions)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
orgRequiredWorkflow := new(OrgRequiredWorkflow)
|
||||
resp, err := s.client.Do(ctx, req, orgRequiredWorkflow)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return orgRequiredWorkflow, resp, nil
|
||||
}
|
||||
|
||||
// GetRequiredWorkflowByID get the RequiredWorkflows for an org by its ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/required_workflows/{workflow_id}
|
||||
func (s *ActionsService) GetRequiredWorkflowByID(ctx context.Context, owner string, requiredWorkflowID int64) (*OrgRequiredWorkflow, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/required_workflows/%v", owner, requiredWorkflowID)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
requiredWorkflow := new(OrgRequiredWorkflow)
|
||||
resp, err := s.client.Do(ctx, req, &requiredWorkflow)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return requiredWorkflow, resp, nil
|
||||
}
|
||||
|
||||
// UpdateRequiredWorkflow updates a required workflow in an org.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation PATCH /orgs/{org}/actions/required_workflows/{workflow_id}
|
||||
func (s *ActionsService) UpdateRequiredWorkflow(ctx context.Context, org string, requiredWorkflowID int64, updateRequiredWorkflowOptions *CreateUpdateRequiredWorkflowOptions) (*OrgRequiredWorkflow, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/required_workflows/%v", org, requiredWorkflowID)
|
||||
req, err := s.client.NewRequest("PATCH", url, updateRequiredWorkflowOptions)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
orgRequiredWorkflow := new(OrgRequiredWorkflow)
|
||||
resp, err := s.client.Do(ctx, req, orgRequiredWorkflow)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return orgRequiredWorkflow, resp, nil
|
||||
}
|
||||
|
||||
// DeleteRequiredWorkflow deletes a required workflow in an org.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/required_workflows/{workflow_id}
|
||||
func (s *ActionsService) DeleteRequiredWorkflow(ctx context.Context, org string, requiredWorkflowID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/required_workflows/%v", org, requiredWorkflowID)
|
||||
req, err := s.client.NewRequest("DELETE", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListRequiredWorkflowSelectedRepos lists the Repositories selected for a workflow.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/required_workflows/{workflow_id}/repositories
|
||||
func (s *ActionsService) ListRequiredWorkflowSelectedRepos(ctx context.Context, org string, requiredWorkflowID int64, opts *ListOptions) (*RequiredWorkflowSelectedRepos, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/required_workflows/%v/repositories", org, requiredWorkflowID)
|
||||
u, err := addOptions(url, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
requiredWorkflowRepos := new(RequiredWorkflowSelectedRepos)
|
||||
resp, err := s.client.Do(ctx, req, &requiredWorkflowRepos)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return requiredWorkflowRepos, resp, nil
|
||||
}
|
||||
|
||||
// SetRequiredWorkflowSelectedRepos sets the Repositories selected for a workflow.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/required_workflows/{workflow_id}/repositories
|
||||
func (s *ActionsService) SetRequiredWorkflowSelectedRepos(ctx context.Context, org string, requiredWorkflowID int64, ids SelectedRepoIDs) (*Response, error) {
|
||||
type repoIDs struct {
|
||||
SelectedIDs SelectedRepoIDs `json:"selected_repository_ids"`
|
||||
}
|
||||
url := fmt.Sprintf("orgs/%v/actions/required_workflows/%v/repositories", org, requiredWorkflowID)
|
||||
req, err := s.client.NewRequest("PUT", url, repoIDs{SelectedIDs: ids})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// AddRepoToRequiredWorkflow adds the Repository to a required workflow.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/required_workflows/{workflow_id}/repositories/{repository_id}
|
||||
func (s *ActionsService) AddRepoToRequiredWorkflow(ctx context.Context, org string, requiredWorkflowID, repoID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/required_workflows/%v/repositories/%v", org, requiredWorkflowID, repoID)
|
||||
req, err := s.client.NewRequest("PUT", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RemoveRepoFromRequiredWorkflow removes the Repository from a required workflow.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/required_workflows/{workflow_id}/repositories/{repository_id}
|
||||
func (s *ActionsService) RemoveRepoFromRequiredWorkflow(ctx context.Context, org string, requiredWorkflowID, repoID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/required_workflows/%v/repositories/%v", org, requiredWorkflowID, repoID)
|
||||
req, err := s.client.NewRequest("DELETE", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListRepoRequiredWorkflows lists the RequiredWorkflows for a repo.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/actions/using-workflows/required-workflows
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/required_workflows
|
||||
func (s *ActionsService) ListRepoRequiredWorkflows(ctx context.Context, owner, repo string, opts *ListOptions) (*RepoRequiredWorkflows, *Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/required_workflows", owner, repo)
|
||||
u, err := addOptions(url, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
requiredWorkflows := new(RepoRequiredWorkflows)
|
||||
resp, err := s.client.Do(ctx, req, &requiredWorkflows)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return requiredWorkflows, resp, nil
|
||||
}
|
||||
337
vendor/github.com/google/go-github/v57/github/actions_runner_groups.go
generated
vendored
337
vendor/github.com/google/go-github/v57/github/actions_runner_groups.go
generated
vendored
|
|
@ -1,337 +0,0 @@
|
|||
// Copyright 2021 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// RunnerGroup represents a self-hosted runner group configured in an organization.
|
||||
type RunnerGroup struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Visibility *string `json:"visibility,omitempty"`
|
||||
Default *bool `json:"default,omitempty"`
|
||||
SelectedRepositoriesURL *string `json:"selected_repositories_url,omitempty"`
|
||||
RunnersURL *string `json:"runners_url,omitempty"`
|
||||
Inherited *bool `json:"inherited,omitempty"`
|
||||
AllowsPublicRepositories *bool `json:"allows_public_repositories,omitempty"`
|
||||
RestrictedToWorkflows *bool `json:"restricted_to_workflows,omitempty"`
|
||||
SelectedWorkflows []string `json:"selected_workflows,omitempty"`
|
||||
WorkflowRestrictionsReadOnly *bool `json:"workflow_restrictions_read_only,omitempty"`
|
||||
}
|
||||
|
||||
// RunnerGroups represents a collection of self-hosted runner groups configured for an organization.
|
||||
type RunnerGroups struct {
|
||||
TotalCount int `json:"total_count"`
|
||||
RunnerGroups []*RunnerGroup `json:"runner_groups"`
|
||||
}
|
||||
|
||||
// CreateRunnerGroupRequest represents a request to create a Runner group for an organization.
|
||||
type CreateRunnerGroupRequest struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
Visibility *string `json:"visibility,omitempty"`
|
||||
// List of repository IDs that can access the runner group.
|
||||
SelectedRepositoryIDs []int64 `json:"selected_repository_ids,omitempty"`
|
||||
// Runners represent a list of runner IDs to add to the runner group.
|
||||
Runners []int64 `json:"runners,omitempty"`
|
||||
// If set to True, public repos can use this runner group
|
||||
AllowsPublicRepositories *bool `json:"allows_public_repositories,omitempty"`
|
||||
// If true, the runner group will be restricted to running only the workflows specified in the SelectedWorkflows slice.
|
||||
RestrictedToWorkflows *bool `json:"restricted_to_workflows,omitempty"`
|
||||
// List of workflows the runner group should be allowed to run. This setting will be ignored unless RestrictedToWorkflows is set to true.
|
||||
SelectedWorkflows []string `json:"selected_workflows,omitempty"`
|
||||
}
|
||||
|
||||
// UpdateRunnerGroupRequest represents a request to update a Runner group for an organization.
|
||||
type UpdateRunnerGroupRequest struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
Visibility *string `json:"visibility,omitempty"`
|
||||
AllowsPublicRepositories *bool `json:"allows_public_repositories,omitempty"`
|
||||
RestrictedToWorkflows *bool `json:"restricted_to_workflows,omitempty"`
|
||||
SelectedWorkflows []string `json:"selected_workflows,omitempty"`
|
||||
}
|
||||
|
||||
// SetRepoAccessRunnerGroupRequest represents a request to replace the list of repositories
|
||||
// that can access a self-hosted runner group configured in an organization.
|
||||
type SetRepoAccessRunnerGroupRequest struct {
|
||||
// Updated list of repository IDs that should be given access to the runner group.
|
||||
SelectedRepositoryIDs []int64 `json:"selected_repository_ids"`
|
||||
}
|
||||
|
||||
// SetRunnerGroupRunnersRequest represents a request to replace the list of
|
||||
// self-hosted runners that are part of an organization runner group.
|
||||
type SetRunnerGroupRunnersRequest struct {
|
||||
// Updated list of runner IDs that should be given access to the runner group.
|
||||
Runners []int64 `json:"runners"`
|
||||
}
|
||||
|
||||
// ListOrgRunnerGroupOptions extend ListOptions to have the optional parameters VisibleToRepository.
|
||||
type ListOrgRunnerGroupOptions struct {
|
||||
ListOptions
|
||||
|
||||
// Only return runner groups that are allowed to be used by this repository.
|
||||
VisibleToRepository string `url:"visible_to_repository,omitempty"`
|
||||
}
|
||||
|
||||
// ListOrganizationRunnerGroups lists all self-hosted runner groups configured in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#list-self-hosted-runner-groups-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/runner-groups
|
||||
func (s *ActionsService) ListOrganizationRunnerGroups(ctx context.Context, org string, opts *ListOrgRunnerGroupOptions) (*RunnerGroups, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
groups := &RunnerGroups{}
|
||||
resp, err := s.client.Do(ctx, req, &groups)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return groups, resp, nil
|
||||
}
|
||||
|
||||
// GetOrganizationRunnerGroup gets a specific self-hosted runner group for an organization using its RunnerGroup ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#get-a-self-hosted-runner-group-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/runner-groups/{runner_group_id}
|
||||
func (s *ActionsService) GetOrganizationRunnerGroup(ctx context.Context, org string, groupID int64) (*RunnerGroup, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v", org, groupID)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runnerGroup := new(RunnerGroup)
|
||||
resp, err := s.client.Do(ctx, req, runnerGroup)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runnerGroup, resp, nil
|
||||
}
|
||||
|
||||
// DeleteOrganizationRunnerGroup deletes a self-hosted runner group from an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#delete-a-self-hosted-runner-group-from-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}
|
||||
func (s *ActionsService) DeleteOrganizationRunnerGroup(ctx context.Context, org string, groupID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v", org, groupID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// CreateOrganizationRunnerGroup creates a new self-hosted runner group for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#create-a-self-hosted-runner-group-for-an-organization
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/actions/runner-groups
|
||||
func (s *ActionsService) CreateOrganizationRunnerGroup(ctx context.Context, org string, createReq CreateRunnerGroupRequest) (*RunnerGroup, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups", org)
|
||||
req, err := s.client.NewRequest("POST", u, createReq)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runnerGroup := new(RunnerGroup)
|
||||
resp, err := s.client.Do(ctx, req, runnerGroup)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runnerGroup, resp, nil
|
||||
}
|
||||
|
||||
// UpdateOrganizationRunnerGroup updates a self-hosted runner group for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#update-a-self-hosted-runner-group-for-an-organization
|
||||
//
|
||||
//meta:operation PATCH /orgs/{org}/actions/runner-groups/{runner_group_id}
|
||||
func (s *ActionsService) UpdateOrganizationRunnerGroup(ctx context.Context, org string, groupID int64, updateReq UpdateRunnerGroupRequest) (*RunnerGroup, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v", org, groupID)
|
||||
req, err := s.client.NewRequest("PATCH", u, updateReq)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runnerGroup := new(RunnerGroup)
|
||||
resp, err := s.client.Do(ctx, req, runnerGroup)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runnerGroup, resp, nil
|
||||
}
|
||||
|
||||
// ListRepositoryAccessRunnerGroup lists the repositories with access to a self-hosted runner group configured in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#list-repository-access-to-a-self-hosted-runner-group-in-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories
|
||||
func (s *ActionsService) ListRepositoryAccessRunnerGroup(ctx context.Context, org string, groupID int64, opts *ListOptions) (*ListRepositories, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/repositories", org, groupID)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
repos := &ListRepositories{}
|
||||
resp, err := s.client.Do(ctx, req, &repos)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return repos, resp, nil
|
||||
}
|
||||
|
||||
// SetRepositoryAccessRunnerGroup replaces the list of repositories that have access to a self-hosted runner group configured in an organization
|
||||
// with a new List of repositories.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#set-repository-access-for-a-self-hosted-runner-group-in-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories
|
||||
func (s *ActionsService) SetRepositoryAccessRunnerGroup(ctx context.Context, org string, groupID int64, ids SetRepoAccessRunnerGroupRequest) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/repositories", org, groupID)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, ids)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// AddRepositoryAccessRunnerGroup adds a repository to the list of selected repositories that can access a self-hosted runner group.
|
||||
// The runner group must have visibility set to 'selected'.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#add-repository-access-to-a-self-hosted-runner-group-in-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}
|
||||
func (s *ActionsService) AddRepositoryAccessRunnerGroup(ctx context.Context, org string, groupID, repoID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/repositories/%v", org, groupID, repoID)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RemoveRepositoryAccessRunnerGroup removes a repository from the list of selected repositories that can access a self-hosted runner group.
|
||||
// The runner group must have visibility set to 'selected'.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#remove-repository-access-to-a-self-hosted-runner-group-in-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}
|
||||
func (s *ActionsService) RemoveRepositoryAccessRunnerGroup(ctx context.Context, org string, groupID, repoID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/repositories/%v", org, groupID, repoID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListRunnerGroupRunners lists self-hosted runners that are in a specific organization group.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#list-self-hosted-runners-in-a-group-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners
|
||||
func (s *ActionsService) ListRunnerGroupRunners(ctx context.Context, org string, groupID int64, opts *ListOptions) (*Runners, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/runners", org, groupID)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runners := &Runners{}
|
||||
resp, err := s.client.Do(ctx, req, &runners)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runners, resp, nil
|
||||
}
|
||||
|
||||
// SetRunnerGroupRunners replaces the list of self-hosted runners that are part of an organization runner group
|
||||
// with a new list of runners.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#set-self-hosted-runners-in-a-group-for-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners
|
||||
func (s *ActionsService) SetRunnerGroupRunners(ctx context.Context, org string, groupID int64, ids SetRunnerGroupRunnersRequest) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/runners", org, groupID)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, ids)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// AddRunnerGroupRunners adds a self-hosted runner to a runner group configured in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#add-a-self-hosted-runner-to-a-group-for-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}
|
||||
func (s *ActionsService) AddRunnerGroupRunners(ctx context.Context, org string, groupID, runnerID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/runners/%v", org, groupID, runnerID)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RemoveRunnerGroupRunners removes a self-hosted runner from a group configured in an organization.
|
||||
// The runner is then returned to the default group.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runner-groups#remove-a-self-hosted-runner-from-a-group-for-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}
|
||||
func (s *ActionsService) RemoveRunnerGroupRunners(ctx context.Context, org string, groupID, runnerID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/runners/%v", org, groupID, runnerID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
371
vendor/github.com/google/go-github/v57/github/actions_runners.go
generated
vendored
371
vendor/github.com/google/go-github/v57/github/actions_runners.go
generated
vendored
|
|
@ -1,371 +0,0 @@
|
|||
// Copyright 2020 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// RunnerApplicationDownload represents a binary for the self-hosted runner application that can be downloaded.
|
||||
type RunnerApplicationDownload struct {
|
||||
OS *string `json:"os,omitempty"`
|
||||
Architecture *string `json:"architecture,omitempty"`
|
||||
DownloadURL *string `json:"download_url,omitempty"`
|
||||
Filename *string `json:"filename,omitempty"`
|
||||
TempDownloadToken *string `json:"temp_download_token,omitempty"`
|
||||
SHA256Checksum *string `json:"sha256_checksum,omitempty"`
|
||||
}
|
||||
|
||||
// ListRunnerApplicationDownloads lists self-hosted runner application binaries that can be downloaded and run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#list-runner-applications-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runners/downloads
|
||||
func (s *ActionsService) ListRunnerApplicationDownloads(ctx context.Context, owner, repo string) ([]*RunnerApplicationDownload, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runners/downloads", owner, repo)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var rads []*RunnerApplicationDownload
|
||||
resp, err := s.client.Do(ctx, req, &rads)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return rads, resp, nil
|
||||
}
|
||||
|
||||
// GenerateJITConfigRequest specifies body parameters to GenerateRepoJITConfig.
|
||||
type GenerateJITConfigRequest struct {
|
||||
Name string `json:"name"`
|
||||
RunnerGroupID int64 `json:"runner_group_id"`
|
||||
WorkFolder *string `json:"work_folder,omitempty"`
|
||||
|
||||
// Labels represents the names of the custom labels to add to the runner.
|
||||
// Minimum items: 1. Maximum items: 100.
|
||||
Labels []string `json:"labels"`
|
||||
}
|
||||
|
||||
// JITRunnerConfig represents encoded JIT configuration that can be used to bootstrap a self-hosted runner.
|
||||
type JITRunnerConfig struct {
|
||||
Runner *Runner `json:"runner,omitempty"`
|
||||
EncodedJITConfig *string `json:"encoded_jit_config,omitempty"`
|
||||
}
|
||||
|
||||
// GenerateOrgJITConfig generate a just-in-time configuration for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#create-configuration-for-a-just-in-time-runner-for-an-organization
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/actions/runners/generate-jitconfig
|
||||
func (s *ActionsService) GenerateOrgJITConfig(ctx context.Context, owner string, request *GenerateJITConfigRequest) (*JITRunnerConfig, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runners/generate-jitconfig", owner)
|
||||
req, err := s.client.NewRequest("POST", u, request)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
jitConfig := new(JITRunnerConfig)
|
||||
resp, err := s.client.Do(ctx, req, jitConfig)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return jitConfig, resp, nil
|
||||
}
|
||||
|
||||
// GenerateRepoJITConfig generates a just-in-time configuration for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#create-configuration-for-a-just-in-time-runner-for-a-repository
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig
|
||||
func (s *ActionsService) GenerateRepoJITConfig(ctx context.Context, owner, repo string, request *GenerateJITConfigRequest) (*JITRunnerConfig, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runners/generate-jitconfig", owner, repo)
|
||||
req, err := s.client.NewRequest("POST", u, request)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
jitConfig := new(JITRunnerConfig)
|
||||
resp, err := s.client.Do(ctx, req, jitConfig)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return jitConfig, resp, nil
|
||||
}
|
||||
|
||||
// RegistrationToken represents a token that can be used to add a self-hosted runner to a repository.
|
||||
type RegistrationToken struct {
|
||||
Token *string `json:"token,omitempty"`
|
||||
ExpiresAt *Timestamp `json:"expires_at,omitempty"`
|
||||
}
|
||||
|
||||
// CreateRegistrationToken creates a token that can be used to add a self-hosted runner.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#create-a-registration-token-for-a-repository
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/actions/runners/registration-token
|
||||
func (s *ActionsService) CreateRegistrationToken(ctx context.Context, owner, repo string) (*RegistrationToken, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runners/registration-token", owner, repo)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
registrationToken := new(RegistrationToken)
|
||||
resp, err := s.client.Do(ctx, req, registrationToken)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return registrationToken, resp, nil
|
||||
}
|
||||
|
||||
// Runner represents a self-hosted runner registered with a repository.
|
||||
type Runner struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
OS *string `json:"os,omitempty"`
|
||||
Status *string `json:"status,omitempty"`
|
||||
Busy *bool `json:"busy,omitempty"`
|
||||
Labels []*RunnerLabels `json:"labels,omitempty"`
|
||||
}
|
||||
|
||||
// RunnerLabels represents a collection of labels attached to each runner.
|
||||
type RunnerLabels struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Type *string `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
// Runners represents a collection of self-hosted runners for a repository.
|
||||
type Runners struct {
|
||||
TotalCount int `json:"total_count"`
|
||||
Runners []*Runner `json:"runners"`
|
||||
}
|
||||
|
||||
// ListRunners lists all the self-hosted runners for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runners
|
||||
func (s *ActionsService) ListRunners(ctx context.Context, owner, repo string, opts *ListOptions) (*Runners, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runners", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runners := &Runners{}
|
||||
resp, err := s.client.Do(ctx, req, &runners)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runners, resp, nil
|
||||
}
|
||||
|
||||
// GetRunner gets a specific self-hosted runner for a repository using its runner ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#get-a-self-hosted-runner-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runners/{runner_id}
|
||||
func (s *ActionsService) GetRunner(ctx context.Context, owner, repo string, runnerID int64) (*Runner, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runners/%v", owner, repo, runnerID)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runner := new(Runner)
|
||||
resp, err := s.client.Do(ctx, req, runner)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runner, resp, nil
|
||||
}
|
||||
|
||||
// RemoveToken represents a token that can be used to remove a self-hosted runner from a repository.
|
||||
type RemoveToken struct {
|
||||
Token *string `json:"token,omitempty"`
|
||||
ExpiresAt *Timestamp `json:"expires_at,omitempty"`
|
||||
}
|
||||
|
||||
// CreateRemoveToken creates a token that can be used to remove a self-hosted runner from a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#create-a-remove-token-for-a-repository
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/actions/runners/remove-token
|
||||
func (s *ActionsService) CreateRemoveToken(ctx context.Context, owner, repo string) (*RemoveToken, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runners/remove-token", owner, repo)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
removeToken := new(RemoveToken)
|
||||
resp, err := s.client.Do(ctx, req, removeToken)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return removeToken, resp, nil
|
||||
}
|
||||
|
||||
// RemoveRunner forces the removal of a self-hosted runner in a repository using the runner id.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#delete-a-self-hosted-runner-from-a-repository
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}
|
||||
func (s *ActionsService) RemoveRunner(ctx context.Context, owner, repo string, runnerID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runners/%v", owner, repo, runnerID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListOrganizationRunnerApplicationDownloads lists self-hosted runner application binaries that can be downloaded and run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#list-runner-applications-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/runners/downloads
|
||||
func (s *ActionsService) ListOrganizationRunnerApplicationDownloads(ctx context.Context, owner string) ([]*RunnerApplicationDownload, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runners/downloads", owner)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var rads []*RunnerApplicationDownload
|
||||
resp, err := s.client.Do(ctx, req, &rads)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return rads, resp, nil
|
||||
}
|
||||
|
||||
// CreateOrganizationRegistrationToken creates a token that can be used to add a self-hosted runner to an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#create-a-registration-token-for-an-organization
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/actions/runners/registration-token
|
||||
func (s *ActionsService) CreateOrganizationRegistrationToken(ctx context.Context, owner string) (*RegistrationToken, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runners/registration-token", owner)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
registrationToken := new(RegistrationToken)
|
||||
resp, err := s.client.Do(ctx, req, registrationToken)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return registrationToken, resp, nil
|
||||
}
|
||||
|
||||
// ListOrganizationRunners lists all the self-hosted runners for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#list-self-hosted-runners-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/runners
|
||||
func (s *ActionsService) ListOrganizationRunners(ctx context.Context, owner string, opts *ListOptions) (*Runners, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runners", owner)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runners := &Runners{}
|
||||
resp, err := s.client.Do(ctx, req, &runners)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runners, resp, nil
|
||||
}
|
||||
|
||||
// GetOrganizationRunner gets a specific self-hosted runner for an organization using its runner ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#get-a-self-hosted-runner-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/runners/{runner_id}
|
||||
func (s *ActionsService) GetOrganizationRunner(ctx context.Context, owner string, runnerID int64) (*Runner, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runners/%v", owner, runnerID)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runner := new(Runner)
|
||||
resp, err := s.client.Do(ctx, req, runner)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runner, resp, nil
|
||||
}
|
||||
|
||||
// CreateOrganizationRemoveToken creates a token that can be used to remove a self-hosted runner from an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#create-a-remove-token-for-an-organization
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/actions/runners/remove-token
|
||||
func (s *ActionsService) CreateOrganizationRemoveToken(ctx context.Context, owner string) (*RemoveToken, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runners/remove-token", owner)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
removeToken := new(RemoveToken)
|
||||
resp, err := s.client.Do(ctx, req, removeToken)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return removeToken, resp, nil
|
||||
}
|
||||
|
||||
// RemoveOrganizationRunner forces the removal of a self-hosted runner from an organization using the runner id.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/self-hosted-runners#delete-a-self-hosted-runner-from-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/runners/{runner_id}
|
||||
func (s *ActionsService) RemoveOrganizationRunner(ctx context.Context, owner string, runnerID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/actions/runners/%v", owner, runnerID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
396
vendor/github.com/google/go-github/v57/github/actions_secrets.go
generated
vendored
396
vendor/github.com/google/go-github/v57/github/actions_secrets.go
generated
vendored
|
|
@ -1,396 +0,0 @@
|
|||
// Copyright 2020 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// PublicKey represents the public key that should be used to encrypt secrets.
|
||||
type PublicKey struct {
|
||||
KeyID *string `json:"key_id"`
|
||||
Key *string `json:"key"`
|
||||
}
|
||||
|
||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
||||
// This ensures GitHub Enterprise versions which return a numeric key id
|
||||
// do not error out when unmarshaling.
|
||||
func (p *PublicKey) UnmarshalJSON(data []byte) error {
|
||||
var pk struct {
|
||||
KeyID interface{} `json:"key_id"`
|
||||
Key *string `json:"key"`
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(data, &pk); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
p.Key = pk.Key
|
||||
|
||||
switch v := pk.KeyID.(type) {
|
||||
case nil:
|
||||
return nil
|
||||
case string:
|
||||
p.KeyID = &v
|
||||
case float64:
|
||||
p.KeyID = String(strconv.FormatFloat(v, 'f', -1, 64))
|
||||
default:
|
||||
return fmt.Errorf("unable to unmarshal %T as a string", v)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *ActionsService) getPublicKey(ctx context.Context, url string) (*PublicKey, *Response, error) {
|
||||
req, err := s.client.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
pubKey := new(PublicKey)
|
||||
resp, err := s.client.Do(ctx, req, pubKey)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return pubKey, resp, nil
|
||||
}
|
||||
|
||||
// GetRepoPublicKey gets a public key that should be used for secret encryption.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#get-a-repository-public-key
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/secrets/public-key
|
||||
func (s *ActionsService) GetRepoPublicKey(ctx context.Context, owner, repo string) (*PublicKey, *Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/secrets/public-key", owner, repo)
|
||||
return s.getPublicKey(ctx, url)
|
||||
}
|
||||
|
||||
// GetOrgPublicKey gets a public key that should be used for secret encryption.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#get-an-organization-public-key
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/secrets/public-key
|
||||
func (s *ActionsService) GetOrgPublicKey(ctx context.Context, org string) (*PublicKey, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/secrets/public-key", org)
|
||||
return s.getPublicKey(ctx, url)
|
||||
}
|
||||
|
||||
// GetEnvPublicKey gets a public key that should be used for secret encryption.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#get-an-environment-public-key
|
||||
//
|
||||
//meta:operation GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key
|
||||
func (s *ActionsService) GetEnvPublicKey(ctx context.Context, repoID int, env string) (*PublicKey, *Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/secrets/public-key", repoID, env)
|
||||
return s.getPublicKey(ctx, url)
|
||||
}
|
||||
|
||||
// Secret represents a repository action secret.
|
||||
type Secret struct {
|
||||
Name string `json:"name"`
|
||||
CreatedAt Timestamp `json:"created_at"`
|
||||
UpdatedAt Timestamp `json:"updated_at"`
|
||||
Visibility string `json:"visibility,omitempty"`
|
||||
SelectedRepositoriesURL string `json:"selected_repositories_url,omitempty"`
|
||||
}
|
||||
|
||||
// Secrets represents one item from the ListSecrets response.
|
||||
type Secrets struct {
|
||||
TotalCount int `json:"total_count"`
|
||||
Secrets []*Secret `json:"secrets"`
|
||||
}
|
||||
|
||||
func (s *ActionsService) listSecrets(ctx context.Context, url string, opts *ListOptions) (*Secrets, *Response, error) {
|
||||
u, err := addOptions(url, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
secrets := new(Secrets)
|
||||
resp, err := s.client.Do(ctx, req, &secrets)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return secrets, resp, nil
|
||||
}
|
||||
|
||||
// ListRepoSecrets lists all secrets available in a repository
|
||||
// without revealing their encrypted values.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#list-repository-secrets
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/secrets
|
||||
func (s *ActionsService) ListRepoSecrets(ctx context.Context, owner, repo string, opts *ListOptions) (*Secrets, *Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/secrets", owner, repo)
|
||||
return s.listSecrets(ctx, url, opts)
|
||||
}
|
||||
|
||||
// ListOrgSecrets lists all secrets available in an organization
|
||||
// without revealing their encrypted values.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#list-organization-secrets
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/secrets
|
||||
func (s *ActionsService) ListOrgSecrets(ctx context.Context, org string, opts *ListOptions) (*Secrets, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/secrets", org)
|
||||
return s.listSecrets(ctx, url, opts)
|
||||
}
|
||||
|
||||
// ListEnvSecrets lists all secrets available in an environment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#list-environment-secrets
|
||||
//
|
||||
//meta:operation GET /repositories/{repository_id}/environments/{environment_name}/secrets
|
||||
func (s *ActionsService) ListEnvSecrets(ctx context.Context, repoID int, env string, opts *ListOptions) (*Secrets, *Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/secrets", repoID, env)
|
||||
return s.listSecrets(ctx, url, opts)
|
||||
}
|
||||
|
||||
func (s *ActionsService) getSecret(ctx context.Context, url string) (*Secret, *Response, error) {
|
||||
req, err := s.client.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
secret := new(Secret)
|
||||
resp, err := s.client.Do(ctx, req, secret)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return secret, resp, nil
|
||||
}
|
||||
|
||||
// GetRepoSecret gets a single repository secret without revealing its encrypted value.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#get-a-repository-secret
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/secrets/{secret_name}
|
||||
func (s *ActionsService) GetRepoSecret(ctx context.Context, owner, repo, name string) (*Secret, *Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/secrets/%v", owner, repo, name)
|
||||
return s.getSecret(ctx, url)
|
||||
}
|
||||
|
||||
// GetOrgSecret gets a single organization secret without revealing its encrypted value.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#get-an-organization-secret
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/secrets/{secret_name}
|
||||
func (s *ActionsService) GetOrgSecret(ctx context.Context, org, name string) (*Secret, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/secrets/%v", org, name)
|
||||
return s.getSecret(ctx, url)
|
||||
}
|
||||
|
||||
// GetEnvSecret gets a single environment secret without revealing its encrypted value.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#get-an-environment-secret
|
||||
//
|
||||
//meta:operation GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}
|
||||
func (s *ActionsService) GetEnvSecret(ctx context.Context, repoID int, env, secretName string) (*Secret, *Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/secrets/%v", repoID, env, secretName)
|
||||
return s.getSecret(ctx, url)
|
||||
}
|
||||
|
||||
// SelectedRepoIDs are the repository IDs that have access to the actions secrets.
|
||||
type SelectedRepoIDs []int64
|
||||
|
||||
// EncryptedSecret represents a secret that is encrypted using a public key.
|
||||
//
|
||||
// The value of EncryptedValue must be your secret, encrypted with
|
||||
// LibSodium (see documentation here: https://libsodium.gitbook.io/doc/bindings_for_other_languages)
|
||||
// using the public key retrieved using the GetPublicKey method.
|
||||
type EncryptedSecret struct {
|
||||
Name string `json:"-"`
|
||||
KeyID string `json:"key_id"`
|
||||
EncryptedValue string `json:"encrypted_value"`
|
||||
Visibility string `json:"visibility,omitempty"`
|
||||
SelectedRepositoryIDs SelectedRepoIDs `json:"selected_repository_ids,omitempty"`
|
||||
}
|
||||
|
||||
func (s *ActionsService) putSecret(ctx context.Context, url string, eSecret *EncryptedSecret) (*Response, error) {
|
||||
req, err := s.client.NewRequest("PUT", url, eSecret)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// CreateOrUpdateRepoSecret creates or updates a repository secret with an encrypted value.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#create-or-update-a-repository-secret
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}
|
||||
func (s *ActionsService) CreateOrUpdateRepoSecret(ctx context.Context, owner, repo string, eSecret *EncryptedSecret) (*Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/secrets/%v", owner, repo, eSecret.Name)
|
||||
return s.putSecret(ctx, url, eSecret)
|
||||
}
|
||||
|
||||
// CreateOrUpdateOrgSecret creates or updates an organization secret with an encrypted value.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#create-or-update-an-organization-secret
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/secrets/{secret_name}
|
||||
func (s *ActionsService) CreateOrUpdateOrgSecret(ctx context.Context, org string, eSecret *EncryptedSecret) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/secrets/%v", org, eSecret.Name)
|
||||
return s.putSecret(ctx, url, eSecret)
|
||||
}
|
||||
|
||||
// CreateOrUpdateEnvSecret creates or updates a single environment secret with an encrypted value.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#create-or-update-an-environment-secret
|
||||
//
|
||||
//meta:operation PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}
|
||||
func (s *ActionsService) CreateOrUpdateEnvSecret(ctx context.Context, repoID int, env string, eSecret *EncryptedSecret) (*Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/secrets/%v", repoID, env, eSecret.Name)
|
||||
return s.putSecret(ctx, url, eSecret)
|
||||
}
|
||||
|
||||
func (s *ActionsService) deleteSecret(ctx context.Context, url string) (*Response, error) {
|
||||
req, err := s.client.NewRequest("DELETE", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// DeleteRepoSecret deletes a secret in a repository using the secret name.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#delete-a-repository-secret
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}
|
||||
func (s *ActionsService) DeleteRepoSecret(ctx context.Context, owner, repo, name string) (*Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/secrets/%v", owner, repo, name)
|
||||
return s.deleteSecret(ctx, url)
|
||||
}
|
||||
|
||||
// DeleteOrgSecret deletes a secret in an organization using the secret name.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#delete-an-organization-secret
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/secrets/{secret_name}
|
||||
func (s *ActionsService) DeleteOrgSecret(ctx context.Context, org, name string) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/secrets/%v", org, name)
|
||||
return s.deleteSecret(ctx, url)
|
||||
}
|
||||
|
||||
// DeleteEnvSecret deletes a secret in an environment using the secret name.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#delete-an-environment-secret
|
||||
//
|
||||
//meta:operation DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}
|
||||
func (s *ActionsService) DeleteEnvSecret(ctx context.Context, repoID int, env, secretName string) (*Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/secrets/%v", repoID, env, secretName)
|
||||
return s.deleteSecret(ctx, url)
|
||||
}
|
||||
|
||||
// SelectedReposList represents the list of repositories selected for an organization secret.
|
||||
type SelectedReposList struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
Repositories []*Repository `json:"repositories,omitempty"`
|
||||
}
|
||||
|
||||
func (s *ActionsService) listSelectedReposForSecret(ctx context.Context, url string, opts *ListOptions) (*SelectedReposList, *Response, error) {
|
||||
u, err := addOptions(url, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
result := new(SelectedReposList)
|
||||
resp, err := s.client.Do(ctx, req, result)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return result, resp, nil
|
||||
}
|
||||
|
||||
// ListSelectedReposForOrgSecret lists all repositories that have access to a secret.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#list-selected-repositories-for-an-organization-secret
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/secrets/{secret_name}/repositories
|
||||
func (s *ActionsService) ListSelectedReposForOrgSecret(ctx context.Context, org, name string, opts *ListOptions) (*SelectedReposList, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/secrets/%v/repositories", org, name)
|
||||
return s.listSelectedReposForSecret(ctx, url, opts)
|
||||
}
|
||||
|
||||
func (s *ActionsService) setSelectedReposForSecret(ctx context.Context, url string, ids SelectedRepoIDs) (*Response, error) {
|
||||
type repoIDs struct {
|
||||
SelectedIDs SelectedRepoIDs `json:"selected_repository_ids"`
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("PUT", url, repoIDs{SelectedIDs: ids})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// SetSelectedReposForOrgSecret sets the repositories that have access to a secret.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#set-selected-repositories-for-an-organization-secret
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/secrets/{secret_name}/repositories
|
||||
func (s *ActionsService) SetSelectedReposForOrgSecret(ctx context.Context, org, name string, ids SelectedRepoIDs) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/secrets/%v/repositories", org, name)
|
||||
return s.setSelectedReposForSecret(ctx, url, ids)
|
||||
}
|
||||
|
||||
func (s *ActionsService) addSelectedRepoToSecret(ctx context.Context, url string) (*Response, error) {
|
||||
req, err := s.client.NewRequest("PUT", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// AddSelectedRepoToOrgSecret adds a repository to an organization secret.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#add-selected-repository-to-an-organization-secret
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}
|
||||
func (s *ActionsService) AddSelectedRepoToOrgSecret(ctx context.Context, org, name string, repo *Repository) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/secrets/%v/repositories/%v", org, name, *repo.ID)
|
||||
return s.addSelectedRepoToSecret(ctx, url)
|
||||
}
|
||||
|
||||
func (s *ActionsService) removeSelectedRepoFromSecret(ctx context.Context, url string) (*Response, error) {
|
||||
req, err := s.client.NewRequest("DELETE", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RemoveSelectedRepoFromOrgSecret removes a repository from an organization secret.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/secrets#remove-selected-repository-from-an-organization-secret
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}
|
||||
func (s *ActionsService) RemoveSelectedRepoFromOrgSecret(ctx context.Context, org, name string, repo *Repository) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/secrets/%v/repositories/%v", org, name, *repo.ID)
|
||||
return s.removeSelectedRepoFromSecret(ctx, url)
|
||||
}
|
||||
331
vendor/github.com/google/go-github/v57/github/actions_variables.go
generated
vendored
331
vendor/github.com/google/go-github/v57/github/actions_variables.go
generated
vendored
|
|
@ -1,331 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ActionsVariable represents a repository action variable.
|
||||
type ActionsVariable struct {
|
||||
Name string `json:"name"`
|
||||
Value string `json:"value"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
Visibility *string `json:"visibility,omitempty"`
|
||||
// Used by ListOrgVariables and GetOrgVariables
|
||||
SelectedRepositoriesURL *string `json:"selected_repositories_url,omitempty"`
|
||||
// Used by UpdateOrgVariable and CreateOrgVariable
|
||||
SelectedRepositoryIDs *SelectedRepoIDs `json:"selected_repository_ids,omitempty"`
|
||||
}
|
||||
|
||||
// ActionsVariables represents one item from the ListVariables response.
|
||||
type ActionsVariables struct {
|
||||
TotalCount int `json:"total_count"`
|
||||
Variables []*ActionsVariable `json:"variables"`
|
||||
}
|
||||
|
||||
func (s *ActionsService) listVariables(ctx context.Context, url string, opts *ListOptions) (*ActionsVariables, *Response, error) {
|
||||
u, err := addOptions(url, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
variables := new(ActionsVariables)
|
||||
resp, err := s.client.Do(ctx, req, &variables)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return variables, resp, nil
|
||||
}
|
||||
|
||||
// ListRepoVariables lists all variables available in a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#list-repository-variables
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/variables
|
||||
func (s *ActionsService) ListRepoVariables(ctx context.Context, owner, repo string, opts *ListOptions) (*ActionsVariables, *Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/variables", owner, repo)
|
||||
return s.listVariables(ctx, url, opts)
|
||||
}
|
||||
|
||||
// ListOrgVariables lists all variables available in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#list-organization-variables
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/variables
|
||||
func (s *ActionsService) ListOrgVariables(ctx context.Context, org string, opts *ListOptions) (*ActionsVariables, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/variables", org)
|
||||
return s.listVariables(ctx, url, opts)
|
||||
}
|
||||
|
||||
// ListEnvVariables lists all variables available in an environment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#list-environment-variables
|
||||
//
|
||||
//meta:operation GET /repositories/{repository_id}/environments/{environment_name}/variables
|
||||
func (s *ActionsService) ListEnvVariables(ctx context.Context, repoID int, env string, opts *ListOptions) (*ActionsVariables, *Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/variables", repoID, env)
|
||||
return s.listVariables(ctx, url, opts)
|
||||
}
|
||||
|
||||
func (s *ActionsService) getVariable(ctx context.Context, url string) (*ActionsVariable, *Response, error) {
|
||||
req, err := s.client.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
variable := new(ActionsVariable)
|
||||
resp, err := s.client.Do(ctx, req, variable)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return variable, resp, nil
|
||||
}
|
||||
|
||||
// GetRepoVariable gets a single repository variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#get-a-repository-variable
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/variables/{name}
|
||||
func (s *ActionsService) GetRepoVariable(ctx context.Context, owner, repo, name string) (*ActionsVariable, *Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/variables/%v", owner, repo, name)
|
||||
return s.getVariable(ctx, url)
|
||||
}
|
||||
|
||||
// GetOrgVariable gets a single organization variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#get-an-organization-variable
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/variables/{name}
|
||||
func (s *ActionsService) GetOrgVariable(ctx context.Context, org, name string) (*ActionsVariable, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/variables/%v", org, name)
|
||||
return s.getVariable(ctx, url)
|
||||
}
|
||||
|
||||
// GetEnvVariable gets a single environment variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#get-an-environment-variable
|
||||
//
|
||||
//meta:operation GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}
|
||||
func (s *ActionsService) GetEnvVariable(ctx context.Context, repoID int, env, variableName string) (*ActionsVariable, *Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/variables/%v", repoID, env, variableName)
|
||||
return s.getVariable(ctx, url)
|
||||
}
|
||||
|
||||
func (s *ActionsService) postVariable(ctx context.Context, url string, variable *ActionsVariable) (*Response, error) {
|
||||
req, err := s.client.NewRequest("POST", url, variable)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// CreateRepoVariable creates a repository variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#create-a-repository-variable
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/actions/variables
|
||||
func (s *ActionsService) CreateRepoVariable(ctx context.Context, owner, repo string, variable *ActionsVariable) (*Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/variables", owner, repo)
|
||||
return s.postVariable(ctx, url, variable)
|
||||
}
|
||||
|
||||
// CreateOrgVariable creates an organization variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#create-an-organization-variable
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/actions/variables
|
||||
func (s *ActionsService) CreateOrgVariable(ctx context.Context, org string, variable *ActionsVariable) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/variables", org)
|
||||
return s.postVariable(ctx, url, variable)
|
||||
}
|
||||
|
||||
// CreateEnvVariable creates an environment variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#create-an-environment-variable
|
||||
//
|
||||
//meta:operation POST /repositories/{repository_id}/environments/{environment_name}/variables
|
||||
func (s *ActionsService) CreateEnvVariable(ctx context.Context, repoID int, env string, variable *ActionsVariable) (*Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/variables", repoID, env)
|
||||
return s.postVariable(ctx, url, variable)
|
||||
}
|
||||
|
||||
func (s *ActionsService) patchVariable(ctx context.Context, url string, variable *ActionsVariable) (*Response, error) {
|
||||
req, err := s.client.NewRequest("PATCH", url, variable)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// UpdateRepoVariable updates a repository variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#update-a-repository-variable
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/actions/variables/{name}
|
||||
func (s *ActionsService) UpdateRepoVariable(ctx context.Context, owner, repo string, variable *ActionsVariable) (*Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/variables/%v", owner, repo, variable.Name)
|
||||
return s.patchVariable(ctx, url, variable)
|
||||
}
|
||||
|
||||
// UpdateOrgVariable updates an organization variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#update-an-organization-variable
|
||||
//
|
||||
//meta:operation PATCH /orgs/{org}/actions/variables/{name}
|
||||
func (s *ActionsService) UpdateOrgVariable(ctx context.Context, org string, variable *ActionsVariable) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/variables/%v", org, variable.Name)
|
||||
return s.patchVariable(ctx, url, variable)
|
||||
}
|
||||
|
||||
// UpdateEnvVariable updates an environment variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#update-an-environment-variable
|
||||
//
|
||||
//meta:operation PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}
|
||||
func (s *ActionsService) UpdateEnvVariable(ctx context.Context, repoID int, env string, variable *ActionsVariable) (*Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/variables/%v", repoID, env, variable.Name)
|
||||
return s.patchVariable(ctx, url, variable)
|
||||
}
|
||||
|
||||
func (s *ActionsService) deleteVariable(ctx context.Context, url string) (*Response, error) {
|
||||
req, err := s.client.NewRequest("DELETE", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// DeleteRepoVariable deletes a variable in a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#delete-a-repository-variable
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/actions/variables/{name}
|
||||
func (s *ActionsService) DeleteRepoVariable(ctx context.Context, owner, repo, name string) (*Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/actions/variables/%v", owner, repo, name)
|
||||
return s.deleteVariable(ctx, url)
|
||||
}
|
||||
|
||||
// DeleteOrgVariable deletes a variable in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#delete-an-organization-variable
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/variables/{name}
|
||||
func (s *ActionsService) DeleteOrgVariable(ctx context.Context, org, name string) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/variables/%v", org, name)
|
||||
return s.deleteVariable(ctx, url)
|
||||
}
|
||||
|
||||
// DeleteEnvVariable deletes a variable in an environment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#delete-an-environment-variable
|
||||
//
|
||||
//meta:operation DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}
|
||||
func (s *ActionsService) DeleteEnvVariable(ctx context.Context, repoID int, env, variableName string) (*Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/environments/%v/variables/%v", repoID, env, variableName)
|
||||
return s.deleteVariable(ctx, url)
|
||||
}
|
||||
|
||||
func (s *ActionsService) listSelectedReposForVariable(ctx context.Context, url string, opts *ListOptions) (*SelectedReposList, *Response, error) {
|
||||
u, err := addOptions(url, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
result := new(SelectedReposList)
|
||||
resp, err := s.client.Do(ctx, req, result)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return result, resp, nil
|
||||
}
|
||||
|
||||
// ListSelectedReposForOrgVariable lists all repositories that have access to a variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#list-selected-repositories-for-an-organization-variable
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/actions/variables/{name}/repositories
|
||||
func (s *ActionsService) ListSelectedReposForOrgVariable(ctx context.Context, org, name string, opts *ListOptions) (*SelectedReposList, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/variables/%v/repositories", org, name)
|
||||
return s.listSelectedReposForVariable(ctx, url, opts)
|
||||
}
|
||||
|
||||
func (s *ActionsService) setSelectedReposForVariable(ctx context.Context, url string, ids SelectedRepoIDs) (*Response, error) {
|
||||
type repoIDs struct {
|
||||
SelectedIDs SelectedRepoIDs `json:"selected_repository_ids"`
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("PUT", url, repoIDs{SelectedIDs: ids})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// SetSelectedReposForOrgVariable sets the repositories that have access to a variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#set-selected-repositories-for-an-organization-variable
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/variables/{name}/repositories
|
||||
func (s *ActionsService) SetSelectedReposForOrgVariable(ctx context.Context, org, name string, ids SelectedRepoIDs) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/variables/%v/repositories", org, name)
|
||||
return s.setSelectedReposForVariable(ctx, url, ids)
|
||||
}
|
||||
|
||||
func (s *ActionsService) addSelectedRepoToVariable(ctx context.Context, url string) (*Response, error) {
|
||||
req, err := s.client.NewRequest("PUT", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// AddSelectedRepoToOrgVariable adds a repository to an organization variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#add-selected-repository-to-an-organization-variable
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}
|
||||
func (s *ActionsService) AddSelectedRepoToOrgVariable(ctx context.Context, org, name string, repo *Repository) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/variables/%v/repositories/%v", org, name, *repo.ID)
|
||||
return s.addSelectedRepoToVariable(ctx, url)
|
||||
}
|
||||
|
||||
func (s *ActionsService) removeSelectedRepoFromVariable(ctx context.Context, url string) (*Response, error) {
|
||||
req, err := s.client.NewRequest("DELETE", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RemoveSelectedRepoFromOrgVariable removes a repository from an organization variable.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/variables#remove-selected-repository-from-an-organization-variable
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}
|
||||
func (s *ActionsService) RemoveSelectedRepoFromOrgVariable(ctx context.Context, org, name string, repo *Repository) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/actions/variables/%v/repositories/%v", org, name, *repo.ID)
|
||||
return s.removeSelectedRepoFromVariable(ctx, url)
|
||||
}
|
||||
139
vendor/github.com/google/go-github/v57/github/actions_workflow_jobs.go
generated
vendored
139
vendor/github.com/google/go-github/v57/github/actions_workflow_jobs.go
generated
vendored
|
|
@ -1,139 +0,0 @@
|
|||
// Copyright 2020 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
// TaskStep represents a single task step from a sequence of tasks of a job.
|
||||
type TaskStep struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
Status *string `json:"status,omitempty"`
|
||||
Conclusion *string `json:"conclusion,omitempty"`
|
||||
Number *int64 `json:"number,omitempty"`
|
||||
StartedAt *Timestamp `json:"started_at,omitempty"`
|
||||
CompletedAt *Timestamp `json:"completed_at,omitempty"`
|
||||
}
|
||||
|
||||
// WorkflowJob represents a repository action workflow job.
|
||||
type WorkflowJob struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
RunID *int64 `json:"run_id,omitempty"`
|
||||
RunURL *string `json:"run_url,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
HeadBranch *string `json:"head_branch,omitempty"`
|
||||
HeadSHA *string `json:"head_sha,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
Status *string `json:"status,omitempty"`
|
||||
Conclusion *string `json:"conclusion,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
StartedAt *Timestamp `json:"started_at,omitempty"`
|
||||
CompletedAt *Timestamp `json:"completed_at,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Steps []*TaskStep `json:"steps,omitempty"`
|
||||
CheckRunURL *string `json:"check_run_url,omitempty"`
|
||||
// Labels represents runner labels from the `runs-on:` key from a GitHub Actions workflow.
|
||||
Labels []string `json:"labels,omitempty"`
|
||||
RunnerID *int64 `json:"runner_id,omitempty"`
|
||||
RunnerName *string `json:"runner_name,omitempty"`
|
||||
RunnerGroupID *int64 `json:"runner_group_id,omitempty"`
|
||||
RunnerGroupName *string `json:"runner_group_name,omitempty"`
|
||||
RunAttempt *int64 `json:"run_attempt,omitempty"`
|
||||
WorkflowName *string `json:"workflow_name,omitempty"`
|
||||
}
|
||||
|
||||
// Jobs represents a slice of repository action workflow job.
|
||||
type Jobs struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
Jobs []*WorkflowJob `json:"jobs,omitempty"`
|
||||
}
|
||||
|
||||
// ListWorkflowJobsOptions specifies optional parameters to ListWorkflowJobs.
|
||||
type ListWorkflowJobsOptions struct {
|
||||
// Filter specifies how jobs should be filtered by their completed_at timestamp.
|
||||
// Possible values are:
|
||||
// latest - Returns jobs from the most recent execution of the workflow run
|
||||
// all - Returns all jobs for a workflow run, including from old executions of the workflow run
|
||||
//
|
||||
// Default value is "latest".
|
||||
Filter string `url:"filter,omitempty"`
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListWorkflowJobs lists all jobs for a workflow run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-jobs#list-jobs-for-a-workflow-run
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs
|
||||
func (s *ActionsService) ListWorkflowJobs(ctx context.Context, owner, repo string, runID int64, opts *ListWorkflowJobsOptions) (*Jobs, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/actions/runs/%v/jobs", owner, repo, runID)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
jobs := new(Jobs)
|
||||
resp, err := s.client.Do(ctx, req, &jobs)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return jobs, resp, nil
|
||||
}
|
||||
|
||||
// GetWorkflowJobByID gets a specific job in a workflow run by ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-jobs#get-a-job-for-a-workflow-run
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/jobs/{job_id}
|
||||
func (s *ActionsService) GetWorkflowJobByID(ctx context.Context, owner, repo string, jobID int64) (*WorkflowJob, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/jobs/%v", owner, repo, jobID)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
job := new(WorkflowJob)
|
||||
resp, err := s.client.Do(ctx, req, job)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return job, resp, nil
|
||||
}
|
||||
|
||||
// GetWorkflowJobLogs gets a redirect URL to download a plain text file of logs for a workflow job.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-jobs#download-job-logs-for-a-workflow-run
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs
|
||||
func (s *ActionsService) GetWorkflowJobLogs(ctx context.Context, owner, repo string, jobID int64, maxRedirects int) (*url.URL, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/jobs/%v/logs", owner, repo, jobID)
|
||||
|
||||
resp, err := s.client.roundTripWithOptionalFollowRedirect(ctx, u, maxRedirects)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusFound {
|
||||
return nil, newResponse(resp), fmt.Errorf("unexpected status code: %s", resp.Status)
|
||||
}
|
||||
|
||||
parsedURL, err := url.Parse(resp.Header.Get("Location"))
|
||||
return parsedURL, newResponse(resp), err
|
||||
}
|
||||
410
vendor/github.com/google/go-github/v57/github/actions_workflow_runs.go
generated
vendored
410
vendor/github.com/google/go-github/v57/github/actions_workflow_runs.go
generated
vendored
|
|
@ -1,410 +0,0 @@
|
|||
// Copyright 2020 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
// WorkflowRun represents a repository action workflow run.
|
||||
type WorkflowRun struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
HeadBranch *string `json:"head_branch,omitempty"`
|
||||
HeadSHA *string `json:"head_sha,omitempty"`
|
||||
RunNumber *int `json:"run_number,omitempty"`
|
||||
RunAttempt *int `json:"run_attempt,omitempty"`
|
||||
Event *string `json:"event,omitempty"`
|
||||
DisplayTitle *string `json:"display_title,omitempty"`
|
||||
Status *string `json:"status,omitempty"`
|
||||
Conclusion *string `json:"conclusion,omitempty"`
|
||||
WorkflowID *int64 `json:"workflow_id,omitempty"`
|
||||
CheckSuiteID *int64 `json:"check_suite_id,omitempty"`
|
||||
CheckSuiteNodeID *string `json:"check_suite_node_id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
PullRequests []*PullRequest `json:"pull_requests,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
RunStartedAt *Timestamp `json:"run_started_at,omitempty"`
|
||||
JobsURL *string `json:"jobs_url,omitempty"`
|
||||
LogsURL *string `json:"logs_url,omitempty"`
|
||||
CheckSuiteURL *string `json:"check_suite_url,omitempty"`
|
||||
ArtifactsURL *string `json:"artifacts_url,omitempty"`
|
||||
CancelURL *string `json:"cancel_url,omitempty"`
|
||||
RerunURL *string `json:"rerun_url,omitempty"`
|
||||
PreviousAttemptURL *string `json:"previous_attempt_url,omitempty"`
|
||||
HeadCommit *HeadCommit `json:"head_commit,omitempty"`
|
||||
WorkflowURL *string `json:"workflow_url,omitempty"`
|
||||
Repository *Repository `json:"repository,omitempty"`
|
||||
HeadRepository *Repository `json:"head_repository,omitempty"`
|
||||
Actor *User `json:"actor,omitempty"`
|
||||
TriggeringActor *User `json:"triggering_actor,omitempty"`
|
||||
ReferencedWorkflows []*ReferencedWorkflow `json:"referenced_workflows,omitempty"`
|
||||
}
|
||||
|
||||
// WorkflowRuns represents a slice of repository action workflow run.
|
||||
type WorkflowRuns struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
WorkflowRuns []*WorkflowRun `json:"workflow_runs,omitempty"`
|
||||
}
|
||||
|
||||
// ListWorkflowRunsOptions specifies optional parameters to ListWorkflowRuns.
|
||||
type ListWorkflowRunsOptions struct {
|
||||
Actor string `url:"actor,omitempty"`
|
||||
Branch string `url:"branch,omitempty"`
|
||||
Event string `url:"event,omitempty"`
|
||||
Status string `url:"status,omitempty"`
|
||||
Created string `url:"created,omitempty"`
|
||||
HeadSHA string `url:"head_sha,omitempty"`
|
||||
ExcludePullRequests bool `url:"exclude_pull_requests,omitempty"`
|
||||
CheckSuiteID int64 `url:"check_suite_id,omitempty"`
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// WorkflowRunUsage represents a usage of a specific workflow run.
|
||||
type WorkflowRunUsage struct {
|
||||
Billable *WorkflowRunBillMap `json:"billable,omitempty"`
|
||||
RunDurationMS *int64 `json:"run_duration_ms,omitempty"`
|
||||
}
|
||||
|
||||
// WorkflowRunBillMap represents different runner environments available for a workflow run.
|
||||
// Its key is the name of its environment, e.g. "UBUNTU", "MACOS", "WINDOWS", etc.
|
||||
type WorkflowRunBillMap map[string]*WorkflowRunBill
|
||||
|
||||
// WorkflowRunBill specifies billable time for a specific environment in a workflow run.
|
||||
type WorkflowRunBill struct {
|
||||
TotalMS *int64 `json:"total_ms,omitempty"`
|
||||
Jobs *int `json:"jobs,omitempty"`
|
||||
JobRuns []*WorkflowRunJobRun `json:"job_runs,omitempty"`
|
||||
}
|
||||
|
||||
// WorkflowRunJobRun represents a usage of individual jobs of a specific workflow run.
|
||||
type WorkflowRunJobRun struct {
|
||||
JobID *int `json:"job_id,omitempty"`
|
||||
DurationMS *int64 `json:"duration_ms,omitempty"`
|
||||
}
|
||||
|
||||
// WorkflowRunAttemptOptions specifies optional parameters to GetWorkflowRunAttempt.
|
||||
type WorkflowRunAttemptOptions struct {
|
||||
ExcludePullRequests *bool `url:"exclude_pull_requests,omitempty"`
|
||||
}
|
||||
|
||||
// PendingDeploymentsRequest specifies body parameters to PendingDeployments.
|
||||
type PendingDeploymentsRequest struct {
|
||||
EnvironmentIDs []int64 `json:"environment_ids"`
|
||||
// State can be one of: "approved", "rejected".
|
||||
State string `json:"state"`
|
||||
Comment string `json:"comment"`
|
||||
}
|
||||
|
||||
type ReferencedWorkflow struct {
|
||||
Path *string `json:"path,omitempty"`
|
||||
SHA *string `json:"sha,omitempty"`
|
||||
Ref *string `json:"ref,omitempty"`
|
||||
}
|
||||
|
||||
func (s *ActionsService) listWorkflowRuns(ctx context.Context, endpoint string, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) {
|
||||
u, err := addOptions(endpoint, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runs := new(WorkflowRuns)
|
||||
resp, err := s.client.Do(ctx, req, &runs)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runs, resp, nil
|
||||
}
|
||||
|
||||
// ListWorkflowRunsByID lists all workflow runs by workflow ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs
|
||||
func (s *ActionsService) ListWorkflowRunsByID(ctx context.Context, owner, repo string, workflowID int64, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/actions/workflows/%v/runs", owner, repo, workflowID)
|
||||
return s.listWorkflowRuns(ctx, u, opts)
|
||||
}
|
||||
|
||||
// ListWorkflowRunsByFileName lists all workflow runs by workflow file name.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-workflow
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs
|
||||
func (s *ActionsService) ListWorkflowRunsByFileName(ctx context.Context, owner, repo, workflowFileName string, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/actions/workflows/%v/runs", owner, repo, workflowFileName)
|
||||
return s.listWorkflowRuns(ctx, u, opts)
|
||||
}
|
||||
|
||||
// ListRepositoryWorkflowRuns lists all workflow runs for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#list-workflow-runs-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runs
|
||||
func (s *ActionsService) ListRepositoryWorkflowRuns(ctx context.Context, owner, repo string, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/actions/runs", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runs := new(WorkflowRuns)
|
||||
resp, err := s.client.Do(ctx, req, &runs)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runs, resp, nil
|
||||
}
|
||||
|
||||
// GetWorkflowRunByID gets a specific workflow run by ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#get-a-workflow-run
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runs/{run_id}
|
||||
func (s *ActionsService) GetWorkflowRunByID(ctx context.Context, owner, repo string, runID int64) (*WorkflowRun, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v", owner, repo, runID)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
run := new(WorkflowRun)
|
||||
resp, err := s.client.Do(ctx, req, run)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return run, resp, nil
|
||||
}
|
||||
|
||||
// GetWorkflowRunAttempt gets a specific workflow run attempt.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#get-a-workflow-run-attempt
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}
|
||||
func (s *ActionsService) GetWorkflowRunAttempt(ctx context.Context, owner, repo string, runID int64, attemptNumber int, opts *WorkflowRunAttemptOptions) (*WorkflowRun, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/attempts/%v", owner, repo, runID, attemptNumber)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
run := new(WorkflowRun)
|
||||
resp, err := s.client.Do(ctx, req, run)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return run, resp, nil
|
||||
}
|
||||
|
||||
// GetWorkflowRunAttemptLogs gets a redirect URL to download a plain text file of logs for a workflow run for attempt number.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#download-workflow-run-attempt-logs
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs
|
||||
func (s *ActionsService) GetWorkflowRunAttemptLogs(ctx context.Context, owner, repo string, runID int64, attemptNumber int, maxRedirects int) (*url.URL, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/attempts/%v/logs", owner, repo, runID, attemptNumber)
|
||||
|
||||
resp, err := s.client.roundTripWithOptionalFollowRedirect(ctx, u, maxRedirects)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusFound {
|
||||
return nil, newResponse(resp), fmt.Errorf("unexpected status code: %s", resp.Status)
|
||||
}
|
||||
|
||||
parsedURL, err := url.Parse(resp.Header.Get("Location"))
|
||||
return parsedURL, newResponse(resp), err
|
||||
}
|
||||
|
||||
// RerunWorkflowByID re-runs a workflow by ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#re-run-a-workflow
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun
|
||||
func (s *ActionsService) RerunWorkflowByID(ctx context.Context, owner, repo string, runID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/rerun", owner, repo, runID)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RerunFailedJobsByID re-runs all of the failed jobs and their dependent jobs in a workflow run by ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#re-run-failed-jobs-from-a-workflow-run
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs
|
||||
func (s *ActionsService) RerunFailedJobsByID(ctx context.Context, owner, repo string, runID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/rerun-failed-jobs", owner, repo, runID)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RerunJobByID re-runs a job and its dependent jobs in a workflow run by ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#re-run-a-job-from-a-workflow-run
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun
|
||||
func (s *ActionsService) RerunJobByID(ctx context.Context, owner, repo string, jobID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/jobs/%v/rerun", owner, repo, jobID)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// CancelWorkflowRunByID cancels a workflow run by ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#cancel-a-workflow-run
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel
|
||||
func (s *ActionsService) CancelWorkflowRunByID(ctx context.Context, owner, repo string, runID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/cancel", owner, repo, runID)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// GetWorkflowRunLogs gets a redirect URL to download a plain text file of logs for a workflow run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#download-workflow-run-logs
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs
|
||||
func (s *ActionsService) GetWorkflowRunLogs(ctx context.Context, owner, repo string, runID int64, maxRedirects int) (*url.URL, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/logs", owner, repo, runID)
|
||||
|
||||
resp, err := s.client.roundTripWithOptionalFollowRedirect(ctx, u, maxRedirects)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusFound {
|
||||
return nil, newResponse(resp), fmt.Errorf("unexpected status code: %s", resp.Status)
|
||||
}
|
||||
|
||||
parsedURL, err := url.Parse(resp.Header.Get("Location"))
|
||||
return parsedURL, newResponse(resp), err
|
||||
}
|
||||
|
||||
// DeleteWorkflowRun deletes a workflow run by ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#delete-a-workflow-run
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/actions/runs/{run_id}
|
||||
func (s *ActionsService) DeleteWorkflowRun(ctx context.Context, owner, repo string, runID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v", owner, repo, runID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// DeleteWorkflowRunLogs deletes all logs for a workflow run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#delete-workflow-run-logs
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs
|
||||
func (s *ActionsService) DeleteWorkflowRunLogs(ctx context.Context, owner, repo string, runID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/logs", owner, repo, runID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// GetWorkflowRunUsageByID gets a specific workflow usage run by run ID in the unit of billable milliseconds.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#get-workflow-run-usage
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing
|
||||
func (s *ActionsService) GetWorkflowRunUsageByID(ctx context.Context, owner, repo string, runID int64) (*WorkflowRunUsage, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/timing", owner, repo, runID)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
workflowRunUsage := new(WorkflowRunUsage)
|
||||
resp, err := s.client.Do(ctx, req, workflowRunUsage)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return workflowRunUsage, resp, nil
|
||||
}
|
||||
|
||||
// PendingDeployments approve or reject pending deployments that are waiting on approval by a required reviewer.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/workflow-runs#review-pending-deployments-for-a-workflow-run
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments
|
||||
func (s *ActionsService) PendingDeployments(ctx context.Context, owner, repo string, runID int64, request *PendingDeploymentsRequest) ([]*Deployment, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/pending_deployments", owner, repo, runID)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, request)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var deployments []*Deployment
|
||||
resp, err := s.client.Do(ctx, req, &deployments)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return deployments, resp, nil
|
||||
}
|
||||
241
vendor/github.com/google/go-github/v57/github/activity_notifications.go
generated
vendored
241
vendor/github.com/google/go-github/v57/github/activity_notifications.go
generated
vendored
|
|
@ -1,241 +0,0 @@
|
|||
// Copyright 2014 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Notification identifies a GitHub notification for a user.
|
||||
type Notification struct {
|
||||
ID *string `json:"id,omitempty"`
|
||||
Repository *Repository `json:"repository,omitempty"`
|
||||
Subject *NotificationSubject `json:"subject,omitempty"`
|
||||
|
||||
// Reason identifies the event that triggered the notification.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity#notification-reasons
|
||||
Reason *string `json:"reason,omitempty"`
|
||||
|
||||
Unread *bool `json:"unread,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
LastReadAt *Timestamp `json:"last_read_at,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
// NotificationSubject identifies the subject of a notification.
|
||||
type NotificationSubject struct {
|
||||
Title *string `json:"title,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
LatestCommentURL *string `json:"latest_comment_url,omitempty"`
|
||||
Type *string `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
// NotificationListOptions specifies the optional parameters to the
|
||||
// ActivityService.ListNotifications method.
|
||||
type NotificationListOptions struct {
|
||||
All bool `url:"all,omitempty"`
|
||||
Participating bool `url:"participating,omitempty"`
|
||||
Since time.Time `url:"since,omitempty"`
|
||||
Before time.Time `url:"before,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListNotifications lists all notifications for the authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity/notifications#list-notifications-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation GET /notifications
|
||||
func (s *ActivityService) ListNotifications(ctx context.Context, opts *NotificationListOptions) ([]*Notification, *Response, error) {
|
||||
u := "notifications"
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var notifications []*Notification
|
||||
resp, err := s.client.Do(ctx, req, ¬ifications)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return notifications, resp, nil
|
||||
}
|
||||
|
||||
// ListRepositoryNotifications lists all notifications in a given repository
|
||||
// for the authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity/notifications#list-repository-notifications-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/notifications
|
||||
func (s *ActivityService) ListRepositoryNotifications(ctx context.Context, owner, repo string, opts *NotificationListOptions) ([]*Notification, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/notifications", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var notifications []*Notification
|
||||
resp, err := s.client.Do(ctx, req, ¬ifications)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return notifications, resp, nil
|
||||
}
|
||||
|
||||
type markReadOptions struct {
|
||||
LastReadAt Timestamp `json:"last_read_at,omitempty"`
|
||||
}
|
||||
|
||||
// MarkNotificationsRead marks all notifications up to lastRead as read.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity/notifications#mark-notifications-as-read
|
||||
//
|
||||
//meta:operation PUT /notifications
|
||||
func (s *ActivityService) MarkNotificationsRead(ctx context.Context, lastRead Timestamp) (*Response, error) {
|
||||
opts := &markReadOptions{
|
||||
LastReadAt: lastRead,
|
||||
}
|
||||
req, err := s.client.NewRequest("PUT", "notifications", opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// MarkRepositoryNotificationsRead marks all notifications up to lastRead in
|
||||
// the specified repository as read.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity/notifications#mark-repository-notifications-as-read
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/notifications
|
||||
func (s *ActivityService) MarkRepositoryNotificationsRead(ctx context.Context, owner, repo string, lastRead Timestamp) (*Response, error) {
|
||||
opts := &markReadOptions{
|
||||
LastReadAt: lastRead,
|
||||
}
|
||||
u := fmt.Sprintf("repos/%v/%v/notifications", owner, repo)
|
||||
req, err := s.client.NewRequest("PUT", u, opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// GetThread gets the specified notification thread.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity/notifications#get-a-thread
|
||||
//
|
||||
//meta:operation GET /notifications/threads/{thread_id}
|
||||
func (s *ActivityService) GetThread(ctx context.Context, id string) (*Notification, *Response, error) {
|
||||
u := fmt.Sprintf("notifications/threads/%v", id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
notification := new(Notification)
|
||||
resp, err := s.client.Do(ctx, req, notification)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return notification, resp, nil
|
||||
}
|
||||
|
||||
// MarkThreadRead marks the specified thread as read.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity/notifications#mark-a-thread-as-read
|
||||
//
|
||||
//meta:operation PATCH /notifications/threads/{thread_id}
|
||||
func (s *ActivityService) MarkThreadRead(ctx context.Context, id string) (*Response, error) {
|
||||
u := fmt.Sprintf("notifications/threads/%v", id)
|
||||
|
||||
req, err := s.client.NewRequest("PATCH", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// GetThreadSubscription checks to see if the authenticated user is subscribed
|
||||
// to a thread.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity/notifications#get-a-thread-subscription-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation GET /notifications/threads/{thread_id}/subscription
|
||||
func (s *ActivityService) GetThreadSubscription(ctx context.Context, id string) (*Subscription, *Response, error) {
|
||||
u := fmt.Sprintf("notifications/threads/%v/subscription", id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
sub := new(Subscription)
|
||||
resp, err := s.client.Do(ctx, req, sub)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return sub, resp, nil
|
||||
}
|
||||
|
||||
// SetThreadSubscription sets the subscription for the specified thread for the
|
||||
// authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity/notifications#set-a-thread-subscription
|
||||
//
|
||||
//meta:operation PUT /notifications/threads/{thread_id}/subscription
|
||||
func (s *ActivityService) SetThreadSubscription(ctx context.Context, id string, subscription *Subscription) (*Subscription, *Response, error) {
|
||||
u := fmt.Sprintf("notifications/threads/%v/subscription", id)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, subscription)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
sub := new(Subscription)
|
||||
resp, err := s.client.Do(ctx, req, sub)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return sub, resp, nil
|
||||
}
|
||||
|
||||
// DeleteThreadSubscription deletes the subscription for the specified thread
|
||||
// for the authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/activity/notifications#delete-a-thread-subscription
|
||||
//
|
||||
//meta:operation DELETE /notifications/threads/{thread_id}/subscription
|
||||
func (s *ActivityService) DeleteThreadSubscription(ctx context.Context, id string) (*Response, error) {
|
||||
u := fmt.Sprintf("notifications/threads/%v/subscription", id)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
123
vendor/github.com/google/go-github/v57/github/admin.go
generated
vendored
123
vendor/github.com/google/go-github/v57/github/admin.go
generated
vendored
|
|
@ -1,123 +0,0 @@
|
|||
// Copyright 2016 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// AdminService handles communication with the admin related methods of the
|
||||
// GitHub API. These API routes are normally only accessible for GitHub
|
||||
// Enterprise installations.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/enterprise-admin
|
||||
type AdminService service
|
||||
|
||||
// TeamLDAPMapping represents the mapping between a GitHub team and an LDAP group.
|
||||
type TeamLDAPMapping struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
LDAPDN *string `json:"ldap_dn,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Slug *string `json:"slug,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
Privacy *string `json:"privacy,omitempty"`
|
||||
Permission *string `json:"permission,omitempty"`
|
||||
|
||||
MembersURL *string `json:"members_url,omitempty"`
|
||||
RepositoriesURL *string `json:"repositories_url,omitempty"`
|
||||
}
|
||||
|
||||
func (m TeamLDAPMapping) String() string {
|
||||
return Stringify(m)
|
||||
}
|
||||
|
||||
// UserLDAPMapping represents the mapping between a GitHub user and an LDAP user.
|
||||
type UserLDAPMapping struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
LDAPDN *string `json:"ldap_dn,omitempty"`
|
||||
Login *string `json:"login,omitempty"`
|
||||
AvatarURL *string `json:"avatar_url,omitempty"`
|
||||
GravatarID *string `json:"gravatar_id,omitempty"`
|
||||
Type *string `json:"type,omitempty"`
|
||||
SiteAdmin *bool `json:"site_admin,omitempty"`
|
||||
|
||||
URL *string `json:"url,omitempty"`
|
||||
EventsURL *string `json:"events_url,omitempty"`
|
||||
FollowingURL *string `json:"following_url,omitempty"`
|
||||
FollowersURL *string `json:"followers_url,omitempty"`
|
||||
GistsURL *string `json:"gists_url,omitempty"`
|
||||
OrganizationsURL *string `json:"organizations_url,omitempty"`
|
||||
ReceivedEventsURL *string `json:"received_events_url,omitempty"`
|
||||
ReposURL *string `json:"repos_url,omitempty"`
|
||||
StarredURL *string `json:"starred_url,omitempty"`
|
||||
SubscriptionsURL *string `json:"subscriptions_url,omitempty"`
|
||||
}
|
||||
|
||||
func (m UserLDAPMapping) String() string {
|
||||
return Stringify(m)
|
||||
}
|
||||
|
||||
// Enterprise represents the GitHub enterprise profile.
|
||||
type Enterprise struct {
|
||||
ID *int `json:"id,omitempty"`
|
||||
Slug *string `json:"slug,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
AvatarURL *string `json:"avatar_url,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
WebsiteURL *string `json:"website_url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
func (m Enterprise) String() string {
|
||||
return Stringify(m)
|
||||
}
|
||||
|
||||
// UpdateUserLDAPMapping updates the mapping between a GitHub user and an LDAP user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/ldap#update-ldap-mapping-for-a-user
|
||||
//
|
||||
//meta:operation PATCH /admin/ldap/users/{username}/mapping
|
||||
func (s *AdminService) UpdateUserLDAPMapping(ctx context.Context, user string, mapping *UserLDAPMapping) (*UserLDAPMapping, *Response, error) {
|
||||
u := fmt.Sprintf("admin/ldap/users/%v/mapping", user)
|
||||
req, err := s.client.NewRequest("PATCH", u, mapping)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
m := new(UserLDAPMapping)
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// UpdateTeamLDAPMapping updates the mapping between a GitHub team and an LDAP group.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/ldap#update-ldap-mapping-for-a-team
|
||||
//
|
||||
//meta:operation PATCH /admin/ldap/teams/{team_id}/mapping
|
||||
func (s *AdminService) UpdateTeamLDAPMapping(ctx context.Context, team int64, mapping *TeamLDAPMapping) (*TeamLDAPMapping, *Response, error) {
|
||||
u := fmt.Sprintf("admin/ldap/teams/%v/mapping", team)
|
||||
req, err := s.client.NewRequest("PATCH", u, mapping)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
m := new(TeamLDAPMapping)
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
95
vendor/github.com/google/go-github/v57/github/admin_orgs.go
generated
vendored
95
vendor/github.com/google/go-github/v57/github/admin_orgs.go
generated
vendored
|
|
@ -1,95 +0,0 @@
|
|||
// Copyright 2019 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// createOrgRequest is a subset of Organization and is used internally
|
||||
// by CreateOrg to pass only the known fields for the endpoint.
|
||||
type createOrgRequest struct {
|
||||
Login *string `json:"login,omitempty"`
|
||||
Admin *string `json:"admin,omitempty"`
|
||||
}
|
||||
|
||||
// CreateOrg creates a new organization in GitHub Enterprise.
|
||||
//
|
||||
// Note that only a subset of the org fields are used and org must
|
||||
// not be nil.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/orgs#create-an-organization
|
||||
//
|
||||
//meta:operation POST /admin/organizations
|
||||
func (s *AdminService) CreateOrg(ctx context.Context, org *Organization, admin string) (*Organization, *Response, error) {
|
||||
u := "admin/organizations"
|
||||
|
||||
orgReq := &createOrgRequest{
|
||||
Login: org.Login,
|
||||
Admin: &admin,
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, orgReq)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
o := new(Organization)
|
||||
resp, err := s.client.Do(ctx, req, o)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return o, resp, nil
|
||||
}
|
||||
|
||||
// renameOrgRequest is a subset of Organization and is used internally
|
||||
// by RenameOrg and RenameOrgByName to pass only the known fields for the endpoint.
|
||||
type renameOrgRequest struct {
|
||||
Login *string `json:"login,omitempty"`
|
||||
}
|
||||
|
||||
// RenameOrgResponse is the response given when renaming an Organization.
|
||||
type RenameOrgResponse struct {
|
||||
Message *string `json:"message,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
// RenameOrg renames an organization in GitHub Enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/orgs#update-an-organization-name
|
||||
//
|
||||
//meta:operation PATCH /admin/organizations/{org}
|
||||
func (s *AdminService) RenameOrg(ctx context.Context, org *Organization, newName string) (*RenameOrgResponse, *Response, error) {
|
||||
return s.RenameOrgByName(ctx, *org.Login, newName)
|
||||
}
|
||||
|
||||
// RenameOrgByName renames an organization in GitHub Enterprise using its current name.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/orgs#update-an-organization-name
|
||||
//
|
||||
//meta:operation PATCH /admin/organizations/{org}
|
||||
func (s *AdminService) RenameOrgByName(ctx context.Context, org, newName string) (*RenameOrgResponse, *Response, error) {
|
||||
u := fmt.Sprintf("admin/organizations/%v", org)
|
||||
|
||||
orgReq := &renameOrgRequest{
|
||||
Login: &newName,
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("PATCH", u, orgReq)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
o := new(RenameOrgResponse)
|
||||
resp, err := s.client.Do(ctx, req, o)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return o, resp, nil
|
||||
}
|
||||
172
vendor/github.com/google/go-github/v57/github/admin_stats.go
generated
vendored
172
vendor/github.com/google/go-github/v57/github/admin_stats.go
generated
vendored
|
|
@ -1,172 +0,0 @@
|
|||
// Copyright 2017 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
// AdminStats represents a variety of stats of a GitHub Enterprise
|
||||
// installation.
|
||||
type AdminStats struct {
|
||||
Issues *IssueStats `json:"issues,omitempty"`
|
||||
Hooks *HookStats `json:"hooks,omitempty"`
|
||||
Milestones *MilestoneStats `json:"milestones,omitempty"`
|
||||
Orgs *OrgStats `json:"orgs,omitempty"`
|
||||
Comments *CommentStats `json:"comments,omitempty"`
|
||||
Pages *PageStats `json:"pages,omitempty"`
|
||||
Users *UserStats `json:"users,omitempty"`
|
||||
Gists *GistStats `json:"gists,omitempty"`
|
||||
Pulls *PullStats `json:"pulls,omitempty"`
|
||||
Repos *RepoStats `json:"repos,omitempty"`
|
||||
}
|
||||
|
||||
func (s AdminStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// IssueStats represents the number of total, open and closed issues.
|
||||
type IssueStats struct {
|
||||
TotalIssues *int `json:"total_issues,omitempty"`
|
||||
OpenIssues *int `json:"open_issues,omitempty"`
|
||||
ClosedIssues *int `json:"closed_issues,omitempty"`
|
||||
}
|
||||
|
||||
func (s IssueStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// HookStats represents the number of total, active and inactive hooks.
|
||||
type HookStats struct {
|
||||
TotalHooks *int `json:"total_hooks,omitempty"`
|
||||
ActiveHooks *int `json:"active_hooks,omitempty"`
|
||||
InactiveHooks *int `json:"inactive_hooks,omitempty"`
|
||||
}
|
||||
|
||||
func (s HookStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// MilestoneStats represents the number of total, open and close milestones.
|
||||
type MilestoneStats struct {
|
||||
TotalMilestones *int `json:"total_milestones,omitempty"`
|
||||
OpenMilestones *int `json:"open_milestones,omitempty"`
|
||||
ClosedMilestones *int `json:"closed_milestones,omitempty"`
|
||||
}
|
||||
|
||||
func (s MilestoneStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// OrgStats represents the number of total, disabled organizations and the team
|
||||
// and team member count.
|
||||
type OrgStats struct {
|
||||
TotalOrgs *int `json:"total_orgs,omitempty"`
|
||||
DisabledOrgs *int `json:"disabled_orgs,omitempty"`
|
||||
TotalTeams *int `json:"total_teams,omitempty"`
|
||||
TotalTeamMembers *int `json:"total_team_members,omitempty"`
|
||||
}
|
||||
|
||||
func (s OrgStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// CommentStats represents the number of total comments on commits, gists, issues
|
||||
// and pull requests.
|
||||
type CommentStats struct {
|
||||
TotalCommitComments *int `json:"total_commit_comments,omitempty"`
|
||||
TotalGistComments *int `json:"total_gist_comments,omitempty"`
|
||||
TotalIssueComments *int `json:"total_issue_comments,omitempty"`
|
||||
TotalPullRequestComments *int `json:"total_pull_request_comments,omitempty"`
|
||||
}
|
||||
|
||||
func (s CommentStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// PageStats represents the total number of github pages.
|
||||
type PageStats struct {
|
||||
TotalPages *int `json:"total_pages,omitempty"`
|
||||
}
|
||||
|
||||
func (s PageStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// UserStats represents the number of total, admin and suspended users.
|
||||
type UserStats struct {
|
||||
TotalUsers *int `json:"total_users,omitempty"`
|
||||
AdminUsers *int `json:"admin_users,omitempty"`
|
||||
SuspendedUsers *int `json:"suspended_users,omitempty"`
|
||||
}
|
||||
|
||||
func (s UserStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// GistStats represents the number of total, private and public gists.
|
||||
type GistStats struct {
|
||||
TotalGists *int `json:"total_gists,omitempty"`
|
||||
PrivateGists *int `json:"private_gists,omitempty"`
|
||||
PublicGists *int `json:"public_gists,omitempty"`
|
||||
}
|
||||
|
||||
func (s GistStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// PullStats represents the number of total, merged, mergable and unmergeable
|
||||
// pull-requests.
|
||||
type PullStats struct {
|
||||
TotalPulls *int `json:"total_pulls,omitempty"`
|
||||
MergedPulls *int `json:"merged_pulls,omitempty"`
|
||||
MergablePulls *int `json:"mergeable_pulls,omitempty"`
|
||||
UnmergablePulls *int `json:"unmergeable_pulls,omitempty"`
|
||||
}
|
||||
|
||||
func (s PullStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// RepoStats represents the number of total, root, fork, organization repositories
|
||||
// together with the total number of pushes and wikis.
|
||||
type RepoStats struct {
|
||||
TotalRepos *int `json:"total_repos,omitempty"`
|
||||
RootRepos *int `json:"root_repos,omitempty"`
|
||||
ForkRepos *int `json:"fork_repos,omitempty"`
|
||||
OrgRepos *int `json:"org_repos,omitempty"`
|
||||
TotalPushes *int `json:"total_pushes,omitempty"`
|
||||
TotalWikis *int `json:"total_wikis,omitempty"`
|
||||
}
|
||||
|
||||
func (s RepoStats) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// GetAdminStats returns a variety of metrics about a GitHub Enterprise
|
||||
// installation.
|
||||
//
|
||||
// Please note that this is only available to site administrators,
|
||||
// otherwise it will error with a 404 not found (instead of 401 or 403).
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/admin-stats#get-all-statistics
|
||||
//
|
||||
//meta:operation GET /enterprise/stats/all
|
||||
func (s *AdminService) GetAdminStats(ctx context.Context) (*AdminStats, *Response, error) {
|
||||
u := "enterprise/stats/all"
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
m := new(AdminStats)
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
141
vendor/github.com/google/go-github/v57/github/admin_users.go
generated
vendored
141
vendor/github.com/google/go-github/v57/github/admin_users.go
generated
vendored
|
|
@ -1,141 +0,0 @@
|
|||
// Copyright 2019 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// createUserRequest is a subset of User and is used internally
|
||||
// by CreateUser to pass only the known fields for the endpoint.
|
||||
type createUserRequest struct {
|
||||
Login *string `json:"login,omitempty"`
|
||||
Email *string `json:"email,omitempty"`
|
||||
}
|
||||
|
||||
// CreateUser creates a new user in GitHub Enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/users#create-a-user
|
||||
//
|
||||
//meta:operation POST /admin/users
|
||||
func (s *AdminService) CreateUser(ctx context.Context, login, email string) (*User, *Response, error) {
|
||||
u := "admin/users"
|
||||
|
||||
userReq := &createUserRequest{
|
||||
Login: &login,
|
||||
Email: &email,
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, userReq)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var user User
|
||||
resp, err := s.client.Do(ctx, req, &user)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return &user, resp, nil
|
||||
}
|
||||
|
||||
// DeleteUser deletes a user in GitHub Enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/users#delete-a-user
|
||||
//
|
||||
//meta:operation DELETE /admin/users/{username}
|
||||
func (s *AdminService) DeleteUser(ctx context.Context, username string) (*Response, error) {
|
||||
u := "admin/users/" + username
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// ImpersonateUserOptions represents the scoping for the OAuth token.
|
||||
type ImpersonateUserOptions struct {
|
||||
Scopes []string `json:"scopes,omitempty"`
|
||||
}
|
||||
|
||||
// OAuthAPP represents the GitHub Site Administrator OAuth app.
|
||||
type OAuthAPP struct {
|
||||
URL *string `json:"url,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
ClientID *string `json:"client_id,omitempty"`
|
||||
}
|
||||
|
||||
func (s OAuthAPP) String() string {
|
||||
return Stringify(s)
|
||||
}
|
||||
|
||||
// UserAuthorization represents the impersonation response.
|
||||
type UserAuthorization struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
Scopes []string `json:"scopes,omitempty"`
|
||||
Token *string `json:"token,omitempty"`
|
||||
TokenLastEight *string `json:"token_last_eight,omitempty"`
|
||||
HashedToken *string `json:"hashed_token,omitempty"`
|
||||
App *OAuthAPP `json:"app,omitempty"`
|
||||
Note *string `json:"note,omitempty"`
|
||||
NoteURL *string `json:"note_url,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
Fingerprint *string `json:"fingerprint,omitempty"`
|
||||
}
|
||||
|
||||
// CreateUserImpersonation creates an impersonation OAuth token.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/users#create-an-impersonation-oauth-token
|
||||
//
|
||||
//meta:operation POST /admin/users/{username}/authorizations
|
||||
func (s *AdminService) CreateUserImpersonation(ctx context.Context, username string, opts *ImpersonateUserOptions) (*UserAuthorization, *Response, error) {
|
||||
u := fmt.Sprintf("admin/users/%s/authorizations", username)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
a := new(UserAuthorization)
|
||||
resp, err := s.client.Do(ctx, req, a)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return a, resp, nil
|
||||
}
|
||||
|
||||
// DeleteUserImpersonation deletes an impersonation OAuth token.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/users#delete-an-impersonation-oauth-token
|
||||
//
|
||||
//meta:operation DELETE /admin/users/{username}/authorizations
|
||||
func (s *AdminService) DeleteUserImpersonation(ctx context.Context, username string) (*Response, error) {
|
||||
u := fmt.Sprintf("admin/users/%s/authorizations", username)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
420
vendor/github.com/google/go-github/v57/github/apps.go
generated
vendored
420
vendor/github.com/google/go-github/v57/github/apps.go
generated
vendored
|
|
@ -1,420 +0,0 @@
|
|||
// Copyright 2016 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// AppsService provides access to the installation related functions
|
||||
// in the GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/
|
||||
type AppsService service
|
||||
|
||||
// App represents a GitHub App.
|
||||
type App struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Slug *string `json:"slug,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
Owner *User `json:"owner,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
ExternalURL *string `json:"external_url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
Permissions *InstallationPermissions `json:"permissions,omitempty"`
|
||||
Events []string `json:"events,omitempty"`
|
||||
InstallationsCount *int `json:"installations_count,omitempty"`
|
||||
}
|
||||
|
||||
// InstallationToken represents an installation token.
|
||||
type InstallationToken struct {
|
||||
Token *string `json:"token,omitempty"`
|
||||
ExpiresAt *Timestamp `json:"expires_at,omitempty"`
|
||||
Permissions *InstallationPermissions `json:"permissions,omitempty"`
|
||||
Repositories []*Repository `json:"repositories,omitempty"`
|
||||
}
|
||||
|
||||
// InstallationTokenOptions allow restricting a token's access to specific repositories.
|
||||
type InstallationTokenOptions struct {
|
||||
// The IDs of the repositories that the installation token can access.
|
||||
// Providing repository IDs restricts the access of an installation token to specific repositories.
|
||||
RepositoryIDs []int64 `json:"repository_ids,omitempty"`
|
||||
|
||||
// The names of the repositories that the installation token can access.
|
||||
// Providing repository names restricts the access of an installation token to specific repositories.
|
||||
Repositories []string `json:"repositories,omitempty"`
|
||||
|
||||
// The permissions granted to the access token.
|
||||
// The permissions object includes the permission names and their access type.
|
||||
Permissions *InstallationPermissions `json:"permissions,omitempty"`
|
||||
}
|
||||
|
||||
// InstallationPermissions lists the repository and organization permissions for an installation.
|
||||
//
|
||||
// Permission names taken from:
|
||||
//
|
||||
// https://docs.github.com/enterprise-server@3.0/rest/apps#create-an-installation-access-token-for-an-app
|
||||
// https://docs.github.com/rest/apps#create-an-installation-access-token-for-an-app
|
||||
type InstallationPermissions struct {
|
||||
Actions *string `json:"actions,omitempty"`
|
||||
Administration *string `json:"administration,omitempty"`
|
||||
Blocking *string `json:"blocking,omitempty"`
|
||||
Checks *string `json:"checks,omitempty"`
|
||||
Contents *string `json:"contents,omitempty"`
|
||||
ContentReferences *string `json:"content_references,omitempty"`
|
||||
Deployments *string `json:"deployments,omitempty"`
|
||||
Emails *string `json:"emails,omitempty"`
|
||||
Environments *string `json:"environments,omitempty"`
|
||||
Followers *string `json:"followers,omitempty"`
|
||||
Issues *string `json:"issues,omitempty"`
|
||||
Metadata *string `json:"metadata,omitempty"`
|
||||
Members *string `json:"members,omitempty"`
|
||||
OrganizationAdministration *string `json:"organization_administration,omitempty"`
|
||||
OrganizationCustomRoles *string `json:"organization_custom_roles,omitempty"`
|
||||
OrganizationHooks *string `json:"organization_hooks,omitempty"`
|
||||
OrganizationPackages *string `json:"organization_packages,omitempty"`
|
||||
OrganizationPlan *string `json:"organization_plan,omitempty"`
|
||||
OrganizationPreReceiveHooks *string `json:"organization_pre_receive_hooks,omitempty"`
|
||||
OrganizationProjects *string `json:"organization_projects,omitempty"`
|
||||
OrganizationSecrets *string `json:"organization_secrets,omitempty"`
|
||||
OrganizationSelfHostedRunners *string `json:"organization_self_hosted_runners,omitempty"`
|
||||
OrganizationUserBlocking *string `json:"organization_user_blocking,omitempty"`
|
||||
Packages *string `json:"packages,omitempty"`
|
||||
Pages *string `json:"pages,omitempty"`
|
||||
PullRequests *string `json:"pull_requests,omitempty"`
|
||||
RepositoryHooks *string `json:"repository_hooks,omitempty"`
|
||||
RepositoryProjects *string `json:"repository_projects,omitempty"`
|
||||
RepositoryPreReceiveHooks *string `json:"repository_pre_receive_hooks,omitempty"`
|
||||
Secrets *string `json:"secrets,omitempty"`
|
||||
SecretScanningAlerts *string `json:"secret_scanning_alerts,omitempty"`
|
||||
SecurityEvents *string `json:"security_events,omitempty"`
|
||||
SingleFile *string `json:"single_file,omitempty"`
|
||||
Statuses *string `json:"statuses,omitempty"`
|
||||
TeamDiscussions *string `json:"team_discussions,omitempty"`
|
||||
VulnerabilityAlerts *string `json:"vulnerability_alerts,omitempty"`
|
||||
Workflows *string `json:"workflows,omitempty"`
|
||||
}
|
||||
|
||||
// InstallationRequest represents a pending GitHub App installation request.
|
||||
type InstallationRequest struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
Account *User `json:"account,omitempty"`
|
||||
Requester *User `json:"requester,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
}
|
||||
|
||||
// Installation represents a GitHub Apps installation.
|
||||
type Installation struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
AppID *int64 `json:"app_id,omitempty"`
|
||||
AppSlug *string `json:"app_slug,omitempty"`
|
||||
TargetID *int64 `json:"target_id,omitempty"`
|
||||
Account *User `json:"account,omitempty"`
|
||||
AccessTokensURL *string `json:"access_tokens_url,omitempty"`
|
||||
RepositoriesURL *string `json:"repositories_url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
TargetType *string `json:"target_type,omitempty"`
|
||||
SingleFileName *string `json:"single_file_name,omitempty"`
|
||||
RepositorySelection *string `json:"repository_selection,omitempty"`
|
||||
Events []string `json:"events,omitempty"`
|
||||
SingleFilePaths []string `json:"single_file_paths,omitempty"`
|
||||
Permissions *InstallationPermissions `json:"permissions,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
HasMultipleSingleFiles *bool `json:"has_multiple_single_files,omitempty"`
|
||||
SuspendedBy *User `json:"suspended_by,omitempty"`
|
||||
SuspendedAt *Timestamp `json:"suspended_at,omitempty"`
|
||||
}
|
||||
|
||||
// Attachment represents a GitHub Apps attachment.
|
||||
type Attachment struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Title *string `json:"title,omitempty"`
|
||||
Body *string `json:"body,omitempty"`
|
||||
}
|
||||
|
||||
// ContentReference represents a reference to a URL in an issue or pull request.
|
||||
type ContentReference struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
Reference *string `json:"reference,omitempty"`
|
||||
}
|
||||
|
||||
func (i Installation) String() string {
|
||||
return Stringify(i)
|
||||
}
|
||||
|
||||
// Get a single GitHub App. Passing the empty string will get
|
||||
// the authenticated GitHub App.
|
||||
//
|
||||
// Note: appSlug is just the URL-friendly name of your GitHub App.
|
||||
// You can find this on the settings page for your GitHub App
|
||||
// (e.g., https://github.com/settings/apps/:app_slug).
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#get-an-app
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#get-the-authenticated-app
|
||||
//
|
||||
//meta:operation GET /app
|
||||
//meta:operation GET /apps/{app_slug}
|
||||
func (s *AppsService) Get(ctx context.Context, appSlug string) (*App, *Response, error) {
|
||||
var u string
|
||||
if appSlug != "" {
|
||||
u = fmt.Sprintf("apps/%v", appSlug)
|
||||
} else {
|
||||
u = "app"
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
app := new(App)
|
||||
resp, err := s.client.Do(ctx, req, app)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return app, resp, nil
|
||||
}
|
||||
|
||||
// ListInstallationRequests lists the pending installation requests that the current GitHub App has.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#list-installation-requests-for-the-authenticated-app
|
||||
//
|
||||
//meta:operation GET /app/installation-requests
|
||||
func (s *AppsService) ListInstallationRequests(ctx context.Context, opts *ListOptions) ([]*InstallationRequest, *Response, error) {
|
||||
u, err := addOptions("app/installation-requests", opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var i []*InstallationRequest
|
||||
resp, err := s.client.Do(ctx, req, &i)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return i, resp, nil
|
||||
}
|
||||
|
||||
// ListInstallations lists the installations that the current GitHub App has.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#list-installations-for-the-authenticated-app
|
||||
//
|
||||
//meta:operation GET /app/installations
|
||||
func (s *AppsService) ListInstallations(ctx context.Context, opts *ListOptions) ([]*Installation, *Response, error) {
|
||||
u, err := addOptions("app/installations", opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var i []*Installation
|
||||
resp, err := s.client.Do(ctx, req, &i)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return i, resp, nil
|
||||
}
|
||||
|
||||
// GetInstallation returns the specified installation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#get-an-installation-for-the-authenticated-app
|
||||
//
|
||||
//meta:operation GET /app/installations/{installation_id}
|
||||
func (s *AppsService) GetInstallation(ctx context.Context, id int64) (*Installation, *Response, error) {
|
||||
return s.getInstallation(ctx, fmt.Sprintf("app/installations/%v", id))
|
||||
}
|
||||
|
||||
// ListUserInstallations lists installations that are accessible to the authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/installations#list-app-installations-accessible-to-the-user-access-token
|
||||
//
|
||||
//meta:operation GET /user/installations
|
||||
func (s *AppsService) ListUserInstallations(ctx context.Context, opts *ListOptions) ([]*Installation, *Response, error) {
|
||||
u, err := addOptions("user/installations", opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var i struct {
|
||||
Installations []*Installation `json:"installations"`
|
||||
}
|
||||
resp, err := s.client.Do(ctx, req, &i)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return i.Installations, resp, nil
|
||||
}
|
||||
|
||||
// SuspendInstallation suspends the specified installation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#suspend-an-app-installation
|
||||
//
|
||||
//meta:operation PUT /app/installations/{installation_id}/suspended
|
||||
func (s *AppsService) SuspendInstallation(ctx context.Context, id int64) (*Response, error) {
|
||||
u := fmt.Sprintf("app/installations/%v/suspended", id)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// UnsuspendInstallation unsuspends the specified installation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#unsuspend-an-app-installation
|
||||
//
|
||||
//meta:operation DELETE /app/installations/{installation_id}/suspended
|
||||
func (s *AppsService) UnsuspendInstallation(ctx context.Context, id int64) (*Response, error) {
|
||||
u := fmt.Sprintf("app/installations/%v/suspended", id)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// DeleteInstallation deletes the specified installation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#delete-an-installation-for-the-authenticated-app
|
||||
//
|
||||
//meta:operation DELETE /app/installations/{installation_id}
|
||||
func (s *AppsService) DeleteInstallation(ctx context.Context, id int64) (*Response, error) {
|
||||
u := fmt.Sprintf("app/installations/%v", id)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// CreateInstallationToken creates a new installation token.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#create-an-installation-access-token-for-an-app
|
||||
//
|
||||
//meta:operation POST /app/installations/{installation_id}/access_tokens
|
||||
func (s *AppsService) CreateInstallationToken(ctx context.Context, id int64, opts *InstallationTokenOptions) (*InstallationToken, *Response, error) {
|
||||
u := fmt.Sprintf("app/installations/%v/access_tokens", id)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
t := new(InstallationToken)
|
||||
resp, err := s.client.Do(ctx, req, t)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return t, resp, nil
|
||||
}
|
||||
|
||||
// CreateAttachment creates a new attachment on user comment containing a url.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.3/rest/reference/apps#create-a-content-attachment
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/content_references/{content_reference_id}/attachments
|
||||
func (s *AppsService) CreateAttachment(ctx context.Context, contentReferenceID int64, title, body string) (*Attachment, *Response, error) {
|
||||
u := fmt.Sprintf("content_references/%v/attachments", contentReferenceID)
|
||||
payload := &Attachment{Title: String(title), Body: String(body)}
|
||||
req, err := s.client.NewRequest("POST", u, payload)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeContentAttachmentsPreview)
|
||||
|
||||
m := &Attachment{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// FindOrganizationInstallation finds the organization's installation information.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#get-an-organization-installation-for-the-authenticated-app
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/installation
|
||||
func (s *AppsService) FindOrganizationInstallation(ctx context.Context, org string) (*Installation, *Response, error) {
|
||||
return s.getInstallation(ctx, fmt.Sprintf("orgs/%v/installation", org))
|
||||
}
|
||||
|
||||
// FindRepositoryInstallation finds the repository's installation information.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#get-a-repository-installation-for-the-authenticated-app
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/installation
|
||||
func (s *AppsService) FindRepositoryInstallation(ctx context.Context, owner, repo string) (*Installation, *Response, error) {
|
||||
return s.getInstallation(ctx, fmt.Sprintf("repos/%v/%v/installation", owner, repo))
|
||||
}
|
||||
|
||||
// FindRepositoryInstallationByID finds the repository's installation information.
|
||||
//
|
||||
// Note: FindRepositoryInstallationByID uses the undocumented GitHub API endpoint "GET /repositories/{repository_id}/installation".
|
||||
//
|
||||
//meta:operation GET /repositories/{repository_id}/installation
|
||||
func (s *AppsService) FindRepositoryInstallationByID(ctx context.Context, id int64) (*Installation, *Response, error) {
|
||||
return s.getInstallation(ctx, fmt.Sprintf("repositories/%d/installation", id))
|
||||
}
|
||||
|
||||
// FindUserInstallation finds the user's installation information.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/apps#get-a-user-installation-for-the-authenticated-app
|
||||
//
|
||||
//meta:operation GET /users/{username}/installation
|
||||
func (s *AppsService) FindUserInstallation(ctx context.Context, user string) (*Installation, *Response, error) {
|
||||
return s.getInstallation(ctx, fmt.Sprintf("users/%v/installation", user))
|
||||
}
|
||||
|
||||
func (s *AppsService) getInstallation(ctx context.Context, url string) (*Installation, *Response, error) {
|
||||
req, err := s.client.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
i := new(Installation)
|
||||
resp, err := s.client.Do(ctx, req, i)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return i, resp, nil
|
||||
}
|
||||
293
vendor/github.com/google/go-github/v57/github/authorizations.go
generated
vendored
293
vendor/github.com/google/go-github/v57/github/authorizations.go
generated
vendored
|
|
@ -1,293 +0,0 @@
|
|||
// Copyright 2015 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// Scope models a GitHub authorization scope.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/oauth/#scopes
|
||||
type Scope string
|
||||
|
||||
// This is the set of scopes for GitHub API V3
|
||||
const (
|
||||
ScopeNone Scope = "(no scope)" // REVISIT: is this actually returned, or just a documentation artifact?
|
||||
ScopeUser Scope = "user"
|
||||
ScopeUserEmail Scope = "user:email"
|
||||
ScopeUserFollow Scope = "user:follow"
|
||||
ScopePublicRepo Scope = "public_repo"
|
||||
ScopeRepo Scope = "repo"
|
||||
ScopeRepoDeployment Scope = "repo_deployment"
|
||||
ScopeRepoStatus Scope = "repo:status"
|
||||
ScopeDeleteRepo Scope = "delete_repo"
|
||||
ScopeNotifications Scope = "notifications"
|
||||
ScopeGist Scope = "gist"
|
||||
ScopeReadRepoHook Scope = "read:repo_hook"
|
||||
ScopeWriteRepoHook Scope = "write:repo_hook"
|
||||
ScopeAdminRepoHook Scope = "admin:repo_hook"
|
||||
ScopeAdminOrgHook Scope = "admin:org_hook"
|
||||
ScopeReadOrg Scope = "read:org"
|
||||
ScopeWriteOrg Scope = "write:org"
|
||||
ScopeAdminOrg Scope = "admin:org"
|
||||
ScopeReadPublicKey Scope = "read:public_key"
|
||||
ScopeWritePublicKey Scope = "write:public_key"
|
||||
ScopeAdminPublicKey Scope = "admin:public_key"
|
||||
ScopeReadGPGKey Scope = "read:gpg_key"
|
||||
ScopeWriteGPGKey Scope = "write:gpg_key"
|
||||
ScopeAdminGPGKey Scope = "admin:gpg_key"
|
||||
ScopeSecurityEvents Scope = "security_events"
|
||||
)
|
||||
|
||||
// AuthorizationsService handles communication with the authorization related
|
||||
// methods of the GitHub API.
|
||||
//
|
||||
// This service requires HTTP Basic Authentication; it cannot be accessed using
|
||||
// an OAuth token.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/oauth-authorizations
|
||||
type AuthorizationsService service
|
||||
|
||||
// Authorization represents an individual GitHub authorization.
|
||||
type Authorization struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
Scopes []Scope `json:"scopes,omitempty"`
|
||||
Token *string `json:"token,omitempty"`
|
||||
TokenLastEight *string `json:"token_last_eight,omitempty"`
|
||||
HashedToken *string `json:"hashed_token,omitempty"`
|
||||
App *AuthorizationApp `json:"app,omitempty"`
|
||||
Note *string `json:"note,omitempty"`
|
||||
NoteURL *string `json:"note_url,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
Fingerprint *string `json:"fingerprint,omitempty"`
|
||||
|
||||
// User is only populated by the Check and Reset methods.
|
||||
User *User `json:"user,omitempty"`
|
||||
}
|
||||
|
||||
func (a Authorization) String() string {
|
||||
return Stringify(a)
|
||||
}
|
||||
|
||||
// AuthorizationApp represents an individual GitHub app (in the context of authorization).
|
||||
type AuthorizationApp struct {
|
||||
URL *string `json:"url,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
ClientID *string `json:"client_id,omitempty"`
|
||||
}
|
||||
|
||||
func (a AuthorizationApp) String() string {
|
||||
return Stringify(a)
|
||||
}
|
||||
|
||||
// Grant represents an OAuth application that has been granted access to an account.
|
||||
type Grant struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
App *AuthorizationApp `json:"app,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
Scopes []string `json:"scopes,omitempty"`
|
||||
}
|
||||
|
||||
func (g Grant) String() string {
|
||||
return Stringify(g)
|
||||
}
|
||||
|
||||
// AuthorizationRequest represents a request to create an authorization.
|
||||
type AuthorizationRequest struct {
|
||||
Scopes []Scope `json:"scopes,omitempty"`
|
||||
Note *string `json:"note,omitempty"`
|
||||
NoteURL *string `json:"note_url,omitempty"`
|
||||
ClientID *string `json:"client_id,omitempty"`
|
||||
ClientSecret *string `json:"client_secret,omitempty"`
|
||||
Fingerprint *string `json:"fingerprint,omitempty"`
|
||||
}
|
||||
|
||||
func (a AuthorizationRequest) String() string {
|
||||
return Stringify(a)
|
||||
}
|
||||
|
||||
// AuthorizationUpdateRequest represents a request to update an authorization.
|
||||
//
|
||||
// Note that for any one update, you must only provide one of the "scopes"
|
||||
// fields. That is, you may provide only one of "Scopes", or "AddScopes", or
|
||||
// "RemoveScopes".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/oauth-authorizations#update-an-existing-authorization
|
||||
type AuthorizationUpdateRequest struct {
|
||||
Scopes []string `json:"scopes,omitempty"`
|
||||
AddScopes []string `json:"add_scopes,omitempty"`
|
||||
RemoveScopes []string `json:"remove_scopes,omitempty"`
|
||||
Note *string `json:"note,omitempty"`
|
||||
NoteURL *string `json:"note_url,omitempty"`
|
||||
Fingerprint *string `json:"fingerprint,omitempty"`
|
||||
}
|
||||
|
||||
func (a AuthorizationUpdateRequest) String() string {
|
||||
return Stringify(a)
|
||||
}
|
||||
|
||||
// Check if an OAuth token is valid for a specific app.
|
||||
//
|
||||
// Note that this operation requires the use of BasicAuth, but where the
|
||||
// username is the OAuth application clientID, and the password is its
|
||||
// clientSecret. Invalid tokens will return a 404 Not Found.
|
||||
//
|
||||
// The returned Authorization.User field will be populated.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/oauth-applications#check-a-token
|
||||
//
|
||||
//meta:operation POST /applications/{client_id}/token
|
||||
func (s *AuthorizationsService) Check(ctx context.Context, clientID, accessToken string) (*Authorization, *Response, error) {
|
||||
u := fmt.Sprintf("applications/%v/token", clientID)
|
||||
|
||||
reqBody := &struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
}{AccessToken: accessToken}
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, reqBody)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
req.Header.Set("Accept", mediaTypeOAuthAppPreview)
|
||||
|
||||
a := new(Authorization)
|
||||
resp, err := s.client.Do(ctx, req, a)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return a, resp, nil
|
||||
}
|
||||
|
||||
// Reset is used to reset a valid OAuth token without end user involvement.
|
||||
// Applications must save the "token" property in the response, because changes
|
||||
// take effect immediately.
|
||||
//
|
||||
// Note that this operation requires the use of BasicAuth, but where the
|
||||
// username is the OAuth application clientID, and the password is its
|
||||
// clientSecret. Invalid tokens will return a 404 Not Found.
|
||||
//
|
||||
// The returned Authorization.User field will be populated.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/oauth-applications#reset-a-token
|
||||
//
|
||||
//meta:operation PATCH /applications/{client_id}/token
|
||||
func (s *AuthorizationsService) Reset(ctx context.Context, clientID, accessToken string) (*Authorization, *Response, error) {
|
||||
u := fmt.Sprintf("applications/%v/token", clientID)
|
||||
|
||||
reqBody := &struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
}{AccessToken: accessToken}
|
||||
|
||||
req, err := s.client.NewRequest("PATCH", u, reqBody)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
req.Header.Set("Accept", mediaTypeOAuthAppPreview)
|
||||
|
||||
a := new(Authorization)
|
||||
resp, err := s.client.Do(ctx, req, a)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return a, resp, nil
|
||||
}
|
||||
|
||||
// Revoke an authorization for an application.
|
||||
//
|
||||
// Note that this operation requires the use of BasicAuth, but where the
|
||||
// username is the OAuth application clientID, and the password is its
|
||||
// clientSecret. Invalid tokens will return a 404 Not Found.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/oauth-applications#delete-an-app-token
|
||||
//
|
||||
//meta:operation DELETE /applications/{client_id}/token
|
||||
func (s *AuthorizationsService) Revoke(ctx context.Context, clientID, accessToken string) (*Response, error) {
|
||||
u := fmt.Sprintf("applications/%v/token", clientID)
|
||||
|
||||
reqBody := &struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
}{AccessToken: accessToken}
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, reqBody)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
req.Header.Set("Accept", mediaTypeOAuthAppPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// DeleteGrant deletes an OAuth application grant. Deleting an application's
|
||||
// grant will also delete all OAuth tokens associated with the application for
|
||||
// the user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/apps/oauth-applications#delete-an-app-authorization
|
||||
//
|
||||
//meta:operation DELETE /applications/{client_id}/grant
|
||||
func (s *AuthorizationsService) DeleteGrant(ctx context.Context, clientID, accessToken string) (*Response, error) {
|
||||
u := fmt.Sprintf("applications/%v/grant", clientID)
|
||||
|
||||
reqBody := &struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
}{AccessToken: accessToken}
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, reqBody)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
req.Header.Set("Accept", mediaTypeOAuthAppPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// CreateImpersonation creates an impersonation OAuth token.
|
||||
//
|
||||
// This requires admin permissions. With the returned Authorization.Token
|
||||
// you can e.g. create or delete a user's public SSH key. NOTE: creating a
|
||||
// new token automatically revokes an existing one.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/users#create-an-impersonation-oauth-token
|
||||
//
|
||||
//meta:operation POST /admin/users/{username}/authorizations
|
||||
func (s *AuthorizationsService) CreateImpersonation(ctx context.Context, username string, authReq *AuthorizationRequest) (*Authorization, *Response, error) {
|
||||
u := fmt.Sprintf("admin/users/%v/authorizations", username)
|
||||
req, err := s.client.NewRequest("POST", u, authReq)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
a := new(Authorization)
|
||||
resp, err := s.client.Do(ctx, req, a)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
return a, resp, nil
|
||||
}
|
||||
|
||||
// DeleteImpersonation deletes an impersonation OAuth token.
|
||||
//
|
||||
// NOTE: there can be only one at a time.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-server@3.10/rest/enterprise-admin/users#delete-an-impersonation-oauth-token
|
||||
//
|
||||
//meta:operation DELETE /admin/users/{username}/authorizations
|
||||
func (s *AuthorizationsService) DeleteImpersonation(ctx context.Context, username string) (*Response, error) {
|
||||
u := fmt.Sprintf("admin/users/%v/authorizations", username)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
215
vendor/github.com/google/go-github/v57/github/billing.go
generated
vendored
215
vendor/github.com/google/go-github/v57/github/billing.go
generated
vendored
|
|
@ -1,215 +0,0 @@
|
|||
// Copyright 2021 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// BillingService provides access to the billing related functions
|
||||
// in the GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/billing
|
||||
type BillingService service
|
||||
|
||||
// ActionBilling represents a GitHub Action billing.
|
||||
type ActionBilling struct {
|
||||
TotalMinutesUsed float64 `json:"total_minutes_used"`
|
||||
TotalPaidMinutesUsed float64 `json:"total_paid_minutes_used"`
|
||||
IncludedMinutes float64 `json:"included_minutes"`
|
||||
MinutesUsedBreakdown MinutesUsedBreakdown `json:"minutes_used_breakdown"`
|
||||
}
|
||||
|
||||
// MinutesUsedBreakdown counts the actions minutes used by machine type (e.g. UBUNTU, WINDOWS, MACOS).
|
||||
type MinutesUsedBreakdown = map[string]int
|
||||
|
||||
// PackageBilling represents a GitHub Package billing.
|
||||
type PackageBilling struct {
|
||||
TotalGigabytesBandwidthUsed int `json:"total_gigabytes_bandwidth_used"`
|
||||
TotalPaidGigabytesBandwidthUsed int `json:"total_paid_gigabytes_bandwidth_used"`
|
||||
IncludedGigabytesBandwidth float64 `json:"included_gigabytes_bandwidth"`
|
||||
}
|
||||
|
||||
// StorageBilling represents a GitHub Storage billing.
|
||||
type StorageBilling struct {
|
||||
DaysLeftInBillingCycle int `json:"days_left_in_billing_cycle"`
|
||||
EstimatedPaidStorageForMonth float64 `json:"estimated_paid_storage_for_month"`
|
||||
EstimatedStorageForMonth float64 `json:"estimated_storage_for_month"`
|
||||
}
|
||||
|
||||
// ActiveCommitters represents the total active committers across all repositories in an Organization.
|
||||
type ActiveCommitters struct {
|
||||
TotalAdvancedSecurityCommitters int `json:"total_advanced_security_committers"`
|
||||
Repositories []*RepositoryActiveCommitters `json:"repositories,omitempty"`
|
||||
}
|
||||
|
||||
// RepositoryActiveCommitters represents active committers on each repository.
|
||||
type RepositoryActiveCommitters struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
AdvancedSecurityCommitters *int `json:"advanced_security_committers,omitempty"`
|
||||
AdvancedSecurityCommittersBreakdown []*AdvancedSecurityCommittersBreakdown `json:"advanced_security_committers_breakdown,omitempty"`
|
||||
}
|
||||
|
||||
// AdvancedSecurityCommittersBreakdown represents the user activity breakdown for ActiveCommitters.
|
||||
type AdvancedSecurityCommittersBreakdown struct {
|
||||
UserLogin *string `json:"user_login,omitempty"`
|
||||
LastPushedDate *string `json:"last_pushed_date,omitempty"`
|
||||
}
|
||||
|
||||
// GetActionsBillingOrg returns the summary of the free and paid GitHub Actions minutes used for an Org.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/billing/billing#get-github-actions-billing-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/settings/billing/actions
|
||||
func (s *BillingService) GetActionsBillingOrg(ctx context.Context, org string) (*ActionBilling, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/settings/billing/actions", org)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
actionsOrgBilling := new(ActionBilling)
|
||||
resp, err := s.client.Do(ctx, req, actionsOrgBilling)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return actionsOrgBilling, resp, nil
|
||||
}
|
||||
|
||||
// GetPackagesBillingOrg returns the free and paid storage used for GitHub Packages in gigabytes for an Org.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/billing/billing#get-github-packages-billing-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/settings/billing/packages
|
||||
func (s *BillingService) GetPackagesBillingOrg(ctx context.Context, org string) (*PackageBilling, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/settings/billing/packages", org)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
packagesOrgBilling := new(PackageBilling)
|
||||
resp, err := s.client.Do(ctx, req, packagesOrgBilling)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return packagesOrgBilling, resp, nil
|
||||
}
|
||||
|
||||
// GetStorageBillingOrg returns the estimated paid and estimated total storage used for GitHub Actions
|
||||
// and GitHub Packages in gigabytes for an Org.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/billing/billing#get-shared-storage-billing-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/settings/billing/shared-storage
|
||||
func (s *BillingService) GetStorageBillingOrg(ctx context.Context, org string) (*StorageBilling, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/settings/billing/shared-storage", org)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
storageOrgBilling := new(StorageBilling)
|
||||
resp, err := s.client.Do(ctx, req, storageOrgBilling)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return storageOrgBilling, resp, nil
|
||||
}
|
||||
|
||||
// GetAdvancedSecurityActiveCommittersOrg returns the GitHub Advanced Security active committers for an organization per repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/billing/billing#get-github-advanced-security-active-committers-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/settings/billing/advanced-security
|
||||
func (s *BillingService) GetAdvancedSecurityActiveCommittersOrg(ctx context.Context, org string, opts *ListOptions) (*ActiveCommitters, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/settings/billing/advanced-security", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
activeOrgCommitters := new(ActiveCommitters)
|
||||
resp, err := s.client.Do(ctx, req, activeOrgCommitters)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return activeOrgCommitters, resp, nil
|
||||
}
|
||||
|
||||
// GetActionsBillingUser returns the summary of the free and paid GitHub Actions minutes used for a user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/billing/billing#get-github-actions-billing-for-a-user
|
||||
//
|
||||
//meta:operation GET /users/{username}/settings/billing/actions
|
||||
func (s *BillingService) GetActionsBillingUser(ctx context.Context, user string) (*ActionBilling, *Response, error) {
|
||||
u := fmt.Sprintf("users/%v/settings/billing/actions", user)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
actionsUserBilling := new(ActionBilling)
|
||||
resp, err := s.client.Do(ctx, req, actionsUserBilling)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return actionsUserBilling, resp, nil
|
||||
}
|
||||
|
||||
// GetPackagesBillingUser returns the free and paid storage used for GitHub Packages in gigabytes for a user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/billing/billing#get-github-packages-billing-for-a-user
|
||||
//
|
||||
//meta:operation GET /users/{username}/settings/billing/packages
|
||||
func (s *BillingService) GetPackagesBillingUser(ctx context.Context, user string) (*PackageBilling, *Response, error) {
|
||||
u := fmt.Sprintf("users/%v/settings/billing/packages", user)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
packagesUserBilling := new(PackageBilling)
|
||||
resp, err := s.client.Do(ctx, req, packagesUserBilling)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return packagesUserBilling, resp, nil
|
||||
}
|
||||
|
||||
// GetStorageBillingUser returns the estimated paid and estimated total storage used for GitHub Actions
|
||||
// and GitHub Packages in gigabytes for a user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/billing/billing#get-shared-storage-billing-for-a-user
|
||||
//
|
||||
//meta:operation GET /users/{username}/settings/billing/shared-storage
|
||||
func (s *BillingService) GetStorageBillingUser(ctx context.Context, user string) (*StorageBilling, *Response, error) {
|
||||
u := fmt.Sprintf("users/%v/settings/billing/shared-storage", user)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
storageUserBilling := new(StorageBilling)
|
||||
resp, err := s.client.Do(ctx, req, storageUserBilling)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return storageUserBilling, resp, nil
|
||||
}
|
||||
475
vendor/github.com/google/go-github/v57/github/checks.go
generated
vendored
475
vendor/github.com/google/go-github/v57/github/checks.go
generated
vendored
|
|
@ -1,475 +0,0 @@
|
|||
// Copyright 2018 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ChecksService provides access to the Checks API in the
|
||||
// GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/
|
||||
type ChecksService service
|
||||
|
||||
// CheckRun represents a GitHub check run on a repository associated with a GitHub app.
|
||||
type CheckRun struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
HeadSHA *string `json:"head_sha,omitempty"`
|
||||
ExternalID *string `json:"external_id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
DetailsURL *string `json:"details_url,omitempty"`
|
||||
Status *string `json:"status,omitempty"`
|
||||
Conclusion *string `json:"conclusion,omitempty"`
|
||||
StartedAt *Timestamp `json:"started_at,omitempty"`
|
||||
CompletedAt *Timestamp `json:"completed_at,omitempty"`
|
||||
Output *CheckRunOutput `json:"output,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
CheckSuite *CheckSuite `json:"check_suite,omitempty"`
|
||||
App *App `json:"app,omitempty"`
|
||||
PullRequests []*PullRequest `json:"pull_requests,omitempty"`
|
||||
}
|
||||
|
||||
// CheckRunOutput represents the output of a CheckRun.
|
||||
type CheckRunOutput struct {
|
||||
Title *string `json:"title,omitempty"`
|
||||
Summary *string `json:"summary,omitempty"`
|
||||
Text *string `json:"text,omitempty"`
|
||||
AnnotationsCount *int `json:"annotations_count,omitempty"`
|
||||
AnnotationsURL *string `json:"annotations_url,omitempty"`
|
||||
Annotations []*CheckRunAnnotation `json:"annotations,omitempty"`
|
||||
Images []*CheckRunImage `json:"images,omitempty"`
|
||||
}
|
||||
|
||||
// CheckRunAnnotation represents an annotation object for a CheckRun output.
|
||||
type CheckRunAnnotation struct {
|
||||
Path *string `json:"path,omitempty"`
|
||||
StartLine *int `json:"start_line,omitempty"`
|
||||
EndLine *int `json:"end_line,omitempty"`
|
||||
StartColumn *int `json:"start_column,omitempty"`
|
||||
EndColumn *int `json:"end_column,omitempty"`
|
||||
AnnotationLevel *string `json:"annotation_level,omitempty"`
|
||||
Message *string `json:"message,omitempty"`
|
||||
Title *string `json:"title,omitempty"`
|
||||
RawDetails *string `json:"raw_details,omitempty"`
|
||||
}
|
||||
|
||||
// CheckRunImage represents an image object for a CheckRun output.
|
||||
type CheckRunImage struct {
|
||||
Alt *string `json:"alt,omitempty"`
|
||||
ImageURL *string `json:"image_url,omitempty"`
|
||||
Caption *string `json:"caption,omitempty"`
|
||||
}
|
||||
|
||||
// CheckSuite represents a suite of check runs.
|
||||
type CheckSuite struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
HeadBranch *string `json:"head_branch,omitempty"`
|
||||
HeadSHA *string `json:"head_sha,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
BeforeSHA *string `json:"before,omitempty"`
|
||||
AfterSHA *string `json:"after,omitempty"`
|
||||
Status *string `json:"status,omitempty"`
|
||||
Conclusion *string `json:"conclusion,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
App *App `json:"app,omitempty"`
|
||||
Repository *Repository `json:"repository,omitempty"`
|
||||
PullRequests []*PullRequest `json:"pull_requests,omitempty"`
|
||||
|
||||
// The following fields are only populated by Webhook events.
|
||||
HeadCommit *Commit `json:"head_commit,omitempty"`
|
||||
}
|
||||
|
||||
func (c CheckRun) String() string {
|
||||
return Stringify(c)
|
||||
}
|
||||
|
||||
func (c CheckSuite) String() string {
|
||||
return Stringify(c)
|
||||
}
|
||||
|
||||
// GetCheckRun gets a check-run for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/runs#get-a-check-run
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/check-runs/{check_run_id}
|
||||
func (s *ChecksService) GetCheckRun(ctx context.Context, owner, repo string, checkRunID int64) (*CheckRun, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-runs/%v", owner, repo, checkRunID)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
checkRun := new(CheckRun)
|
||||
resp, err := s.client.Do(ctx, req, checkRun)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkRun, resp, nil
|
||||
}
|
||||
|
||||
// GetCheckSuite gets a single check suite.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/suites#get-a-check-suite
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/check-suites/{check_suite_id}
|
||||
func (s *ChecksService) GetCheckSuite(ctx context.Context, owner, repo string, checkSuiteID int64) (*CheckSuite, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-suites/%v", owner, repo, checkSuiteID)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
checkSuite := new(CheckSuite)
|
||||
resp, err := s.client.Do(ctx, req, checkSuite)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkSuite, resp, nil
|
||||
}
|
||||
|
||||
// CreateCheckRunOptions sets up parameters needed to create a CheckRun.
|
||||
type CreateCheckRunOptions struct {
|
||||
Name string `json:"name"` // The name of the check (e.g., "code-coverage"). (Required.)
|
||||
HeadSHA string `json:"head_sha"` // The SHA of the commit. (Required.)
|
||||
DetailsURL *string `json:"details_url,omitempty"` // The URL of the integrator's site that has the full details of the check. (Optional.)
|
||||
ExternalID *string `json:"external_id,omitempty"` // A reference for the run on the integrator's system. (Optional.)
|
||||
Status *string `json:"status,omitempty"` // The current status. Can be one of "queued", "in_progress", or "completed". Default: "queued". (Optional.)
|
||||
Conclusion *string `json:"conclusion,omitempty"` // Can be one of "success", "failure", "neutral", "cancelled", "skipped", "timed_out", or "action_required". (Optional. Required if you provide a status of "completed".)
|
||||
StartedAt *Timestamp `json:"started_at,omitempty"` // The time that the check run began. (Optional.)
|
||||
CompletedAt *Timestamp `json:"completed_at,omitempty"` // The time the check completed. (Optional. Required if you provide conclusion.)
|
||||
Output *CheckRunOutput `json:"output,omitempty"` // Provide descriptive details about the run. (Optional)
|
||||
Actions []*CheckRunAction `json:"actions,omitempty"` // Possible further actions the integrator can perform, which a user may trigger. (Optional.)
|
||||
}
|
||||
|
||||
// CheckRunAction exposes further actions the integrator can perform, which a user may trigger.
|
||||
type CheckRunAction struct {
|
||||
Label string `json:"label"` // The text to be displayed on a button in the web UI. The maximum size is 20 characters. (Required.)
|
||||
Description string `json:"description"` // A short explanation of what this action would do. The maximum size is 40 characters. (Required.)
|
||||
Identifier string `json:"identifier"` // A reference for the action on the integrator's system. The maximum size is 20 characters. (Required.)
|
||||
}
|
||||
|
||||
// CreateCheckRun creates a check run for repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/runs#create-a-check-run
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/check-runs
|
||||
func (s *ChecksService) CreateCheckRun(ctx context.Context, owner, repo string, opts CreateCheckRunOptions) (*CheckRun, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-runs", owner, repo)
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
checkRun := new(CheckRun)
|
||||
resp, err := s.client.Do(ctx, req, checkRun)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkRun, resp, nil
|
||||
}
|
||||
|
||||
// UpdateCheckRunOptions sets up parameters needed to update a CheckRun.
|
||||
type UpdateCheckRunOptions struct {
|
||||
Name string `json:"name"` // The name of the check (e.g., "code-coverage"). (Required.)
|
||||
DetailsURL *string `json:"details_url,omitempty"` // The URL of the integrator's site that has the full details of the check. (Optional.)
|
||||
ExternalID *string `json:"external_id,omitempty"` // A reference for the run on the integrator's system. (Optional.)
|
||||
Status *string `json:"status,omitempty"` // The current status. Can be one of "queued", "in_progress", or "completed". Default: "queued". (Optional.)
|
||||
Conclusion *string `json:"conclusion,omitempty"` // Can be one of "success", "failure", "neutral", "cancelled", "skipped", "timed_out", or "action_required". (Optional. Required if you provide a status of "completed".)
|
||||
CompletedAt *Timestamp `json:"completed_at,omitempty"` // The time the check completed. (Optional. Required if you provide conclusion.)
|
||||
Output *CheckRunOutput `json:"output,omitempty"` // Provide descriptive details about the run. (Optional)
|
||||
Actions []*CheckRunAction `json:"actions,omitempty"` // Possible further actions the integrator can perform, which a user may trigger. (Optional.)
|
||||
}
|
||||
|
||||
// UpdateCheckRun updates a check run for a specific commit in a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/runs#update-a-check-run
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}
|
||||
func (s *ChecksService) UpdateCheckRun(ctx context.Context, owner, repo string, checkRunID int64, opts UpdateCheckRunOptions) (*CheckRun, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-runs/%v", owner, repo, checkRunID)
|
||||
req, err := s.client.NewRequest("PATCH", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
checkRun := new(CheckRun)
|
||||
resp, err := s.client.Do(ctx, req, checkRun)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkRun, resp, nil
|
||||
}
|
||||
|
||||
// ListCheckRunAnnotations lists the annotations for a check run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/runs#list-check-run-annotations
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations
|
||||
func (s *ChecksService) ListCheckRunAnnotations(ctx context.Context, owner, repo string, checkRunID int64, opts *ListOptions) ([]*CheckRunAnnotation, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-runs/%v/annotations", owner, repo, checkRunID)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
var checkRunAnnotations []*CheckRunAnnotation
|
||||
resp, err := s.client.Do(ctx, req, &checkRunAnnotations)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkRunAnnotations, resp, nil
|
||||
}
|
||||
|
||||
// ListCheckRunsOptions represents parameters to list check runs.
|
||||
type ListCheckRunsOptions struct {
|
||||
CheckName *string `url:"check_name,omitempty"` // Returns check runs with the specified name.
|
||||
Status *string `url:"status,omitempty"` // Returns check runs with the specified status. Can be one of "queued", "in_progress", or "completed".
|
||||
Filter *string `url:"filter,omitempty"` // Filters check runs by their completed_at timestamp. Can be one of "latest" (returning the most recent check runs) or "all". Default: "latest"
|
||||
AppID *int64 `url:"app_id,omitempty"` // Filters check runs by GitHub App ID.
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListCheckRunsResults represents the result of a check run list.
|
||||
type ListCheckRunsResults struct {
|
||||
Total *int `json:"total_count,omitempty"`
|
||||
CheckRuns []*CheckRun `json:"check_runs,omitempty"`
|
||||
}
|
||||
|
||||
// ListCheckRunsForRef lists check runs for a specific ref.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/runs#list-check-runs-for-a-git-reference
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/commits/{ref}/check-runs
|
||||
func (s *ChecksService) ListCheckRunsForRef(ctx context.Context, owner, repo, ref string, opts *ListCheckRunsOptions) (*ListCheckRunsResults, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/commits/%v/check-runs", owner, repo, refURLEscape(ref))
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
var checkRunResults *ListCheckRunsResults
|
||||
resp, err := s.client.Do(ctx, req, &checkRunResults)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkRunResults, resp, nil
|
||||
}
|
||||
|
||||
// ListCheckRunsCheckSuite lists check runs for a check suite.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/runs#list-check-runs-in-a-check-suite
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs
|
||||
func (s *ChecksService) ListCheckRunsCheckSuite(ctx context.Context, owner, repo string, checkSuiteID int64, opts *ListCheckRunsOptions) (*ListCheckRunsResults, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-suites/%v/check-runs", owner, repo, checkSuiteID)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
var checkRunResults *ListCheckRunsResults
|
||||
resp, err := s.client.Do(ctx, req, &checkRunResults)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkRunResults, resp, nil
|
||||
}
|
||||
|
||||
// ReRequestCheckRun triggers GitHub to rerequest an existing check run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/runs#rerequest-a-check-run
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest
|
||||
func (s *ChecksService) ReRequestCheckRun(ctx context.Context, owner, repo string, checkRunID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-runs/%v/rerequest", owner, repo, checkRunID)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListCheckSuiteOptions represents parameters to list check suites.
|
||||
type ListCheckSuiteOptions struct {
|
||||
CheckName *string `url:"check_name,omitempty"` // Filters checks suites by the name of the check run.
|
||||
AppID *int `url:"app_id,omitempty"` // Filters check suites by GitHub App id.
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListCheckSuiteResults represents the result of a check run list.
|
||||
type ListCheckSuiteResults struct {
|
||||
Total *int `json:"total_count,omitempty"`
|
||||
CheckSuites []*CheckSuite `json:"check_suites,omitempty"`
|
||||
}
|
||||
|
||||
// ListCheckSuitesForRef lists check suite for a specific ref.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/suites#list-check-suites-for-a-git-reference
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/commits/{ref}/check-suites
|
||||
func (s *ChecksService) ListCheckSuitesForRef(ctx context.Context, owner, repo, ref string, opts *ListCheckSuiteOptions) (*ListCheckSuiteResults, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/commits/%v/check-suites", owner, repo, refURLEscape(ref))
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
var checkSuiteResults *ListCheckSuiteResults
|
||||
resp, err := s.client.Do(ctx, req, &checkSuiteResults)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkSuiteResults, resp, nil
|
||||
}
|
||||
|
||||
// AutoTriggerCheck enables or disables automatic creation of CheckSuite events upon pushes to the repository.
|
||||
type AutoTriggerCheck struct {
|
||||
AppID *int64 `json:"app_id,omitempty"` // The id of the GitHub App. (Required.)
|
||||
Setting *bool `json:"setting,omitempty"` // Set to "true" to enable automatic creation of CheckSuite events upon pushes to the repository, or "false" to disable them. Default: "true" (Required.)
|
||||
}
|
||||
|
||||
// CheckSuitePreferenceOptions set options for check suite preferences for a repository.
|
||||
type CheckSuitePreferenceOptions struct {
|
||||
AutoTriggerChecks []*AutoTriggerCheck `json:"auto_trigger_checks,omitempty"` // A slice of auto trigger checks that can be set for a check suite in a repository.
|
||||
}
|
||||
|
||||
// CheckSuitePreferenceResults represents the results of the preference set operation.
|
||||
type CheckSuitePreferenceResults struct {
|
||||
Preferences *PreferenceList `json:"preferences,omitempty"`
|
||||
Repository *Repository `json:"repository,omitempty"`
|
||||
}
|
||||
|
||||
// PreferenceList represents a list of auto trigger checks for repository
|
||||
type PreferenceList struct {
|
||||
AutoTriggerChecks []*AutoTriggerCheck `json:"auto_trigger_checks,omitempty"` // A slice of auto trigger checks that can be set for a check suite in a repository.
|
||||
}
|
||||
|
||||
// SetCheckSuitePreferences changes the default automatic flow when creating check suites.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/suites#update-repository-preferences-for-check-suites
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/check-suites/preferences
|
||||
func (s *ChecksService) SetCheckSuitePreferences(ctx context.Context, owner, repo string, opts CheckSuitePreferenceOptions) (*CheckSuitePreferenceResults, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-suites/preferences", owner, repo)
|
||||
req, err := s.client.NewRequest("PATCH", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
var checkSuitePrefResults *CheckSuitePreferenceResults
|
||||
resp, err := s.client.Do(ctx, req, &checkSuitePrefResults)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkSuitePrefResults, resp, nil
|
||||
}
|
||||
|
||||
// CreateCheckSuiteOptions sets up parameters to manually create a check suites
|
||||
type CreateCheckSuiteOptions struct {
|
||||
HeadSHA string `json:"head_sha"` // The sha of the head commit. (Required.)
|
||||
HeadBranch *string `json:"head_branch,omitempty"` // The name of the head branch where the code changes are implemented.
|
||||
}
|
||||
|
||||
// CreateCheckSuite manually creates a check suite for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/suites#create-a-check-suite
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/check-suites
|
||||
func (s *ChecksService) CreateCheckSuite(ctx context.Context, owner, repo string, opts CreateCheckSuiteOptions) (*CheckSuite, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-suites", owner, repo)
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
checkSuite := new(CheckSuite)
|
||||
resp, err := s.client.Do(ctx, req, checkSuite)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return checkSuite, resp, nil
|
||||
}
|
||||
|
||||
// ReRequestCheckSuite triggers GitHub to rerequest an existing check suite, without pushing new code to a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/checks/suites#rerequest-a-check-suite
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest
|
||||
func (s *ChecksService) ReRequestCheckSuite(ctx context.Context, owner, repo string, checkSuiteID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/check-suites/%v/rerequest", owner, repo, checkSuiteID)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeCheckRunsPreview)
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
return resp, err
|
||||
}
|
||||
652
vendor/github.com/google/go-github/v57/github/code-scanning.go
generated
vendored
652
vendor/github.com/google/go-github/v57/github/code-scanning.go
generated
vendored
|
|
@ -1,652 +0,0 @@
|
|||
// Copyright 2020 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// CodeScanningService handles communication with the code scanning related
|
||||
// methods of the GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning
|
||||
type CodeScanningService service
|
||||
|
||||
// Rule represents the complete details of GitHub Code Scanning alert type.
|
||||
type Rule struct {
|
||||
ID *string `json:"id,omitempty"`
|
||||
Severity *string `json:"severity,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
SecuritySeverityLevel *string `json:"security_severity_level,omitempty"`
|
||||
FullDescription *string `json:"full_description,omitempty"`
|
||||
Tags []string `json:"tags,omitempty"`
|
||||
Help *string `json:"help,omitempty"`
|
||||
}
|
||||
|
||||
// Location represents the exact location of the GitHub Code Scanning Alert in the scanned project.
|
||||
type Location struct {
|
||||
Path *string `json:"path,omitempty"`
|
||||
StartLine *int `json:"start_line,omitempty"`
|
||||
EndLine *int `json:"end_line,omitempty"`
|
||||
StartColumn *int `json:"start_column,omitempty"`
|
||||
EndColumn *int `json:"end_column,omitempty"`
|
||||
}
|
||||
|
||||
// Message is a part of MostRecentInstance struct which provides the appropriate message when any action is performed on the analysis object.
|
||||
type Message struct {
|
||||
Text *string `json:"text,omitempty"`
|
||||
}
|
||||
|
||||
// MostRecentInstance provides details of the most recent instance of this alert for the default branch or for the specified Git reference.
|
||||
type MostRecentInstance struct {
|
||||
Ref *string `json:"ref,omitempty"`
|
||||
AnalysisKey *string `json:"analysis_key,omitempty"`
|
||||
Category *string `json:"category,omitempty"`
|
||||
Environment *string `json:"environment,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
CommitSHA *string `json:"commit_sha,omitempty"`
|
||||
Message *Message `json:"message,omitempty"`
|
||||
Location *Location `json:"location,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
Classifications []string `json:"classifications,omitempty"`
|
||||
}
|
||||
|
||||
// Tool represents the tool used to generate a GitHub Code Scanning Alert.
|
||||
type Tool struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
GUID *string `json:"guid,omitempty"`
|
||||
Version *string `json:"version,omitempty"`
|
||||
}
|
||||
|
||||
// Alert represents an individual GitHub Code Scanning Alert on a single repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning
|
||||
type Alert struct {
|
||||
Number *int `json:"number,omitempty"`
|
||||
Repository *Repository `json:"repository,omitempty"`
|
||||
RuleID *string `json:"rule_id,omitempty"`
|
||||
RuleSeverity *string `json:"rule_severity,omitempty"`
|
||||
RuleDescription *string `json:"rule_description,omitempty"`
|
||||
Rule *Rule `json:"rule,omitempty"`
|
||||
Tool *Tool `json:"tool,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
FixedAt *Timestamp `json:"fixed_at,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
ClosedBy *User `json:"closed_by,omitempty"`
|
||||
ClosedAt *Timestamp `json:"closed_at,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
MostRecentInstance *MostRecentInstance `json:"most_recent_instance,omitempty"`
|
||||
Instances []*MostRecentInstance `json:"instances,omitempty"`
|
||||
DismissedBy *User `json:"dismissed_by,omitempty"`
|
||||
DismissedAt *Timestamp `json:"dismissed_at,omitempty"`
|
||||
DismissedReason *string `json:"dismissed_reason,omitempty"`
|
||||
DismissedComment *string `json:"dismissed_comment,omitempty"`
|
||||
InstancesURL *string `json:"instances_url,omitempty"`
|
||||
}
|
||||
|
||||
// ID returns the ID associated with an alert. It is the number at the end of the security alert's URL.
|
||||
func (a *Alert) ID() int64 {
|
||||
if a == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
s := a.GetHTMLURL()
|
||||
|
||||
// Check for an ID to parse at the end of the url
|
||||
if i := strings.LastIndex(s, "/"); i >= 0 {
|
||||
s = s[i+1:]
|
||||
}
|
||||
|
||||
// Return the alert ID as a 64-bit integer. Unable to convert or out of range returns 0.
|
||||
id, err := strconv.ParseInt(s, 10, 64)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
return id
|
||||
}
|
||||
|
||||
// AlertInstancesListOptions specifies optional parameters to the CodeScanningService.ListAlertInstances method.
|
||||
type AlertInstancesListOptions struct {
|
||||
// Return code scanning alert instances for a specific branch reference.
|
||||
// The ref can be formatted as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge
|
||||
Ref string `url:"ref,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// AlertListOptions specifies optional parameters to the CodeScanningService.ListAlerts method.
|
||||
type AlertListOptions struct {
|
||||
// State of the code scanning alerts to list. Set to closed to list only closed code scanning alerts. Default: open
|
||||
State string `url:"state,omitempty"`
|
||||
|
||||
// Return code scanning alerts for a specific branch reference.
|
||||
// The ref can be formatted as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge
|
||||
Ref string `url:"ref,omitempty"`
|
||||
|
||||
// If specified, only code scanning alerts with this severity will be returned. Possible values are: critical, high, medium, low, warning, note, error.
|
||||
Severity string `url:"severity,omitempty"`
|
||||
|
||||
// The name of a code scanning tool. Only results by this tool will be listed.
|
||||
ToolName string `url:"tool_name,omitempty"`
|
||||
|
||||
ListCursorOptions
|
||||
|
||||
// Add ListOptions so offset pagination with integer type "page" query parameter is accepted
|
||||
// since ListCursorOptions accepts "page" as string only.
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// AnalysesListOptions specifies optional parameters to the CodeScanningService.ListAnalysesForRepo method.
|
||||
type AnalysesListOptions struct {
|
||||
// Return code scanning analyses belonging to the same SARIF upload.
|
||||
SarifID *string `url:"sarif_id,omitempty"`
|
||||
|
||||
// Return code scanning analyses for a specific branch reference.
|
||||
// The ref can be formatted as refs/heads/<branch name> or simply <branch name>. To reference a pull request use refs/pull/<number>/merge
|
||||
Ref *string `url:"ref,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// CodeQLDatabase represents a metadata about the CodeQL database.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning
|
||||
type CodeQLDatabase struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Language *string `json:"language,omitempty"`
|
||||
Uploader *User `json:"uploader,omitempty"`
|
||||
ContentType *string `json:"content_type,omitempty"`
|
||||
Size *int64 `json:"size,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
// ScanningAnalysis represents an individual GitHub Code Scanning ScanningAnalysis on a single repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning
|
||||
type ScanningAnalysis struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Ref *string `json:"ref,omitempty"`
|
||||
CommitSHA *string `json:"commit_sha,omitempty"`
|
||||
AnalysisKey *string `json:"analysis_key,omitempty"`
|
||||
Environment *string `json:"environment,omitempty"`
|
||||
Error *string `json:"error,omitempty"`
|
||||
Category *string `json:"category,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
ResultsCount *int `json:"results_count,omitempty"`
|
||||
RulesCount *int `json:"rules_count,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
SarifID *string `json:"sarif_id,omitempty"`
|
||||
Tool *Tool `json:"tool,omitempty"`
|
||||
Deletable *bool `json:"deletable,omitempty"`
|
||||
Warning *string `json:"warning,omitempty"`
|
||||
}
|
||||
|
||||
// SarifAnalysis specifies the results of a code scanning job.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning
|
||||
type SarifAnalysis struct {
|
||||
CommitSHA *string `json:"commit_sha,omitempty"`
|
||||
Ref *string `json:"ref,omitempty"`
|
||||
Sarif *string `json:"sarif,omitempty"`
|
||||
CheckoutURI *string `json:"checkout_uri,omitempty"`
|
||||
StartedAt *Timestamp `json:"started_at,omitempty"`
|
||||
ToolName *string `json:"tool_name,omitempty"`
|
||||
}
|
||||
|
||||
// CodeScanningAlertState specifies the state of a code scanning alert.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning
|
||||
type CodeScanningAlertState struct {
|
||||
// State sets the state of the code scanning alert and is a required field.
|
||||
// You must also provide DismissedReason when you set the state to "dismissed".
|
||||
// State can be one of: "open", "dismissed".
|
||||
State string `json:"state"`
|
||||
// DismissedReason represents the reason for dismissing or closing the alert.
|
||||
// It is required when the state is "dismissed".
|
||||
// It can be one of: "false positive", "won't fix", "used in tests".
|
||||
DismissedReason *string `json:"dismissed_reason,omitempty"`
|
||||
// DismissedComment is associated with the dismissal of the alert.
|
||||
DismissedComment *string `json:"dismissed_comment,omitempty"`
|
||||
}
|
||||
|
||||
// SarifID identifies a sarif analysis upload.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning
|
||||
type SarifID struct {
|
||||
ID *string `json:"id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
// ListAlertsForOrg lists code scanning alerts for an org.
|
||||
//
|
||||
// You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events
|
||||
// read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-alerts-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/code-scanning/alerts
|
||||
func (s *CodeScanningService) ListAlertsForOrg(ctx context.Context, org string, opts *AlertListOptions) ([]*Alert, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/code-scanning/alerts", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var alerts []*Alert
|
||||
resp, err := s.client.Do(ctx, req, &alerts)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return alerts, resp, nil
|
||||
}
|
||||
|
||||
// ListAlertsForRepo lists code scanning alerts for a repository.
|
||||
//
|
||||
// Lists all open code scanning alerts for the default branch (usually master) and protected branches in a repository.
|
||||
// You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events
|
||||
// read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-alerts-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/code-scanning/alerts
|
||||
func (s *CodeScanningService) ListAlertsForRepo(ctx context.Context, owner, repo string, opts *AlertListOptions) ([]*Alert, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/alerts", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var alerts []*Alert
|
||||
resp, err := s.client.Do(ctx, req, &alerts)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return alerts, resp, nil
|
||||
}
|
||||
|
||||
// GetAlert gets a single code scanning alert for a repository.
|
||||
//
|
||||
// You must use an access token with the security_events scope to use this endpoint.
|
||||
// GitHub Apps must have the security_events read permission to use this endpoint.
|
||||
//
|
||||
// The security alert_id is the number at the end of the security alert's URL.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-alert
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}
|
||||
func (s *CodeScanningService) GetAlert(ctx context.Context, owner, repo string, id int64) (*Alert, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/alerts/%v", owner, repo, id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
a := new(Alert)
|
||||
resp, err := s.client.Do(ctx, req, a)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return a, resp, nil
|
||||
}
|
||||
|
||||
// UpdateAlert updates the state of a single code scanning alert for a repository.
|
||||
//
|
||||
// You must use an access token with the security_events scope to use this endpoint.
|
||||
// GitHub Apps must have the security_events read permission to use this endpoint.
|
||||
//
|
||||
// The security alert_id is the number at the end of the security alert's URL.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#update-a-code-scanning-alert
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}
|
||||
func (s *CodeScanningService) UpdateAlert(ctx context.Context, owner, repo string, id int64, stateInfo *CodeScanningAlertState) (*Alert, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/alerts/%v", owner, repo, id)
|
||||
|
||||
req, err := s.client.NewRequest("PATCH", u, stateInfo)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
a := new(Alert)
|
||||
resp, err := s.client.Do(ctx, req, a)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return a, resp, nil
|
||||
}
|
||||
|
||||
// ListAlertInstances lists instances of a code scanning alert.
|
||||
//
|
||||
// You must use an access token with the security_events scope to use this endpoint.
|
||||
// GitHub Apps must have the security_events read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#list-instances-of-a-code-scanning-alert
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances
|
||||
func (s *CodeScanningService) ListAlertInstances(ctx context.Context, owner, repo string, id int64, opts *AlertInstancesListOptions) ([]*MostRecentInstance, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/alerts/%v/instances", owner, repo, id)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var alertInstances []*MostRecentInstance
|
||||
resp, err := s.client.Do(ctx, req, &alertInstances)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return alertInstances, resp, nil
|
||||
}
|
||||
|
||||
// UploadSarif uploads the result of code scanning job to GitHub.
|
||||
//
|
||||
// For the parameter sarif, you must first compress your SARIF file using gzip and then translate the contents of the file into a Base64 encoding string.
|
||||
// You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events
|
||||
// write permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#upload-an-analysis-as-sarif-data
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/code-scanning/sarifs
|
||||
func (s *CodeScanningService) UploadSarif(ctx context.Context, owner, repo string, sarif *SarifAnalysis) (*SarifID, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/sarifs", owner, repo)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, sarif)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
sarifID := new(SarifID)
|
||||
resp, err := s.client.Do(ctx, req, sarifID)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return sarifID, resp, nil
|
||||
}
|
||||
|
||||
// SARIFUpload represents information about a SARIF upload.
|
||||
type SARIFUpload struct {
|
||||
// `pending` files have not yet been processed, while `complete` means results from the SARIF have been stored.
|
||||
// `failed` files have either not been processed at all, or could only be partially processed.
|
||||
ProcessingStatus *string `json:"processing_status,omitempty"`
|
||||
// The REST API URL for getting the analyses associated with the upload.
|
||||
AnalysesURL *string `json:"analyses_url,omitempty"`
|
||||
}
|
||||
|
||||
// GetSARIF gets information about a SARIF upload.
|
||||
//
|
||||
// You must use an access token with the security_events scope to use this endpoint.
|
||||
// GitHub Apps must have the security_events read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#get-information-about-a-sarif-upload
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}
|
||||
func (s *CodeScanningService) GetSARIF(ctx context.Context, owner, repo, sarifID string) (*SARIFUpload, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/sarifs/%v", owner, repo, sarifID)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
sarifUpload := new(SARIFUpload)
|
||||
resp, err := s.client.Do(ctx, req, sarifUpload)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return sarifUpload, resp, nil
|
||||
}
|
||||
|
||||
// ListAnalysesForRepo lists code scanning analyses for a repository.
|
||||
//
|
||||
// Lists the details of all code scanning analyses for a repository, starting with the most recent.
|
||||
// You must use an access token with the security_events scope to use this endpoint.
|
||||
// GitHub Apps must have the security_events read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#list-code-scanning-analyses-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/code-scanning/analyses
|
||||
func (s *CodeScanningService) ListAnalysesForRepo(ctx context.Context, owner, repo string, opts *AnalysesListOptions) ([]*ScanningAnalysis, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/analyses", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var analyses []*ScanningAnalysis
|
||||
resp, err := s.client.Do(ctx, req, &analyses)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return analyses, resp, nil
|
||||
}
|
||||
|
||||
// GetAnalysis gets a single code scanning analysis for a repository.
|
||||
//
|
||||
// You must use an access token with the security_events scope to use this endpoint.
|
||||
// GitHub Apps must have the security_events read permission to use this endpoint.
|
||||
//
|
||||
// The security analysis_id is the ID of the analysis, as returned from the ListAnalysesForRepo operation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-analysis-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}
|
||||
func (s *CodeScanningService) GetAnalysis(ctx context.Context, owner, repo string, id int64) (*ScanningAnalysis, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/analyses/%v", owner, repo, id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
analysis := new(ScanningAnalysis)
|
||||
resp, err := s.client.Do(ctx, req, analysis)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return analysis, resp, nil
|
||||
}
|
||||
|
||||
// DeleteAnalysis represents a successful deletion of a code scanning analysis.
|
||||
type DeleteAnalysis struct {
|
||||
// Next deletable analysis in chain, without last analysis deletion confirmation
|
||||
NextAnalysisURL *string `json:"next_analysis_url,omitempty"`
|
||||
// Next deletable analysis in chain, with last analysis deletion confirmation
|
||||
ConfirmDeleteURL *string `json:"confirm_delete_url,omitempty"`
|
||||
}
|
||||
|
||||
// DeleteAnalysis deletes a single code scanning analysis from a repository.
|
||||
//
|
||||
// You must use an access token with the repo scope to use this endpoint.
|
||||
// GitHub Apps must have the security_events read permission to use this endpoint.
|
||||
//
|
||||
// The security analysis_id is the ID of the analysis, as returned from the ListAnalysesForRepo operation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#delete-a-code-scanning-analysis-from-a-repository
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}
|
||||
func (s *CodeScanningService) DeleteAnalysis(ctx context.Context, owner, repo string, id int64) (*DeleteAnalysis, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/analyses/%v", owner, repo, id)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
deleteAnalysis := new(DeleteAnalysis)
|
||||
resp, err := s.client.Do(ctx, req, deleteAnalysis)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return deleteAnalysis, resp, nil
|
||||
}
|
||||
|
||||
// ListCodeQLDatabases lists the CodeQL databases that are available in a repository.
|
||||
//
|
||||
// You must use an access token with the security_events scope to use this endpoint.
|
||||
// GitHub Apps must have the contents read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#list-codeql-databases-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/code-scanning/codeql/databases
|
||||
func (s *CodeScanningService) ListCodeQLDatabases(ctx context.Context, owner, repo string) ([]*CodeQLDatabase, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/codeql/databases", owner, repo)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var codeqlDatabases []*CodeQLDatabase
|
||||
resp, err := s.client.Do(ctx, req, &codeqlDatabases)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return codeqlDatabases, resp, nil
|
||||
}
|
||||
|
||||
// GetCodeQLDatabase gets a CodeQL database for a language in a repository.
|
||||
//
|
||||
// You must use an access token with the security_events scope to use this endpoint.
|
||||
// GitHub Apps must have the contents read permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#get-a-codeql-database-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}
|
||||
func (s *CodeScanningService) GetCodeQLDatabase(ctx context.Context, owner, repo, language string) (*CodeQLDatabase, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/code-scanning/codeql/databases/%v", owner, repo, language)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
codeqlDatabase := new(CodeQLDatabase)
|
||||
resp, err := s.client.Do(ctx, req, codeqlDatabase)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return codeqlDatabase, resp, nil
|
||||
}
|
||||
|
||||
// DefaultSetupConfiguration represents a code scanning default setup configuration.
|
||||
type DefaultSetupConfiguration struct {
|
||||
State *string `json:"state,omitempty"`
|
||||
Languages []string `json:"languages,omitempty"`
|
||||
QuerySuite *string `json:"query_suite,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
// GetDefaultSetupConfiguration gets a code scanning default setup configuration.
|
||||
//
|
||||
// You must use an access token with the repo scope to use this
|
||||
// endpoint with private repos or the public_repo scope for public repos. GitHub Apps must have the repo write
|
||||
// permission to use this endpoint.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#get-a-code-scanning-default-setup-configuration
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/code-scanning/default-setup
|
||||
func (s *CodeScanningService) GetDefaultSetupConfiguration(ctx context.Context, owner, repo string) (*DefaultSetupConfiguration, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/code-scanning/default-setup", owner, repo)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
cfg := new(DefaultSetupConfiguration)
|
||||
resp, err := s.client.Do(ctx, req, cfg)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return cfg, resp, nil
|
||||
}
|
||||
|
||||
// UpdateDefaultSetupConfigurationOptions specifies parameters to the CodeScanningService.UpdateDefaultSetupConfiguration
|
||||
// method.
|
||||
type UpdateDefaultSetupConfigurationOptions struct {
|
||||
State string `json:"state"`
|
||||
QuerySuite *string `json:"query_suite,omitempty"`
|
||||
Languages []string `json:"languages,omitempty"`
|
||||
}
|
||||
|
||||
// UpdateDefaultSetupConfigurationResponse represents a response from updating a code scanning default setup configuration.
|
||||
type UpdateDefaultSetupConfigurationResponse struct {
|
||||
RunID *int64 `json:"run_id,omitempty"`
|
||||
RunURL *string `json:"run_url,omitempty"`
|
||||
}
|
||||
|
||||
// UpdateDefaultSetupConfiguration updates a code scanning default setup configuration.
|
||||
//
|
||||
// You must use an access token with the repo scope to use this
|
||||
// endpoint with private repos or the public_repo scope for public repos. GitHub Apps must have the repo write
|
||||
// permission to use this endpoint.
|
||||
//
|
||||
// This method might return an AcceptedError and a status code of 202. This is because this is the status that GitHub
|
||||
// returns to signify that it has now scheduled the update of the pull request branch in a background task.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/code-scanning/code-scanning#update-a-code-scanning-default-setup-configuration
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/code-scanning/default-setup
|
||||
func (s *CodeScanningService) UpdateDefaultSetupConfiguration(ctx context.Context, owner, repo string, options *UpdateDefaultSetupConfigurationOptions) (*UpdateDefaultSetupConfigurationResponse, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/code-scanning/default-setup", owner, repo)
|
||||
|
||||
req, err := s.client.NewRequest("PATCH", u, options)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
a := new(UpdateDefaultSetupConfigurationResponse)
|
||||
resp, err := s.client.Do(ctx, req, a)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return a, resp, nil
|
||||
}
|
||||
87
vendor/github.com/google/go-github/v57/github/codesofconduct.go
generated
vendored
87
vendor/github.com/google/go-github/v57/github/codesofconduct.go
generated
vendored
|
|
@ -1,87 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// CodesOfConductService provides access to code-of-conduct-related functions in the GitHub API.
|
||||
type CodesOfConductService service
|
||||
|
||||
// CodeOfConduct represents a code of conduct.
|
||||
type CodeOfConduct struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
Key *string `json:"key,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
Body *string `json:"body,omitempty"`
|
||||
}
|
||||
|
||||
func (c *CodeOfConduct) String() string {
|
||||
return Stringify(c)
|
||||
}
|
||||
|
||||
// List returns all codes of conduct.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/codes-of-conduct/codes-of-conduct#get-all-codes-of-conduct
|
||||
//
|
||||
//meta:operation GET /codes_of_conduct
|
||||
func (s *CodesOfConductService) List(ctx context.Context) ([]*CodeOfConduct, *Response, error) {
|
||||
req, err := s.client.NewRequest("GET", "codes_of_conduct", nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeCodesOfConductPreview)
|
||||
|
||||
var cs []*CodeOfConduct
|
||||
resp, err := s.client.Do(ctx, req, &cs)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return cs, resp, nil
|
||||
}
|
||||
|
||||
// ListCodesOfConduct returns all codes of conduct.
|
||||
//
|
||||
// Deprecated: Use CodesOfConductService.List instead
|
||||
func (c *Client) ListCodesOfConduct(ctx context.Context) ([]*CodeOfConduct, *Response, error) {
|
||||
return c.CodesOfConduct.List(ctx)
|
||||
}
|
||||
|
||||
// Get returns an individual code of conduct.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/codes-of-conduct/codes-of-conduct#get-a-code-of-conduct
|
||||
//
|
||||
//meta:operation GET /codes_of_conduct/{key}
|
||||
func (s *CodesOfConductService) Get(ctx context.Context, key string) (*CodeOfConduct, *Response, error) {
|
||||
u := fmt.Sprintf("codes_of_conduct/%s", key)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeCodesOfConductPreview)
|
||||
|
||||
coc := new(CodeOfConduct)
|
||||
resp, err := s.client.Do(ctx, req, coc)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return coc, resp, nil
|
||||
}
|
||||
|
||||
// GetCodeOfConduct returns an individual code of conduct.
|
||||
//
|
||||
// Deprecated: Use CodesOfConductService.Get instead
|
||||
func (c *Client) GetCodeOfConduct(ctx context.Context, key string) (*CodeOfConduct, *Response, error) {
|
||||
return c.CodesOfConduct.Get(ctx, key)
|
||||
}
|
||||
176
vendor/github.com/google/go-github/v57/github/dependabot_alerts.go
generated
vendored
176
vendor/github.com/google/go-github/v57/github/dependabot_alerts.go
generated
vendored
|
|
@ -1,176 +0,0 @@
|
|||
// Copyright 2022 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// Dependency reprensents the vulnerable dependency.
|
||||
type Dependency struct {
|
||||
Package *VulnerabilityPackage `json:"package,omitempty"`
|
||||
ManifestPath *string `json:"manifest_path,omitempty"`
|
||||
Scope *string `json:"scope,omitempty"`
|
||||
}
|
||||
|
||||
// AdvisoryCVSS represents the advisory pertaining to the Common Vulnerability Scoring System.
|
||||
type AdvisoryCVSS struct {
|
||||
Score *float64 `json:"score,omitempty"`
|
||||
VectorString *string `json:"vector_string,omitempty"`
|
||||
}
|
||||
|
||||
// AdvisoryCWEs reprensent the advisory pertaining to Common Weakness Enumeration.
|
||||
type AdvisoryCWEs struct {
|
||||
CWEID *string `json:"cwe_id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
// DependabotSecurityAdvisory represents the GitHub Security Advisory.
|
||||
type DependabotSecurityAdvisory struct {
|
||||
GHSAID *string `json:"ghsa_id,omitempty"`
|
||||
CVEID *string `json:"cve_id,omitempty"`
|
||||
Summary *string `json:"summary,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
Vulnerabilities []*AdvisoryVulnerability `json:"vulnerabilities,omitempty"`
|
||||
Severity *string `json:"severity,omitempty"`
|
||||
CVSS *AdvisoryCVSS `json:"cvss,omitempty"`
|
||||
CWEs []*AdvisoryCWEs `json:"cwes,omitempty"`
|
||||
Identifiers []*AdvisoryIdentifier `json:"identifiers,omitempty"`
|
||||
References []*AdvisoryReference `json:"references,omitempty"`
|
||||
PublishedAt *Timestamp `json:"published_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
WithdrawnAt *Timestamp `json:"withdrawn_at,omitempty"`
|
||||
}
|
||||
|
||||
// DependabotAlert represents a Dependabot alert.
|
||||
type DependabotAlert struct {
|
||||
Number *int `json:"number,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
Dependency *Dependency `json:"dependency,omitempty"`
|
||||
SecurityAdvisory *DependabotSecurityAdvisory `json:"security_advisory,omitempty"`
|
||||
SecurityVulnerability *AdvisoryVulnerability `json:"security_vulnerability,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
DismissedAt *Timestamp `json:"dismissed_at,omitempty"`
|
||||
DismissedBy *User `json:"dismissed_by,omitempty"`
|
||||
DismissedReason *string `json:"dismissed_reason,omitempty"`
|
||||
DismissedComment *string `json:"dismissed_comment,omitempty"`
|
||||
FixedAt *Timestamp `json:"fixed_at,omitempty"`
|
||||
AutoDismissedAt *Timestamp `json:"auto_dismissed_at,omitempty"`
|
||||
// The repository is always empty for events
|
||||
Repository *Repository `json:"repository,omitempty"`
|
||||
}
|
||||
|
||||
// DependabotAlertState represents the state of a Dependabot alert to update.
|
||||
type DependabotAlertState struct {
|
||||
// The state of the Dependabot alert. A dismissed_reason must be provided when setting the state to dismissed.
|
||||
State string `json:"state"`
|
||||
// Required when state is dismissed. A reason for dismissing the alert.
|
||||
// Can be one of: fix_started, inaccurate, no_bandwidth, not_used, tolerable_risk
|
||||
DismissedReason *string `json:"dismissed_reason,omitempty"`
|
||||
// An optional comment associated with dismissing the alert.
|
||||
DismissedComment *string `json:"dismissed_comment,omitempty"`
|
||||
}
|
||||
|
||||
// ListAlertsOptions specifies the optional parameters to the DependabotService.ListRepoAlerts
|
||||
// and DependabotService.ListOrgAlerts methods.
|
||||
type ListAlertsOptions struct {
|
||||
State *string `url:"state,omitempty"`
|
||||
Severity *string `url:"severity,omitempty"`
|
||||
Ecosystem *string `url:"ecosystem,omitempty"`
|
||||
Package *string `url:"package,omitempty"`
|
||||
Scope *string `url:"scope,omitempty"`
|
||||
Sort *string `url:"sort,omitempty"`
|
||||
Direction *string `url:"direction,omitempty"`
|
||||
|
||||
ListOptions
|
||||
ListCursorOptions
|
||||
}
|
||||
|
||||
func (s *DependabotService) listAlerts(ctx context.Context, url string, opts *ListAlertsOptions) ([]*DependabotAlert, *Response, error) {
|
||||
u, err := addOptions(url, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var alerts []*DependabotAlert
|
||||
resp, err := s.client.Do(ctx, req, &alerts)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return alerts, resp, nil
|
||||
}
|
||||
|
||||
// ListRepoAlerts lists all Dependabot alerts of a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/dependabot/alerts
|
||||
func (s *DependabotService) ListRepoAlerts(ctx context.Context, owner, repo string, opts *ListAlertsOptions) ([]*DependabotAlert, *Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/dependabot/alerts", owner, repo)
|
||||
return s.listAlerts(ctx, url, opts)
|
||||
}
|
||||
|
||||
// ListOrgAlerts lists all Dependabot alerts of an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/dependabot/alerts#list-dependabot-alerts-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/dependabot/alerts
|
||||
func (s *DependabotService) ListOrgAlerts(ctx context.Context, org string, opts *ListAlertsOptions) ([]*DependabotAlert, *Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/dependabot/alerts", org)
|
||||
return s.listAlerts(ctx, url, opts)
|
||||
}
|
||||
|
||||
// GetRepoAlert gets a single repository Dependabot alert.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/dependabot/alerts#get-a-dependabot-alert
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}
|
||||
func (s *DependabotService) GetRepoAlert(ctx context.Context, owner, repo string, number int) (*DependabotAlert, *Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/dependabot/alerts/%v", owner, repo, number)
|
||||
req, err := s.client.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
alert := new(DependabotAlert)
|
||||
resp, err := s.client.Do(ctx, req, alert)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return alert, resp, nil
|
||||
}
|
||||
|
||||
// UpdateAlert updates a Dependabot alert.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/dependabot/alerts#update-a-dependabot-alert
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}
|
||||
func (s *DependabotService) UpdateAlert(ctx context.Context, owner, repo string, number int, stateInfo *DependabotAlertState) (*DependabotAlert, *Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/dependabot/alerts/%v", owner, repo, number)
|
||||
req, err := s.client.NewRequest("PATCH", url, stateInfo)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
alert := new(DependabotAlert)
|
||||
resp, err := s.client.Do(ctx, req, alert)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return alert, resp, nil
|
||||
}
|
||||
194
vendor/github.com/google/go-github/v57/github/doc.go
generated
vendored
194
vendor/github.com/google/go-github/v57/github/doc.go
generated
vendored
|
|
@ -1,194 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
/*
|
||||
Package github provides a client for using the GitHub API.
|
||||
|
||||
Usage:
|
||||
|
||||
import "github.com/google/go-github/v57/github" // with go modules enabled (GO111MODULE=on or outside GOPATH)
|
||||
import "github.com/google/go-github/github" // with go modules disabled
|
||||
|
||||
Construct a new GitHub client, then use the various services on the client to
|
||||
access different parts of the GitHub API. For example:
|
||||
|
||||
client := github.NewClient(nil)
|
||||
|
||||
// list all organizations for user "willnorris"
|
||||
orgs, _, err := client.Organizations.List(ctx, "willnorris", nil)
|
||||
|
||||
Some API methods have optional parameters that can be passed. For example:
|
||||
|
||||
client := github.NewClient(nil)
|
||||
|
||||
// list public repositories for org "github"
|
||||
opt := &github.RepositoryListByOrgOptions{Type: "public"}
|
||||
repos, _, err := client.Repositories.ListByOrg(ctx, "github", opt)
|
||||
|
||||
The services of a client divide the API into logical chunks and correspond to
|
||||
the structure of the GitHub API documentation at
|
||||
https://docs.github.com/rest .
|
||||
|
||||
NOTE: Using the https://godoc.org/context package, one can easily
|
||||
pass cancelation signals and deadlines to various services of the client for
|
||||
handling a request. In case there is no context available, then context.Background()
|
||||
can be used as a starting point.
|
||||
|
||||
For more sample code snippets, head over to the https://github.com/google/go-github/tree/master/example directory.
|
||||
|
||||
# Authentication
|
||||
|
||||
Use Client.WithAuthToken to configure your client to authenticate using an Oauth token
|
||||
(for example, a personal access token). This is what is needed for a majority of use cases
|
||||
aside from GitHub Apps.
|
||||
|
||||
client := github.NewClient(nil).WithAuthToken("... your access token ...")
|
||||
|
||||
Note that when using an authenticated Client, all calls made by the client will
|
||||
include the specified OAuth token. Therefore, authenticated clients should
|
||||
almost never be shared between different users.
|
||||
|
||||
For API methods that require HTTP Basic Authentication, use the
|
||||
BasicAuthTransport.
|
||||
|
||||
GitHub Apps authentication can be provided by the
|
||||
https://github.com/bradleyfalzon/ghinstallation package.
|
||||
It supports both authentication as an installation, using an installation access token,
|
||||
and as an app, using a JWT.
|
||||
|
||||
To authenticate as an installation:
|
||||
|
||||
import "github.com/bradleyfalzon/ghinstallation"
|
||||
|
||||
func main() {
|
||||
// Wrap the shared transport for use with the integration ID 1 authenticating with installation ID 99.
|
||||
itr, err := ghinstallation.NewKeyFromFile(http.DefaultTransport, 1, 99, "2016-10-19.private-key.pem")
|
||||
if err != nil {
|
||||
// Handle error.
|
||||
}
|
||||
|
||||
// Use installation transport with client
|
||||
client := github.NewClient(&http.Client{Transport: itr})
|
||||
|
||||
// Use client...
|
||||
}
|
||||
|
||||
To authenticate as an app, using a JWT:
|
||||
|
||||
import "github.com/bradleyfalzon/ghinstallation"
|
||||
|
||||
func main() {
|
||||
// Wrap the shared transport for use with the application ID 1.
|
||||
atr, err := ghinstallation.NewAppsTransportKeyFromFile(http.DefaultTransport, 1, "2016-10-19.private-key.pem")
|
||||
if err != nil {
|
||||
// Handle error.
|
||||
}
|
||||
|
||||
// Use app transport with client
|
||||
client := github.NewClient(&http.Client{Transport: atr})
|
||||
|
||||
// Use client...
|
||||
}
|
||||
|
||||
# Rate Limiting
|
||||
|
||||
GitHub imposes a rate limit on all API clients. Unauthenticated clients are
|
||||
limited to 60 requests per hour, while authenticated clients can make up to
|
||||
5,000 requests per hour. The Search API has a custom rate limit. Unauthenticated
|
||||
clients are limited to 10 requests per minute, while authenticated clients
|
||||
can make up to 30 requests per minute. To receive the higher rate limit when
|
||||
making calls that are not issued on behalf of a user,
|
||||
use UnauthenticatedRateLimitedTransport.
|
||||
|
||||
The returned Response.Rate value contains the rate limit information
|
||||
from the most recent API call. If a recent enough response isn't
|
||||
available, you can use RateLimits to fetch the most up-to-date rate
|
||||
limit data for the client.
|
||||
|
||||
To detect an API rate limit error, you can check if its type is *github.RateLimitError.
|
||||
For secondary rate limits, you can check if its type is *github.AbuseRateLimitError:
|
||||
|
||||
repos, _, err := client.Repositories.List(ctx, "", nil)
|
||||
if _, ok := err.(*github.RateLimitError); ok {
|
||||
log.Println("hit rate limit")
|
||||
}
|
||||
if _, ok := err.(*github.AbuseRateLimitError); ok {
|
||||
log.Println("hit secondary rate limit")
|
||||
}
|
||||
|
||||
Learn more about GitHub rate limiting at
|
||||
https://docs.github.com/rest/rate-limit .
|
||||
|
||||
# Accepted Status
|
||||
|
||||
Some endpoints may return a 202 Accepted status code, meaning that the
|
||||
information required is not yet ready and was scheduled to be gathered on
|
||||
the GitHub side. Methods known to behave like this are documented specifying
|
||||
this behavior.
|
||||
|
||||
To detect this condition of error, you can check if its type is
|
||||
*github.AcceptedError:
|
||||
|
||||
stats, _, err := client.Repositories.ListContributorsStats(ctx, org, repo)
|
||||
if _, ok := err.(*github.AcceptedError); ok {
|
||||
log.Println("scheduled on GitHub side")
|
||||
}
|
||||
|
||||
# Conditional Requests
|
||||
|
||||
The GitHub API has good support for conditional requests which will help
|
||||
prevent you from burning through your rate limit, as well as help speed up your
|
||||
application. go-github does not handle conditional requests directly, but is
|
||||
instead designed to work with a caching http.Transport. We recommend using
|
||||
https://github.com/gregjones/httpcache for that.
|
||||
|
||||
Learn more about GitHub conditional requests at
|
||||
https://docs.github.com/rest/overview/resources-in-the-rest-api#conditional-requests.
|
||||
|
||||
# Creating and Updating Resources
|
||||
|
||||
All structs for GitHub resources use pointer values for all non-repeated fields.
|
||||
This allows distinguishing between unset fields and those set to a zero-value.
|
||||
Helper functions have been provided to easily create these pointers for string,
|
||||
bool, and int values. For example:
|
||||
|
||||
// create a new private repository named "foo"
|
||||
repo := &github.Repository{
|
||||
Name: github.String("foo"),
|
||||
Private: github.Bool(true),
|
||||
}
|
||||
client.Repositories.Create(ctx, "", repo)
|
||||
|
||||
Users who have worked with protocol buffers should find this pattern familiar.
|
||||
|
||||
# Pagination
|
||||
|
||||
All requests for resource collections (repos, pull requests, issues, etc.)
|
||||
support pagination. Pagination options are described in the
|
||||
github.ListOptions struct and passed to the list methods directly or as an
|
||||
embedded type of a more specific list options struct (for example
|
||||
github.PullRequestListOptions). Pages information is available via the
|
||||
github.Response struct.
|
||||
|
||||
client := github.NewClient(nil)
|
||||
|
||||
opt := &github.RepositoryListByOrgOptions{
|
||||
ListOptions: github.ListOptions{PerPage: 10},
|
||||
}
|
||||
// get all pages of results
|
||||
var allRepos []*github.Repository
|
||||
for {
|
||||
repos, resp, err := client.Repositories.ListByOrg(ctx, "github", opt)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
allRepos = append(allRepos, repos...)
|
||||
if resp.NextPage == 0 {
|
||||
break
|
||||
}
|
||||
opt.Page = resp.NextPage
|
||||
}
|
||||
*/
|
||||
package github
|
||||
40
vendor/github.com/google/go-github/v57/github/emojis.go
generated
vendored
40
vendor/github.com/google/go-github/v57/github/emojis.go
generated
vendored
|
|
@ -1,40 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
// EmojisService provides access to emoji-related functions in the GitHub API.
|
||||
type EmojisService service
|
||||
|
||||
// List returns the emojis available to use on GitHub.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/emojis/emojis#get-emojis
|
||||
//
|
||||
//meta:operation GET /emojis
|
||||
func (s *EmojisService) List(ctx context.Context) (map[string]string, *Response, error) {
|
||||
req, err := s.client.NewRequest("GET", "emojis", nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var emoji map[string]string
|
||||
resp, err := s.client.Do(ctx, req, &emoji)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return emoji, resp, nil
|
||||
}
|
||||
|
||||
// ListEmojis returns the emojis available to use on GitHub.
|
||||
//
|
||||
// Deprecated: Use EmojisService.List instead
|
||||
func (c *Client) ListEmojis(ctx context.Context) (map[string]string, *Response, error) {
|
||||
return c.Emojis.List(ctx)
|
||||
}
|
||||
118
vendor/github.com/google/go-github/v57/github/enterprise_actions_runners.go
generated
vendored
118
vendor/github.com/google/go-github/v57/github/enterprise_actions_runners.go
generated
vendored
|
|
@ -1,118 +0,0 @@
|
|||
// Copyright 2020 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ListRunnerApplicationDownloads lists self-hosted runner application binaries that can be downloaded and run.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runners#list-runner-applications-for-an-enterprise
|
||||
//
|
||||
//meta:operation GET /enterprises/{enterprise}/actions/runners/downloads
|
||||
func (s *EnterpriseService) ListRunnerApplicationDownloads(ctx context.Context, enterprise string) ([]*RunnerApplicationDownload, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/runners/downloads", enterprise)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var rads []*RunnerApplicationDownload
|
||||
resp, err := s.client.Do(ctx, req, &rads)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return rads, resp, nil
|
||||
}
|
||||
|
||||
// GenerateEnterpriseJITConfig generates a just-in-time configuration for an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runners#create-configuration-for-a-just-in-time-runner-for-an-enterprise
|
||||
//
|
||||
//meta:operation POST /enterprises/{enterprise}/actions/runners/generate-jitconfig
|
||||
func (s *EnterpriseService) GenerateEnterpriseJITConfig(ctx context.Context, enterprise string, request *GenerateJITConfigRequest) (*JITRunnerConfig, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/runners/generate-jitconfig", enterprise)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, request)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
jitConfig := new(JITRunnerConfig)
|
||||
resp, err := s.client.Do(ctx, req, jitConfig)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return jitConfig, resp, nil
|
||||
}
|
||||
|
||||
// CreateRegistrationToken creates a token that can be used to add a self-hosted runner.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runners#create-a-registration-token-for-an-enterprise
|
||||
//
|
||||
//meta:operation POST /enterprises/{enterprise}/actions/runners/registration-token
|
||||
func (s *EnterpriseService) CreateRegistrationToken(ctx context.Context, enterprise string) (*RegistrationToken, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/runners/registration-token", enterprise)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
registrationToken := new(RegistrationToken)
|
||||
resp, err := s.client.Do(ctx, req, registrationToken)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return registrationToken, resp, nil
|
||||
}
|
||||
|
||||
// ListRunners lists all the self-hosted runners for a enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runners#list-self-hosted-runners-for-an-enterprise
|
||||
//
|
||||
//meta:operation GET /enterprises/{enterprise}/actions/runners
|
||||
func (s *EnterpriseService) ListRunners(ctx context.Context, enterprise string, opts *ListOptions) (*Runners, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/runners", enterprise)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runners := &Runners{}
|
||||
resp, err := s.client.Do(ctx, req, &runners)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return runners, resp, nil
|
||||
}
|
||||
|
||||
// RemoveRunner forces the removal of a self-hosted runner from an enterprise using the runner id.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runners#delete-a-self-hosted-runner-from-an-enterprise
|
||||
//
|
||||
//meta:operation DELETE /enterprises/{enterprise}/actions/runners/{runner_id}
|
||||
func (s *EnterpriseService) RemoveRunner(ctx context.Context, enterprise string, runnerID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/actions/runners/%v", enterprise, runnerID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
84
vendor/github.com/google/go-github/v57/github/enterprise_code_security_and_analysis.go
generated
vendored
84
vendor/github.com/google/go-github/v57/github/enterprise_code_security_and_analysis.go
generated
vendored
|
|
@ -1,84 +0,0 @@
|
|||
// Copyright 2022 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// EnterpriseSecurityAnalysisSettings represents security analysis settings for an enterprise.
|
||||
type EnterpriseSecurityAnalysisSettings struct {
|
||||
AdvancedSecurityEnabledForNewRepositories *bool `json:"advanced_security_enabled_for_new_repositories,omitempty"`
|
||||
SecretScanningEnabledForNewRepositories *bool `json:"secret_scanning_enabled_for_new_repositories,omitempty"`
|
||||
SecretScanningPushProtectionEnabledForNewRepositories *bool `json:"secret_scanning_push_protection_enabled_for_new_repositories,omitempty"`
|
||||
SecretScanningPushProtectionCustomLink *string `json:"secret_scanning_push_protection_custom_link,omitempty"`
|
||||
}
|
||||
|
||||
// GetCodeSecurityAndAnalysis gets code security and analysis features for an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/code-security-and-analysis#get-code-security-and-analysis-features-for-an-enterprise
|
||||
//
|
||||
//meta:operation GET /enterprises/{enterprise}/code_security_and_analysis
|
||||
func (s *EnterpriseService) GetCodeSecurityAndAnalysis(ctx context.Context, enterprise string) (*EnterpriseSecurityAnalysisSettings, *Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/code_security_and_analysis", enterprise)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
settings := new(EnterpriseSecurityAnalysisSettings)
|
||||
resp, err := s.client.Do(ctx, req, settings)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return settings, resp, nil
|
||||
}
|
||||
|
||||
// UpdateCodeSecurityAndAnalysis updates code security and analysis features for new repositories in an enterprise.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/code-security-and-analysis#update-code-security-and-analysis-features-for-an-enterprise
|
||||
//
|
||||
//meta:operation PATCH /enterprises/{enterprise}/code_security_and_analysis
|
||||
func (s *EnterpriseService) UpdateCodeSecurityAndAnalysis(ctx context.Context, enterprise string, settings *EnterpriseSecurityAnalysisSettings) (*Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/code_security_and_analysis", enterprise)
|
||||
req, err := s.client.NewRequest("PATCH", u, settings)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// EnableDisableSecurityFeature enables or disables a security feature for all repositories in an enterprise.
|
||||
//
|
||||
// Valid values for securityProduct: "advanced_security", "secret_scanning", "secret_scanning_push_protection".
|
||||
// Valid values for enablement: "enable_all", "disable_all".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/code-security-and-analysis#enable-or-disable-a-security-feature
|
||||
//
|
||||
//meta:operation POST /enterprises/{enterprise}/{security_product}/{enablement}
|
||||
func (s *EnterpriseService) EnableDisableSecurityFeature(ctx context.Context, enterprise, securityProduct, enablement string) (*Response, error) {
|
||||
u := fmt.Sprintf("enterprises/%v/%v/%v", enterprise, securityProduct, enablement)
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
1795
vendor/github.com/google/go-github/v57/github/event_types.go
generated
vendored
1795
vendor/github.com/google/go-github/v57/github/event_types.go
generated
vendored
File diff suppressed because it is too large
Load diff
397
vendor/github.com/google/go-github/v57/github/gists.go
generated
vendored
397
vendor/github.com/google/go-github/v57/github/gists.go
generated
vendored
|
|
@ -1,397 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// GistsService handles communication with the Gist related
|
||||
// methods of the GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists
|
||||
type GistsService service
|
||||
|
||||
// Gist represents a GitHub's gist.
|
||||
type Gist struct {
|
||||
ID *string `json:"id,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
Public *bool `json:"public,omitempty"`
|
||||
Owner *User `json:"owner,omitempty"`
|
||||
Files map[GistFilename]GistFile `json:"files,omitempty"`
|
||||
Comments *int `json:"comments,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
GitPullURL *string `json:"git_pull_url,omitempty"`
|
||||
GitPushURL *string `json:"git_push_url,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
}
|
||||
|
||||
func (g Gist) String() string {
|
||||
return Stringify(g)
|
||||
}
|
||||
|
||||
// GistFilename represents filename on a gist.
|
||||
type GistFilename string
|
||||
|
||||
// GistFile represents a file on a gist.
|
||||
type GistFile struct {
|
||||
Size *int `json:"size,omitempty"`
|
||||
Filename *string `json:"filename,omitempty"`
|
||||
Language *string `json:"language,omitempty"`
|
||||
Type *string `json:"type,omitempty"`
|
||||
RawURL *string `json:"raw_url,omitempty"`
|
||||
Content *string `json:"content,omitempty"`
|
||||
}
|
||||
|
||||
func (g GistFile) String() string {
|
||||
return Stringify(g)
|
||||
}
|
||||
|
||||
// GistCommit represents a commit on a gist.
|
||||
type GistCommit struct {
|
||||
URL *string `json:"url,omitempty"`
|
||||
Version *string `json:"version,omitempty"`
|
||||
User *User `json:"user,omitempty"`
|
||||
ChangeStatus *CommitStats `json:"change_status,omitempty"`
|
||||
CommittedAt *Timestamp `json:"committed_at,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
}
|
||||
|
||||
func (gc GistCommit) String() string {
|
||||
return Stringify(gc)
|
||||
}
|
||||
|
||||
// GistFork represents a fork of a gist.
|
||||
type GistFork struct {
|
||||
URL *string `json:"url,omitempty"`
|
||||
User *User `json:"user,omitempty"`
|
||||
ID *string `json:"id,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
}
|
||||
|
||||
func (gf GistFork) String() string {
|
||||
return Stringify(gf)
|
||||
}
|
||||
|
||||
// GistListOptions specifies the optional parameters to the
|
||||
// GistsService.List, GistsService.ListAll, and GistsService.ListStarred methods.
|
||||
type GistListOptions struct {
|
||||
// Since filters Gists by time.
|
||||
Since time.Time `url:"since,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// List gists for a user. Passing the empty string will list
|
||||
// all public gists if called anonymously. However, if the call
|
||||
// is authenticated, it will returns all gists for the authenticated
|
||||
// user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#list-gists-for-a-user
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#list-gists-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation GET /gists
|
||||
//meta:operation GET /users/{username}/gists
|
||||
func (s *GistsService) List(ctx context.Context, user string, opts *GistListOptions) ([]*Gist, *Response, error) {
|
||||
var u string
|
||||
if user != "" {
|
||||
u = fmt.Sprintf("users/%v/gists", user)
|
||||
} else {
|
||||
u = "gists"
|
||||
}
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var gists []*Gist
|
||||
resp, err := s.client.Do(ctx, req, &gists)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return gists, resp, nil
|
||||
}
|
||||
|
||||
// ListAll lists all public gists.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#list-public-gists
|
||||
//
|
||||
//meta:operation GET /gists/public
|
||||
func (s *GistsService) ListAll(ctx context.Context, opts *GistListOptions) ([]*Gist, *Response, error) {
|
||||
u, err := addOptions("gists/public", opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var gists []*Gist
|
||||
resp, err := s.client.Do(ctx, req, &gists)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return gists, resp, nil
|
||||
}
|
||||
|
||||
// ListStarred lists starred gists of authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#list-starred-gists
|
||||
//
|
||||
//meta:operation GET /gists/starred
|
||||
func (s *GistsService) ListStarred(ctx context.Context, opts *GistListOptions) ([]*Gist, *Response, error) {
|
||||
u, err := addOptions("gists/starred", opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var gists []*Gist
|
||||
resp, err := s.client.Do(ctx, req, &gists)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return gists, resp, nil
|
||||
}
|
||||
|
||||
// Get a single gist.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#get-a-gist
|
||||
//
|
||||
//meta:operation GET /gists/{gist_id}
|
||||
func (s *GistsService) Get(ctx context.Context, id string) (*Gist, *Response, error) {
|
||||
u := fmt.Sprintf("gists/%v", id)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
gist := new(Gist)
|
||||
resp, err := s.client.Do(ctx, req, gist)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return gist, resp, nil
|
||||
}
|
||||
|
||||
// GetRevision gets a specific revision of a gist.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#get-a-gist-revision
|
||||
//
|
||||
//meta:operation GET /gists/{gist_id}/{sha}
|
||||
func (s *GistsService) GetRevision(ctx context.Context, id, sha string) (*Gist, *Response, error) {
|
||||
u := fmt.Sprintf("gists/%v/%v", id, sha)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
gist := new(Gist)
|
||||
resp, err := s.client.Do(ctx, req, gist)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return gist, resp, nil
|
||||
}
|
||||
|
||||
// Create a gist for authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#create-a-gist
|
||||
//
|
||||
//meta:operation POST /gists
|
||||
func (s *GistsService) Create(ctx context.Context, gist *Gist) (*Gist, *Response, error) {
|
||||
u := "gists"
|
||||
req, err := s.client.NewRequest("POST", u, gist)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
g := new(Gist)
|
||||
resp, err := s.client.Do(ctx, req, g)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return g, resp, nil
|
||||
}
|
||||
|
||||
// Edit a gist.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#update-a-gist
|
||||
//
|
||||
//meta:operation PATCH /gists/{gist_id}
|
||||
func (s *GistsService) Edit(ctx context.Context, id string, gist *Gist) (*Gist, *Response, error) {
|
||||
u := fmt.Sprintf("gists/%v", id)
|
||||
req, err := s.client.NewRequest("PATCH", u, gist)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
g := new(Gist)
|
||||
resp, err := s.client.Do(ctx, req, g)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return g, resp, nil
|
||||
}
|
||||
|
||||
// ListCommits lists commits of a gist.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#list-gist-commits
|
||||
//
|
||||
//meta:operation GET /gists/{gist_id}/commits
|
||||
func (s *GistsService) ListCommits(ctx context.Context, id string, opts *ListOptions) ([]*GistCommit, *Response, error) {
|
||||
u := fmt.Sprintf("gists/%v/commits", id)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var gistCommits []*GistCommit
|
||||
resp, err := s.client.Do(ctx, req, &gistCommits)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return gistCommits, resp, nil
|
||||
}
|
||||
|
||||
// Delete a gist.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#delete-a-gist
|
||||
//
|
||||
//meta:operation DELETE /gists/{gist_id}
|
||||
func (s *GistsService) Delete(ctx context.Context, id string) (*Response, error) {
|
||||
u := fmt.Sprintf("gists/%v", id)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// Star a gist on behalf of authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#star-a-gist
|
||||
//
|
||||
//meta:operation PUT /gists/{gist_id}/star
|
||||
func (s *GistsService) Star(ctx context.Context, id string) (*Response, error) {
|
||||
u := fmt.Sprintf("gists/%v/star", id)
|
||||
req, err := s.client.NewRequest("PUT", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// Unstar a gist on a behalf of authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#unstar-a-gist
|
||||
//
|
||||
//meta:operation DELETE /gists/{gist_id}/star
|
||||
func (s *GistsService) Unstar(ctx context.Context, id string) (*Response, error) {
|
||||
u := fmt.Sprintf("gists/%v/star", id)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// IsStarred checks if a gist is starred by authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#check-if-a-gist-is-starred
|
||||
//
|
||||
//meta:operation GET /gists/{gist_id}/star
|
||||
func (s *GistsService) IsStarred(ctx context.Context, id string) (bool, *Response, error) {
|
||||
u := fmt.Sprintf("gists/%v/star", id)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
starred, err := parseBoolResponse(err)
|
||||
return starred, resp, err
|
||||
}
|
||||
|
||||
// Fork a gist.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#fork-a-gist
|
||||
//
|
||||
//meta:operation POST /gists/{gist_id}/forks
|
||||
func (s *GistsService) Fork(ctx context.Context, id string) (*Gist, *Response, error) {
|
||||
u := fmt.Sprintf("gists/%v/forks", id)
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
g := new(Gist)
|
||||
resp, err := s.client.Do(ctx, req, g)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return g, resp, nil
|
||||
}
|
||||
|
||||
// ListForks lists forks of a gist.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/gists/gists#list-gist-forks
|
||||
//
|
||||
//meta:operation GET /gists/{gist_id}/forks
|
||||
func (s *GistsService) ListForks(ctx context.Context, id string, opts *ListOptions) ([]*GistFork, *Response, error) {
|
||||
u := fmt.Sprintf("gists/%v/forks", id)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var gistForks []*GistFork
|
||||
resp, err := s.client.Do(ctx, req, &gistForks)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return gistForks, resp, nil
|
||||
}
|
||||
225
vendor/github.com/google/go-github/v57/github/git_commits.go
generated
vendored
225
vendor/github.com/google/go-github/v57/github/git_commits.go
generated
vendored
|
|
@ -1,225 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// SignatureVerification represents GPG signature verification.
|
||||
type SignatureVerification struct {
|
||||
Verified *bool `json:"verified,omitempty"`
|
||||
Reason *string `json:"reason,omitempty"`
|
||||
Signature *string `json:"signature,omitempty"`
|
||||
Payload *string `json:"payload,omitempty"`
|
||||
}
|
||||
|
||||
// MessageSigner is used by GitService.CreateCommit to sign a commit.
|
||||
//
|
||||
// To create a MessageSigner that signs a commit with a [golang.org/x/crypto/openpgp.Entity],
|
||||
// or [github.com/ProtonMail/go-crypto/openpgp.Entity], use:
|
||||
//
|
||||
// commit.Signer = github.MessageSignerFunc(func(w io.Writer, r io.Reader) error {
|
||||
// return openpgp.ArmoredDetachSign(w, openpgpEntity, r, nil)
|
||||
// })
|
||||
type MessageSigner interface {
|
||||
Sign(w io.Writer, r io.Reader) error
|
||||
}
|
||||
|
||||
// MessageSignerFunc is a single function implementation of MessageSigner.
|
||||
type MessageSignerFunc func(w io.Writer, r io.Reader) error
|
||||
|
||||
func (f MessageSignerFunc) Sign(w io.Writer, r io.Reader) error {
|
||||
return f(w, r)
|
||||
}
|
||||
|
||||
// Commit represents a GitHub commit.
|
||||
type Commit struct {
|
||||
SHA *string `json:"sha,omitempty"`
|
||||
Author *CommitAuthor `json:"author,omitempty"`
|
||||
Committer *CommitAuthor `json:"committer,omitempty"`
|
||||
Message *string `json:"message,omitempty"`
|
||||
Tree *Tree `json:"tree,omitempty"`
|
||||
Parents []*Commit `json:"parents,omitempty"`
|
||||
Stats *CommitStats `json:"stats,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
Verification *SignatureVerification `json:"verification,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
|
||||
// CommentCount is the number of GitHub comments on the commit. This
|
||||
// is only populated for requests that fetch GitHub data like
|
||||
// Pulls.ListCommits, Repositories.ListCommits, etc.
|
||||
CommentCount *int `json:"comment_count,omitempty"`
|
||||
}
|
||||
|
||||
func (c Commit) String() string {
|
||||
return Stringify(c)
|
||||
}
|
||||
|
||||
// CommitAuthor represents the author or committer of a commit. The commit
|
||||
// author may not correspond to a GitHub User.
|
||||
type CommitAuthor struct {
|
||||
Date *Timestamp `json:"date,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Email *string `json:"email,omitempty"`
|
||||
|
||||
// The following fields are only populated by Webhook events.
|
||||
Login *string `json:"username,omitempty"` // Renamed for go-github consistency.
|
||||
}
|
||||
|
||||
func (c CommitAuthor) String() string {
|
||||
return Stringify(c)
|
||||
}
|
||||
|
||||
// GetCommit fetches the Commit object for a given SHA.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/git/commits#get-a-commit-object
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/git/commits/{commit_sha}
|
||||
func (s *GitService) GetCommit(ctx context.Context, owner string, repo string, sha string) (*Commit, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/git/commits/%v", owner, repo, sha)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
c := new(Commit)
|
||||
resp, err := s.client.Do(ctx, req, c)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return c, resp, nil
|
||||
}
|
||||
|
||||
// createCommit represents the body of a CreateCommit request.
|
||||
type createCommit struct {
|
||||
Author *CommitAuthor `json:"author,omitempty"`
|
||||
Committer *CommitAuthor `json:"committer,omitempty"`
|
||||
Message *string `json:"message,omitempty"`
|
||||
Tree *string `json:"tree,omitempty"`
|
||||
Parents []string `json:"parents,omitempty"`
|
||||
Signature *string `json:"signature,omitempty"`
|
||||
}
|
||||
|
||||
type CreateCommitOptions struct {
|
||||
// CreateCommit will sign the commit with this signer. See MessageSigner doc for more details.
|
||||
// Ignored on commits where Verification.Signature is defined.
|
||||
Signer MessageSigner
|
||||
}
|
||||
|
||||
// CreateCommit creates a new commit in a repository.
|
||||
// commit must not be nil.
|
||||
//
|
||||
// The commit.Committer is optional and will be filled with the commit.Author
|
||||
// data if omitted. If the commit.Author is omitted, it will be filled in with
|
||||
// the authenticated user’s information and the current date.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/git/commits#create-a-commit
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/git/commits
|
||||
func (s *GitService) CreateCommit(ctx context.Context, owner string, repo string, commit *Commit, opts *CreateCommitOptions) (*Commit, *Response, error) {
|
||||
if commit == nil {
|
||||
return nil, nil, fmt.Errorf("commit must be provided")
|
||||
}
|
||||
if opts == nil {
|
||||
opts = &CreateCommitOptions{}
|
||||
}
|
||||
|
||||
u := fmt.Sprintf("repos/%v/%v/git/commits", owner, repo)
|
||||
|
||||
parents := make([]string, len(commit.Parents))
|
||||
for i, parent := range commit.Parents {
|
||||
parents[i] = *parent.SHA
|
||||
}
|
||||
|
||||
body := &createCommit{
|
||||
Author: commit.Author,
|
||||
Committer: commit.Committer,
|
||||
Message: commit.Message,
|
||||
Parents: parents,
|
||||
}
|
||||
if commit.Tree != nil {
|
||||
body.Tree = commit.Tree.SHA
|
||||
}
|
||||
switch {
|
||||
case commit.Verification != nil:
|
||||
body.Signature = commit.Verification.Signature
|
||||
case opts.Signer != nil:
|
||||
signature, err := createSignature(opts.Signer, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
body.Signature = &signature
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
c := new(Commit)
|
||||
resp, err := s.client.Do(ctx, req, c)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return c, resp, nil
|
||||
}
|
||||
|
||||
func createSignature(signer MessageSigner, commit *createCommit) (string, error) {
|
||||
if signer == nil {
|
||||
return "", errors.New("createSignature: invalid parameters")
|
||||
}
|
||||
|
||||
message, err := createSignatureMessage(commit)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
var writer bytes.Buffer
|
||||
err = signer.Sign(&writer, strings.NewReader(message))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return writer.String(), nil
|
||||
}
|
||||
|
||||
func createSignatureMessage(commit *createCommit) (string, error) {
|
||||
if commit == nil || commit.Message == nil || *commit.Message == "" || commit.Author == nil {
|
||||
return "", errors.New("createSignatureMessage: invalid parameters")
|
||||
}
|
||||
|
||||
var message []string
|
||||
|
||||
if commit.Tree != nil {
|
||||
message = append(message, fmt.Sprintf("tree %s", *commit.Tree))
|
||||
}
|
||||
|
||||
for _, parent := range commit.Parents {
|
||||
message = append(message, fmt.Sprintf("parent %s", parent))
|
||||
}
|
||||
|
||||
message = append(message, fmt.Sprintf("author %s <%s> %d %s", commit.Author.GetName(), commit.Author.GetEmail(), commit.Author.GetDate().Unix(), commit.Author.GetDate().Format("-0700")))
|
||||
|
||||
committer := commit.Committer
|
||||
if committer == nil {
|
||||
committer = commit.Author
|
||||
}
|
||||
|
||||
// There needs to be a double newline after committer
|
||||
message = append(message, fmt.Sprintf("committer %s <%s> %d %s\n", committer.GetName(), committer.GetEmail(), committer.GetDate().Unix(), committer.GetDate().Format("-0700")))
|
||||
message = append(message, *commit.Message)
|
||||
|
||||
return strings.Join(message, "\n"), nil
|
||||
}
|
||||
185
vendor/github.com/google/go-github/v57/github/git_refs.go
generated
vendored
185
vendor/github.com/google/go-github/v57/github/git_refs.go
generated
vendored
|
|
@ -1,185 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Reference represents a GitHub reference.
|
||||
type Reference struct {
|
||||
Ref *string `json:"ref"`
|
||||
URL *string `json:"url"`
|
||||
Object *GitObject `json:"object"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
}
|
||||
|
||||
func (r Reference) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
|
||||
// GitObject represents a Git object.
|
||||
type GitObject struct {
|
||||
Type *string `json:"type"`
|
||||
SHA *string `json:"sha"`
|
||||
URL *string `json:"url"`
|
||||
}
|
||||
|
||||
func (o GitObject) String() string {
|
||||
return Stringify(o)
|
||||
}
|
||||
|
||||
// createRefRequest represents the payload for creating a reference.
|
||||
type createRefRequest struct {
|
||||
Ref *string `json:"ref"`
|
||||
SHA *string `json:"sha"`
|
||||
}
|
||||
|
||||
// updateRefRequest represents the payload for updating a reference.
|
||||
type updateRefRequest struct {
|
||||
SHA *string `json:"sha"`
|
||||
Force *bool `json:"force"`
|
||||
}
|
||||
|
||||
// GetRef fetches a single reference in a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/git/refs#get-a-reference
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/git/ref/{ref}
|
||||
func (s *GitService) GetRef(ctx context.Context, owner string, repo string, ref string) (*Reference, *Response, error) {
|
||||
ref = strings.TrimPrefix(ref, "refs/")
|
||||
u := fmt.Sprintf("repos/%v/%v/git/ref/%v", owner, repo, refURLEscape(ref))
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
r := new(Reference)
|
||||
resp, err := s.client.Do(ctx, req, r)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return r, resp, nil
|
||||
}
|
||||
|
||||
// refURLEscape escapes every path segment of the given ref. Those must
|
||||
// not contain escaped "/" - as "%2F" - or github will not recognize it.
|
||||
func refURLEscape(ref string) string {
|
||||
parts := strings.Split(ref, "/")
|
||||
for i, s := range parts {
|
||||
parts[i] = url.PathEscape(s)
|
||||
}
|
||||
return strings.Join(parts, "/")
|
||||
}
|
||||
|
||||
// ReferenceListOptions specifies optional parameters to the
|
||||
// GitService.ListMatchingRefs method.
|
||||
type ReferenceListOptions struct {
|
||||
Ref string `url:"-"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListMatchingRefs lists references in a repository that match a supplied ref.
|
||||
// Use an empty ref to list all references.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/git/refs#list-matching-references
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/git/matching-refs/{ref}
|
||||
func (s *GitService) ListMatchingRefs(ctx context.Context, owner, repo string, opts *ReferenceListOptions) ([]*Reference, *Response, error) {
|
||||
var ref string
|
||||
if opts != nil {
|
||||
ref = strings.TrimPrefix(opts.Ref, "refs/")
|
||||
}
|
||||
u := fmt.Sprintf("repos/%v/%v/git/matching-refs/%v", owner, repo, refURLEscape(ref))
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var rs []*Reference
|
||||
resp, err := s.client.Do(ctx, req, &rs)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return rs, resp, nil
|
||||
}
|
||||
|
||||
// CreateRef creates a new ref in a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/git/refs#create-a-reference
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/git/refs
|
||||
func (s *GitService) CreateRef(ctx context.Context, owner string, repo string, ref *Reference) (*Reference, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/git/refs", owner, repo)
|
||||
req, err := s.client.NewRequest("POST", u, &createRefRequest{
|
||||
// back-compat with previous behavior that didn't require 'refs/' prefix
|
||||
Ref: String("refs/" + strings.TrimPrefix(*ref.Ref, "refs/")),
|
||||
SHA: ref.Object.SHA,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
r := new(Reference)
|
||||
resp, err := s.client.Do(ctx, req, r)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return r, resp, nil
|
||||
}
|
||||
|
||||
// UpdateRef updates an existing ref in a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/git/refs#update-a-reference
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/git/refs/{ref}
|
||||
func (s *GitService) UpdateRef(ctx context.Context, owner string, repo string, ref *Reference, force bool) (*Reference, *Response, error) {
|
||||
refPath := strings.TrimPrefix(*ref.Ref, "refs/")
|
||||
u := fmt.Sprintf("repos/%v/%v/git/refs/%v", owner, repo, refURLEscape(refPath))
|
||||
req, err := s.client.NewRequest("PATCH", u, &updateRefRequest{
|
||||
SHA: ref.Object.SHA,
|
||||
Force: &force,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
r := new(Reference)
|
||||
resp, err := s.client.Do(ctx, req, r)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return r, resp, nil
|
||||
}
|
||||
|
||||
// DeleteRef deletes a ref from a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/git/refs#delete-a-reference
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/git/refs/{ref}
|
||||
func (s *GitService) DeleteRef(ctx context.Context, owner string, repo string, ref string) (*Response, error) {
|
||||
ref = strings.TrimPrefix(ref, "refs/")
|
||||
u := fmt.Sprintf("repos/%v/%v/git/refs/%v", owner, repo, refURLEscape(ref))
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
25375
vendor/github.com/google/go-github/v57/github/github-accessors.go
generated
vendored
25375
vendor/github.com/google/go-github/v57/github/github-accessors.go
generated
vendored
File diff suppressed because it is too large
Load diff
1537
vendor/github.com/google/go-github/v57/github/github.go
generated
vendored
1537
vendor/github.com/google/go-github/v57/github/github.go
generated
vendored
File diff suppressed because it is too large
Load diff
86
vendor/github.com/google/go-github/v57/github/interactions_orgs.go
generated
vendored
86
vendor/github.com/google/go-github/v57/github/interactions_orgs.go
generated
vendored
|
|
@ -1,86 +0,0 @@
|
|||
// Copyright 2019 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// GetRestrictionsForOrg fetches the interaction restrictions for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/interactions/orgs#get-interaction-restrictions-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/interaction-limits
|
||||
func (s *InteractionsService) GetRestrictionsForOrg(ctx context.Context, organization string) (*InteractionRestriction, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/interaction-limits", organization)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeInteractionRestrictionsPreview)
|
||||
|
||||
organizationInteractions := new(InteractionRestriction)
|
||||
|
||||
resp, err := s.client.Do(ctx, req, organizationInteractions)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return organizationInteractions, resp, nil
|
||||
}
|
||||
|
||||
// UpdateRestrictionsForOrg adds or updates the interaction restrictions for an organization.
|
||||
//
|
||||
// limit specifies the group of GitHub users who can comment, open issues, or create pull requests
|
||||
// in public repositories for the given organization.
|
||||
// Possible values are: "existing_users", "contributors_only", "collaborators_only".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/interactions/orgs#set-interaction-restrictions-for-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/interaction-limits
|
||||
func (s *InteractionsService) UpdateRestrictionsForOrg(ctx context.Context, organization, limit string) (*InteractionRestriction, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/interaction-limits", organization)
|
||||
|
||||
interaction := &InteractionRestriction{Limit: String(limit)}
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, interaction)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeInteractionRestrictionsPreview)
|
||||
|
||||
organizationInteractions := new(InteractionRestriction)
|
||||
|
||||
resp, err := s.client.Do(ctx, req, organizationInteractions)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return organizationInteractions, resp, nil
|
||||
}
|
||||
|
||||
// RemoveRestrictionsFromOrg removes the interaction restrictions for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/interactions/orgs#remove-interaction-restrictions-for-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/interaction-limits
|
||||
func (s *InteractionsService) RemoveRestrictionsFromOrg(ctx context.Context, organization string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/interaction-limits", organization)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeInteractionRestrictionsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
86
vendor/github.com/google/go-github/v57/github/interactions_repos.go
generated
vendored
86
vendor/github.com/google/go-github/v57/github/interactions_repos.go
generated
vendored
|
|
@ -1,86 +0,0 @@
|
|||
// Copyright 2018 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// GetRestrictionsForRepo fetches the interaction restrictions for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/interactions/repos#get-interaction-restrictions-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/interaction-limits
|
||||
func (s *InteractionsService) GetRestrictionsForRepo(ctx context.Context, owner, repo string) (*InteractionRestriction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/interaction-limits", owner, repo)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeInteractionRestrictionsPreview)
|
||||
|
||||
repositoryInteractions := new(InteractionRestriction)
|
||||
|
||||
resp, err := s.client.Do(ctx, req, repositoryInteractions)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return repositoryInteractions, resp, nil
|
||||
}
|
||||
|
||||
// UpdateRestrictionsForRepo adds or updates the interaction restrictions for a repository.
|
||||
//
|
||||
// limit specifies the group of GitHub users who can comment, open issues, or create pull requests
|
||||
// for the given repository.
|
||||
// Possible values are: "existing_users", "contributors_only", "collaborators_only".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/interactions/repos#set-interaction-restrictions-for-a-repository
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/interaction-limits
|
||||
func (s *InteractionsService) UpdateRestrictionsForRepo(ctx context.Context, owner, repo, limit string) (*InteractionRestriction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/interaction-limits", owner, repo)
|
||||
|
||||
interaction := &InteractionRestriction{Limit: String(limit)}
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, interaction)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeInteractionRestrictionsPreview)
|
||||
|
||||
repositoryInteractions := new(InteractionRestriction)
|
||||
|
||||
resp, err := s.client.Do(ctx, req, repositoryInteractions)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return repositoryInteractions, resp, nil
|
||||
}
|
||||
|
||||
// RemoveRestrictionsFromRepo removes the interaction restrictions for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/interactions/repos#remove-interaction-restrictions-for-a-repository
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/interaction-limits
|
||||
func (s *InteractionsService) RemoveRestrictionsFromRepo(ctx context.Context, owner, repo string) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/interaction-limits", owner, repo)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeInteractionRestrictionsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
382
vendor/github.com/google/go-github/v57/github/issues.go
generated
vendored
382
vendor/github.com/google/go-github/v57/github/issues.go
generated
vendored
|
|
@ -1,382 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// IssuesService handles communication with the issue related
|
||||
// methods of the GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/
|
||||
type IssuesService service
|
||||
|
||||
// Issue represents a GitHub issue on a repository.
|
||||
//
|
||||
// Note: As far as the GitHub API is concerned, every pull request is an issue,
|
||||
// but not every issue is a pull request. Some endpoints, events, and webhooks
|
||||
// may also return pull requests via this struct. If PullRequestLinks is nil,
|
||||
// this is an issue, and if PullRequestLinks is not nil, this is a pull request.
|
||||
// The IsPullRequest helper method can be used to check that.
|
||||
type Issue struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Number *int `json:"number,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
// StateReason can be one of: "completed", "not_planned", "reopened".
|
||||
StateReason *string `json:"state_reason,omitempty"`
|
||||
Locked *bool `json:"locked,omitempty"`
|
||||
Title *string `json:"title,omitempty"`
|
||||
Body *string `json:"body,omitempty"`
|
||||
AuthorAssociation *string `json:"author_association,omitempty"`
|
||||
User *User `json:"user,omitempty"`
|
||||
Labels []*Label `json:"labels,omitempty"`
|
||||
Assignee *User `json:"assignee,omitempty"`
|
||||
Comments *int `json:"comments,omitempty"`
|
||||
ClosedAt *Timestamp `json:"closed_at,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
ClosedBy *User `json:"closed_by,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
CommentsURL *string `json:"comments_url,omitempty"`
|
||||
EventsURL *string `json:"events_url,omitempty"`
|
||||
LabelsURL *string `json:"labels_url,omitempty"`
|
||||
RepositoryURL *string `json:"repository_url,omitempty"`
|
||||
Milestone *Milestone `json:"milestone,omitempty"`
|
||||
PullRequestLinks *PullRequestLinks `json:"pull_request,omitempty"`
|
||||
Repository *Repository `json:"repository,omitempty"`
|
||||
Reactions *Reactions `json:"reactions,omitempty"`
|
||||
Assignees []*User `json:"assignees,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
Draft *bool `json:"draft,omitempty"`
|
||||
|
||||
// TextMatches is only populated from search results that request text matches
|
||||
// See: search.go and https://docs.github.com/rest/search/#text-match-metadata
|
||||
TextMatches []*TextMatch `json:"text_matches,omitempty"`
|
||||
|
||||
// ActiveLockReason is populated only when LockReason is provided while locking the issue.
|
||||
// Possible values are: "off-topic", "too heated", "resolved", and "spam".
|
||||
ActiveLockReason *string `json:"active_lock_reason,omitempty"`
|
||||
}
|
||||
|
||||
func (i Issue) String() string {
|
||||
return Stringify(i)
|
||||
}
|
||||
|
||||
// IsPullRequest reports whether the issue is also a pull request. It uses the
|
||||
// method recommended by GitHub's API documentation, which is to check whether
|
||||
// PullRequestLinks is non-nil.
|
||||
func (i Issue) IsPullRequest() bool {
|
||||
return i.PullRequestLinks != nil
|
||||
}
|
||||
|
||||
// IssueRequest represents a request to create/edit an issue.
|
||||
// It is separate from Issue above because otherwise Labels
|
||||
// and Assignee fail to serialize to the correct JSON.
|
||||
type IssueRequest struct {
|
||||
Title *string `json:"title,omitempty"`
|
||||
Body *string `json:"body,omitempty"`
|
||||
Labels *[]string `json:"labels,omitempty"`
|
||||
Assignee *string `json:"assignee,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
// StateReason can be 'completed' or 'not_planned'.
|
||||
StateReason *string `json:"state_reason,omitempty"`
|
||||
Milestone *int `json:"milestone,omitempty"`
|
||||
Assignees *[]string `json:"assignees,omitempty"`
|
||||
}
|
||||
|
||||
// IssueListOptions specifies the optional parameters to the IssuesService.List
|
||||
// and IssuesService.ListByOrg methods.
|
||||
type IssueListOptions struct {
|
||||
// Filter specifies which issues to list. Possible values are: assigned,
|
||||
// created, mentioned, subscribed, all. Default is "assigned".
|
||||
Filter string `url:"filter,omitempty"`
|
||||
|
||||
// State filters issues based on their state. Possible values are: open,
|
||||
// closed, all. Default is "open".
|
||||
State string `url:"state,omitempty"`
|
||||
|
||||
// Labels filters issues based on their label.
|
||||
Labels []string `url:"labels,comma,omitempty"`
|
||||
|
||||
// Sort specifies how to sort issues. Possible values are: created, updated,
|
||||
// and comments. Default value is "created".
|
||||
Sort string `url:"sort,omitempty"`
|
||||
|
||||
// Direction in which to sort issues. Possible values are: asc, desc.
|
||||
// Default is "desc".
|
||||
Direction string `url:"direction,omitempty"`
|
||||
|
||||
// Since filters issues by time.
|
||||
Since time.Time `url:"since,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// PullRequestLinks object is added to the Issue object when it's an issue included
|
||||
// in the IssueCommentEvent webhook payload, if the webhook is fired by a comment on a PR.
|
||||
type PullRequestLinks struct {
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
DiffURL *string `json:"diff_url,omitempty"`
|
||||
PatchURL *string `json:"patch_url,omitempty"`
|
||||
}
|
||||
|
||||
// List the issues for the authenticated user. If all is true, list issues
|
||||
// across all the user's visible repositories including owned, member, and
|
||||
// organization repositories; if false, list only owned and member
|
||||
// repositories.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#list-issues-assigned-to-the-authenticated-user
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#list-user-account-issues-assigned-to-the-authenticated-user
|
||||
//
|
||||
//meta:operation GET /issues
|
||||
//meta:operation GET /user/issues
|
||||
func (s *IssuesService) List(ctx context.Context, all bool, opts *IssueListOptions) ([]*Issue, *Response, error) {
|
||||
var u string
|
||||
if all {
|
||||
u = "issues"
|
||||
} else {
|
||||
u = "user/issues"
|
||||
}
|
||||
return s.listIssues(ctx, u, opts)
|
||||
}
|
||||
|
||||
// ListByOrg fetches the issues in the specified organization for the
|
||||
// authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#list-organization-issues-assigned-to-the-authenticated-user
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/issues
|
||||
func (s *IssuesService) ListByOrg(ctx context.Context, org string, opts *IssueListOptions) ([]*Issue, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/issues", org)
|
||||
return s.listIssues(ctx, u, opts)
|
||||
}
|
||||
|
||||
func (s *IssuesService) listIssues(ctx context.Context, u string, opts *IssueListOptions) ([]*Issue, *Response, error) {
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
var issues []*Issue
|
||||
resp, err := s.client.Do(ctx, req, &issues)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return issues, resp, nil
|
||||
}
|
||||
|
||||
// IssueListByRepoOptions specifies the optional parameters to the
|
||||
// IssuesService.ListByRepo method.
|
||||
type IssueListByRepoOptions struct {
|
||||
// Milestone limits issues for the specified milestone. Possible values are
|
||||
// a milestone number, "none" for issues with no milestone, "*" for issues
|
||||
// with any milestone.
|
||||
Milestone string `url:"milestone,omitempty"`
|
||||
|
||||
// State filters issues based on their state. Possible values are: open,
|
||||
// closed, all. Default is "open".
|
||||
State string `url:"state,omitempty"`
|
||||
|
||||
// Assignee filters issues based on their assignee. Possible values are a
|
||||
// user name, "none" for issues that are not assigned, "*" for issues with
|
||||
// any assigned user.
|
||||
Assignee string `url:"assignee,omitempty"`
|
||||
|
||||
// Creator filters issues based on their creator.
|
||||
Creator string `url:"creator,omitempty"`
|
||||
|
||||
// Mentioned filters issues to those mentioned a specific user.
|
||||
Mentioned string `url:"mentioned,omitempty"`
|
||||
|
||||
// Labels filters issues based on their label.
|
||||
Labels []string `url:"labels,omitempty,comma"`
|
||||
|
||||
// Sort specifies how to sort issues. Possible values are: created, updated,
|
||||
// and comments. Default value is "created".
|
||||
Sort string `url:"sort,omitempty"`
|
||||
|
||||
// Direction in which to sort issues. Possible values are: asc, desc.
|
||||
// Default is "desc".
|
||||
Direction string `url:"direction,omitempty"`
|
||||
|
||||
// Since filters issues by time.
|
||||
Since time.Time `url:"since,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListByRepo lists the issues for the specified repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#list-repository-issues
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/issues
|
||||
func (s *IssuesService) ListByRepo(ctx context.Context, owner string, repo string, opts *IssueListByRepoOptions) ([]*Issue, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
var issues []*Issue
|
||||
resp, err := s.client.Do(ctx, req, &issues)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return issues, resp, nil
|
||||
}
|
||||
|
||||
// Get a single issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#get-an-issue
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/issues/{issue_number}
|
||||
func (s *IssuesService) Get(ctx context.Context, owner string, repo string, number int) (*Issue, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%d", owner, repo, number)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
issue := new(Issue)
|
||||
resp, err := s.client.Do(ctx, req, issue)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return issue, resp, nil
|
||||
}
|
||||
|
||||
// Create a new issue on the specified repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#create-an-issue
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/issues
|
||||
func (s *IssuesService) Create(ctx context.Context, owner string, repo string, issue *IssueRequest) (*Issue, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues", owner, repo)
|
||||
req, err := s.client.NewRequest("POST", u, issue)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
i := new(Issue)
|
||||
resp, err := s.client.Do(ctx, req, i)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return i, resp, nil
|
||||
}
|
||||
|
||||
// Edit (update) an issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#update-an-issue
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/issues/{issue_number}
|
||||
func (s *IssuesService) Edit(ctx context.Context, owner string, repo string, number int, issue *IssueRequest) (*Issue, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%d", owner, repo, number)
|
||||
req, err := s.client.NewRequest("PATCH", u, issue)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
i := new(Issue)
|
||||
resp, err := s.client.Do(ctx, req, i)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return i, resp, nil
|
||||
}
|
||||
|
||||
// RemoveMilestone removes a milestone from an issue.
|
||||
//
|
||||
// This is a helper method to explicitly update an issue with a `null` milestone, thereby removing it.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#update-an-issue
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/issues/{issue_number}
|
||||
func (s *IssuesService) RemoveMilestone(ctx context.Context, owner, repo string, issueNumber int) (*Issue, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%v", owner, repo, issueNumber)
|
||||
req, err := s.client.NewRequest("PATCH", u, &struct {
|
||||
Milestone *Milestone `json:"milestone"`
|
||||
}{})
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
i := new(Issue)
|
||||
resp, err := s.client.Do(ctx, req, i)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return i, resp, nil
|
||||
}
|
||||
|
||||
// LockIssueOptions specifies the optional parameters to the
|
||||
// IssuesService.Lock method.
|
||||
type LockIssueOptions struct {
|
||||
// LockReason specifies the reason to lock this issue.
|
||||
// Providing a lock reason can help make it clearer to contributors why an issue
|
||||
// was locked. Possible values are: "off-topic", "too heated", "resolved", and "spam".
|
||||
LockReason string `json:"lock_reason,omitempty"`
|
||||
}
|
||||
|
||||
// Lock an issue's conversation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#lock-an-issue
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/issues/{issue_number}/lock
|
||||
func (s *IssuesService) Lock(ctx context.Context, owner string, repo string, number int, opts *LockIssueOptions) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%d/lock", owner, repo, number)
|
||||
req, err := s.client.NewRequest("PUT", u, opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// Unlock an issue's conversation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/issues#unlock-an-issue
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock
|
||||
func (s *IssuesService) Unlock(ctx context.Context, owner string, repo string, number int) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%d/lock", owner, repo, number)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
186
vendor/github.com/google/go-github/v57/github/issues_events.go
generated
vendored
186
vendor/github.com/google/go-github/v57/github/issues_events.go
generated
vendored
|
|
@ -1,186 +0,0 @@
|
|||
// Copyright 2014 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// IssueEvent represents an event that occurred around an Issue or Pull Request.
|
||||
type IssueEvent struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
|
||||
// The User that generated this event.
|
||||
Actor *User `json:"actor,omitempty"`
|
||||
|
||||
// Event identifies the actual type of Event that occurred. Possible
|
||||
// values are:
|
||||
//
|
||||
// closed
|
||||
// The Actor closed the issue.
|
||||
// If the issue was closed by commit message, CommitID holds the SHA1 hash of the commit.
|
||||
//
|
||||
// merged
|
||||
// The Actor merged into master a branch containing a commit mentioning the issue.
|
||||
// CommitID holds the SHA1 of the merge commit.
|
||||
//
|
||||
// referenced
|
||||
// The Actor committed to master a commit mentioning the issue in its commit message.
|
||||
// CommitID holds the SHA1 of the commit.
|
||||
//
|
||||
// reopened, unlocked
|
||||
// The Actor did that to the issue.
|
||||
//
|
||||
// locked
|
||||
// The Actor locked the issue.
|
||||
// LockReason holds the reason of locking the issue (if provided while locking).
|
||||
//
|
||||
// renamed
|
||||
// The Actor changed the issue title from Rename.From to Rename.To.
|
||||
//
|
||||
// mentioned
|
||||
// Someone unspecified @mentioned the Actor [sic] in an issue comment body.
|
||||
//
|
||||
// assigned, unassigned
|
||||
// The Assigner assigned the issue to or removed the assignment from the Assignee.
|
||||
//
|
||||
// labeled, unlabeled
|
||||
// The Actor added or removed the Label from the issue.
|
||||
//
|
||||
// milestoned, demilestoned
|
||||
// The Actor added or removed the issue from the Milestone.
|
||||
//
|
||||
// subscribed, unsubscribed
|
||||
// The Actor subscribed to or unsubscribed from notifications for an issue.
|
||||
//
|
||||
// head_ref_deleted, head_ref_restored
|
||||
// The pull request’s branch was deleted or restored.
|
||||
//
|
||||
// review_dismissed
|
||||
// The review was dismissed and `DismissedReview` will be populated below.
|
||||
//
|
||||
// review_requested, review_request_removed
|
||||
// The Actor requested or removed the request for a review.
|
||||
// RequestedReviewer or RequestedTeam, and ReviewRequester will be populated below.
|
||||
//
|
||||
Event *string `json:"event,omitempty"`
|
||||
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
Issue *Issue `json:"issue,omitempty"`
|
||||
|
||||
// Only present on certain events; see above.
|
||||
Assignee *User `json:"assignee,omitempty"`
|
||||
Assigner *User `json:"assigner,omitempty"`
|
||||
CommitID *string `json:"commit_id,omitempty"`
|
||||
Milestone *Milestone `json:"milestone,omitempty"`
|
||||
Label *Label `json:"label,omitempty"`
|
||||
Rename *Rename `json:"rename,omitempty"`
|
||||
LockReason *string `json:"lock_reason,omitempty"`
|
||||
ProjectCard *ProjectCard `json:"project_card,omitempty"`
|
||||
DismissedReview *DismissedReview `json:"dismissed_review,omitempty"`
|
||||
RequestedReviewer *User `json:"requested_reviewer,omitempty"`
|
||||
RequestedTeam *Team `json:"requested_team,omitempty"`
|
||||
ReviewRequester *User `json:"review_requester,omitempty"`
|
||||
PerformedViaGithubApp *App `json:"performed_via_github_app,omitempty"`
|
||||
}
|
||||
|
||||
// DismissedReview represents details for 'dismissed_review' events.
|
||||
type DismissedReview struct {
|
||||
// State represents the state of the dismissed review.
|
||||
// Possible values are: "commented", "approved", and "changes_requested".
|
||||
State *string `json:"state,omitempty"`
|
||||
ReviewID *int64 `json:"review_id,omitempty"`
|
||||
DismissalMessage *string `json:"dismissal_message,omitempty"`
|
||||
DismissalCommitID *string `json:"dismissal_commit_id,omitempty"`
|
||||
}
|
||||
|
||||
// ListIssueEvents lists events for the specified issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/events#list-issue-events
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/issues/{issue_number}/events
|
||||
func (s *IssuesService) ListIssueEvents(ctx context.Context, owner, repo string, number int, opts *ListOptions) ([]*IssueEvent, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%v/events", owner, repo, number)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeProjectCardDetailsPreview)
|
||||
|
||||
var events []*IssueEvent
|
||||
resp, err := s.client.Do(ctx, req, &events)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return events, resp, nil
|
||||
}
|
||||
|
||||
// ListRepositoryEvents lists events for the specified repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/events#list-issue-events-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/issues/events
|
||||
func (s *IssuesService) ListRepositoryEvents(ctx context.Context, owner, repo string, opts *ListOptions) ([]*IssueEvent, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/events", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var events []*IssueEvent
|
||||
resp, err := s.client.Do(ctx, req, &events)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return events, resp, nil
|
||||
}
|
||||
|
||||
// GetEvent returns the specified issue event.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/events#get-an-issue-event
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/issues/events/{event_id}
|
||||
func (s *IssuesService) GetEvent(ctx context.Context, owner, repo string, id int64) (*IssueEvent, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/events/%v", owner, repo, id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
event := new(IssueEvent)
|
||||
resp, err := s.client.Do(ctx, req, event)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return event, resp, nil
|
||||
}
|
||||
|
||||
// Rename contains details for 'renamed' events.
|
||||
type Rename struct {
|
||||
From *string `json:"from,omitempty"`
|
||||
To *string `json:"to,omitempty"`
|
||||
}
|
||||
|
||||
func (r Rename) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
253
vendor/github.com/google/go-github/v57/github/issues_labels.go
generated
vendored
253
vendor/github.com/google/go-github/v57/github/issues_labels.go
generated
vendored
|
|
@ -1,253 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// Label represents a GitHub label on an Issue
|
||||
type Label struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Color *string `json:"color,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
Default *bool `json:"default,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
}
|
||||
|
||||
func (l Label) String() string {
|
||||
return Stringify(l)
|
||||
}
|
||||
|
||||
// ListLabels lists all labels for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#list-labels-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/labels
|
||||
func (s *IssuesService) ListLabels(ctx context.Context, owner string, repo string, opts *ListOptions) ([]*Label, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/labels", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var labels []*Label
|
||||
resp, err := s.client.Do(ctx, req, &labels)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return labels, resp, nil
|
||||
}
|
||||
|
||||
// GetLabel gets a single label.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#get-a-label
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/labels/{name}
|
||||
func (s *IssuesService) GetLabel(ctx context.Context, owner string, repo string, name string) (*Label, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
label := new(Label)
|
||||
resp, err := s.client.Do(ctx, req, label)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return label, resp, nil
|
||||
}
|
||||
|
||||
// CreateLabel creates a new label on the specified repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#create-a-label
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/labels
|
||||
func (s *IssuesService) CreateLabel(ctx context.Context, owner string, repo string, label *Label) (*Label, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/labels", owner, repo)
|
||||
req, err := s.client.NewRequest("POST", u, label)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
l := new(Label)
|
||||
resp, err := s.client.Do(ctx, req, l)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return l, resp, nil
|
||||
}
|
||||
|
||||
// EditLabel edits a label.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#update-a-label
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/labels/{name}
|
||||
func (s *IssuesService) EditLabel(ctx context.Context, owner string, repo string, name string, label *Label) (*Label, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name)
|
||||
req, err := s.client.NewRequest("PATCH", u, label)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
l := new(Label)
|
||||
resp, err := s.client.Do(ctx, req, l)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return l, resp, nil
|
||||
}
|
||||
|
||||
// DeleteLabel deletes a label.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#delete-a-label
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/labels/{name}
|
||||
func (s *IssuesService) DeleteLabel(ctx context.Context, owner string, repo string, name string) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListLabelsByIssue lists all labels for an issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#list-labels-for-an-issue
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/issues/{issue_number}/labels
|
||||
func (s *IssuesService) ListLabelsByIssue(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*Label, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var labels []*Label
|
||||
resp, err := s.client.Do(ctx, req, &labels)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return labels, resp, nil
|
||||
}
|
||||
|
||||
// AddLabelsToIssue adds labels to an issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#add-labels-to-an-issue
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/issues/{issue_number}/labels
|
||||
func (s *IssuesService) AddLabelsToIssue(ctx context.Context, owner string, repo string, number int, labels []string) ([]*Label, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
|
||||
req, err := s.client.NewRequest("POST", u, labels)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var l []*Label
|
||||
resp, err := s.client.Do(ctx, req, &l)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return l, resp, nil
|
||||
}
|
||||
|
||||
// RemoveLabelForIssue removes a label for an issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#remove-a-label-from-an-issue
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}
|
||||
func (s *IssuesService) RemoveLabelForIssue(ctx context.Context, owner string, repo string, number int, label string) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%d/labels/%v", owner, repo, number, label)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ReplaceLabelsForIssue replaces all labels for an issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#set-labels-for-an-issue
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/issues/{issue_number}/labels
|
||||
func (s *IssuesService) ReplaceLabelsForIssue(ctx context.Context, owner string, repo string, number int, labels []string) ([]*Label, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
|
||||
req, err := s.client.NewRequest("PUT", u, labels)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var l []*Label
|
||||
resp, err := s.client.Do(ctx, req, &l)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return l, resp, nil
|
||||
}
|
||||
|
||||
// RemoveLabelsForIssue removes all labels for an issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#remove-all-labels-from-an-issue
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels
|
||||
func (s *IssuesService) RemoveLabelsForIssue(ctx context.Context, owner string, repo string, number int) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListLabelsForMilestone lists labels for every issue in a milestone.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/labels#list-labels-for-issues-in-a-milestone
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels
|
||||
func (s *IssuesService) ListLabelsForMilestone(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*Label, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/milestones/%d/labels", owner, repo, number)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var labels []*Label
|
||||
resp, err := s.client.Do(ctx, req, &labels)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return labels, resp, nil
|
||||
}
|
||||
195
vendor/github.com/google/go-github/v57/github/issues_timeline.go
generated
vendored
195
vendor/github.com/google/go-github/v57/github/issues_timeline.go
generated
vendored
|
|
@ -1,195 +0,0 @@
|
|||
// Copyright 2016 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Timeline represents an event that occurred around an Issue or Pull Request.
|
||||
//
|
||||
// It is similar to an IssueEvent but may contain more information.
|
||||
// GitHub API docs: https://docs.github.com/developers/webhooks-and-events/events/issue-event-types
|
||||
type Timeline struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
CommitURL *string `json:"commit_url,omitempty"`
|
||||
|
||||
// The User object that generated the event.
|
||||
Actor *User `json:"actor,omitempty"`
|
||||
|
||||
// The person who commented on the issue.
|
||||
User *User `json:"user,omitempty"`
|
||||
|
||||
// The person who authored the commit.
|
||||
Author *CommitAuthor `json:"author,omitempty"`
|
||||
// The person who committed the commit on behalf of the author.
|
||||
Committer *CommitAuthor `json:"committer,omitempty"`
|
||||
// The SHA of the commit in the pull request.
|
||||
SHA *string `json:"sha,omitempty"`
|
||||
// The commit message.
|
||||
Message *string `json:"message,omitempty"`
|
||||
// A list of parent commits.
|
||||
Parents []*Commit `json:"parents,omitempty"`
|
||||
|
||||
// Event identifies the actual type of Event that occurred. Possible values
|
||||
// are:
|
||||
//
|
||||
// assigned
|
||||
// The issue was assigned to the assignee.
|
||||
//
|
||||
// closed
|
||||
// The issue was closed by the actor. When the commit_id is present, it
|
||||
// identifies the commit that closed the issue using "closes / fixes #NN"
|
||||
// syntax.
|
||||
//
|
||||
// commented
|
||||
// A comment was added to the issue.
|
||||
//
|
||||
// committed
|
||||
// A commit was added to the pull request's 'HEAD' branch. Only provided
|
||||
// for pull requests.
|
||||
//
|
||||
// cross-referenced
|
||||
// The issue was referenced from another issue. The 'source' attribute
|
||||
// contains the 'id', 'actor', and 'url' of the reference's source.
|
||||
//
|
||||
// demilestoned
|
||||
// The issue was removed from a milestone.
|
||||
//
|
||||
// head_ref_deleted
|
||||
// The pull request's branch was deleted.
|
||||
//
|
||||
// head_ref_restored
|
||||
// The pull request's branch was restored.
|
||||
//
|
||||
// labeled
|
||||
// A label was added to the issue.
|
||||
//
|
||||
// locked
|
||||
// The issue was locked by the actor.
|
||||
//
|
||||
// mentioned
|
||||
// The actor was @mentioned in an issue body.
|
||||
//
|
||||
// merged
|
||||
// The issue was merged by the actor. The 'commit_id' attribute is the
|
||||
// SHA1 of the HEAD commit that was merged.
|
||||
//
|
||||
// milestoned
|
||||
// The issue was added to a milestone.
|
||||
//
|
||||
// referenced
|
||||
// The issue was referenced from a commit message. The 'commit_id'
|
||||
// attribute is the commit SHA1 of where that happened.
|
||||
//
|
||||
// renamed
|
||||
// The issue title was changed.
|
||||
//
|
||||
// reopened
|
||||
// The issue was reopened by the actor.
|
||||
//
|
||||
// reviewed
|
||||
// The pull request was reviewed.
|
||||
//
|
||||
// subscribed
|
||||
// The actor subscribed to receive notifications for an issue.
|
||||
//
|
||||
// unassigned
|
||||
// The assignee was unassigned from the issue.
|
||||
//
|
||||
// unlabeled
|
||||
// A label was removed from the issue.
|
||||
//
|
||||
// unlocked
|
||||
// The issue was unlocked by the actor.
|
||||
//
|
||||
// unsubscribed
|
||||
// The actor unsubscribed to stop receiving notifications for an issue.
|
||||
//
|
||||
Event *string `json:"event,omitempty"`
|
||||
|
||||
// The string SHA of a commit that referenced this Issue or Pull Request.
|
||||
CommitID *string `json:"commit_id,omitempty"`
|
||||
// The timestamp indicating when the event occurred.
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
// The Label object including `name` and `color` attributes. Only provided for
|
||||
// 'labeled' and 'unlabeled' events.
|
||||
Label *Label `json:"label,omitempty"`
|
||||
// The User object which was assigned to (or unassigned from) this Issue or
|
||||
// Pull Request. Only provided for 'assigned' and 'unassigned' events.
|
||||
Assignee *User `json:"assignee,omitempty"`
|
||||
Assigner *User `json:"assigner,omitempty"`
|
||||
|
||||
// The Milestone object including a 'title' attribute.
|
||||
// Only provided for 'milestoned' and 'demilestoned' events.
|
||||
Milestone *Milestone `json:"milestone,omitempty"`
|
||||
// The 'id', 'actor', and 'url' for the source of a reference from another issue.
|
||||
// Only provided for 'cross-referenced' events.
|
||||
Source *Source `json:"source,omitempty"`
|
||||
// An object containing rename details including 'from' and 'to' attributes.
|
||||
// Only provided for 'renamed' events.
|
||||
Rename *Rename `json:"rename,omitempty"`
|
||||
ProjectCard *ProjectCard `json:"project_card,omitempty"`
|
||||
// The state of a submitted review. Can be one of: 'commented',
|
||||
// 'changes_requested' or 'approved'.
|
||||
// Only provided for 'reviewed' events.
|
||||
State *string `json:"state,omitempty"`
|
||||
|
||||
// The person requested to review the pull request.
|
||||
Reviewer *User `json:"requested_reviewer,omitempty"`
|
||||
// RequestedTeam contains the team requested to review the pull request.
|
||||
RequestedTeam *Team `json:"requested_team,omitempty"`
|
||||
// The person who requested a review.
|
||||
Requester *User `json:"review_requester,omitempty"`
|
||||
|
||||
// The review summary text.
|
||||
Body *string `json:"body,omitempty"`
|
||||
SubmittedAt *Timestamp `json:"submitted_at,omitempty"`
|
||||
|
||||
PerformedViaGithubApp *App `json:"performed_via_github_app,omitempty"`
|
||||
}
|
||||
|
||||
// Source represents a reference's source.
|
||||
type Source struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
Actor *User `json:"actor,omitempty"`
|
||||
Type *string `json:"type,omitempty"`
|
||||
Issue *Issue `json:"issue,omitempty"`
|
||||
}
|
||||
|
||||
// ListIssueTimeline lists events for the specified issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/issues/timeline#list-timeline-events-for-an-issue
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/issues/{issue_number}/timeline
|
||||
func (s *IssuesService) ListIssueTimeline(ctx context.Context, owner, repo string, number int, opts *ListOptions) ([]*Timeline, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%v/timeline", owner, repo, number)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
acceptHeaders := []string{mediaTypeTimelinePreview, mediaTypeProjectCardDetailsPreview}
|
||||
req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
|
||||
|
||||
var events []*Timeline
|
||||
resp, err := s.client.Do(ctx, req, &events)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return events, resp, nil
|
||||
}
|
||||
69
vendor/github.com/google/go-github/v57/github/markdown.go
generated
vendored
69
vendor/github.com/google/go-github/v57/github/markdown.go
generated
vendored
|
|
@ -1,69 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
)
|
||||
|
||||
// MarkdownService provides access to markdown-related functions in the GitHub API.
|
||||
type MarkdownService service
|
||||
|
||||
// MarkdownOptions specifies optional parameters to the Render method.
|
||||
type MarkdownOptions struct {
|
||||
// Mode identifies the rendering mode. Possible values are:
|
||||
// markdown - render a document as plain Render, just like
|
||||
// README files are rendered.
|
||||
//
|
||||
// gfm - to render a document as user-content, e.g. like user
|
||||
// comments or issues are rendered. In GFM mode, hard line breaks are
|
||||
// always taken into account, and issue and user mentions are linked
|
||||
// accordingly.
|
||||
//
|
||||
// Default is "markdown".
|
||||
Mode string
|
||||
|
||||
// Context identifies the repository context. Only taken into account
|
||||
// when rendering as "gfm".
|
||||
Context string
|
||||
}
|
||||
|
||||
type markdownRenderRequest struct {
|
||||
Text *string `json:"text,omitempty"`
|
||||
Mode *string `json:"mode,omitempty"`
|
||||
Context *string `json:"context,omitempty"`
|
||||
}
|
||||
|
||||
// Render renders an arbitrary Render document.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/markdown/markdown#render-a-markdown-document
|
||||
//
|
||||
//meta:operation POST /markdown
|
||||
func (s *MarkdownService) Render(ctx context.Context, text string, opts *MarkdownOptions) (string, *Response, error) {
|
||||
request := &markdownRenderRequest{Text: String(text)}
|
||||
if opts != nil {
|
||||
if opts.Mode != "" {
|
||||
request.Mode = String(opts.Mode)
|
||||
}
|
||||
if opts.Context != "" {
|
||||
request.Context = String(opts.Context)
|
||||
}
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("POST", "markdown", request)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
resp, err := s.client.Do(ctx, req, buf)
|
||||
if err != nil {
|
||||
return "", resp, err
|
||||
}
|
||||
|
||||
return buf.String(), resp, nil
|
||||
}
|
||||
352
vendor/github.com/google/go-github/v57/github/messages.go
generated
vendored
352
vendor/github.com/google/go-github/v57/github/messages.go
generated
vendored
|
|
@ -1,352 +0,0 @@
|
|||
// Copyright 2016 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// This file provides functions for validating payloads from GitHub Webhooks.
|
||||
// GitHub API docs: https://developer.github.com/webhooks/securing/#validating-payloads-from-github
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"crypto/hmac"
|
||||
"crypto/sha1"
|
||||
"crypto/sha256"
|
||||
"crypto/sha512"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"hash"
|
||||
"io"
|
||||
"mime"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
// sha1Prefix is the prefix used by GitHub before the HMAC hexdigest.
|
||||
sha1Prefix = "sha1"
|
||||
// sha256Prefix and sha512Prefix are provided for future compatibility.
|
||||
sha256Prefix = "sha256"
|
||||
sha512Prefix = "sha512"
|
||||
// SHA1SignatureHeader is the GitHub header key used to pass the HMAC-SHA1 hexdigest.
|
||||
SHA1SignatureHeader = "X-Hub-Signature"
|
||||
// SHA256SignatureHeader is the GitHub header key used to pass the HMAC-SHA256 hexdigest.
|
||||
SHA256SignatureHeader = "X-Hub-Signature-256"
|
||||
// EventTypeHeader is the GitHub header key used to pass the event type.
|
||||
EventTypeHeader = "X-Github-Event"
|
||||
// DeliveryIDHeader is the GitHub header key used to pass the unique ID for the webhook event.
|
||||
DeliveryIDHeader = "X-Github-Delivery"
|
||||
)
|
||||
|
||||
var (
|
||||
// eventTypeMapping maps webhooks types to their corresponding go-github struct types.
|
||||
eventTypeMapping = map[string]interface{}{
|
||||
"branch_protection_rule": &BranchProtectionRuleEvent{},
|
||||
"check_run": &CheckRunEvent{},
|
||||
"check_suite": &CheckSuiteEvent{},
|
||||
"code_scanning_alert": &CodeScanningAlertEvent{},
|
||||
"commit_comment": &CommitCommentEvent{},
|
||||
"content_reference": &ContentReferenceEvent{},
|
||||
"create": &CreateEvent{},
|
||||
"delete": &DeleteEvent{},
|
||||
"dependabot_alert": &DependabotAlertEvent{},
|
||||
"deploy_key": &DeployKeyEvent{},
|
||||
"deployment": &DeploymentEvent{},
|
||||
"deployment_status": &DeploymentStatusEvent{},
|
||||
"deployment_protection_rule": &DeploymentProtectionRuleEvent{},
|
||||
"discussion": &DiscussionEvent{},
|
||||
"discussion_comment": &DiscussionCommentEvent{},
|
||||
"fork": &ForkEvent{},
|
||||
"github_app_authorization": &GitHubAppAuthorizationEvent{},
|
||||
"gollum": &GollumEvent{},
|
||||
"installation": &InstallationEvent{},
|
||||
"installation_repositories": &InstallationRepositoriesEvent{},
|
||||
"installation_target": &InstallationTargetEvent{},
|
||||
"issue_comment": &IssueCommentEvent{},
|
||||
"issues": &IssuesEvent{},
|
||||
"label": &LabelEvent{},
|
||||
"marketplace_purchase": &MarketplacePurchaseEvent{},
|
||||
"member": &MemberEvent{},
|
||||
"membership": &MembershipEvent{},
|
||||
"merge_group": &MergeGroupEvent{},
|
||||
"meta": &MetaEvent{},
|
||||
"milestone": &MilestoneEvent{},
|
||||
"organization": &OrganizationEvent{},
|
||||
"org_block": &OrgBlockEvent{},
|
||||
"package": &PackageEvent{},
|
||||
"page_build": &PageBuildEvent{},
|
||||
"personal_access_token_request": &PersonalAccessTokenRequestEvent{},
|
||||
"ping": &PingEvent{},
|
||||
"project": &ProjectEvent{},
|
||||
"project_card": &ProjectCardEvent{},
|
||||
"project_column": &ProjectColumnEvent{},
|
||||
"projects_v2": &ProjectV2Event{},
|
||||
"projects_v2_item": &ProjectV2ItemEvent{},
|
||||
"public": &PublicEvent{},
|
||||
"pull_request": &PullRequestEvent{},
|
||||
"pull_request_review": &PullRequestReviewEvent{},
|
||||
"pull_request_review_comment": &PullRequestReviewCommentEvent{},
|
||||
"pull_request_review_thread": &PullRequestReviewThreadEvent{},
|
||||
"pull_request_target": &PullRequestTargetEvent{},
|
||||
"push": &PushEvent{},
|
||||
"repository": &RepositoryEvent{},
|
||||
"repository_dispatch": &RepositoryDispatchEvent{},
|
||||
"repository_import": &RepositoryImportEvent{},
|
||||
"repository_vulnerability_alert": &RepositoryVulnerabilityAlertEvent{},
|
||||
"release": &ReleaseEvent{},
|
||||
"secret_scanning_alert": &SecretScanningAlertEvent{},
|
||||
"security_advisory": &SecurityAdvisoryEvent{},
|
||||
"security_and_analysis": &SecurityAndAnalysisEvent{},
|
||||
"star": &StarEvent{},
|
||||
"status": &StatusEvent{},
|
||||
"team": &TeamEvent{},
|
||||
"team_add": &TeamAddEvent{},
|
||||
"user": &UserEvent{},
|
||||
"watch": &WatchEvent{},
|
||||
"workflow_dispatch": &WorkflowDispatchEvent{},
|
||||
"workflow_job": &WorkflowJobEvent{},
|
||||
"workflow_run": &WorkflowRunEvent{},
|
||||
}
|
||||
// forward mapping of event types to the string names of the structs
|
||||
messageToTypeName = make(map[string]string, len(eventTypeMapping))
|
||||
// Inverse map of the above
|
||||
typeToMessageMapping = make(map[string]string, len(eventTypeMapping))
|
||||
)
|
||||
|
||||
func init() {
|
||||
for k, v := range eventTypeMapping {
|
||||
typename := reflect.TypeOf(v).Elem().Name()
|
||||
messageToTypeName[k] = typename
|
||||
typeToMessageMapping[typename] = k
|
||||
}
|
||||
}
|
||||
|
||||
// genMAC generates the HMAC signature for a message provided the secret key
|
||||
// and hashFunc.
|
||||
func genMAC(message, key []byte, hashFunc func() hash.Hash) []byte {
|
||||
mac := hmac.New(hashFunc, key)
|
||||
mac.Write(message)
|
||||
return mac.Sum(nil)
|
||||
}
|
||||
|
||||
// checkMAC reports whether messageMAC is a valid HMAC tag for message.
|
||||
func checkMAC(message, messageMAC, key []byte, hashFunc func() hash.Hash) bool {
|
||||
expectedMAC := genMAC(message, key, hashFunc)
|
||||
return hmac.Equal(messageMAC, expectedMAC)
|
||||
}
|
||||
|
||||
// messageMAC returns the hex-decoded HMAC tag from the signature and its
|
||||
// corresponding hash function.
|
||||
func messageMAC(signature string) ([]byte, func() hash.Hash, error) {
|
||||
if signature == "" {
|
||||
return nil, nil, errors.New("missing signature")
|
||||
}
|
||||
sigParts := strings.SplitN(signature, "=", 2)
|
||||
if len(sigParts) != 2 {
|
||||
return nil, nil, fmt.Errorf("error parsing signature %q", signature)
|
||||
}
|
||||
|
||||
var hashFunc func() hash.Hash
|
||||
switch sigParts[0] {
|
||||
case sha1Prefix:
|
||||
hashFunc = sha1.New
|
||||
case sha256Prefix:
|
||||
hashFunc = sha256.New
|
||||
case sha512Prefix:
|
||||
hashFunc = sha512.New
|
||||
default:
|
||||
return nil, nil, fmt.Errorf("unknown hash type prefix: %q", sigParts[0])
|
||||
}
|
||||
|
||||
buf, err := hex.DecodeString(sigParts[1])
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("error decoding signature %q: %v", signature, err)
|
||||
}
|
||||
return buf, hashFunc, nil
|
||||
}
|
||||
|
||||
// ValidatePayloadFromBody validates an incoming GitHub Webhook event request body
|
||||
// and returns the (JSON) payload.
|
||||
// The Content-Type header of the payload can be "application/json" or "application/x-www-form-urlencoded".
|
||||
// If the Content-Type is neither then an error is returned.
|
||||
// secretToken is the GitHub Webhook secret token.
|
||||
// If your webhook does not contain a secret token, you can pass an empty secretToken.
|
||||
// Webhooks without a secret token are not secure and should be avoided.
|
||||
//
|
||||
// Example usage:
|
||||
//
|
||||
// func (s *GitHubEventMonitor) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
// // read signature from request
|
||||
// signature := ""
|
||||
// payload, err := github.ValidatePayloadFromBody(r.Header.Get("Content-Type"), r.Body, signature, s.webhookSecretKey)
|
||||
// if err != nil { ... }
|
||||
// // Process payload...
|
||||
// }
|
||||
func ValidatePayloadFromBody(contentType string, readable io.Reader, signature string, secretToken []byte) (payload []byte, err error) {
|
||||
var body []byte // Raw body that GitHub uses to calculate the signature.
|
||||
|
||||
switch contentType {
|
||||
case "application/json":
|
||||
var err error
|
||||
if body, err = io.ReadAll(readable); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If the content type is application/json,
|
||||
// the JSON payload is just the original body.
|
||||
payload = body
|
||||
|
||||
case "application/x-www-form-urlencoded":
|
||||
// payloadFormParam is the name of the form parameter that the JSON payload
|
||||
// will be in if a webhook has its content type set to application/x-www-form-urlencoded.
|
||||
const payloadFormParam = "payload"
|
||||
|
||||
var err error
|
||||
if body, err = io.ReadAll(readable); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If the content type is application/x-www-form-urlencoded,
|
||||
// the JSON payload will be under the "payload" form param.
|
||||
form, err := url.ParseQuery(string(body))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
payload = []byte(form.Get(payloadFormParam))
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("webhook request has unsupported Content-Type %q", contentType)
|
||||
}
|
||||
|
||||
// Validate the signature if present or if one is expected (secretToken is non-empty).
|
||||
if len(secretToken) > 0 || len(signature) > 0 {
|
||||
if err := ValidateSignature(signature, body, secretToken); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return payload, nil
|
||||
}
|
||||
|
||||
// ValidatePayload validates an incoming GitHub Webhook event request
|
||||
// and returns the (JSON) payload.
|
||||
// The Content-Type header of the payload can be "application/json" or "application/x-www-form-urlencoded".
|
||||
// If the Content-Type is neither then an error is returned.
|
||||
// secretToken is the GitHub Webhook secret token.
|
||||
// If your webhook does not contain a secret token, you can pass nil or an empty slice.
|
||||
// This is intended for local development purposes only and all webhooks should ideally set up a secret token.
|
||||
//
|
||||
// Example usage:
|
||||
//
|
||||
// func (s *GitHubEventMonitor) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
// payload, err := github.ValidatePayload(r, s.webhookSecretKey)
|
||||
// if err != nil { ... }
|
||||
// // Process payload...
|
||||
// }
|
||||
func ValidatePayload(r *http.Request, secretToken []byte) (payload []byte, err error) {
|
||||
signature := r.Header.Get(SHA256SignatureHeader)
|
||||
if signature == "" {
|
||||
signature = r.Header.Get(SHA1SignatureHeader)
|
||||
}
|
||||
|
||||
contentType, _, err := mime.ParseMediaType(r.Header.Get("Content-Type"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return ValidatePayloadFromBody(contentType, r.Body, signature, secretToken)
|
||||
}
|
||||
|
||||
// ValidateSignature validates the signature for the given payload.
|
||||
// signature is the GitHub hash signature delivered in the X-Hub-Signature header.
|
||||
// payload is the JSON payload sent by GitHub Webhooks.
|
||||
// secretToken is the GitHub Webhook secret token.
|
||||
//
|
||||
// GitHub API docs: https://developer.github.com/webhooks/securing/#validating-payloads-from-github
|
||||
func ValidateSignature(signature string, payload, secretToken []byte) error {
|
||||
messageMAC, hashFunc, err := messageMAC(signature)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !checkMAC(payload, messageMAC, secretToken, hashFunc) {
|
||||
return errors.New("payload signature check failed")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// WebHookType returns the event type of webhook request r.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/developers/webhooks-and-events/events/github-event-types
|
||||
func WebHookType(r *http.Request) string {
|
||||
return r.Header.Get(EventTypeHeader)
|
||||
}
|
||||
|
||||
// DeliveryID returns the unique delivery ID of webhook request r.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/developers/webhooks-and-events/events/github-event-types
|
||||
func DeliveryID(r *http.Request) string {
|
||||
return r.Header.Get(DeliveryIDHeader)
|
||||
}
|
||||
|
||||
// ParseWebHook parses the event payload. For recognized event types, a
|
||||
// value of the corresponding struct type will be returned (as returned
|
||||
// by Event.ParsePayload()). An error will be returned for unrecognized event
|
||||
// types.
|
||||
//
|
||||
// Example usage:
|
||||
//
|
||||
// func (s *GitHubEventMonitor) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
// payload, err := github.ValidatePayload(r, s.webhookSecretKey)
|
||||
// if err != nil { ... }
|
||||
// event, err := github.ParseWebHook(github.WebHookType(r), payload)
|
||||
// if err != nil { ... }
|
||||
// switch event := event.(type) {
|
||||
// case *github.CommitCommentEvent:
|
||||
// processCommitCommentEvent(event)
|
||||
// case *github.CreateEvent:
|
||||
// processCreateEvent(event)
|
||||
// ...
|
||||
// }
|
||||
// }
|
||||
func ParseWebHook(messageType string, payload []byte) (interface{}, error) {
|
||||
eventType, ok := messageToTypeName[messageType]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unknown X-Github-Event in message: %v", messageType)
|
||||
}
|
||||
|
||||
event := Event{
|
||||
Type: &eventType,
|
||||
RawPayload: (*json.RawMessage)(&payload),
|
||||
}
|
||||
return event.ParsePayload()
|
||||
}
|
||||
|
||||
// MessageTypes returns a sorted list of all the known GitHub event type strings
|
||||
// supported by go-github.
|
||||
func MessageTypes() []string {
|
||||
types := make([]string, 0, len(eventTypeMapping))
|
||||
for t := range eventTypeMapping {
|
||||
types = append(types, t)
|
||||
}
|
||||
sort.Strings(types)
|
||||
return types
|
||||
}
|
||||
|
||||
// EventForType returns an empty struct matching the specified GitHub event type.
|
||||
// If messageType does not match any known event types, it returns nil.
|
||||
func EventForType(messageType string) interface{} {
|
||||
prototype := eventTypeMapping[messageType]
|
||||
if prototype == nil {
|
||||
return nil
|
||||
}
|
||||
// return a _copy_ of the pointed-to-object. Unfortunately, for this we
|
||||
// need to use reflection. If we store the actual objects in the map,
|
||||
// we still need to use reflection to convert from `any` to the actual
|
||||
// type, so this was deemed the lesser of two evils. (#2865)
|
||||
return reflect.New(reflect.TypeOf(prototype).Elem()).Interface()
|
||||
}
|
||||
160
vendor/github.com/google/go-github/v57/github/meta.go
generated
vendored
160
vendor/github.com/google/go-github/v57/github/meta.go
generated
vendored
|
|
@ -1,160 +0,0 @@
|
|||
// Copyright 2014 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
// MetaService provides access to functions in the GitHub API that GitHub categorizes as "meta".
|
||||
type MetaService service
|
||||
|
||||
// APIMeta represents metadata about the GitHub API.
|
||||
type APIMeta struct {
|
||||
// An Array of IP addresses in CIDR format specifying the addresses
|
||||
// that incoming service hooks will originate from on GitHub.com.
|
||||
Hooks []string `json:"hooks,omitempty"`
|
||||
|
||||
// An Array of IP addresses in CIDR format specifying the Git servers
|
||||
// for GitHub.com.
|
||||
Git []string `json:"git,omitempty"`
|
||||
|
||||
// Whether authentication with username and password is supported.
|
||||
// (GitHub Enterprise instances using CAS or OAuth for authentication
|
||||
// will return false. Features like Basic Authentication with a
|
||||
// username and password, sudo mode, and two-factor authentication are
|
||||
// not supported on these servers.)
|
||||
VerifiablePasswordAuthentication *bool `json:"verifiable_password_authentication,omitempty"`
|
||||
|
||||
// An array of IP addresses in CIDR format specifying the addresses
|
||||
// which serve GitHub Packages.
|
||||
Packages []string `json:"packages,omitempty"`
|
||||
|
||||
// An array of IP addresses in CIDR format specifying the addresses
|
||||
// which serve GitHub Pages websites.
|
||||
Pages []string `json:"pages,omitempty"`
|
||||
|
||||
// An Array of IP addresses specifying the addresses that source imports
|
||||
// will originate from on GitHub.com.
|
||||
Importer []string `json:"importer,omitempty"`
|
||||
|
||||
// An array of IP addresses in CIDR format specifying the IP addresses
|
||||
// GitHub Actions will originate from.
|
||||
Actions []string `json:"actions,omitempty"`
|
||||
|
||||
// An array of IP addresses in CIDR format specifying the IP addresses
|
||||
// Dependabot will originate from.
|
||||
Dependabot []string `json:"dependabot,omitempty"`
|
||||
|
||||
// A map of algorithms to SSH key fingerprints.
|
||||
SSHKeyFingerprints map[string]string `json:"ssh_key_fingerprints,omitempty"`
|
||||
|
||||
// An array of SSH keys.
|
||||
SSHKeys []string `json:"ssh_keys,omitempty"`
|
||||
|
||||
// An array of IP addresses in CIDR format specifying the addresses
|
||||
// which serve GitHub websites.
|
||||
Web []string `json:"web,omitempty"`
|
||||
|
||||
// An array of IP addresses in CIDR format specifying the addresses
|
||||
// which serve GitHub APIs.
|
||||
API []string `json:"api,omitempty"`
|
||||
}
|
||||
|
||||
// Get returns information about GitHub.com, the service. Or, if you access
|
||||
// this endpoint on your organization’s GitHub Enterprise installation, this
|
||||
// endpoint provides information about that installation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/meta/meta#get-github-meta-information
|
||||
//
|
||||
//meta:operation GET /meta
|
||||
func (s *MetaService) Get(ctx context.Context) (*APIMeta, *Response, error) {
|
||||
req, err := s.client.NewRequest("GET", "meta", nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
meta := new(APIMeta)
|
||||
resp, err := s.client.Do(ctx, req, meta)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return meta, resp, nil
|
||||
}
|
||||
|
||||
// APIMeta returns information about GitHub.com.
|
||||
//
|
||||
// Deprecated: Use MetaService.Get instead.
|
||||
func (c *Client) APIMeta(ctx context.Context) (*APIMeta, *Response, error) {
|
||||
return c.Meta.Get(ctx)
|
||||
}
|
||||
|
||||
// Octocat returns an ASCII art octocat with the specified message in a speech
|
||||
// bubble. If message is empty, a random zen phrase is used.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/meta/meta#get-octocat
|
||||
//
|
||||
//meta:operation GET /octocat
|
||||
func (s *MetaService) Octocat(ctx context.Context, message string) (string, *Response, error) {
|
||||
u := "octocat"
|
||||
if message != "" {
|
||||
u = fmt.Sprintf("%s?s=%s", u, url.QueryEscape(message))
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
resp, err := s.client.Do(ctx, req, buf)
|
||||
if err != nil {
|
||||
return "", resp, err
|
||||
}
|
||||
|
||||
return buf.String(), resp, nil
|
||||
}
|
||||
|
||||
// Octocat returns an ASCII art octocat with the specified message in a speech
|
||||
// bubble. If message is empty, a random zen phrase is used.
|
||||
//
|
||||
// Deprecated: Use MetaService.Octocat instead.
|
||||
func (c *Client) Octocat(ctx context.Context, message string) (string, *Response, error) {
|
||||
return c.Meta.Octocat(ctx, message)
|
||||
}
|
||||
|
||||
// Zen returns a random line from The Zen of GitHub.
|
||||
//
|
||||
// See also: http://warpspire.com/posts/taste/
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/meta/meta#get-the-zen-of-github
|
||||
//
|
||||
//meta:operation GET /zen
|
||||
func (s *MetaService) Zen(ctx context.Context) (string, *Response, error) {
|
||||
req, err := s.client.NewRequest("GET", "zen", nil)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
resp, err := s.client.Do(ctx, req, buf)
|
||||
if err != nil {
|
||||
return "", resp, err
|
||||
}
|
||||
|
||||
return buf.String(), resp, nil
|
||||
}
|
||||
|
||||
// Zen returns a random line from The Zen of GitHub.
|
||||
//
|
||||
// Deprecated: Use MetaService.Zen instead.
|
||||
func (c *Client) Zen(ctx context.Context) (string, *Response, error) {
|
||||
return c.Meta.Zen(ctx)
|
||||
}
|
||||
240
vendor/github.com/google/go-github/v57/github/migrations.go
generated
vendored
240
vendor/github.com/google/go-github/v57/github/migrations.go
generated
vendored
|
|
@ -1,240 +0,0 @@
|
|||
// Copyright 2016 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// MigrationService provides access to the migration related functions
|
||||
// in the GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migration/
|
||||
type MigrationService service
|
||||
|
||||
// Migration represents a GitHub migration (archival).
|
||||
type Migration struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
GUID *string `json:"guid,omitempty"`
|
||||
// State is the current state of a migration.
|
||||
// Possible values are:
|
||||
// "pending" which means the migration hasn't started yet,
|
||||
// "exporting" which means the migration is in progress,
|
||||
// "exported" which means the migration finished successfully, or
|
||||
// "failed" which means the migration failed.
|
||||
State *string `json:"state,omitempty"`
|
||||
// LockRepositories indicates whether repositories are locked (to prevent
|
||||
// manipulation) while migrating data.
|
||||
LockRepositories *bool `json:"lock_repositories,omitempty"`
|
||||
// ExcludeAttachments indicates whether attachments should be excluded from
|
||||
// the migration (to reduce migration archive file size).
|
||||
ExcludeAttachments *bool `json:"exclude_attachments,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
CreatedAt *string `json:"created_at,omitempty"`
|
||||
UpdatedAt *string `json:"updated_at,omitempty"`
|
||||
Repositories []*Repository `json:"repositories,omitempty"`
|
||||
}
|
||||
|
||||
func (m Migration) String() string {
|
||||
return Stringify(m)
|
||||
}
|
||||
|
||||
// MigrationOptions specifies the optional parameters to Migration methods.
|
||||
type MigrationOptions struct {
|
||||
// LockRepositories indicates whether repositories should be locked (to prevent
|
||||
// manipulation) while migrating data.
|
||||
LockRepositories bool
|
||||
|
||||
// ExcludeAttachments indicates whether attachments should be excluded from
|
||||
// the migration (to reduce migration archive file size).
|
||||
ExcludeAttachments bool
|
||||
}
|
||||
|
||||
// startMigration represents the body of a StartMigration request.
|
||||
type startMigration struct {
|
||||
// Repositories is a slice of repository names to migrate.
|
||||
Repositories []string `json:"repositories,omitempty"`
|
||||
|
||||
// LockRepositories indicates whether repositories should be locked (to prevent
|
||||
// manipulation) while migrating data.
|
||||
LockRepositories *bool `json:"lock_repositories,omitempty"`
|
||||
|
||||
// ExcludeAttachments indicates whether attachments should be excluded from
|
||||
// the migration (to reduce migration archive file size).
|
||||
ExcludeAttachments *bool `json:"exclude_attachments,omitempty"`
|
||||
}
|
||||
|
||||
// StartMigration starts the generation of a migration archive.
|
||||
// repos is a slice of repository names to migrate.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/orgs#start-an-organization-migration
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/migrations
|
||||
func (s *MigrationService) StartMigration(ctx context.Context, org string, repos []string, opts *MigrationOptions) (*Migration, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/migrations", org)
|
||||
|
||||
body := &startMigration{Repositories: repos}
|
||||
if opts != nil {
|
||||
body.LockRepositories = Bool(opts.LockRepositories)
|
||||
body.ExcludeAttachments = Bool(opts.ExcludeAttachments)
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
m := &Migration{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// ListMigrations lists the most recent migrations.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/orgs#list-organization-migrations
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/migrations
|
||||
func (s *MigrationService) ListMigrations(ctx context.Context, org string, opts *ListOptions) ([]*Migration, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/migrations", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
var m []*Migration
|
||||
resp, err := s.client.Do(ctx, req, &m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// MigrationStatus gets the status of a specific migration archive.
|
||||
// id is the migration ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/orgs#get-an-organization-migration-status
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/migrations/{migration_id}
|
||||
func (s *MigrationService) MigrationStatus(ctx context.Context, org string, id int64) (*Migration, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/migrations/%v", org, id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
m := &Migration{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// MigrationArchiveURL fetches a migration archive URL.
|
||||
// id is the migration ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/orgs#download-an-organization-migration-archive
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/migrations/{migration_id}/archive
|
||||
func (s *MigrationService) MigrationArchiveURL(ctx context.Context, org string, id int64) (url string, err error) {
|
||||
u := fmt.Sprintf("orgs/%v/migrations/%v/archive", org, id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
s.client.clientMu.Lock()
|
||||
defer s.client.clientMu.Unlock()
|
||||
|
||||
// Disable the redirect mechanism because AWS fails if the GitHub auth token is provided.
|
||||
var loc string
|
||||
saveRedirect := s.client.client.CheckRedirect
|
||||
s.client.client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
|
||||
loc = req.URL.String()
|
||||
return errors.New("disable redirect")
|
||||
}
|
||||
defer func() { s.client.client.CheckRedirect = saveRedirect }()
|
||||
|
||||
_, err = s.client.Do(ctx, req, nil) // expect error from disable redirect
|
||||
if err == nil {
|
||||
return "", errors.New("expected redirect, none provided")
|
||||
}
|
||||
if !strings.Contains(err.Error(), "disable redirect") {
|
||||
return "", err
|
||||
}
|
||||
return loc, nil
|
||||
}
|
||||
|
||||
// DeleteMigration deletes a previous migration archive.
|
||||
// id is the migration ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/orgs#delete-an-organization-migration-archive
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/migrations/{migration_id}/archive
|
||||
func (s *MigrationService) DeleteMigration(ctx context.Context, org string, id int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/migrations/%v/archive", org, id)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// UnlockRepo unlocks a repository that was locked for migration.
|
||||
// id is the migration ID.
|
||||
// You should unlock each migrated repository and delete them when the migration
|
||||
// is complete and you no longer need the source data.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/orgs#unlock-an-organization-repository
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock
|
||||
func (s *MigrationService) UnlockRepo(ctx context.Context, org string, id int64, repo string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/migrations/%v/repos/%v/lock", org, id, repo)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
321
vendor/github.com/google/go-github/v57/github/migrations_source_import.go
generated
vendored
321
vendor/github.com/google/go-github/v57/github/migrations_source_import.go
generated
vendored
|
|
@ -1,321 +0,0 @@
|
|||
// Copyright 2016 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// Import represents a repository import request.
|
||||
type Import struct {
|
||||
// The URL of the originating repository.
|
||||
VCSURL *string `json:"vcs_url,omitempty"`
|
||||
// The originating VCS type. Can be one of 'subversion', 'git',
|
||||
// 'mercurial', or 'tfvc'. Without this parameter, the import job will
|
||||
// take additional time to detect the VCS type before beginning the
|
||||
// import. This detection step will be reflected in the response.
|
||||
VCS *string `json:"vcs,omitempty"`
|
||||
// VCSUsername and VCSPassword are only used for StartImport calls that
|
||||
// are importing a password-protected repository.
|
||||
VCSUsername *string `json:"vcs_username,omitempty"`
|
||||
VCSPassword *string `json:"vcs_password,omitempty"`
|
||||
// For a tfvc import, the name of the project that is being imported.
|
||||
TFVCProject *string `json:"tfvc_project,omitempty"`
|
||||
|
||||
// LFS related fields that may be preset in the Import Progress response
|
||||
|
||||
// Describes whether the import has been opted in or out of using Git
|
||||
// LFS. The value can be 'opt_in', 'opt_out', or 'undecided' if no
|
||||
// action has been taken.
|
||||
UseLFS *string `json:"use_lfs,omitempty"`
|
||||
// Describes whether files larger than 100MB were found during the
|
||||
// importing step.
|
||||
HasLargeFiles *bool `json:"has_large_files,omitempty"`
|
||||
// The total size in gigabytes of files larger than 100MB found in the
|
||||
// originating repository.
|
||||
LargeFilesSize *int `json:"large_files_size,omitempty"`
|
||||
// The total number of files larger than 100MB found in the originating
|
||||
// repository. To see a list of these files, call LargeFiles.
|
||||
LargeFilesCount *int `json:"large_files_count,omitempty"`
|
||||
|
||||
// Identifies the current status of an import. An import that does not
|
||||
// have errors will progress through these steps:
|
||||
//
|
||||
// detecting - the "detection" step of the import is in progress
|
||||
// because the request did not include a VCS parameter. The
|
||||
// import is identifying the type of source control present at
|
||||
// the URL.
|
||||
// importing - the "raw" step of the import is in progress. This is
|
||||
// where commit data is fetched from the original repository.
|
||||
// The import progress response will include CommitCount (the
|
||||
// total number of raw commits that will be imported) and
|
||||
// Percent (0 - 100, the current progress through the import).
|
||||
// mapping - the "rewrite" step of the import is in progress. This
|
||||
// is where SVN branches are converted to Git branches, and
|
||||
// where author updates are applied. The import progress
|
||||
// response does not include progress information.
|
||||
// pushing - the "push" step of the import is in progress. This is
|
||||
// where the importer updates the repository on GitHub. The
|
||||
// import progress response will include PushPercent, which is
|
||||
// the percent value reported by git push when it is "Writing
|
||||
// objects".
|
||||
// complete - the import is complete, and the repository is ready
|
||||
// on GitHub.
|
||||
//
|
||||
// If there are problems, you will see one of these in the status field:
|
||||
//
|
||||
// auth_failed - the import requires authentication in order to
|
||||
// connect to the original repository. Make an UpdateImport
|
||||
// request, and include VCSUsername and VCSPassword.
|
||||
// error - the import encountered an error. The import progress
|
||||
// response will include the FailedStep and an error message.
|
||||
// Contact GitHub support for more information.
|
||||
// detection_needs_auth - the importer requires authentication for
|
||||
// the originating repository to continue detection. Make an
|
||||
// UpdatImport request, and include VCSUsername and
|
||||
// VCSPassword.
|
||||
// detection_found_nothing - the importer didn't recognize any
|
||||
// source control at the URL.
|
||||
// detection_found_multiple - the importer found several projects
|
||||
// or repositories at the provided URL. When this is the case,
|
||||
// the Import Progress response will also include a
|
||||
// ProjectChoices field with the possible project choices as
|
||||
// values. Make an UpdateImport request, and include VCS and
|
||||
// (if applicable) TFVCProject.
|
||||
Status *string `json:"status,omitempty"`
|
||||
CommitCount *int `json:"commit_count,omitempty"`
|
||||
StatusText *string `json:"status_text,omitempty"`
|
||||
AuthorsCount *int `json:"authors_count,omitempty"`
|
||||
Percent *int `json:"percent,omitempty"`
|
||||
PushPercent *int `json:"push_percent,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
AuthorsURL *string `json:"authors_url,omitempty"`
|
||||
RepositoryURL *string `json:"repository_url,omitempty"`
|
||||
Message *string `json:"message,omitempty"`
|
||||
FailedStep *string `json:"failed_step,omitempty"`
|
||||
|
||||
// Human readable display name, provided when the Import appears as
|
||||
// part of ProjectChoices.
|
||||
HumanName *string `json:"human_name,omitempty"`
|
||||
|
||||
// When the importer finds several projects or repositories at the
|
||||
// provided URLs, this will identify the available choices. Call
|
||||
// UpdateImport with the selected Import value.
|
||||
ProjectChoices []*Import `json:"project_choices,omitempty"`
|
||||
}
|
||||
|
||||
func (i Import) String() string {
|
||||
return Stringify(i)
|
||||
}
|
||||
|
||||
// SourceImportAuthor identifies an author imported from a source repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migration/source_imports/#get-commit-authors
|
||||
type SourceImportAuthor struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
RemoteID *string `json:"remote_id,omitempty"`
|
||||
RemoteName *string `json:"remote_name,omitempty"`
|
||||
Email *string `json:"email,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
ImportURL *string `json:"import_url,omitempty"`
|
||||
}
|
||||
|
||||
func (a SourceImportAuthor) String() string {
|
||||
return Stringify(a)
|
||||
}
|
||||
|
||||
// LargeFile identifies a file larger than 100MB found during a repository import.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migration/source_imports/#get-large-files
|
||||
type LargeFile struct {
|
||||
RefName *string `json:"ref_name,omitempty"`
|
||||
Path *string `json:"path,omitempty"`
|
||||
OID *string `json:"oid,omitempty"`
|
||||
Size *int `json:"size,omitempty"`
|
||||
}
|
||||
|
||||
func (f LargeFile) String() string {
|
||||
return Stringify(f)
|
||||
}
|
||||
|
||||
// StartImport initiates a repository import.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/source-imports#start-an-import
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/import
|
||||
func (s *MigrationService) StartImport(ctx context.Context, owner, repo string, in *Import) (*Import, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/import", owner, repo)
|
||||
req, err := s.client.NewRequest("PUT", u, in)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
out := new(Import)
|
||||
resp, err := s.client.Do(ctx, req, out)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return out, resp, nil
|
||||
}
|
||||
|
||||
// ImportProgress queries for the status and progress of an ongoing repository import.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/source-imports#get-an-import-status
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/import
|
||||
func (s *MigrationService) ImportProgress(ctx context.Context, owner, repo string) (*Import, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/import", owner, repo)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
out := new(Import)
|
||||
resp, err := s.client.Do(ctx, req, out)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return out, resp, nil
|
||||
}
|
||||
|
||||
// UpdateImport initiates a repository import.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/source-imports#update-an-import
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/import
|
||||
func (s *MigrationService) UpdateImport(ctx context.Context, owner, repo string, in *Import) (*Import, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/import", owner, repo)
|
||||
req, err := s.client.NewRequest("PATCH", u, in)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
out := new(Import)
|
||||
resp, err := s.client.Do(ctx, req, out)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return out, resp, nil
|
||||
}
|
||||
|
||||
// CommitAuthors gets the authors mapped from the original repository.
|
||||
//
|
||||
// Each type of source control system represents authors in a different way.
|
||||
// For example, a Git commit author has a display name and an email address,
|
||||
// but a Subversion commit author just has a username. The GitHub Importer will
|
||||
// make the author information valid, but the author might not be correct. For
|
||||
// example, it will change the bare Subversion username "hubot" into something
|
||||
// like "hubot <hubot@12341234-abab-fefe-8787-fedcba987654>".
|
||||
//
|
||||
// This method and MapCommitAuthor allow you to provide correct Git author
|
||||
// information.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/source-imports#get-commit-authors
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/import/authors
|
||||
func (s *MigrationService) CommitAuthors(ctx context.Context, owner, repo string) ([]*SourceImportAuthor, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/import/authors", owner, repo)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var authors []*SourceImportAuthor
|
||||
resp, err := s.client.Do(ctx, req, &authors)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return authors, resp, nil
|
||||
}
|
||||
|
||||
// MapCommitAuthor updates an author's identity for the import. Your
|
||||
// application can continue updating authors any time before you push new
|
||||
// commits to the repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/source-imports#map-a-commit-author
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/import/authors/{author_id}
|
||||
func (s *MigrationService) MapCommitAuthor(ctx context.Context, owner, repo string, id int64, author *SourceImportAuthor) (*SourceImportAuthor, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/import/authors/%v", owner, repo, id)
|
||||
req, err := s.client.NewRequest("PATCH", u, author)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
out := new(SourceImportAuthor)
|
||||
resp, err := s.client.Do(ctx, req, out)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return out, resp, nil
|
||||
}
|
||||
|
||||
// SetLFSPreference sets whether imported repositories should use Git LFS for
|
||||
// files larger than 100MB. Only the UseLFS field on the provided Import is
|
||||
// used.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/import/lfs
|
||||
func (s *MigrationService) SetLFSPreference(ctx context.Context, owner, repo string, in *Import) (*Import, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/import/lfs", owner, repo)
|
||||
req, err := s.client.NewRequest("PATCH", u, in)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
out := new(Import)
|
||||
resp, err := s.client.Do(ctx, req, out)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return out, resp, nil
|
||||
}
|
||||
|
||||
// LargeFiles lists files larger than 100MB found during the import.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/source-imports#get-large-files
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/import/large_files
|
||||
func (s *MigrationService) LargeFiles(ctx context.Context, owner, repo string) ([]*LargeFile, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/import/large_files", owner, repo)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var files []*LargeFile
|
||||
resp, err := s.client.Do(ctx, req, &files)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return files, resp, nil
|
||||
}
|
||||
|
||||
// CancelImport stops an import for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/source-imports#cancel-an-import
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/import
|
||||
func (s *MigrationService) CancelImport(ctx context.Context, owner, repo string) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/import", owner, repo)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
230
vendor/github.com/google/go-github/v57/github/migrations_user.go
generated
vendored
230
vendor/github.com/google/go-github/v57/github/migrations_user.go
generated
vendored
|
|
@ -1,230 +0,0 @@
|
|||
// Copyright 2018 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// UserMigration represents a GitHub migration (archival).
|
||||
type UserMigration struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
GUID *string `json:"guid,omitempty"`
|
||||
// State is the current state of a migration.
|
||||
// Possible values are:
|
||||
// "pending" which means the migration hasn't started yet,
|
||||
// "exporting" which means the migration is in progress,
|
||||
// "exported" which means the migration finished successfully, or
|
||||
// "failed" which means the migration failed.
|
||||
State *string `json:"state,omitempty"`
|
||||
// LockRepositories indicates whether repositories are locked (to prevent
|
||||
// manipulation) while migrating data.
|
||||
LockRepositories *bool `json:"lock_repositories,omitempty"`
|
||||
// ExcludeAttachments indicates whether attachments should be excluded from
|
||||
// the migration (to reduce migration archive file size).
|
||||
ExcludeAttachments *bool `json:"exclude_attachments,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
CreatedAt *string `json:"created_at,omitempty"`
|
||||
UpdatedAt *string `json:"updated_at,omitempty"`
|
||||
Repositories []*Repository `json:"repositories,omitempty"`
|
||||
}
|
||||
|
||||
func (m UserMigration) String() string {
|
||||
return Stringify(m)
|
||||
}
|
||||
|
||||
// UserMigrationOptions specifies the optional parameters to Migration methods.
|
||||
type UserMigrationOptions struct {
|
||||
// LockRepositories indicates whether repositories should be locked (to prevent
|
||||
// manipulation) while migrating data.
|
||||
LockRepositories bool
|
||||
|
||||
// ExcludeAttachments indicates whether attachments should be excluded from
|
||||
// the migration (to reduce migration archive file size).
|
||||
ExcludeAttachments bool
|
||||
}
|
||||
|
||||
// startUserMigration represents the body of a StartMigration request.
|
||||
type startUserMigration struct {
|
||||
// Repositories is a slice of repository names to migrate.
|
||||
Repositories []string `json:"repositories,omitempty"`
|
||||
|
||||
// LockRepositories indicates whether repositories should be locked (to prevent
|
||||
// manipulation) while migrating data.
|
||||
LockRepositories *bool `json:"lock_repositories,omitempty"`
|
||||
|
||||
// ExcludeAttachments indicates whether attachments should be excluded from
|
||||
// the migration (to reduce migration archive file size).
|
||||
ExcludeAttachments *bool `json:"exclude_attachments,omitempty"`
|
||||
}
|
||||
|
||||
// StartUserMigration starts the generation of a migration archive.
|
||||
// repos is a slice of repository names to migrate.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/users#start-a-user-migration
|
||||
//
|
||||
//meta:operation POST /user/migrations
|
||||
func (s *MigrationService) StartUserMigration(ctx context.Context, repos []string, opts *UserMigrationOptions) (*UserMigration, *Response, error) {
|
||||
u := "user/migrations"
|
||||
|
||||
body := &startUserMigration{Repositories: repos}
|
||||
if opts != nil {
|
||||
body.LockRepositories = Bool(opts.LockRepositories)
|
||||
body.ExcludeAttachments = Bool(opts.ExcludeAttachments)
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
m := &UserMigration{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// ListUserMigrations lists the most recent migrations.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/users#list-user-migrations
|
||||
//
|
||||
//meta:operation GET /user/migrations
|
||||
func (s *MigrationService) ListUserMigrations(ctx context.Context, opts *ListOptions) ([]*UserMigration, *Response, error) {
|
||||
u := "user/migrations"
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
var m []*UserMigration
|
||||
resp, err := s.client.Do(ctx, req, &m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// UserMigrationStatus gets the status of a specific migration archive.
|
||||
// id is the migration ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/users#get-a-user-migration-status
|
||||
//
|
||||
//meta:operation GET /user/migrations/{migration_id}
|
||||
func (s *MigrationService) UserMigrationStatus(ctx context.Context, id int64) (*UserMigration, *Response, error) {
|
||||
u := fmt.Sprintf("user/migrations/%v", id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
m := &UserMigration{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// UserMigrationArchiveURL gets the URL for a specific migration archive.
|
||||
// id is the migration ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/users#download-a-user-migration-archive
|
||||
//
|
||||
//meta:operation GET /user/migrations/{migration_id}/archive
|
||||
func (s *MigrationService) UserMigrationArchiveURL(ctx context.Context, id int64) (string, error) {
|
||||
url := fmt.Sprintf("user/migrations/%v/archive", id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
m := &UserMigration{}
|
||||
|
||||
var loc string
|
||||
originalRedirect := s.client.client.CheckRedirect
|
||||
s.client.client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
|
||||
loc = req.URL.String()
|
||||
return http.ErrUseLastResponse
|
||||
}
|
||||
defer func() {
|
||||
s.client.client.CheckRedirect = originalRedirect
|
||||
}()
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err == nil {
|
||||
return "", errors.New("expected redirect, none provided")
|
||||
}
|
||||
loc = resp.Header.Get("Location")
|
||||
return loc, nil
|
||||
}
|
||||
|
||||
// DeleteUserMigration will delete a previous migration archive.
|
||||
// id is the migration ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/users#delete-a-user-migration-archive
|
||||
//
|
||||
//meta:operation DELETE /user/migrations/{migration_id}/archive
|
||||
func (s *MigrationService) DeleteUserMigration(ctx context.Context, id int64) (*Response, error) {
|
||||
url := fmt.Sprintf("user/migrations/%v/archive", id)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// UnlockUserRepo will unlock a repo that was locked for migration.
|
||||
// id is migration ID.
|
||||
// You should unlock each migrated repository and delete them when the migration
|
||||
// is complete and you no longer need the source data.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/migrations/users#unlock-a-user-repository
|
||||
//
|
||||
//meta:operation DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock
|
||||
func (s *MigrationService) UnlockUserRepo(ctx context.Context, id int64, repo string) (*Response, error) {
|
||||
url := fmt.Sprintf("user/migrations/%v/repos/%v/lock", id, repo)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMigrationsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
316
vendor/github.com/google/go-github/v57/github/orgs.go
generated
vendored
316
vendor/github.com/google/go-github/v57/github/orgs.go
generated
vendored
|
|
@ -1,316 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// OrganizationsService provides access to the organization related functions
|
||||
// in the GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/
|
||||
type OrganizationsService service
|
||||
|
||||
// Organization represents a GitHub organization account.
|
||||
type Organization struct {
|
||||
Login *string `json:"login,omitempty"`
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
AvatarURL *string `json:"avatar_url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Company *string `json:"company,omitempty"`
|
||||
Blog *string `json:"blog,omitempty"`
|
||||
Location *string `json:"location,omitempty"`
|
||||
Email *string `json:"email,omitempty"`
|
||||
TwitterUsername *string `json:"twitter_username,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
PublicRepos *int `json:"public_repos,omitempty"`
|
||||
PublicGists *int `json:"public_gists,omitempty"`
|
||||
Followers *int `json:"followers,omitempty"`
|
||||
Following *int `json:"following,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
TotalPrivateRepos *int64 `json:"total_private_repos,omitempty"`
|
||||
OwnedPrivateRepos *int64 `json:"owned_private_repos,omitempty"`
|
||||
PrivateGists *int `json:"private_gists,omitempty"`
|
||||
DiskUsage *int `json:"disk_usage,omitempty"`
|
||||
Collaborators *int `json:"collaborators,omitempty"`
|
||||
BillingEmail *string `json:"billing_email,omitempty"`
|
||||
Type *string `json:"type,omitempty"`
|
||||
Plan *Plan `json:"plan,omitempty"`
|
||||
TwoFactorRequirementEnabled *bool `json:"two_factor_requirement_enabled,omitempty"`
|
||||
IsVerified *bool `json:"is_verified,omitempty"`
|
||||
HasOrganizationProjects *bool `json:"has_organization_projects,omitempty"`
|
||||
HasRepositoryProjects *bool `json:"has_repository_projects,omitempty"`
|
||||
|
||||
// DefaultRepoPermission can be one of: "read", "write", "admin", or "none". (Default: "read").
|
||||
// It is only used in OrganizationsService.Edit.
|
||||
DefaultRepoPermission *string `json:"default_repository_permission,omitempty"`
|
||||
// DefaultRepoSettings can be one of: "read", "write", "admin", or "none". (Default: "read").
|
||||
// It is only used in OrganizationsService.Get.
|
||||
DefaultRepoSettings *string `json:"default_repository_settings,omitempty"`
|
||||
|
||||
// MembersCanCreateRepos default value is true and is only used in Organizations.Edit.
|
||||
MembersCanCreateRepos *bool `json:"members_can_create_repositories,omitempty"`
|
||||
|
||||
// https://developer.github.com/changes/2019-12-03-internal-visibility-changes/#rest-v3-api
|
||||
MembersCanCreatePublicRepos *bool `json:"members_can_create_public_repositories,omitempty"`
|
||||
MembersCanCreatePrivateRepos *bool `json:"members_can_create_private_repositories,omitempty"`
|
||||
MembersCanCreateInternalRepos *bool `json:"members_can_create_internal_repositories,omitempty"`
|
||||
|
||||
// MembersCanForkPrivateRepos toggles whether organization members can fork private organization repositories.
|
||||
MembersCanForkPrivateRepos *bool `json:"members_can_fork_private_repositories,omitempty"`
|
||||
|
||||
// MembersAllowedRepositoryCreationType denotes if organization members can create repositories
|
||||
// and the type of repositories they can create. Possible values are: "all", "private", or "none".
|
||||
//
|
||||
// Deprecated: Use MembersCanCreatePublicRepos, MembersCanCreatePrivateRepos, MembersCanCreateInternalRepos
|
||||
// instead. The new fields overrides the existing MembersAllowedRepositoryCreationType during 'edit'
|
||||
// operation and does not consider 'internal' repositories during 'get' operation
|
||||
MembersAllowedRepositoryCreationType *string `json:"members_allowed_repository_creation_type,omitempty"`
|
||||
|
||||
// MembersCanCreatePages toggles whether organization members can create GitHub Pages sites.
|
||||
MembersCanCreatePages *bool `json:"members_can_create_pages,omitempty"`
|
||||
// MembersCanCreatePublicPages toggles whether organization members can create public GitHub Pages sites.
|
||||
MembersCanCreatePublicPages *bool `json:"members_can_create_public_pages,omitempty"`
|
||||
// MembersCanCreatePrivatePages toggles whether organization members can create private GitHub Pages sites.
|
||||
MembersCanCreatePrivatePages *bool `json:"members_can_create_private_pages,omitempty"`
|
||||
// WebCommitSignoffRequire toggles
|
||||
WebCommitSignoffRequired *bool `json:"web_commit_signoff_required,omitempty"`
|
||||
// AdvancedSecurityAuditLogEnabled toggles whether the advanced security audit log is enabled.
|
||||
AdvancedSecurityEnabledForNewRepos *bool `json:"advanced_security_enabled_for_new_repositories,omitempty"`
|
||||
// DependabotAlertsEnabled toggles whether dependabot alerts are enabled.
|
||||
DependabotAlertsEnabledForNewRepos *bool `json:"dependabot_alerts_enabled_for_new_repositories,omitempty"`
|
||||
// DependabotSecurityUpdatesEnabled toggles whether dependabot security updates are enabled.
|
||||
DependabotSecurityUpdatesEnabledForNewRepos *bool `json:"dependabot_security_updates_enabled_for_new_repositories,omitempty"`
|
||||
// DependabotGraphEnabledForNewRepos toggles whether dependabot graph is enabled on new repositories.
|
||||
DependencyGraphEnabledForNewRepos *bool `json:"dependency_graph_enabled_for_new_repositories,omitempty"`
|
||||
// SecretScanningEnabled toggles whether secret scanning is enabled on new repositories.
|
||||
SecretScanningEnabledForNewRepos *bool `json:"secret_scanning_enabled_for_new_repositories,omitempty"`
|
||||
// SecretScanningPushProtectionEnabledForNewRepos toggles whether secret scanning push protection is enabled on new repositories.
|
||||
SecretScanningPushProtectionEnabledForNewRepos *bool `json:"secret_scanning_push_protection_enabled_for_new_repositories,omitempty"`
|
||||
|
||||
// API URLs
|
||||
URL *string `json:"url,omitempty"`
|
||||
EventsURL *string `json:"events_url,omitempty"`
|
||||
HooksURL *string `json:"hooks_url,omitempty"`
|
||||
IssuesURL *string `json:"issues_url,omitempty"`
|
||||
MembersURL *string `json:"members_url,omitempty"`
|
||||
PublicMembersURL *string `json:"public_members_url,omitempty"`
|
||||
ReposURL *string `json:"repos_url,omitempty"`
|
||||
}
|
||||
|
||||
// OrganizationInstallations represents GitHub app installations for an organization.
|
||||
type OrganizationInstallations struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
Installations []*Installation `json:"installations,omitempty"`
|
||||
}
|
||||
|
||||
func (o Organization) String() string {
|
||||
return Stringify(o)
|
||||
}
|
||||
|
||||
// Plan represents the payment plan for an account. See plans at https://github.com/plans.
|
||||
type Plan struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
Space *int `json:"space,omitempty"`
|
||||
Collaborators *int `json:"collaborators,omitempty"`
|
||||
PrivateRepos *int64 `json:"private_repos,omitempty"`
|
||||
FilledSeats *int `json:"filled_seats,omitempty"`
|
||||
Seats *int `json:"seats,omitempty"`
|
||||
}
|
||||
|
||||
func (p Plan) String() string {
|
||||
return Stringify(p)
|
||||
}
|
||||
|
||||
// OrganizationsListOptions specifies the optional parameters to the
|
||||
// OrganizationsService.ListAll method.
|
||||
type OrganizationsListOptions struct {
|
||||
// Since filters Organizations by ID.
|
||||
Since int64 `url:"since,omitempty"`
|
||||
|
||||
// Note: Pagination is powered exclusively by the Since parameter,
|
||||
// ListOptions.Page has no effect.
|
||||
// ListOptions.PerPage controls an undocumented GitHub API parameter.
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListAll lists all organizations, in the order that they were created on GitHub.
|
||||
//
|
||||
// Note: Pagination is powered exclusively by the since parameter. To continue
|
||||
// listing the next set of organizations, use the ID of the last-returned organization
|
||||
// as the opts.Since parameter for the next call.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/orgs#list-organizations
|
||||
//
|
||||
//meta:operation GET /organizations
|
||||
func (s *OrganizationsService) ListAll(ctx context.Context, opts *OrganizationsListOptions) ([]*Organization, *Response, error) {
|
||||
u, err := addOptions("organizations", opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
orgs := []*Organization{}
|
||||
resp, err := s.client.Do(ctx, req, &orgs)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
return orgs, resp, nil
|
||||
}
|
||||
|
||||
// List the organizations for a user. Passing the empty string will list
|
||||
// organizations for the authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/orgs#list-organizations-for-a-user
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/orgs#list-organizations-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation GET /user/orgs
|
||||
//meta:operation GET /users/{username}/orgs
|
||||
func (s *OrganizationsService) List(ctx context.Context, user string, opts *ListOptions) ([]*Organization, *Response, error) {
|
||||
var u string
|
||||
if user != "" {
|
||||
u = fmt.Sprintf("users/%v/orgs", user)
|
||||
} else {
|
||||
u = "user/orgs"
|
||||
}
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var orgs []*Organization
|
||||
resp, err := s.client.Do(ctx, req, &orgs)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return orgs, resp, nil
|
||||
}
|
||||
|
||||
// Get fetches an organization by name.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/orgs#get-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}
|
||||
func (s *OrganizationsService) Get(ctx context.Context, org string) (*Organization, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v", org)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMemberAllowedRepoCreationTypePreview)
|
||||
|
||||
organization := new(Organization)
|
||||
resp, err := s.client.Do(ctx, req, organization)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return organization, resp, nil
|
||||
}
|
||||
|
||||
// GetByID fetches an organization.
|
||||
//
|
||||
// Note: GetByID uses the undocumented GitHub API endpoint "GET /organizations/{organization_id}".
|
||||
//
|
||||
//meta:operation GET /organizations/{organization_id}
|
||||
func (s *OrganizationsService) GetByID(ctx context.Context, id int64) (*Organization, *Response, error) {
|
||||
u := fmt.Sprintf("organizations/%d", id)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
organization := new(Organization)
|
||||
resp, err := s.client.Do(ctx, req, organization)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return organization, resp, nil
|
||||
}
|
||||
|
||||
// Edit an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/orgs#update-an-organization
|
||||
//
|
||||
//meta:operation PATCH /orgs/{org}
|
||||
func (s *OrganizationsService) Edit(ctx context.Context, name string, org *Organization) (*Organization, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v", name)
|
||||
req, err := s.client.NewRequest("PATCH", u, org)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeMemberAllowedRepoCreationTypePreview)
|
||||
|
||||
o := new(Organization)
|
||||
resp, err := s.client.Do(ctx, req, o)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return o, resp, nil
|
||||
}
|
||||
|
||||
// Delete an organization by name.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/orgs#delete-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}
|
||||
func (s *OrganizationsService) Delete(ctx context.Context, org string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v", org)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListInstallations lists installations for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/orgs#list-app-installations-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/installations
|
||||
func (s *OrganizationsService) ListInstallations(ctx context.Context, org string, opts *ListOptions) (*OrganizationInstallations, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/installations", org)
|
||||
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
result := new(OrganizationInstallations)
|
||||
resp, err := s.client.Do(ctx, req, result)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return result, resp, nil
|
||||
}
|
||||
160
vendor/github.com/google/go-github/v57/github/orgs_audit_log.go
generated
vendored
160
vendor/github.com/google/go-github/v57/github/orgs_audit_log.go
generated
vendored
|
|
@ -1,160 +0,0 @@
|
|||
// Copyright 2021 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// GetAuditLogOptions sets up optional parameters to query audit-log endpoint.
|
||||
type GetAuditLogOptions struct {
|
||||
Phrase *string `url:"phrase,omitempty"` // A search phrase. (Optional.)
|
||||
Include *string `url:"include,omitempty"` // Event type includes. Can be one of "web", "git", "all". Default: "web". (Optional.)
|
||||
Order *string `url:"order,omitempty"` // The order of audit log events. Can be one of "asc" or "desc". Default: "desc". (Optional.)
|
||||
|
||||
ListCursorOptions
|
||||
}
|
||||
|
||||
// HookConfig describes metadata about a webhook configuration.
|
||||
type HookConfig struct {
|
||||
ContentType *string `json:"content_type,omitempty"`
|
||||
InsecureSSL *string `json:"insecure_ssl,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
|
||||
// Secret is returned obfuscated by GitHub, but it can be set for outgoing requests.
|
||||
Secret *string `json:"secret,omitempty"`
|
||||
}
|
||||
|
||||
// ActorLocation contains information about reported location for an actor.
|
||||
type ActorLocation struct {
|
||||
CountryCode *string `json:"country_code,omitempty"`
|
||||
}
|
||||
|
||||
// PolicyOverrideReason contains user-supplied information about why a policy was overridden.
|
||||
type PolicyOverrideReason struct {
|
||||
Code *string `json:"code,omitempty"`
|
||||
Message *string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
// AuditEntry describes the fields that may be represented by various audit-log "action" entries.
|
||||
// For a list of actions see - https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization#audit-log-actions
|
||||
type AuditEntry struct {
|
||||
ActorIP *string `json:"actor_ip,omitempty"`
|
||||
Action *string `json:"action,omitempty"` // The name of the action that was performed, for example `user.login` or `repo.create`.
|
||||
Active *bool `json:"active,omitempty"`
|
||||
ActiveWas *bool `json:"active_was,omitempty"`
|
||||
Actor *string `json:"actor,omitempty"` // The actor who performed the action.
|
||||
ActorLocation *ActorLocation `json:"actor_location,omitempty"`
|
||||
BlockedUser *string `json:"blocked_user,omitempty"`
|
||||
Business *string `json:"business,omitempty"`
|
||||
CancelledAt *Timestamp `json:"cancelled_at,omitempty"`
|
||||
CompletedAt *Timestamp `json:"completed_at,omitempty"`
|
||||
Conclusion *string `json:"conclusion,omitempty"`
|
||||
Config *HookConfig `json:"config,omitempty"`
|
||||
ConfigWas *HookConfig `json:"config_was,omitempty"`
|
||||
ContentType *string `json:"content_type,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
DeployKeyFingerprint *string `json:"deploy_key_fingerprint,omitempty"`
|
||||
DocumentID *string `json:"_document_id,omitempty"`
|
||||
Emoji *string `json:"emoji,omitempty"`
|
||||
EnvironmentName *string `json:"environment_name,omitempty"`
|
||||
Event *string `json:"event,omitempty"`
|
||||
Events []string `json:"events,omitempty"`
|
||||
EventsWere []string `json:"events_were,omitempty"`
|
||||
Explanation *string `json:"explanation,omitempty"`
|
||||
ExternalIdentityNameID *string `json:"external_identity_nameid,omitempty"`
|
||||
ExternalIdentityUsername *string `json:"external_identity_username,omitempty"`
|
||||
Fingerprint *string `json:"fingerprint,omitempty"`
|
||||
HashedToken *string `json:"hashed_token,omitempty"`
|
||||
HeadBranch *string `json:"head_branch,omitempty"`
|
||||
HeadSHA *string `json:"head_sha,omitempty"`
|
||||
HookID *int64 `json:"hook_id,omitempty"`
|
||||
IsHostedRunner *bool `json:"is_hosted_runner,omitempty"`
|
||||
JobName *string `json:"job_name,omitempty"`
|
||||
JobWorkflowRef *string `json:"job_workflow_ref,omitempty"`
|
||||
LimitedAvailability *bool `json:"limited_availability,omitempty"`
|
||||
Message *string `json:"message,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
OAuthApplicationID *int64 `json:"oauth_application_id,omitempty"`
|
||||
OldUser *string `json:"old_user,omitempty"`
|
||||
OldPermission *string `json:"old_permission,omitempty"` // The permission level for membership changes, for example `admin` or `read`.
|
||||
OpenSSHPublicKey *string `json:"openssh_public_key,omitempty"`
|
||||
OperationType *string `json:"operation_type,omitempty"`
|
||||
Org *string `json:"org,omitempty"`
|
||||
OrgID *int64 `json:"org_id,omitempty"`
|
||||
OverriddenCodes []string `json:"overridden_codes,omitempty"`
|
||||
Permission *string `json:"permission,omitempty"` // The permission level for membership changes, for example `admin` or `read`.
|
||||
PreviousVisibility *string `json:"previous_visibility,omitempty"`
|
||||
ProgrammaticAccessType *string `json:"programmatic_access_type,omitempty"`
|
||||
PullRequestID *int64 `json:"pull_request_id,omitempty"`
|
||||
PullRequestTitle *string `json:"pull_request_title,omitempty"`
|
||||
PullRequestURL *string `json:"pull_request_url,omitempty"`
|
||||
ReadOnly *string `json:"read_only,omitempty"`
|
||||
Reasons []*PolicyOverrideReason `json:"reasons,omitempty"`
|
||||
Repo *string `json:"repo,omitempty"`
|
||||
Repository *string `json:"repository,omitempty"`
|
||||
RepositoryPublic *bool `json:"repository_public,omitempty"`
|
||||
RunAttempt *int64 `json:"run_attempt,omitempty"`
|
||||
RunnerGroupID *int64 `json:"runner_group_id,omitempty"`
|
||||
RunnerGroupName *string `json:"runner_group_name,omitempty"`
|
||||
RunnerID *int64 `json:"runner_id,omitempty"`
|
||||
RunnerLabels []string `json:"runner_labels,omitempty"`
|
||||
RunnerName *string `json:"runner_name,omitempty"`
|
||||
RunNumber *int64 `json:"run_number,omitempty"`
|
||||
SecretsPassed []string `json:"secrets_passed,omitempty"`
|
||||
SourceVersion *string `json:"source_version,omitempty"`
|
||||
StartedAt *Timestamp `json:"started_at,omitempty"`
|
||||
TargetLogin *string `json:"target_login,omitempty"`
|
||||
TargetVersion *string `json:"target_version,omitempty"`
|
||||
Team *string `json:"team,omitempty"`
|
||||
Timestamp *Timestamp `json:"@timestamp,omitempty"` // The time the audit log event occurred, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).
|
||||
TokenID *int64 `json:"token_id,omitempty"`
|
||||
TokenScopes *string `json:"token_scopes,omitempty"`
|
||||
Topic *string `json:"topic,omitempty"`
|
||||
TransportProtocolName *string `json:"transport_protocol_name,omitempty"` // A human readable name for the protocol (for example, HTTP or SSH) used to transfer Git data.
|
||||
TransportProtocol *int `json:"transport_protocol,omitempty"` // The type of protocol (for example, HTTP=1 or SSH=2) used to transfer Git data.
|
||||
TriggerID *int64 `json:"trigger_id,omitempty"`
|
||||
User *string `json:"user,omitempty"` // The user that was affected by the action performed (if available).
|
||||
UserAgent *string `json:"user_agent,omitempty"`
|
||||
Visibility *string `json:"visibility,omitempty"` // The repository visibility, for example `public` or `private`.
|
||||
WorkflowID *int64 `json:"workflow_id,omitempty"`
|
||||
WorkflowRunID *int64 `json:"workflow_run_id,omitempty"`
|
||||
|
||||
Data *AuditEntryData `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
// AuditEntryData represents additional information stuffed into a `data` field.
|
||||
type AuditEntryData struct {
|
||||
OldName *string `json:"old_name,omitempty"` // The previous name of the repository, for a name change
|
||||
OldLogin *string `json:"old_login,omitempty"` // The previous name of the organization, for a name change
|
||||
}
|
||||
|
||||
// GetAuditLog gets the audit-log entries for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/orgs/orgs#get-the-audit-log-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/audit-log
|
||||
func (s *OrganizationsService) GetAuditLog(ctx context.Context, org string, opts *GetAuditLogOptions) ([]*AuditEntry, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/audit-log", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var auditEntries []*AuditEntry
|
||||
resp, err := s.client.Do(ctx, req, &auditEntries)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return auditEntries, resp, nil
|
||||
}
|
||||
99
vendor/github.com/google/go-github/v57/github/orgs_credential_authorizations.go
generated
vendored
99
vendor/github.com/google/go-github/v57/github/orgs_credential_authorizations.go
generated
vendored
|
|
@ -1,99 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// CredentialAuthorization represents a credential authorized through SAML SSO.
|
||||
type CredentialAuthorization struct {
|
||||
// User login that owns the underlying credential.
|
||||
Login *string `json:"login,omitempty"`
|
||||
|
||||
// Unique identifier for the credential.
|
||||
CredentialID *int64 `json:"credential_id,omitempty"`
|
||||
|
||||
// Human-readable description of the credential type.
|
||||
CredentialType *string `json:"credential_type,omitempty"`
|
||||
|
||||
// Last eight characters of the credential.
|
||||
// Only included in responses with credential_type of personal access token.
|
||||
TokenLastEight *string `json:"token_last_eight,omitempty"`
|
||||
|
||||
// Date when the credential was authorized for use.
|
||||
CredentialAuthorizedAt *Timestamp `json:"credential_authorized_at,omitempty"`
|
||||
|
||||
// Date when the credential was last accessed.
|
||||
// May be null if it was never accessed.
|
||||
CredentialAccessedAt *Timestamp `json:"credential_accessed_at,omitempty"`
|
||||
|
||||
// List of oauth scopes the token has been granted.
|
||||
Scopes []string `json:"scopes,omitempty"`
|
||||
|
||||
// Unique string to distinguish the credential.
|
||||
// Only included in responses with credential_type of SSH Key.
|
||||
Fingerprint *string `json:"fingerprint,omitempty"`
|
||||
|
||||
AuthorizedCredentialID *int64 `json:"authorized_credential_id,omitempty"`
|
||||
|
||||
// The title given to the ssh key.
|
||||
// This will only be present when the credential is an ssh key.
|
||||
AuthorizedCredentialTitle *string `json:"authorized_credential_title,omitempty"`
|
||||
|
||||
// The note given to the token.
|
||||
// This will only be present when the credential is a token.
|
||||
AuthorizedCredentialNote *string `json:"authorized_credential_note,omitempty"`
|
||||
|
||||
// The expiry for the token.
|
||||
// This will only be present when the credential is a token.
|
||||
AuthorizedCredentialExpiresAt *Timestamp `json:"authorized_credential_expires_at,omitempty"`
|
||||
}
|
||||
|
||||
// ListCredentialAuthorizations lists credentials authorized through SAML SSO
|
||||
// for a given organization. Only available with GitHub Enterprise Cloud.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/orgs/orgs#list-saml-sso-authorizations-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/credential-authorizations
|
||||
func (s *OrganizationsService) ListCredentialAuthorizations(ctx context.Context, org string, opts *ListOptions) ([]*CredentialAuthorization, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/credential-authorizations", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest(http.MethodGet, u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var creds []*CredentialAuthorization
|
||||
resp, err := s.client.Do(ctx, req, &creds)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return creds, resp, nil
|
||||
}
|
||||
|
||||
// RemoveCredentialAuthorization revokes the SAML SSO authorization for a given
|
||||
// credential within an organization. Only available with GitHub Enterprise Cloud.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/orgs/orgs#remove-a-saml-sso-authorization-for-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/credential-authorizations/{credential_id}
|
||||
func (s *OrganizationsService) RemoveCredentialAuthorization(ctx context.Context, org string, credentialID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/credential-authorizations/%v", org, credentialID)
|
||||
req, err := s.client.NewRequest(http.MethodDelete, u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
128
vendor/github.com/google/go-github/v57/github/orgs_custom_roles.go
generated
vendored
128
vendor/github.com/google/go-github/v57/github/orgs_custom_roles.go
generated
vendored
|
|
@ -1,128 +0,0 @@
|
|||
// Copyright 2022 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// OrganizationCustomRepoRoles represents custom repository roles available in specified organization.
|
||||
type OrganizationCustomRepoRoles struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
CustomRepoRoles []*CustomRepoRoles `json:"custom_roles,omitempty"`
|
||||
}
|
||||
|
||||
// CustomRepoRoles represents custom repository roles for an organization.
|
||||
// See https://docs.github.com/enterprise-cloud@latest/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-repository-roles-for-an-organization
|
||||
// for more information.
|
||||
type CustomRepoRoles struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
BaseRole *string `json:"base_role,omitempty"`
|
||||
Permissions []string `json:"permissions,omitempty"`
|
||||
}
|
||||
|
||||
// ListCustomRepoRoles lists the custom repository roles available in this organization.
|
||||
// In order to see custom repository roles in an organization, the authenticated user must be an organization owner.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/orgs/custom-roles#list-custom-repository-roles-in-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/custom-repository-roles
|
||||
func (s *OrganizationsService) ListCustomRepoRoles(ctx context.Context, org string) (*OrganizationCustomRepoRoles, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/custom-repository-roles", org)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
customRepoRoles := new(OrganizationCustomRepoRoles)
|
||||
resp, err := s.client.Do(ctx, req, customRepoRoles)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return customRepoRoles, resp, nil
|
||||
}
|
||||
|
||||
// CreateOrUpdateCustomRoleOptions represents options required to create or update a custom repository role.
|
||||
type CreateOrUpdateCustomRoleOptions struct {
|
||||
Name *string `json:"name,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
BaseRole *string `json:"base_role,omitempty"`
|
||||
Permissions []string `json:"permissions,omitempty"`
|
||||
}
|
||||
|
||||
// CreateCustomRepoRole creates a custom repository role in this organization.
|
||||
// In order to create custom repository roles in an organization, the authenticated user must be an organization owner.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/orgs/custom-roles#create-a-custom-repository-role
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/custom-repository-roles
|
||||
func (s *OrganizationsService) CreateCustomRepoRole(ctx context.Context, org string, opts *CreateOrUpdateCustomRoleOptions) (*CustomRepoRoles, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/custom-repository-roles", org)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
resultingRole := new(CustomRepoRoles)
|
||||
resp, err := s.client.Do(ctx, req, resultingRole)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return resultingRole, resp, err
|
||||
}
|
||||
|
||||
// UpdateCustomRepoRole updates a custom repository role in this organization.
|
||||
// In order to update custom repository roles in an organization, the authenticated user must be an organization owner.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/orgs/custom-roles#update-a-custom-repository-role
|
||||
//
|
||||
//meta:operation PATCH /orgs/{org}/custom-repository-roles/{role_id}
|
||||
func (s *OrganizationsService) UpdateCustomRepoRole(ctx context.Context, org, roleID string, opts *CreateOrUpdateCustomRoleOptions) (*CustomRepoRoles, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/custom-repository-roles/%v", org, roleID)
|
||||
|
||||
req, err := s.client.NewRequest("PATCH", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
resultingRole := new(CustomRepoRoles)
|
||||
resp, err := s.client.Do(ctx, req, resultingRole)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return resultingRole, resp, err
|
||||
}
|
||||
|
||||
// DeleteCustomRepoRole deletes an existing custom repository role in this organization.
|
||||
// In order to delete custom repository roles in an organization, the authenticated user must be an organization owner.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/orgs/custom-roles#delete-a-custom-repository-role
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/custom-repository-roles/{role_id}
|
||||
func (s *OrganizationsService) DeleteCustomRepoRole(ctx context.Context, org, roleID string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/custom-repository-roles/%v", org, roleID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resultingRole := new(CustomRepoRoles)
|
||||
resp, err := s.client.Do(ctx, req, resultingRole)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
422
vendor/github.com/google/go-github/v57/github/orgs_members.go
generated
vendored
422
vendor/github.com/google/go-github/v57/github/orgs_members.go
generated
vendored
|
|
@ -1,422 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// Membership represents the status of a user's membership in an organization or team.
|
||||
type Membership struct {
|
||||
URL *string `json:"url,omitempty"`
|
||||
|
||||
// State is the user's status within the organization or team.
|
||||
// Possible values are: "active", "pending"
|
||||
State *string `json:"state,omitempty"`
|
||||
|
||||
// Role identifies the user's role within the organization or team.
|
||||
// Possible values for organization membership:
|
||||
// member - non-owner organization member
|
||||
// admin - organization owner
|
||||
//
|
||||
// Possible values for team membership are:
|
||||
// member - a normal member of the team
|
||||
// maintainer - a team maintainer. Able to add/remove other team
|
||||
// members, promote other team members to team
|
||||
// maintainer, and edit the team’s name and description
|
||||
Role *string `json:"role,omitempty"`
|
||||
|
||||
// For organization membership, the API URL of the organization.
|
||||
OrganizationURL *string `json:"organization_url,omitempty"`
|
||||
|
||||
// For organization membership, the organization the membership is for.
|
||||
Organization *Organization `json:"organization,omitempty"`
|
||||
|
||||
// For organization membership, the user the membership is for.
|
||||
User *User `json:"user,omitempty"`
|
||||
}
|
||||
|
||||
func (m Membership) String() string {
|
||||
return Stringify(m)
|
||||
}
|
||||
|
||||
// ListMembersOptions specifies optional parameters to the
|
||||
// OrganizationsService.ListMembers method.
|
||||
type ListMembersOptions struct {
|
||||
// If true (or if the authenticated user is not an owner of the
|
||||
// organization), list only publicly visible members.
|
||||
PublicOnly bool `url:"-"`
|
||||
|
||||
// Filter members returned in the list. Possible values are:
|
||||
// 2fa_disabled, all. Default is "all".
|
||||
Filter string `url:"filter,omitempty"`
|
||||
|
||||
// Role filters members returned by their role in the organization.
|
||||
// Possible values are:
|
||||
// all - all members of the organization, regardless of role
|
||||
// admin - organization owners
|
||||
// member - non-owner organization members
|
||||
//
|
||||
// Default is "all".
|
||||
Role string `url:"role,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListMembers lists the members for an organization. If the authenticated
|
||||
// user is an owner of the organization, this will return both concealed and
|
||||
// public members, otherwise it will only return public members.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#list-organization-members
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#list-public-organization-members
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/members
|
||||
//meta:operation GET /orgs/{org}/public_members
|
||||
func (s *OrganizationsService) ListMembers(ctx context.Context, org string, opts *ListMembersOptions) ([]*User, *Response, error) {
|
||||
var u string
|
||||
if opts != nil && opts.PublicOnly {
|
||||
u = fmt.Sprintf("orgs/%v/public_members", org)
|
||||
} else {
|
||||
u = fmt.Sprintf("orgs/%v/members", org)
|
||||
}
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var members []*User
|
||||
resp, err := s.client.Do(ctx, req, &members)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return members, resp, nil
|
||||
}
|
||||
|
||||
// IsMember checks if a user is a member of an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#check-organization-membership-for-a-user
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/members/{username}
|
||||
func (s *OrganizationsService) IsMember(ctx context.Context, org, user string) (bool, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/members/%v", org, user)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
member, err := parseBoolResponse(err)
|
||||
return member, resp, err
|
||||
}
|
||||
|
||||
// IsPublicMember checks if a user is a public member of an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#check-public-organization-membership-for-a-user
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/public_members/{username}
|
||||
func (s *OrganizationsService) IsPublicMember(ctx context.Context, org, user string) (bool, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/public_members/%v", org, user)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
member, err := parseBoolResponse(err)
|
||||
return member, resp, err
|
||||
}
|
||||
|
||||
// RemoveMember removes a user from all teams of an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#remove-an-organization-member
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/members/{username}
|
||||
func (s *OrganizationsService) RemoveMember(ctx context.Context, org, user string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/members/%v", org, user)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// PublicizeMembership publicizes a user's membership in an organization. (A
|
||||
// user cannot publicize the membership for another user.)
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#set-public-organization-membership-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/public_members/{username}
|
||||
func (s *OrganizationsService) PublicizeMembership(ctx context.Context, org, user string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/public_members/%v", org, user)
|
||||
req, err := s.client.NewRequest("PUT", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ConcealMembership conceals a user's membership in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#remove-public-organization-membership-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/public_members/{username}
|
||||
func (s *OrganizationsService) ConcealMembership(ctx context.Context, org, user string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/public_members/%v", org, user)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListOrgMembershipsOptions specifies optional parameters to the
|
||||
// OrganizationsService.ListOrgMemberships method.
|
||||
type ListOrgMembershipsOptions struct {
|
||||
// Filter memberships to include only those with the specified state.
|
||||
// Possible values are: "active", "pending".
|
||||
State string `url:"state,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListOrgMemberships lists the organization memberships for the authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#list-organization-memberships-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation GET /user/memberships/orgs
|
||||
func (s *OrganizationsService) ListOrgMemberships(ctx context.Context, opts *ListOrgMembershipsOptions) ([]*Membership, *Response, error) {
|
||||
u := "user/memberships/orgs"
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var memberships []*Membership
|
||||
resp, err := s.client.Do(ctx, req, &memberships)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return memberships, resp, nil
|
||||
}
|
||||
|
||||
// GetOrgMembership gets the membership for a user in a specified organization.
|
||||
// Passing an empty string for user will get the membership for the
|
||||
// authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#get-an-organization-membership-for-the-authenticated-user
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/memberships/{username}
|
||||
//meta:operation GET /user/memberships/orgs/{org}
|
||||
func (s *OrganizationsService) GetOrgMembership(ctx context.Context, user, org string) (*Membership, *Response, error) {
|
||||
var u string
|
||||
if user != "" {
|
||||
u = fmt.Sprintf("orgs/%v/memberships/%v", org, user)
|
||||
} else {
|
||||
u = fmt.Sprintf("user/memberships/orgs/%v", org)
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
membership := new(Membership)
|
||||
resp, err := s.client.Do(ctx, req, membership)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return membership, resp, nil
|
||||
}
|
||||
|
||||
// EditOrgMembership edits the membership for user in specified organization.
|
||||
// Passing an empty string for user will edit the membership for the
|
||||
// authenticated user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#set-organization-membership-for-a-user
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#update-an-organization-membership-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/memberships/{username}
|
||||
//meta:operation PATCH /user/memberships/orgs/{org}
|
||||
func (s *OrganizationsService) EditOrgMembership(ctx context.Context, user, org string, membership *Membership) (*Membership, *Response, error) {
|
||||
var u, method string
|
||||
if user != "" {
|
||||
u = fmt.Sprintf("orgs/%v/memberships/%v", org, user)
|
||||
method = "PUT"
|
||||
} else {
|
||||
u = fmt.Sprintf("user/memberships/orgs/%v", org)
|
||||
method = "PATCH"
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest(method, u, membership)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
m := new(Membership)
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// RemoveOrgMembership removes user from the specified organization. If the
|
||||
// user has been invited to the organization, this will cancel their invitation.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#remove-organization-membership-for-a-user
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/memberships/{username}
|
||||
func (s *OrganizationsService) RemoveOrgMembership(ctx context.Context, user, org string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/memberships/%v", org, user)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListPendingOrgInvitations returns a list of pending invitations.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#list-pending-organization-invitations
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/invitations
|
||||
func (s *OrganizationsService) ListPendingOrgInvitations(ctx context.Context, org string, opts *ListOptions) ([]*Invitation, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/invitations", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var pendingInvitations []*Invitation
|
||||
resp, err := s.client.Do(ctx, req, &pendingInvitations)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return pendingInvitations, resp, nil
|
||||
}
|
||||
|
||||
// CreateOrgInvitationOptions specifies the parameters to the OrganizationService.Invite
|
||||
// method.
|
||||
type CreateOrgInvitationOptions struct {
|
||||
// GitHub user ID for the person you are inviting. Not required if you provide Email.
|
||||
InviteeID *int64 `json:"invitee_id,omitempty"`
|
||||
// Email address of the person you are inviting, which can be an existing GitHub user.
|
||||
// Not required if you provide InviteeID
|
||||
Email *string `json:"email,omitempty"`
|
||||
// Specify role for new member. Can be one of:
|
||||
// * admin - Organization owners with full administrative rights to the
|
||||
// organization and complete access to all repositories and teams.
|
||||
// * direct_member - Non-owner organization members with ability to see
|
||||
// other members and join teams by invitation.
|
||||
// * billing_manager - Non-owner organization members with ability to
|
||||
// manage the billing settings of your organization.
|
||||
// Default is "direct_member".
|
||||
Role *string `json:"role,omitempty"`
|
||||
TeamID []int64 `json:"team_ids,omitempty"`
|
||||
}
|
||||
|
||||
// CreateOrgInvitation invites people to an organization by using their GitHub user ID or their email address.
|
||||
// In order to create invitations in an organization,
|
||||
// the authenticated user must be an organization owner.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#create-an-organization-invitation
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/invitations
|
||||
func (s *OrganizationsService) CreateOrgInvitation(ctx context.Context, org string, opts *CreateOrgInvitationOptions) (*Invitation, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/invitations", org)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var invitation *Invitation
|
||||
resp, err := s.client.Do(ctx, req, &invitation)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return invitation, resp, nil
|
||||
}
|
||||
|
||||
// ListOrgInvitationTeams lists all teams associated with an invitation. In order to see invitations in an organization,
|
||||
// the authenticated user must be an organization owner.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#list-organization-invitation-teams
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/invitations/{invitation_id}/teams
|
||||
func (s *OrganizationsService) ListOrgInvitationTeams(ctx context.Context, org, invitationID string, opts *ListOptions) ([]*Team, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/invitations/%v/teams", org, invitationID)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var orgInvitationTeams []*Team
|
||||
resp, err := s.client.Do(ctx, req, &orgInvitationTeams)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return orgInvitationTeams, resp, nil
|
||||
}
|
||||
|
||||
// ListFailedOrgInvitations returns a list of failed inviatations.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/members#list-failed-organization-invitations
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/failed_invitations
|
||||
func (s *OrganizationsService) ListFailedOrgInvitations(ctx context.Context, org string, opts *ListOptions) ([]*Invitation, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/failed_invitations", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var failedInvitations []*Invitation
|
||||
resp, err := s.client.Do(ctx, req, &failedInvitations)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return failedInvitations, resp, nil
|
||||
}
|
||||
165
vendor/github.com/google/go-github/v57/github/orgs_packages.go
generated
vendored
165
vendor/github.com/google/go-github/v57/github/orgs_packages.go
generated
vendored
|
|
@ -1,165 +0,0 @@
|
|||
// Copyright 2021 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ListPackages lists the packages for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/packages/packages#list-packages-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/packages
|
||||
func (s *OrganizationsService) ListPackages(ctx context.Context, org string, opts *PackageListOptions) ([]*Package, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/packages", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var packages []*Package
|
||||
resp, err := s.client.Do(ctx, req, &packages)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return packages, resp, nil
|
||||
}
|
||||
|
||||
// GetPackage gets a package by name from an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/packages/{package_type}/{package_name}
|
||||
func (s *OrganizationsService) GetPackage(ctx context.Context, org, packageType, packageName string) (*Package, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/packages/%v/%v", org, packageType, packageName)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var pack *Package
|
||||
resp, err := s.client.Do(ctx, req, &pack)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return pack, resp, nil
|
||||
}
|
||||
|
||||
// DeletePackage deletes a package from an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/packages/packages#delete-a-package-for-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/packages/{package_type}/{package_name}
|
||||
func (s *OrganizationsService) DeletePackage(ctx context.Context, org, packageType, packageName string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/packages/%v/%v", org, packageType, packageName)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RestorePackage restores a package to an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/packages/packages#restore-a-package-for-an-organization
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/packages/{package_type}/{package_name}/restore
|
||||
func (s *OrganizationsService) RestorePackage(ctx context.Context, org, packageType, packageName string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/packages/%v/%v/restore", org, packageType, packageName)
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// PackageGetAllVersions gets all versions of a package in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/packages/packages#list-package-versions-for-a-package-owned-by-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/packages/{package_type}/{package_name}/versions
|
||||
func (s *OrganizationsService) PackageGetAllVersions(ctx context.Context, org, packageType, packageName string, opts *PackageListOptions) ([]*PackageVersion, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions", org, packageType, packageName)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var versions []*PackageVersion
|
||||
resp, err := s.client.Do(ctx, req, &versions)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return versions, resp, nil
|
||||
}
|
||||
|
||||
// PackageGetVersion gets a specific version of a package in an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/packages/packages#get-a-package-version-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}
|
||||
func (s *OrganizationsService) PackageGetVersion(ctx context.Context, org, packageType, packageName string, packageVersionID int64) (*PackageVersion, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions/%v", org, packageType, packageName, packageVersionID)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var version *PackageVersion
|
||||
resp, err := s.client.Do(ctx, req, &version)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return version, resp, nil
|
||||
}
|
||||
|
||||
// PackageDeleteVersion deletes a package version from an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/packages/packages#delete-package-version-for-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}
|
||||
func (s *OrganizationsService) PackageDeleteVersion(ctx context.Context, org, packageType, packageName string, packageVersionID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions/%v", org, packageType, packageName, packageVersionID)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// PackageRestoreVersion restores a package version to an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/packages/packages#restore-package-version-for-an-organization
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore
|
||||
func (s *OrganizationsService) PackageRestoreVersion(ctx context.Context, org, packageType, packageName string, packageVersionID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/packages/%v/%v/versions/%v/restore", org, packageType, packageName, packageVersionID)
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
36
vendor/github.com/google/go-github/v57/github/orgs_personal_access_tokens.go
generated
vendored
36
vendor/github.com/google/go-github/v57/github/orgs_personal_access_tokens.go
generated
vendored
|
|
@ -1,36 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// ReviewPersonalAccessTokenRequestOptions specifies the parameters to the ReviewPersonalAccessTokenRequest method.
|
||||
type ReviewPersonalAccessTokenRequestOptions struct {
|
||||
Action string `json:"action"`
|
||||
Reason *string `json:"reason,omitempty"`
|
||||
}
|
||||
|
||||
// ReviewPersonalAccessTokenRequest approves or denies a pending request to access organization resources via a fine-grained personal access token.
|
||||
// Only GitHub Apps can call this API, using the `organization_personal_access_token_requests: write` permission.
|
||||
// `action` can be one of `approve` or `deny`.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/personal-access-tokens#review-a-request-to-access-organization-resources-with-a-fine-grained-personal-access-token
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/personal-access-token-requests/{pat_request_id}
|
||||
func (s *OrganizationsService) ReviewPersonalAccessTokenRequest(ctx context.Context, org string, requestID int64, opts ReviewPersonalAccessTokenRequestOptions) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/personal-access-token-requests/%v", org, requestID)
|
||||
|
||||
req, err := s.client.NewRequest(http.MethodPost, u, &opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
64
vendor/github.com/google/go-github/v57/github/orgs_projects.go
generated
vendored
64
vendor/github.com/google/go-github/v57/github/orgs_projects.go
generated
vendored
|
|
@ -1,64 +0,0 @@
|
|||
// Copyright 2017 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ListProjects lists the projects for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/projects#list-organization-projects
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/projects
|
||||
func (s *OrganizationsService) ListProjects(ctx context.Context, org string, opts *ProjectListOptions) ([]*Project, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/projects", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
var projects []*Project
|
||||
resp, err := s.client.Do(ctx, req, &projects)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return projects, resp, nil
|
||||
}
|
||||
|
||||
// CreateProject creates a GitHub Project for the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/projects#create-an-organization-project
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/projects
|
||||
func (s *OrganizationsService) CreateProject(ctx context.Context, org string, opts *ProjectOptions) (*Project, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/projects", org)
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
project := &Project{}
|
||||
resp, err := s.client.Do(ctx, req, project)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return project, resp, nil
|
||||
}
|
||||
198
vendor/github.com/google/go-github/v57/github/orgs_properties.go
generated
vendored
198
vendor/github.com/google/go-github/v57/github/orgs_properties.go
generated
vendored
|
|
@ -1,198 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// CustomProperty represents an organization custom property object.
|
||||
type CustomProperty struct {
|
||||
// PropertyName is required for most endpoints except when calling CreateOrUpdateCustomProperty;
|
||||
// where this is sent in the path and thus can be omitted.
|
||||
PropertyName *string `json:"property_name,omitempty"`
|
||||
// Possible values for ValueType are: string, single_select
|
||||
ValueType string `json:"value_type"`
|
||||
Required *bool `json:"required,omitempty"`
|
||||
DefaultValue *string `json:"default_value,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
AllowedValues []string `json:"allowed_values,omitempty"`
|
||||
}
|
||||
|
||||
// RepoCustomPropertyValue represents a repository custom property value.
|
||||
type RepoCustomPropertyValue struct {
|
||||
RepositoryID int64 `json:"repository_id"`
|
||||
RepositoryName string `json:"repository_name"`
|
||||
RepositoryFullName string `json:"repository_full_name"`
|
||||
Properties []*CustomPropertyValue `json:"properties"`
|
||||
}
|
||||
|
||||
// CustomPropertyValue represents a custom property value.
|
||||
type CustomPropertyValue struct {
|
||||
PropertyName string `json:"property_name"`
|
||||
Value *string `json:"value,omitempty"`
|
||||
}
|
||||
|
||||
// GetAllCustomProperties gets all custom properties that are defined for the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/properties#get-all-custom-properties-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/properties/schema
|
||||
func (s *OrganizationsService) GetAllCustomProperties(ctx context.Context, org string) ([]*CustomProperty, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/properties/schema", org)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var customProperties []*CustomProperty
|
||||
resp, err := s.client.Do(ctx, req, &customProperties)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return customProperties, resp, nil
|
||||
}
|
||||
|
||||
// CreateOrUpdateCustomProperties creates new or updates existing custom properties that are defined for the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/properties#create-or-update-custom-properties-for-an-organization
|
||||
//
|
||||
//meta:operation PATCH /orgs/{org}/properties/schema
|
||||
func (s *OrganizationsService) CreateOrUpdateCustomProperties(ctx context.Context, org string, properties []*CustomProperty) ([]*CustomProperty, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/properties/schema", org)
|
||||
|
||||
params := struct {
|
||||
Properties []*CustomProperty `json:"properties"`
|
||||
}{
|
||||
Properties: properties,
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("PATCH", u, params)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var customProperties []*CustomProperty
|
||||
resp, err := s.client.Do(ctx, req, &customProperties)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return customProperties, resp, nil
|
||||
}
|
||||
|
||||
// GetCustomProperty gets a custom property that is defined for the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/properties#get-a-custom-property-for-an-organization
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/properties/schema/{custom_property_name}
|
||||
func (s *OrganizationsService) GetCustomProperty(ctx context.Context, org, name string) (*CustomProperty, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/properties/schema/%v", org, name)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var customProperty *CustomProperty
|
||||
resp, err := s.client.Do(ctx, req, &customProperty)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return customProperty, resp, nil
|
||||
}
|
||||
|
||||
// CreateOrUpdateCustomProperty creates a new or updates an existing custom property that is defined for the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/properties#create-or-update-a-custom-property-for-an-organization
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/properties/schema/{custom_property_name}
|
||||
func (s *OrganizationsService) CreateOrUpdateCustomProperty(ctx context.Context, org, customPropertyName string, property *CustomProperty) (*CustomProperty, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/properties/schema/%v", org, customPropertyName)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, property)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var customProperty *CustomProperty
|
||||
resp, err := s.client.Do(ctx, req, &customProperty)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return customProperty, resp, nil
|
||||
}
|
||||
|
||||
// RemoveCustomProperty removes a custom property that is defined for the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/properties#remove-a-custom-property-for-an-organization
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/properties/schema/{custom_property_name}
|
||||
func (s *OrganizationsService) RemoveCustomProperty(ctx context.Context, org, customPropertyName string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/properties/schema/%v", org, customPropertyName)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListCustomPropertyValues lists all custom property values for repositories in the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/properties#list-custom-property-values-for-organization-repositories
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/properties/values
|
||||
func (s *OrganizationsService) ListCustomPropertyValues(ctx context.Context, org string, opts *ListOptions) ([]*RepoCustomPropertyValue, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/properties/values", org)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var repoCustomPropertyValues []*RepoCustomPropertyValue
|
||||
resp, err := s.client.Do(ctx, req, &repoCustomPropertyValues)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return repoCustomPropertyValues, resp, nil
|
||||
}
|
||||
|
||||
// CreateOrUpdateRepoCustomPropertyValues creates new or updates existing custom property values across multiple repositories for the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/properties#create-or-update-custom-property-values-for-organization-repositories
|
||||
//
|
||||
//meta:operation PATCH /orgs/{org}/properties/values
|
||||
func (s *OrganizationsService) CreateOrUpdateRepoCustomPropertyValues(ctx context.Context, org string, repoNames []string, properties []*CustomProperty) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/properties/values", org)
|
||||
|
||||
params := struct {
|
||||
RepositoryNames []string `json:"repository_names"`
|
||||
Properties []*CustomProperty `json:"properties"`
|
||||
}{
|
||||
RepositoryNames: repoNames,
|
||||
Properties: properties,
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("PATCH", u, params)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
115
vendor/github.com/google/go-github/v57/github/orgs_rules.go
generated
vendored
115
vendor/github.com/google/go-github/v57/github/orgs_rules.go
generated
vendored
|
|
@ -1,115 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// GetAllOrganizationRulesets gets all the rulesets for the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/rules#get-all-organization-repository-rulesets
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/rulesets
|
||||
func (s *OrganizationsService) GetAllOrganizationRulesets(ctx context.Context, org string) ([]*Ruleset, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/rulesets", org)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var rulesets []*Ruleset
|
||||
resp, err := s.client.Do(ctx, req, &rulesets)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return rulesets, resp, nil
|
||||
}
|
||||
|
||||
// CreateOrganizationRuleset creates a ruleset for the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/rules#create-an-organization-repository-ruleset
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/rulesets
|
||||
func (s *OrganizationsService) CreateOrganizationRuleset(ctx context.Context, org string, rs *Ruleset) (*Ruleset, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/rulesets", org)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, rs)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var ruleset *Ruleset
|
||||
resp, err := s.client.Do(ctx, req, &ruleset)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return ruleset, resp, nil
|
||||
}
|
||||
|
||||
// GetOrganizationRuleset gets a ruleset from the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/rules#get-an-organization-repository-ruleset
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/rulesets/{ruleset_id}
|
||||
func (s *OrganizationsService) GetOrganizationRuleset(ctx context.Context, org string, rulesetID int64) (*Ruleset, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var ruleset *Ruleset
|
||||
resp, err := s.client.Do(ctx, req, &ruleset)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return ruleset, resp, nil
|
||||
}
|
||||
|
||||
// UpdateOrganizationRuleset updates a ruleset from the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/rulesets/{ruleset_id}
|
||||
func (s *OrganizationsService) UpdateOrganizationRuleset(ctx context.Context, org string, rulesetID int64, rs *Ruleset) (*Ruleset, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, rs)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var ruleset *Ruleset
|
||||
resp, err := s.client.Do(ctx, req, &ruleset)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return ruleset, resp, nil
|
||||
}
|
||||
|
||||
// DeleteOrganizationRuleset deletes a ruleset from the specified organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/rules#delete-an-organization-repository-ruleset
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/rulesets/{ruleset_id}
|
||||
func (s *OrganizationsService) DeleteOrganizationRuleset(ctx context.Context, org string, rulesetID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
63
vendor/github.com/google/go-github/v57/github/orgs_security_managers.go
generated
vendored
63
vendor/github.com/google/go-github/v57/github/orgs_security_managers.go
generated
vendored
|
|
@ -1,63 +0,0 @@
|
|||
// Copyright 2022 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ListSecurityManagerTeams lists all security manager teams for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams
|
||||
//
|
||||
//meta:operation GET /orgs/{org}/security-managers
|
||||
func (s *OrganizationsService) ListSecurityManagerTeams(ctx context.Context, org string) ([]*Team, *Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/security-managers", org)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var teams []*Team
|
||||
resp, err := s.client.Do(ctx, req, &teams)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return teams, resp, nil
|
||||
}
|
||||
|
||||
// AddSecurityManagerTeam adds a team to the list of security managers for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team
|
||||
//
|
||||
//meta:operation PUT /orgs/{org}/security-managers/teams/{team_slug}
|
||||
func (s *OrganizationsService) AddSecurityManagerTeam(ctx context.Context, org, team string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/security-managers/teams/%v", org, team)
|
||||
req, err := s.client.NewRequest("PUT", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RemoveSecurityManagerTeam removes a team from the list of security managers for an organization.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/security-managers/teams/{team_slug}
|
||||
func (s *OrganizationsService) RemoveSecurityManagerTeam(ctx context.Context, org, team string) (*Response, error) {
|
||||
u := fmt.Sprintf("orgs/%v/security-managers/teams/%v", org, team)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
143
vendor/github.com/google/go-github/v57/github/packages.go
generated
vendored
143
vendor/github.com/google/go-github/v57/github/packages.go
generated
vendored
|
|
@ -1,143 +0,0 @@
|
|||
// Copyright 2020 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
// Package represents a GitHub package.
|
||||
type Package struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
PackageType *string `json:"package_type,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
Owner *User `json:"owner,omitempty"`
|
||||
PackageVersion *PackageVersion `json:"package_version,omitempty"`
|
||||
Registry *PackageRegistry `json:"registry,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
VersionCount *int64 `json:"version_count,omitempty"`
|
||||
Visibility *string `json:"visibility,omitempty"`
|
||||
Repository *Repository `json:"repository,omitempty"`
|
||||
}
|
||||
|
||||
func (p Package) String() string {
|
||||
return Stringify(p)
|
||||
}
|
||||
|
||||
// PackageVersion represents a GitHub package version.
|
||||
type PackageVersion struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Version *string `json:"version,omitempty"`
|
||||
Summary *string `json:"summary,omitempty"`
|
||||
Body *string `json:"body,omitempty"`
|
||||
BodyHTML *string `json:"body_html,omitempty"`
|
||||
Release *PackageRelease `json:"release,omitempty"`
|
||||
Manifest *string `json:"manifest,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
TagName *string `json:"tag_name,omitempty"`
|
||||
TargetCommitish *string `json:"target_commitish,omitempty"`
|
||||
TargetOID *string `json:"target_oid,omitempty"`
|
||||
Draft *bool `json:"draft,omitempty"`
|
||||
Prerelease *bool `json:"prerelease,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
PackageFiles []*PackageFile `json:"package_files,omitempty"`
|
||||
Author *User `json:"author,omitempty"`
|
||||
InstallationCommand *string `json:"installation_command,omitempty"`
|
||||
Metadata *PackageMetadata `json:"metadata,omitempty"`
|
||||
PackageHTMLURL *string `json:"package_html_url,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
func (pv PackageVersion) String() string {
|
||||
return Stringify(pv)
|
||||
}
|
||||
|
||||
// PackageRelease represents a GitHub package version release.
|
||||
type PackageRelease struct {
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
TagName *string `json:"tag_name,omitempty"`
|
||||
TargetCommitish *string `json:"target_commitish,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Draft *bool `json:"draft,omitempty"`
|
||||
Author *User `json:"author,omitempty"`
|
||||
Prerelease *bool `json:"prerelease,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
PublishedAt *Timestamp `json:"published_at,omitempty"`
|
||||
}
|
||||
|
||||
func (r PackageRelease) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
|
||||
// PackageFile represents a GitHub package version release file.
|
||||
type PackageFile struct {
|
||||
DownloadURL *string `json:"download_url,omitempty"`
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
SHA256 *string `json:"sha256,omitempty"`
|
||||
SHA1 *string `json:"sha1,omitempty"`
|
||||
MD5 *string `json:"md5,omitempty"`
|
||||
ContentType *string `json:"content_type,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
Author *User `json:"author,omitempty"`
|
||||
Size *int64 `json:"size,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
func (pf PackageFile) String() string {
|
||||
return Stringify(pf)
|
||||
}
|
||||
|
||||
// PackageRegistry represents a GitHub package registry.
|
||||
type PackageRegistry struct {
|
||||
AboutURL *string `json:"about_url,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Type *string `json:"type,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
Vendor *string `json:"vendor,omitempty"`
|
||||
}
|
||||
|
||||
func (r PackageRegistry) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
|
||||
// PackageListOptions represents the optional list options for a package.
|
||||
type PackageListOptions struct {
|
||||
// Visibility of packages "public", "internal" or "private".
|
||||
Visibility *string `url:"visibility,omitempty"`
|
||||
|
||||
// PackageType represents the type of package.
|
||||
// It can be one of "npm", "maven", "rubygems", "nuget", "docker", or "container".
|
||||
PackageType *string `url:"package_type,omitempty"`
|
||||
|
||||
// State of package either "active" or "deleted".
|
||||
State *string `url:"state,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// PackageMetadata represents metadata from a package.
|
||||
type PackageMetadata struct {
|
||||
PackageType *string `json:"package_type,omitempty"`
|
||||
Container *PackageContainerMetadata `json:"container,omitempty"`
|
||||
}
|
||||
|
||||
func (r PackageMetadata) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
|
||||
// PackageContainerMetadata represents container metadata for docker container packages.
|
||||
type PackageContainerMetadata struct {
|
||||
Tags []string `json:"tags,omitempty"`
|
||||
}
|
||||
|
||||
func (r PackageContainerMetadata) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
634
vendor/github.com/google/go-github/v57/github/projects.go
generated
vendored
634
vendor/github.com/google/go-github/v57/github/projects.go
generated
vendored
|
|
@ -1,634 +0,0 @@
|
|||
// Copyright 2016 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ProjectsService provides access to the projects functions in the
|
||||
// GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects
|
||||
type ProjectsService service
|
||||
|
||||
// Project represents a GitHub Project.
|
||||
type Project struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
ColumnsURL *string `json:"columns_url,omitempty"`
|
||||
OwnerURL *string `json:"owner_url,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Body *string `json:"body,omitempty"`
|
||||
Number *int `json:"number,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
OrganizationPermission *string `json:"organization_permission,omitempty"`
|
||||
Private *bool `json:"private,omitempty"`
|
||||
|
||||
// The User object that generated the project.
|
||||
Creator *User `json:"creator,omitempty"`
|
||||
}
|
||||
|
||||
func (p Project) String() string {
|
||||
return Stringify(p)
|
||||
}
|
||||
|
||||
// GetProject gets a GitHub Project for a repo.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/projects#get-a-project
|
||||
//
|
||||
//meta:operation GET /projects/{project_id}
|
||||
func (s *ProjectsService) GetProject(ctx context.Context, id int64) (*Project, *Response, error) {
|
||||
u := fmt.Sprintf("projects/%v", id)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
project := &Project{}
|
||||
resp, err := s.client.Do(ctx, req, project)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return project, resp, nil
|
||||
}
|
||||
|
||||
// ProjectOptions specifies the parameters to the
|
||||
// RepositoriesService.CreateProject and
|
||||
// ProjectsService.UpdateProject methods.
|
||||
type ProjectOptions struct {
|
||||
// The name of the project. (Required for creation; optional for update.)
|
||||
Name *string `json:"name,omitempty"`
|
||||
// The body of the project. (Optional.)
|
||||
Body *string `json:"body,omitempty"`
|
||||
|
||||
// The following field(s) are only applicable for update.
|
||||
// They should be left with zero values for creation.
|
||||
|
||||
// State of the project. Either "open" or "closed". (Optional.)
|
||||
State *string `json:"state,omitempty"`
|
||||
// The permission level that all members of the project's organization
|
||||
// will have on this project.
|
||||
// Setting the organization permission is only available
|
||||
// for organization projects. (Optional.)
|
||||
OrganizationPermission *string `json:"organization_permission,omitempty"`
|
||||
// Sets visibility of the project within the organization.
|
||||
// Setting visibility is only available
|
||||
// for organization projects.(Optional.)
|
||||
Private *bool `json:"private,omitempty"`
|
||||
}
|
||||
|
||||
// UpdateProject updates a repository project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/projects#update-a-project
|
||||
//
|
||||
//meta:operation PATCH /projects/{project_id}
|
||||
func (s *ProjectsService) UpdateProject(ctx context.Context, id int64, opts *ProjectOptions) (*Project, *Response, error) {
|
||||
u := fmt.Sprintf("projects/%v", id)
|
||||
req, err := s.client.NewRequest("PATCH", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
project := &Project{}
|
||||
resp, err := s.client.Do(ctx, req, project)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return project, resp, nil
|
||||
}
|
||||
|
||||
// DeleteProject deletes a GitHub Project from a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/projects#delete-a-project
|
||||
//
|
||||
//meta:operation DELETE /projects/{project_id}
|
||||
func (s *ProjectsService) DeleteProject(ctx context.Context, id int64) (*Response, error) {
|
||||
u := fmt.Sprintf("projects/%v", id)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ProjectColumn represents a column of a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/projects/
|
||||
type ProjectColumn struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
ProjectURL *string `json:"project_url,omitempty"`
|
||||
CardsURL *string `json:"cards_url,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
}
|
||||
|
||||
// ListProjectColumns lists the columns of a GitHub Project for a repo.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/columns#list-project-columns
|
||||
//
|
||||
//meta:operation GET /projects/{project_id}/columns
|
||||
func (s *ProjectsService) ListProjectColumns(ctx context.Context, projectID int64, opts *ListOptions) ([]*ProjectColumn, *Response, error) {
|
||||
u := fmt.Sprintf("projects/%v/columns", projectID)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
columns := []*ProjectColumn{}
|
||||
resp, err := s.client.Do(ctx, req, &columns)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return columns, resp, nil
|
||||
}
|
||||
|
||||
// GetProjectColumn gets a column of a GitHub Project for a repo.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/columns#get-a-project-column
|
||||
//
|
||||
//meta:operation GET /projects/columns/{column_id}
|
||||
func (s *ProjectsService) GetProjectColumn(ctx context.Context, id int64) (*ProjectColumn, *Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/%v", id)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
column := &ProjectColumn{}
|
||||
resp, err := s.client.Do(ctx, req, column)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return column, resp, nil
|
||||
}
|
||||
|
||||
// ProjectColumnOptions specifies the parameters to the
|
||||
// ProjectsService.CreateProjectColumn and
|
||||
// ProjectsService.UpdateProjectColumn methods.
|
||||
type ProjectColumnOptions struct {
|
||||
// The name of the project column. (Required for creation and update.)
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// CreateProjectColumn creates a column for the specified (by number) project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/columns#create-a-project-column
|
||||
//
|
||||
//meta:operation POST /projects/{project_id}/columns
|
||||
func (s *ProjectsService) CreateProjectColumn(ctx context.Context, projectID int64, opts *ProjectColumnOptions) (*ProjectColumn, *Response, error) {
|
||||
u := fmt.Sprintf("projects/%v/columns", projectID)
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
column := &ProjectColumn{}
|
||||
resp, err := s.client.Do(ctx, req, column)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return column, resp, nil
|
||||
}
|
||||
|
||||
// UpdateProjectColumn updates a column of a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/columns#update-an-existing-project-column
|
||||
//
|
||||
//meta:operation PATCH /projects/columns/{column_id}
|
||||
func (s *ProjectsService) UpdateProjectColumn(ctx context.Context, columnID int64, opts *ProjectColumnOptions) (*ProjectColumn, *Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/%v", columnID)
|
||||
req, err := s.client.NewRequest("PATCH", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
column := &ProjectColumn{}
|
||||
resp, err := s.client.Do(ctx, req, column)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return column, resp, nil
|
||||
}
|
||||
|
||||
// DeleteProjectColumn deletes a column from a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/columns#delete-a-project-column
|
||||
//
|
||||
//meta:operation DELETE /projects/columns/{column_id}
|
||||
func (s *ProjectsService) DeleteProjectColumn(ctx context.Context, columnID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/%v", columnID)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ProjectColumnMoveOptions specifies the parameters to the
|
||||
// ProjectsService.MoveProjectColumn method.
|
||||
type ProjectColumnMoveOptions struct {
|
||||
// Position can be one of "first", "last", or "after:<column-id>", where
|
||||
// <column-id> is the ID of a column in the same project. (Required.)
|
||||
Position string `json:"position"`
|
||||
}
|
||||
|
||||
// MoveProjectColumn moves a column within a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/columns#move-a-project-column
|
||||
//
|
||||
//meta:operation POST /projects/columns/{column_id}/moves
|
||||
func (s *ProjectsService) MoveProjectColumn(ctx context.Context, columnID int64, opts *ProjectColumnMoveOptions) (*Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/%v/moves", columnID)
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ProjectCard represents a card in a column of a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/cards/#get-a-project-card
|
||||
type ProjectCard struct {
|
||||
URL *string `json:"url,omitempty"`
|
||||
ColumnURL *string `json:"column_url,omitempty"`
|
||||
ContentURL *string `json:"content_url,omitempty"`
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Note *string `json:"note,omitempty"`
|
||||
Creator *User `json:"creator,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
Archived *bool `json:"archived,omitempty"`
|
||||
|
||||
// The following fields are only populated by Webhook events.
|
||||
ColumnID *int64 `json:"column_id,omitempty"`
|
||||
|
||||
// The following fields are only populated by Events API.
|
||||
ProjectID *int64 `json:"project_id,omitempty"`
|
||||
ProjectURL *string `json:"project_url,omitempty"`
|
||||
ColumnName *string `json:"column_name,omitempty"`
|
||||
PreviousColumnName *string `json:"previous_column_name,omitempty"` // Populated in "moved_columns_in_project" event deliveries.
|
||||
}
|
||||
|
||||
// ProjectCardListOptions specifies the optional parameters to the
|
||||
// ProjectsService.ListProjectCards method.
|
||||
type ProjectCardListOptions struct {
|
||||
// ArchivedState is used to list all, archived, or not_archived project cards.
|
||||
// Defaults to not_archived when you omit this parameter.
|
||||
ArchivedState *string `url:"archived_state,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListProjectCards lists the cards in a column of a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/cards#list-project-cards
|
||||
//
|
||||
//meta:operation GET /projects/columns/{column_id}/cards
|
||||
func (s *ProjectsService) ListProjectCards(ctx context.Context, columnID int64, opts *ProjectCardListOptions) ([]*ProjectCard, *Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/%v/cards", columnID)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
cards := []*ProjectCard{}
|
||||
resp, err := s.client.Do(ctx, req, &cards)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return cards, resp, nil
|
||||
}
|
||||
|
||||
// GetProjectCard gets a card in a column of a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/cards#get-a-project-card
|
||||
//
|
||||
//meta:operation GET /projects/columns/cards/{card_id}
|
||||
func (s *ProjectsService) GetProjectCard(ctx context.Context, cardID int64) (*ProjectCard, *Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/cards/%v", cardID)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
card := &ProjectCard{}
|
||||
resp, err := s.client.Do(ctx, req, card)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return card, resp, nil
|
||||
}
|
||||
|
||||
// ProjectCardOptions specifies the parameters to the
|
||||
// ProjectsService.CreateProjectCard and
|
||||
// ProjectsService.UpdateProjectCard methods.
|
||||
type ProjectCardOptions struct {
|
||||
// The note of the card. Note and ContentID are mutually exclusive.
|
||||
Note string `json:"note,omitempty"`
|
||||
// The ID (not Number) of the Issue to associate with this card.
|
||||
// Note and ContentID are mutually exclusive.
|
||||
ContentID int64 `json:"content_id,omitempty"`
|
||||
// The type of content to associate with this card. Possible values are: "Issue" and "PullRequest".
|
||||
ContentType string `json:"content_type,omitempty"`
|
||||
// Use true to archive a project card.
|
||||
// Specify false if you need to restore a previously archived project card.
|
||||
Archived *bool `json:"archived,omitempty"`
|
||||
}
|
||||
|
||||
// CreateProjectCard creates a card in the specified column of a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/cards#create-a-project-card
|
||||
//
|
||||
//meta:operation POST /projects/columns/{column_id}/cards
|
||||
func (s *ProjectsService) CreateProjectCard(ctx context.Context, columnID int64, opts *ProjectCardOptions) (*ProjectCard, *Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/%v/cards", columnID)
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
card := &ProjectCard{}
|
||||
resp, err := s.client.Do(ctx, req, card)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return card, resp, nil
|
||||
}
|
||||
|
||||
// UpdateProjectCard updates a card of a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/cards#update-an-existing-project-card
|
||||
//
|
||||
//meta:operation PATCH /projects/columns/cards/{card_id}
|
||||
func (s *ProjectsService) UpdateProjectCard(ctx context.Context, cardID int64, opts *ProjectCardOptions) (*ProjectCard, *Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/cards/%v", cardID)
|
||||
req, err := s.client.NewRequest("PATCH", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
card := &ProjectCard{}
|
||||
resp, err := s.client.Do(ctx, req, card)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return card, resp, nil
|
||||
}
|
||||
|
||||
// DeleteProjectCard deletes a card from a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/cards#delete-a-project-card
|
||||
//
|
||||
//meta:operation DELETE /projects/columns/cards/{card_id}
|
||||
func (s *ProjectsService) DeleteProjectCard(ctx context.Context, cardID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/cards/%v", cardID)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ProjectCardMoveOptions specifies the parameters to the
|
||||
// ProjectsService.MoveProjectCard method.
|
||||
type ProjectCardMoveOptions struct {
|
||||
// Position can be one of "top", "bottom", or "after:<card-id>", where
|
||||
// <card-id> is the ID of a card in the same project.
|
||||
Position string `json:"position"`
|
||||
// ColumnID is the ID of a column in the same project. Note that ColumnID
|
||||
// is required when using Position "after:<card-id>" when that card is in
|
||||
// another column; otherwise it is optional.
|
||||
ColumnID int64 `json:"column_id,omitempty"`
|
||||
}
|
||||
|
||||
// MoveProjectCard moves a card within a GitHub Project.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/cards#move-a-project-card
|
||||
//
|
||||
//meta:operation POST /projects/columns/cards/{card_id}/moves
|
||||
func (s *ProjectsService) MoveProjectCard(ctx context.Context, cardID int64, opts *ProjectCardMoveOptions) (*Response, error) {
|
||||
u := fmt.Sprintf("projects/columns/cards/%v/moves", cardID)
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ProjectCollaboratorOptions specifies the optional parameters to the
|
||||
// ProjectsService.AddProjectCollaborator method.
|
||||
type ProjectCollaboratorOptions struct {
|
||||
// Permission specifies the permission to grant to the collaborator.
|
||||
// Possible values are:
|
||||
// "read" - can read, but not write to or administer this project.
|
||||
// "write" - can read and write, but not administer this project.
|
||||
// "admin" - can read, write and administer this project.
|
||||
//
|
||||
// Default value is "write"
|
||||
Permission *string `json:"permission,omitempty"`
|
||||
}
|
||||
|
||||
// AddProjectCollaborator adds a collaborator to an organization project and sets
|
||||
// their permission level. You must be an organization owner or a project admin to add a collaborator.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/collaborators#add-project-collaborator
|
||||
//
|
||||
//meta:operation PUT /projects/{project_id}/collaborators/{username}
|
||||
func (s *ProjectsService) AddProjectCollaborator(ctx context.Context, id int64, username string, opts *ProjectCollaboratorOptions) (*Response, error) {
|
||||
u := fmt.Sprintf("projects/%v/collaborators/%v", id, username)
|
||||
req, err := s.client.NewRequest("PUT", u, opts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// RemoveProjectCollaborator removes a collaborator from an organization project.
|
||||
// You must be an organization owner or a project admin to remove a collaborator.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/collaborators#remove-user-as-a-collaborator
|
||||
//
|
||||
//meta:operation DELETE /projects/{project_id}/collaborators/{username}
|
||||
func (s *ProjectsService) RemoveProjectCollaborator(ctx context.Context, id int64, username string) (*Response, error) {
|
||||
u := fmt.Sprintf("projects/%v/collaborators/%v", id, username)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// ListCollaboratorOptions specifies the optional parameters to the
|
||||
// ProjectsService.ListProjectCollaborators method.
|
||||
type ListCollaboratorOptions struct {
|
||||
// Affiliation specifies how collaborators should be filtered by their affiliation.
|
||||
// Possible values are:
|
||||
// "outside" - All outside collaborators of an organization-owned repository
|
||||
// "direct" - All collaborators with permissions to an organization-owned repository,
|
||||
// regardless of organization membership status
|
||||
// "all" - All collaborators the authenticated user can see
|
||||
//
|
||||
// Default value is "all".
|
||||
Affiliation *string `url:"affiliation,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListProjectCollaborators lists the collaborators for an organization project. For a project,
|
||||
// the list of collaborators includes outside collaborators, organization members that are direct
|
||||
// collaborators, organization members with access through team memberships, organization members
|
||||
// with access through default organization permissions, and organization owners. You must be an
|
||||
// organization owner or a project admin to list collaborators.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/collaborators#list-project-collaborators
|
||||
//
|
||||
//meta:operation GET /projects/{project_id}/collaborators
|
||||
func (s *ProjectsService) ListProjectCollaborators(ctx context.Context, id int64, opts *ListCollaboratorOptions) ([]*User, *Response, error) {
|
||||
u := fmt.Sprintf("projects/%v/collaborators", id)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
var users []*User
|
||||
resp, err := s.client.Do(ctx, req, &users)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return users, resp, nil
|
||||
}
|
||||
|
||||
// ProjectPermissionLevel represents the permission level an organization
|
||||
// member has for a given project.
|
||||
type ProjectPermissionLevel struct {
|
||||
// Possible values: "admin", "write", "read", "none"
|
||||
Permission *string `json:"permission,omitempty"`
|
||||
|
||||
User *User `json:"user,omitempty"`
|
||||
}
|
||||
|
||||
// ReviewProjectCollaboratorPermission returns the collaborator's permission level for an organization
|
||||
// project. Possible values for the permission key: "admin", "write", "read", "none".
|
||||
// You must be an organization owner or a project admin to review a user's permission level.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/projects/collaborators#get-project-permission-for-a-user
|
||||
//
|
||||
//meta:operation GET /projects/{project_id}/collaborators/{username}/permission
|
||||
func (s *ProjectsService) ReviewProjectCollaboratorPermission(ctx context.Context, id int64, username string) (*ProjectPermissionLevel, *Response, error) {
|
||||
u := fmt.Sprintf("projects/%v/collaborators/%v/permission", id, username)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeProjectsPreview)
|
||||
|
||||
ppl := new(ProjectPermissionLevel)
|
||||
resp, err := s.client.Do(ctx, req, ppl)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
return ppl, resp, nil
|
||||
}
|
||||
508
vendor/github.com/google/go-github/v57/github/pulls.go
generated
vendored
508
vendor/github.com/google/go-github/v57/github/pulls.go
generated
vendored
|
|
@ -1,508 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// PullRequestsService handles communication with the pull request related
|
||||
// methods of the GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/
|
||||
type PullRequestsService service
|
||||
|
||||
// PullRequestAutoMerge represents the "auto_merge" response for a PullRequest.
|
||||
type PullRequestAutoMerge struct {
|
||||
EnabledBy *User `json:"enabled_by,omitempty"`
|
||||
MergeMethod *string `json:"merge_method,omitempty"`
|
||||
CommitTitle *string `json:"commit_title,omitempty"`
|
||||
CommitMessage *string `json:"commit_message,omitempty"`
|
||||
}
|
||||
|
||||
// PullRequest represents a GitHub pull request on a repository.
|
||||
type PullRequest struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Number *int `json:"number,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
Locked *bool `json:"locked,omitempty"`
|
||||
Title *string `json:"title,omitempty"`
|
||||
Body *string `json:"body,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
ClosedAt *Timestamp `json:"closed_at,omitempty"`
|
||||
MergedAt *Timestamp `json:"merged_at,omitempty"`
|
||||
Labels []*Label `json:"labels,omitempty"`
|
||||
User *User `json:"user,omitempty"`
|
||||
Draft *bool `json:"draft,omitempty"`
|
||||
Merged *bool `json:"merged,omitempty"`
|
||||
Mergeable *bool `json:"mergeable,omitempty"`
|
||||
MergeableState *string `json:"mergeable_state,omitempty"`
|
||||
MergedBy *User `json:"merged_by,omitempty"`
|
||||
MergeCommitSHA *string `json:"merge_commit_sha,omitempty"`
|
||||
Rebaseable *bool `json:"rebaseable,omitempty"`
|
||||
Comments *int `json:"comments,omitempty"`
|
||||
Commits *int `json:"commits,omitempty"`
|
||||
Additions *int `json:"additions,omitempty"`
|
||||
Deletions *int `json:"deletions,omitempty"`
|
||||
ChangedFiles *int `json:"changed_files,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
IssueURL *string `json:"issue_url,omitempty"`
|
||||
StatusesURL *string `json:"statuses_url,omitempty"`
|
||||
DiffURL *string `json:"diff_url,omitempty"`
|
||||
PatchURL *string `json:"patch_url,omitempty"`
|
||||
CommitsURL *string `json:"commits_url,omitempty"`
|
||||
CommentsURL *string `json:"comments_url,omitempty"`
|
||||
ReviewCommentsURL *string `json:"review_comments_url,omitempty"`
|
||||
ReviewCommentURL *string `json:"review_comment_url,omitempty"`
|
||||
ReviewComments *int `json:"review_comments,omitempty"`
|
||||
Assignee *User `json:"assignee,omitempty"`
|
||||
Assignees []*User `json:"assignees,omitempty"`
|
||||
Milestone *Milestone `json:"milestone,omitempty"`
|
||||
MaintainerCanModify *bool `json:"maintainer_can_modify,omitempty"`
|
||||
AuthorAssociation *string `json:"author_association,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
RequestedReviewers []*User `json:"requested_reviewers,omitempty"`
|
||||
AutoMerge *PullRequestAutoMerge `json:"auto_merge,omitempty"`
|
||||
|
||||
// RequestedTeams is populated as part of the PullRequestEvent.
|
||||
// See, https://docs.github.com/developers/webhooks-and-events/github-event-types#pullrequestevent for an example.
|
||||
RequestedTeams []*Team `json:"requested_teams,omitempty"`
|
||||
|
||||
Links *PRLinks `json:"_links,omitempty"`
|
||||
Head *PullRequestBranch `json:"head,omitempty"`
|
||||
Base *PullRequestBranch `json:"base,omitempty"`
|
||||
|
||||
// ActiveLockReason is populated only when LockReason is provided while locking the pull request.
|
||||
// Possible values are: "off-topic", "too heated", "resolved", and "spam".
|
||||
ActiveLockReason *string `json:"active_lock_reason,omitempty"`
|
||||
}
|
||||
|
||||
func (p PullRequest) String() string {
|
||||
return Stringify(p)
|
||||
}
|
||||
|
||||
// PRLink represents a single link object from GitHub pull request _links.
|
||||
type PRLink struct {
|
||||
HRef *string `json:"href,omitempty"`
|
||||
}
|
||||
|
||||
// PRLinks represents the "_links" object in a GitHub pull request.
|
||||
type PRLinks struct {
|
||||
Self *PRLink `json:"self,omitempty"`
|
||||
HTML *PRLink `json:"html,omitempty"`
|
||||
Issue *PRLink `json:"issue,omitempty"`
|
||||
Comments *PRLink `json:"comments,omitempty"`
|
||||
ReviewComments *PRLink `json:"review_comments,omitempty"`
|
||||
ReviewComment *PRLink `json:"review_comment,omitempty"`
|
||||
Commits *PRLink `json:"commits,omitempty"`
|
||||
Statuses *PRLink `json:"statuses,omitempty"`
|
||||
}
|
||||
|
||||
// PullRequestBranch represents a base or head branch in a GitHub pull request.
|
||||
type PullRequestBranch struct {
|
||||
Label *string `json:"label,omitempty"`
|
||||
Ref *string `json:"ref,omitempty"`
|
||||
SHA *string `json:"sha,omitempty"`
|
||||
Repo *Repository `json:"repo,omitempty"`
|
||||
User *User `json:"user,omitempty"`
|
||||
}
|
||||
|
||||
// PullRequestListOptions specifies the optional parameters to the
|
||||
// PullRequestsService.List method.
|
||||
type PullRequestListOptions struct {
|
||||
// State filters pull requests based on their state. Possible values are:
|
||||
// open, closed, all. Default is "open".
|
||||
State string `url:"state,omitempty"`
|
||||
|
||||
// Head filters pull requests by head user and branch name in the format of:
|
||||
// "user:ref-name".
|
||||
Head string `url:"head,omitempty"`
|
||||
|
||||
// Base filters pull requests by base branch name.
|
||||
Base string `url:"base,omitempty"`
|
||||
|
||||
// Sort specifies how to sort pull requests. Possible values are: created,
|
||||
// updated, popularity, long-running. Default is "created".
|
||||
Sort string `url:"sort,omitempty"`
|
||||
|
||||
// Direction in which to sort pull requests. Possible values are: asc, desc.
|
||||
// If Sort is "created" or not specified, Default is "desc", otherwise Default
|
||||
// is "asc"
|
||||
Direction string `url:"direction,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// List the pull requests for the specified repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#list-pull-requests
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/pulls
|
||||
func (s *PullRequestsService) List(ctx context.Context, owner string, repo string, opts *PullRequestListOptions) ([]*PullRequest, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var pulls []*PullRequest
|
||||
resp, err := s.client.Do(ctx, req, &pulls)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return pulls, resp, nil
|
||||
}
|
||||
|
||||
// ListPullRequestsWithCommit returns pull requests associated with a commit SHA.
|
||||
//
|
||||
// The results may include open and closed pull requests.
|
||||
// By default, the PullRequestListOptions State filters for "open".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/commits/commits#list-pull-requests-associated-with-a-commit
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls
|
||||
func (s *PullRequestsService) ListPullRequestsWithCommit(ctx context.Context, owner, repo, sha string, opts *ListOptions) ([]*PullRequest, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/commits/%v/pulls", owner, repo, sha)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeListPullsOrBranchesForCommitPreview)
|
||||
var pulls []*PullRequest
|
||||
resp, err := s.client.Do(ctx, req, &pulls)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return pulls, resp, nil
|
||||
}
|
||||
|
||||
// Get a single pull request.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#get-a-pull-request
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/pulls/{pull_number}
|
||||
func (s *PullRequestsService) Get(ctx context.Context, owner string, repo string, number int) (*PullRequest, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/%d", owner, repo, number)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
pull := new(PullRequest)
|
||||
resp, err := s.client.Do(ctx, req, pull)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return pull, resp, nil
|
||||
}
|
||||
|
||||
// GetRaw gets a single pull request in raw (diff or patch) format.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#get-a-pull-request
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/pulls/{pull_number}
|
||||
func (s *PullRequestsService) GetRaw(ctx context.Context, owner string, repo string, number int, opts RawOptions) (string, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/%d", owner, repo, number)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
switch opts.Type {
|
||||
case Diff:
|
||||
req.Header.Set("Accept", mediaTypeV3Diff)
|
||||
case Patch:
|
||||
req.Header.Set("Accept", mediaTypeV3Patch)
|
||||
default:
|
||||
return "", nil, fmt.Errorf("unsupported raw type %d", opts.Type)
|
||||
}
|
||||
|
||||
var buf bytes.Buffer
|
||||
resp, err := s.client.Do(ctx, req, &buf)
|
||||
if err != nil {
|
||||
return "", resp, err
|
||||
}
|
||||
|
||||
return buf.String(), resp, nil
|
||||
}
|
||||
|
||||
// NewPullRequest represents a new pull request to be created.
|
||||
type NewPullRequest struct {
|
||||
Title *string `json:"title,omitempty"`
|
||||
Head *string `json:"head,omitempty"`
|
||||
HeadRepo *string `json:"head_repo,omitempty"`
|
||||
Base *string `json:"base,omitempty"`
|
||||
Body *string `json:"body,omitempty"`
|
||||
Issue *int `json:"issue,omitempty"`
|
||||
MaintainerCanModify *bool `json:"maintainer_can_modify,omitempty"`
|
||||
Draft *bool `json:"draft,omitempty"`
|
||||
}
|
||||
|
||||
// Create a new pull request on the specified repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#create-a-pull-request
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/pulls
|
||||
func (s *PullRequestsService) Create(ctx context.Context, owner string, repo string, pull *NewPullRequest) (*PullRequest, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls", owner, repo)
|
||||
req, err := s.client.NewRequest("POST", u, pull)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
p := new(PullRequest)
|
||||
resp, err := s.client.Do(ctx, req, p)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return p, resp, nil
|
||||
}
|
||||
|
||||
// PullRequestBranchUpdateOptions specifies the optional parameters to the
|
||||
// PullRequestsService.UpdateBranch method.
|
||||
type PullRequestBranchUpdateOptions struct {
|
||||
// ExpectedHeadSHA specifies the most recent commit on the pull request's branch.
|
||||
// Default value is the SHA of the pull request's current HEAD ref.
|
||||
ExpectedHeadSHA *string `json:"expected_head_sha,omitempty"`
|
||||
}
|
||||
|
||||
// PullRequestBranchUpdateResponse specifies the response of pull request branch update.
|
||||
type PullRequestBranchUpdateResponse struct {
|
||||
Message *string `json:"message,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
// UpdateBranch updates the pull request branch with latest upstream changes.
|
||||
//
|
||||
// This method might return an AcceptedError and a status code of
|
||||
// 202. This is because this is the status that GitHub returns to signify that
|
||||
// it has now scheduled the update of the pull request branch in a background task.
|
||||
// A follow up request, after a delay of a second or so, should result
|
||||
// in a successful request.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#update-a-pull-request-branch
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch
|
||||
func (s *PullRequestsService) UpdateBranch(ctx context.Context, owner, repo string, number int, opts *PullRequestBranchUpdateOptions) (*PullRequestBranchUpdateResponse, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/%d/update-branch", owner, repo, number)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept header when this API fully launches.
|
||||
req.Header.Set("Accept", mediaTypeUpdatePullRequestBranchPreview)
|
||||
|
||||
p := new(PullRequestBranchUpdateResponse)
|
||||
resp, err := s.client.Do(ctx, req, p)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return p, resp, nil
|
||||
}
|
||||
|
||||
type pullRequestUpdate struct {
|
||||
Title *string `json:"title,omitempty"`
|
||||
Body *string `json:"body,omitempty"`
|
||||
State *string `json:"state,omitempty"`
|
||||
Base *string `json:"base,omitempty"`
|
||||
MaintainerCanModify *bool `json:"maintainer_can_modify,omitempty"`
|
||||
}
|
||||
|
||||
// Edit a pull request.
|
||||
// pull must not be nil.
|
||||
//
|
||||
// The following fields are editable: Title, Body, State, Base.Ref and MaintainerCanModify.
|
||||
// Base.Ref updates the base branch of the pull request.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#update-a-pull-request
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/pulls/{pull_number}
|
||||
func (s *PullRequestsService) Edit(ctx context.Context, owner string, repo string, number int, pull *PullRequest) (*PullRequest, *Response, error) {
|
||||
if pull == nil {
|
||||
return nil, nil, fmt.Errorf("pull must be provided")
|
||||
}
|
||||
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/%d", owner, repo, number)
|
||||
|
||||
update := &pullRequestUpdate{
|
||||
Title: pull.Title,
|
||||
Body: pull.Body,
|
||||
State: pull.State,
|
||||
MaintainerCanModify: pull.MaintainerCanModify,
|
||||
}
|
||||
// avoid updating the base branch when closing the Pull Request
|
||||
// - otherwise the GitHub API server returns a "Validation Failed" error:
|
||||
// "Cannot change base branch of closed pull request".
|
||||
if pull.Base != nil && pull.GetState() != "closed" {
|
||||
update.Base = pull.Base.Ref
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("PATCH", u, update)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
p := new(PullRequest)
|
||||
resp, err := s.client.Do(ctx, req, p)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return p, resp, nil
|
||||
}
|
||||
|
||||
// ListCommits lists the commits in a pull request.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#list-commits-on-a-pull-request
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/pulls/{pull_number}/commits
|
||||
func (s *PullRequestsService) ListCommits(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*RepositoryCommit, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/%d/commits", owner, repo, number)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var commits []*RepositoryCommit
|
||||
resp, err := s.client.Do(ctx, req, &commits)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return commits, resp, nil
|
||||
}
|
||||
|
||||
// ListFiles lists the files in a pull request.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#list-pull-requests-files
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/pulls/{pull_number}/files
|
||||
func (s *PullRequestsService) ListFiles(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*CommitFile, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/%d/files", owner, repo, number)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var commitFiles []*CommitFile
|
||||
resp, err := s.client.Do(ctx, req, &commitFiles)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return commitFiles, resp, nil
|
||||
}
|
||||
|
||||
// IsMerged checks if a pull request has been merged.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#check-if-a-pull-request-has-been-merged
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/pulls/{pull_number}/merge
|
||||
func (s *PullRequestsService) IsMerged(ctx context.Context, owner string, repo string, number int) (bool, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/%d/merge", owner, repo, number)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
merged, err := parseBoolResponse(err)
|
||||
return merged, resp, err
|
||||
}
|
||||
|
||||
// PullRequestMergeResult represents the result of merging a pull request.
|
||||
type PullRequestMergeResult struct {
|
||||
SHA *string `json:"sha,omitempty"`
|
||||
Merged *bool `json:"merged,omitempty"`
|
||||
Message *string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
// PullRequestOptions lets you define how a pull request will be merged.
|
||||
type PullRequestOptions struct {
|
||||
CommitTitle string // Title for the automatic commit message. (Optional.)
|
||||
SHA string // SHA that pull request head must match to allow merge. (Optional.)
|
||||
|
||||
// The merge method to use. Possible values include: "merge", "squash", and "rebase" with the default being merge. (Optional.)
|
||||
MergeMethod string
|
||||
|
||||
// If false, an empty string commit message will use the default commit message. If true, an empty string commit message will be used.
|
||||
DontDefaultIfBlank bool
|
||||
}
|
||||
|
||||
type pullRequestMergeRequest struct {
|
||||
CommitMessage *string `json:"commit_message,omitempty"`
|
||||
CommitTitle string `json:"commit_title,omitempty"`
|
||||
MergeMethod string `json:"merge_method,omitempty"`
|
||||
SHA string `json:"sha,omitempty"`
|
||||
}
|
||||
|
||||
// Merge a pull request.
|
||||
// commitMessage is an extra detail to append to automatic commit message.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/pulls#merge-a-pull-request
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge
|
||||
func (s *PullRequestsService) Merge(ctx context.Context, owner string, repo string, number int, commitMessage string, options *PullRequestOptions) (*PullRequestMergeResult, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/%d/merge", owner, repo, number)
|
||||
|
||||
pullRequestBody := &pullRequestMergeRequest{}
|
||||
if commitMessage != "" {
|
||||
pullRequestBody.CommitMessage = &commitMessage
|
||||
}
|
||||
if options != nil {
|
||||
pullRequestBody.CommitTitle = options.CommitTitle
|
||||
pullRequestBody.MergeMethod = options.MergeMethod
|
||||
pullRequestBody.SHA = options.SHA
|
||||
if options.DontDefaultIfBlank && commitMessage == "" {
|
||||
pullRequestBody.CommitMessage = &commitMessage
|
||||
}
|
||||
}
|
||||
req, err := s.client.NewRequest("PUT", u, pullRequestBody)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
mergeResult := new(PullRequestMergeResult)
|
||||
resp, err := s.client.Do(ctx, req, mergeResult)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return mergeResult, resp, nil
|
||||
}
|
||||
86
vendor/github.com/google/go-github/v57/github/pulls_reviewers.go
generated
vendored
86
vendor/github.com/google/go-github/v57/github/pulls_reviewers.go
generated
vendored
|
|
@ -1,86 +0,0 @@
|
|||
// Copyright 2017 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ReviewersRequest specifies users and teams for a pull request review request.
|
||||
type ReviewersRequest struct {
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
Reviewers []string `json:"reviewers,omitempty"`
|
||||
TeamReviewers []string `json:"team_reviewers,omitempty"`
|
||||
}
|
||||
|
||||
// Reviewers represents reviewers of a pull request.
|
||||
type Reviewers struct {
|
||||
Users []*User `json:"users,omitempty"`
|
||||
Teams []*Team `json:"teams,omitempty"`
|
||||
}
|
||||
|
||||
// RequestReviewers creates a review request for the provided reviewers for the specified pull request.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/review-requests#request-reviewers-for-a-pull-request
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers
|
||||
func (s *PullRequestsService) RequestReviewers(ctx context.Context, owner, repo string, number int, reviewers ReviewersRequest) (*PullRequest, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, number)
|
||||
req, err := s.client.NewRequest("POST", u, &reviewers)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
r := new(PullRequest)
|
||||
resp, err := s.client.Do(ctx, req, r)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return r, resp, nil
|
||||
}
|
||||
|
||||
// ListReviewers lists reviewers whose reviews have been requested on the specified pull request.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/review-requests#get-all-requested-reviewers-for-a-pull-request
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers
|
||||
func (s *PullRequestsService) ListReviewers(ctx context.Context, owner, repo string, number int, opts *ListOptions) (*Reviewers, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/%d/requested_reviewers", owner, repo, number)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
reviewers := new(Reviewers)
|
||||
resp, err := s.client.Do(ctx, req, reviewers)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return reviewers, resp, nil
|
||||
}
|
||||
|
||||
// RemoveReviewers removes the review request for the provided reviewers for the specified pull request.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/pulls/review-requests#remove-requested-reviewers-from-a-pull-request
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers
|
||||
func (s *PullRequestsService) RemoveReviewers(ctx context.Context, owner, repo string, number int, reviewers ReviewersRequest) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, number)
|
||||
req, err := s.client.NewRequest("DELETE", u, &reviewers)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
113
vendor/github.com/google/go-github/v57/github/rate_limit.go
generated
vendored
113
vendor/github.com/google/go-github/v57/github/rate_limit.go
generated
vendored
|
|
@ -1,113 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import "context"
|
||||
|
||||
// RateLimitService provides access to rate limit functions in the GitHub API.
|
||||
type RateLimitService service
|
||||
|
||||
// Rate represents the rate limit for the current client.
|
||||
type Rate struct {
|
||||
// The number of requests per hour the client is currently limited to.
|
||||
Limit int `json:"limit"`
|
||||
|
||||
// The number of remaining requests the client can make this hour.
|
||||
Remaining int `json:"remaining"`
|
||||
|
||||
// The time at which the current rate limit will reset.
|
||||
Reset Timestamp `json:"reset"`
|
||||
}
|
||||
|
||||
func (r Rate) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
|
||||
// RateLimits represents the rate limits for the current client.
|
||||
type RateLimits struct {
|
||||
// The rate limit for non-search API requests. Unauthenticated
|
||||
// requests are limited to 60 per hour. Authenticated requests are
|
||||
// limited to 5,000 per hour.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting
|
||||
Core *Rate `json:"core"`
|
||||
|
||||
// The rate limit for search API requests. Unauthenticated requests
|
||||
// are limited to 10 requests per minutes. Authenticated requests are
|
||||
// limited to 30 per minute.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/en/rest/search#rate-limit
|
||||
Search *Rate `json:"search"`
|
||||
|
||||
// GitHub API docs: https://docs.github.com/en/graphql/overview/resource-limitations#rate-limit
|
||||
GraphQL *Rate `json:"graphql"`
|
||||
|
||||
// GitHub API dos: https://docs.github.com/en/rest/rate-limit
|
||||
IntegrationManifest *Rate `json:"integration_manifest"`
|
||||
|
||||
SourceImport *Rate `json:"source_import"`
|
||||
CodeScanningUpload *Rate `json:"code_scanning_upload"`
|
||||
ActionsRunnerRegistration *Rate `json:"actions_runner_registration"`
|
||||
SCIM *Rate `json:"scim"`
|
||||
}
|
||||
|
||||
func (r RateLimits) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
|
||||
// Get returns the rate limits for the current client.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/rate-limit/rate-limit#get-rate-limit-status-for-the-authenticated-user
|
||||
//
|
||||
//meta:operation GET /rate_limit
|
||||
func (s *RateLimitService) Get(ctx context.Context) (*RateLimits, *Response, error) {
|
||||
req, err := s.client.NewRequest("GET", "rate_limit", nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
response := new(struct {
|
||||
Resources *RateLimits `json:"resources"`
|
||||
})
|
||||
|
||||
// This resource is not subject to rate limits.
|
||||
ctx = context.WithValue(ctx, bypassRateLimitCheck, true)
|
||||
resp, err := s.client.Do(ctx, req, response)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
if response.Resources != nil {
|
||||
s.client.rateMu.Lock()
|
||||
if response.Resources.Core != nil {
|
||||
s.client.rateLimits[coreCategory] = *response.Resources.Core
|
||||
}
|
||||
if response.Resources.Search != nil {
|
||||
s.client.rateLimits[searchCategory] = *response.Resources.Search
|
||||
}
|
||||
if response.Resources.GraphQL != nil {
|
||||
s.client.rateLimits[graphqlCategory] = *response.Resources.GraphQL
|
||||
}
|
||||
if response.Resources.IntegrationManifest != nil {
|
||||
s.client.rateLimits[integrationManifestCategory] = *response.Resources.IntegrationManifest
|
||||
}
|
||||
if response.Resources.SourceImport != nil {
|
||||
s.client.rateLimits[sourceImportCategory] = *response.Resources.SourceImport
|
||||
}
|
||||
if response.Resources.CodeScanningUpload != nil {
|
||||
s.client.rateLimits[codeScanningUploadCategory] = *response.Resources.CodeScanningUpload
|
||||
}
|
||||
if response.Resources.ActionsRunnerRegistration != nil {
|
||||
s.client.rateLimits[actionsRunnerRegistrationCategory] = *response.Resources.ActionsRunnerRegistration
|
||||
}
|
||||
if response.Resources.SCIM != nil {
|
||||
s.client.rateLimits[scimCategory] = *response.Resources.SCIM
|
||||
}
|
||||
s.client.rateMu.Unlock()
|
||||
}
|
||||
|
||||
return response.Resources, resp, nil
|
||||
}
|
||||
570
vendor/github.com/google/go-github/v57/github/reactions.go
generated
vendored
570
vendor/github.com/google/go-github/v57/github/reactions.go
generated
vendored
|
|
@ -1,570 +0,0 @@
|
|||
// Copyright 2016 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// ReactionsService provides access to the reactions-related functions in the
|
||||
// GitHub API.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions
|
||||
type ReactionsService service
|
||||
|
||||
// Reaction represents a GitHub reaction.
|
||||
type Reaction struct {
|
||||
// ID is the Reaction ID.
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
User *User `json:"user,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
// Content is the type of reaction.
|
||||
// Possible values are:
|
||||
// "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
|
||||
Content *string `json:"content,omitempty"`
|
||||
}
|
||||
|
||||
// Reactions represents a summary of GitHub reactions.
|
||||
type Reactions struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
PlusOne *int `json:"+1,omitempty"`
|
||||
MinusOne *int `json:"-1,omitempty"`
|
||||
Laugh *int `json:"laugh,omitempty"`
|
||||
Confused *int `json:"confused,omitempty"`
|
||||
Heart *int `json:"heart,omitempty"`
|
||||
Hooray *int `json:"hooray,omitempty"`
|
||||
Rocket *int `json:"rocket,omitempty"`
|
||||
Eyes *int `json:"eyes,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
func (r Reaction) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
|
||||
// ListCommentReactionOptions specifies the optional parameters to the
|
||||
// ReactionsService.ListCommentReactions method.
|
||||
type ListCommentReactionOptions struct {
|
||||
// Content restricts the returned comment reactions to only those with the given type.
|
||||
// Omit this parameter to list all reactions to a commit comment.
|
||||
// Possible values are: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
|
||||
Content string `url:"content,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListCommentReactions lists the reactions for a commit comment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-commit-comment
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/comments/{comment_id}/reactions
|
||||
func (s *ReactionsService) ListCommentReactions(ctx context.Context, owner, repo string, id int64, opts *ListCommentReactionOptions) ([]*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/comments/%v/reactions", owner, repo, id)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
var m []*Reaction
|
||||
resp, err := s.client.Do(ctx, req, &m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// CreateCommentReaction creates a reaction for a commit comment.
|
||||
// Note that if you have already created a reaction of type content, the
|
||||
// previously created reaction will be returned with Status: 200 OK.
|
||||
// The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-commit-comment
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/comments/{comment_id}/reactions
|
||||
func (s *ReactionsService) CreateCommentReaction(ctx context.Context, owner, repo string, id int64, content string) (*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/comments/%v/reactions", owner, repo, id)
|
||||
|
||||
body := &Reaction{Content: String(content)}
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
m := &Reaction{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// DeleteCommentReaction deletes the reaction for a commit comment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-a-commit-comment-reaction
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeleteCommentReaction(ctx context.Context, owner, repo string, commentID, reactionID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/comments/%v/reactions/%v", owner, repo, commentID, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, u)
|
||||
}
|
||||
|
||||
// DeleteCommentReactionByID deletes the reaction for a commit comment by repository ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-a-commit-comment-reaction
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeleteCommentReactionByID(ctx context.Context, repoID, commentID, reactionID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repositories/%v/comments/%v/reactions/%v", repoID, commentID, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, u)
|
||||
}
|
||||
|
||||
// ListIssueReactions lists the reactions for an issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/issues/{issue_number}/reactions
|
||||
func (s *ReactionsService) ListIssueReactions(ctx context.Context, owner, repo string, number int, opts *ListOptions) ([]*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%v/reactions", owner, repo, number)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
var m []*Reaction
|
||||
resp, err := s.client.Do(ctx, req, &m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// CreateIssueReaction creates a reaction for an issue.
|
||||
// Note that if you have already created a reaction of type content, the
|
||||
// previously created reaction will be returned with Status: 200 OK.
|
||||
// The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#create-reaction-for-an-issue
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/issues/{issue_number}/reactions
|
||||
func (s *ReactionsService) CreateIssueReaction(ctx context.Context, owner, repo string, number int, content string) (*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/%v/reactions", owner, repo, number)
|
||||
|
||||
body := &Reaction{Content: String(content)}
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
m := &Reaction{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// DeleteIssueReaction deletes the reaction to an issue.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-an-issue-reaction
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeleteIssueReaction(ctx context.Context, owner, repo string, issueNumber int, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/issues/%v/reactions/%v", owner, repo, issueNumber, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
// DeleteIssueReactionByID deletes the reaction to an issue by repository ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-an-issue-reaction
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeleteIssueReactionByID(ctx context.Context, repoID, issueNumber int, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/issues/%v/reactions/%v", repoID, issueNumber, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
// ListIssueCommentReactions lists the reactions for an issue comment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#list-reactions-for-an-issue-comment
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions
|
||||
func (s *ReactionsService) ListIssueCommentReactions(ctx context.Context, owner, repo string, id int64, opts *ListOptions) ([]*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/comments/%v/reactions", owner, repo, id)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
var m []*Reaction
|
||||
resp, err := s.client.Do(ctx, req, &m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// CreateIssueCommentReaction creates a reaction for an issue comment.
|
||||
// Note that if you have already created a reaction of type content, the
|
||||
// previously created reaction will be returned with Status: 200 OK.
|
||||
// The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#create-reaction-for-an-issue-comment
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions
|
||||
func (s *ReactionsService) CreateIssueCommentReaction(ctx context.Context, owner, repo string, id int64, content string) (*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/issues/comments/%v/reactions", owner, repo, id)
|
||||
|
||||
body := &Reaction{Content: String(content)}
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
m := &Reaction{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// DeleteIssueCommentReaction deletes the reaction to an issue comment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-an-issue-comment-reaction
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeleteIssueCommentReaction(ctx context.Context, owner, repo string, commentID, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/issues/comments/%v/reactions/%v", owner, repo, commentID, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
// DeleteIssueCommentReactionByID deletes the reaction to an issue comment by repository ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-an-issue-comment-reaction
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeleteIssueCommentReactionByID(ctx context.Context, repoID, commentID, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/issues/comments/%v/reactions/%v", repoID, commentID, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
// ListPullRequestCommentReactions lists the reactions for a pull request review comment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-pull-request-review-comment
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions
|
||||
func (s *ReactionsService) ListPullRequestCommentReactions(ctx context.Context, owner, repo string, id int64, opts *ListOptions) ([]*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/comments/%v/reactions", owner, repo, id)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
var m []*Reaction
|
||||
resp, err := s.client.Do(ctx, req, &m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// CreatePullRequestCommentReaction creates a reaction for a pull request review comment.
|
||||
// Note that if you have already created a reaction of type content, the
|
||||
// previously created reaction will be returned with Status: 200 OK.
|
||||
// The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-pull-request-review-comment
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions
|
||||
func (s *ReactionsService) CreatePullRequestCommentReaction(ctx context.Context, owner, repo string, id int64, content string) (*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/pulls/comments/%v/reactions", owner, repo, id)
|
||||
|
||||
body := &Reaction{Content: String(content)}
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
m := &Reaction{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// DeletePullRequestCommentReaction deletes the reaction to a pull request review comment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-a-pull-request-comment-reaction
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeletePullRequestCommentReaction(ctx context.Context, owner, repo string, commentID, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("repos/%v/%v/pulls/comments/%v/reactions/%v", owner, repo, commentID, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
// DeletePullRequestCommentReactionByID deletes the reaction to a pull request review comment by repository ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-a-pull-request-comment-reaction
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeletePullRequestCommentReactionByID(ctx context.Context, repoID, commentID, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("repositories/%v/pulls/comments/%v/reactions/%v", repoID, commentID, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
// ListTeamDiscussionReactions lists the reactions for a team discussion.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-legacy
|
||||
//
|
||||
//meta:operation GET /teams/{team_id}/discussions/{discussion_number}/reactions
|
||||
func (s *ReactionsService) ListTeamDiscussionReactions(ctx context.Context, teamID int64, discussionNumber int, opts *ListOptions) ([]*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("teams/%v/discussions/%v/reactions", teamID, discussionNumber)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
var m []*Reaction
|
||||
resp, err := s.client.Do(ctx, req, &m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// CreateTeamDiscussionReaction creates a reaction for a team discussion.
|
||||
// The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-legacy
|
||||
//
|
||||
//meta:operation POST /teams/{team_id}/discussions/{discussion_number}/reactions
|
||||
func (s *ReactionsService) CreateTeamDiscussionReaction(ctx context.Context, teamID int64, discussionNumber int, content string) (*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("teams/%v/discussions/%v/reactions", teamID, discussionNumber)
|
||||
|
||||
body := &Reaction{Content: String(content)}
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
m := &Reaction{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// DeleteTeamDiscussionReaction deletes the reaction to a team discussion.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-team-discussion-reaction
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeleteTeamDiscussionReaction(ctx context.Context, org, teamSlug string, discussionNumber int, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/teams/%v/discussions/%v/reactions/%v", org, teamSlug, discussionNumber, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
// DeleteTeamDiscussionReactionByOrgIDAndTeamID deletes the reaction to a team discussion by organization ID and team ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions
|
||||
func (s *ReactionsService) DeleteTeamDiscussionReactionByOrgIDAndTeamID(ctx context.Context, orgID, teamID, discussionNumber int, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("organizations/%v/team/%v/discussions/%v/reactions/%v", orgID, teamID, discussionNumber, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
// ListTeamDiscussionCommentReactions lists the reactions for a team discussion comment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#list-reactions-for-a-team-discussion-comment-legacy
|
||||
//
|
||||
//meta:operation GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions
|
||||
func (s *ReactionsService) ListTeamDiscussionCommentReactions(ctx context.Context, teamID int64, discussionNumber, commentNumber int, opts *ListOptions) ([]*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("teams/%v/discussions/%v/comments/%v/reactions", teamID, discussionNumber, commentNumber)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
var m []*Reaction
|
||||
resp, err := s.client.Do(ctx, req, &m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// CreateTeamDiscussionCommentReaction creates a reaction for a team discussion comment.
|
||||
// The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment-legacy
|
||||
//
|
||||
//meta:operation POST /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions
|
||||
func (s *ReactionsService) CreateTeamDiscussionCommentReaction(ctx context.Context, teamID int64, discussionNumber, commentNumber int, content string) (*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("teams/%v/discussions/%v/comments/%v/reactions", teamID, discussionNumber, commentNumber)
|
||||
|
||||
body := &Reaction{Content: String(content)}
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
m := &Reaction{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
|
||||
// DeleteTeamDiscussionCommentReaction deletes the reaction to a team discussion comment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#delete-team-discussion-comment-reaction
|
||||
//
|
||||
//meta:operation DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}
|
||||
func (s *ReactionsService) DeleteTeamDiscussionCommentReaction(ctx context.Context, org, teamSlug string, discussionNumber, commentNumber int, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("orgs/%v/teams/%v/discussions/%v/comments/%v/reactions/%v", org, teamSlug, discussionNumber, commentNumber, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
// DeleteTeamDiscussionCommentReactionByOrgIDAndTeamID deletes the reaction to a team discussion comment by organization ID and team ID.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-team-discussion-comment
|
||||
//
|
||||
//meta:operation POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions
|
||||
func (s *ReactionsService) DeleteTeamDiscussionCommentReactionByOrgIDAndTeamID(ctx context.Context, orgID, teamID, discussionNumber, commentNumber int, reactionID int64) (*Response, error) {
|
||||
url := fmt.Sprintf("organizations/%v/team/%v/discussions/%v/comments/%v/reactions/%v", orgID, teamID, discussionNumber, commentNumber, reactionID)
|
||||
|
||||
return s.deleteReaction(ctx, url)
|
||||
}
|
||||
|
||||
func (s *ReactionsService) deleteReaction(ctx context.Context, url string) (*Response, error) {
|
||||
req, err := s.client.NewRequest(http.MethodDelete, url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// CreateReleaseReaction creates a reaction to a release.
|
||||
// Note that a response with a Status: 200 OK means that you already
|
||||
// added the reaction type to this release.
|
||||
// The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/reactions/reactions#create-reaction-for-a-release
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/releases/{release_id}/reactions
|
||||
func (s *ReactionsService) CreateReleaseReaction(ctx context.Context, owner, repo string, releaseID int64, content string) (*Reaction, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/releases/%v/reactions", owner, repo, releaseID)
|
||||
|
||||
body := &Reaction{Content: String(content)}
|
||||
req, err := s.client.NewRequest("POST", u, body)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Accept", mediaTypeReactionsPreview)
|
||||
|
||||
m := &Reaction{}
|
||||
resp, err := s.client.Do(ctx, req, m)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return m, resp, nil
|
||||
}
|
||||
2387
vendor/github.com/google/go-github/v57/github/repos.go
generated
vendored
2387
vendor/github.com/google/go-github/v57/github/repos.go
generated
vendored
File diff suppressed because it is too large
Load diff
66
vendor/github.com/google/go-github/v57/github/repos_actions_permissions.go
generated
vendored
66
vendor/github.com/google/go-github/v57/github/repos_actions_permissions.go
generated
vendored
|
|
@ -1,66 +0,0 @@
|
|||
// Copyright 2022 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ActionsPermissionsRepository represents a policy for repositories and allowed actions in a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions
|
||||
type ActionsPermissionsRepository struct {
|
||||
Enabled *bool `json:"enabled,omitempty"`
|
||||
AllowedActions *string `json:"allowed_actions,omitempty"`
|
||||
SelectedActionsURL *string `json:"selected_actions_url,omitempty"`
|
||||
}
|
||||
|
||||
func (a ActionsPermissionsRepository) String() string {
|
||||
return Stringify(a)
|
||||
}
|
||||
|
||||
// GetActionsPermissions gets the GitHub Actions permissions policy for repositories and allowed actions in a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/actions/permissions
|
||||
func (s *RepositoriesService) GetActionsPermissions(ctx context.Context, owner, repo string) (*ActionsPermissionsRepository, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/permissions", owner, repo)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
permissions := new(ActionsPermissionsRepository)
|
||||
resp, err := s.client.Do(ctx, req, permissions)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return permissions, resp, nil
|
||||
}
|
||||
|
||||
// EditActionsPermissions sets the permissions policy for repositories and allowed actions in a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/actions/permissions#set-github-actions-permissions-for-a-repository
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/actions/permissions
|
||||
func (s *RepositoriesService) EditActionsPermissions(ctx context.Context, owner, repo string, actionsPermissionsRepository ActionsPermissionsRepository) (*ActionsPermissionsRepository, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/actions/permissions", owner, repo)
|
||||
req, err := s.client.NewRequest("PUT", u, actionsPermissionsRepository)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
permissions := new(ActionsPermissionsRepository)
|
||||
resp, err := s.client.Do(ctx, req, permissions)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return permissions, resp, nil
|
||||
}
|
||||
112
vendor/github.com/google/go-github/v57/github/repos_autolinks.go
generated
vendored
112
vendor/github.com/google/go-github/v57/github/repos_autolinks.go
generated
vendored
|
|
@ -1,112 +0,0 @@
|
|||
// Copyright 2021 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// AutolinkOptions specifies parameters for RepositoriesService.AddAutolink method.
|
||||
type AutolinkOptions struct {
|
||||
KeyPrefix *string `json:"key_prefix,omitempty"`
|
||||
URLTemplate *string `json:"url_template,omitempty"`
|
||||
IsAlphanumeric *bool `json:"is_alphanumeric,omitempty"`
|
||||
}
|
||||
|
||||
// Autolink represents autolinks to external resources like JIRA issues and Zendesk tickets.
|
||||
type Autolink struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
KeyPrefix *string `json:"key_prefix,omitempty"`
|
||||
URLTemplate *string `json:"url_template,omitempty"`
|
||||
IsAlphanumeric *bool `json:"is_alphanumeric,omitempty"`
|
||||
}
|
||||
|
||||
// ListAutolinks returns a list of autolinks configured for the given repository.
|
||||
// Information about autolinks are only available to repository administrators.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/autolinks#list-all-autolinks-of-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/autolinks
|
||||
func (s *RepositoriesService) ListAutolinks(ctx context.Context, owner, repo string, opts *ListOptions) ([]*Autolink, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/autolinks", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var autolinks []*Autolink
|
||||
resp, err := s.client.Do(ctx, req, &autolinks)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return autolinks, resp, nil
|
||||
}
|
||||
|
||||
// AddAutolink creates an autolink reference for a repository.
|
||||
// Users with admin access to the repository can create an autolink.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/autolinks#create-an-autolink-reference-for-a-repository
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/autolinks
|
||||
func (s *RepositoriesService) AddAutolink(ctx context.Context, owner, repo string, opts *AutolinkOptions) (*Autolink, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/autolinks", owner, repo)
|
||||
req, err := s.client.NewRequest("POST", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
al := new(Autolink)
|
||||
resp, err := s.client.Do(ctx, req, al)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
return al, resp, nil
|
||||
}
|
||||
|
||||
// GetAutolink returns a single autolink reference by ID that was configured for the given repository.
|
||||
// Information about autolinks are only available to repository administrators.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/autolinks#get-an-autolink-reference-of-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/autolinks/{autolink_id}
|
||||
func (s *RepositoriesService) GetAutolink(ctx context.Context, owner, repo string, id int64) (*Autolink, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/autolinks/%v", owner, repo, id)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var autolink *Autolink
|
||||
resp, err := s.client.Do(ctx, req, &autolink)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return autolink, resp, nil
|
||||
}
|
||||
|
||||
// DeleteAutolink deletes a single autolink reference by ID that was configured for the given repository.
|
||||
// Information about autolinks are only available to repository administrators.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/autolinks#delete-an-autolink-reference-from-a-repository
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}
|
||||
func (s *RepositoriesService) DeleteAutolink(ctx context.Context, owner, repo string, id int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/autolinks/%v", owner, repo, id)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
176
vendor/github.com/google/go-github/v57/github/repos_collaborators.go
generated
vendored
176
vendor/github.com/google/go-github/v57/github/repos_collaborators.go
generated
vendored
|
|
@ -1,176 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ListCollaboratorsOptions specifies the optional parameters to the
|
||||
// RepositoriesService.ListCollaborators method.
|
||||
type ListCollaboratorsOptions struct {
|
||||
// Affiliation specifies how collaborators should be filtered by their affiliation.
|
||||
// Possible values are:
|
||||
// outside - All outside collaborators of an organization-owned repository
|
||||
// direct - All collaborators with permissions to an organization-owned repository,
|
||||
// regardless of organization membership status
|
||||
// all - All collaborators the authenticated user can see
|
||||
//
|
||||
// Default value is "all".
|
||||
Affiliation string `url:"affiliation,omitempty"`
|
||||
|
||||
// Permission specifies how collaborators should be filtered by the permissions they have on the repository.
|
||||
// Possible values are:
|
||||
// "pull", "triage", "push", "maintain", "admin"
|
||||
//
|
||||
// If not specified, all collaborators will be returned.
|
||||
Permission string `url:"permission,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// CollaboratorInvitation represents an invitation created when adding a collaborator.
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/collaborators/#response-when-a-new-invitation-is-created
|
||||
type CollaboratorInvitation struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Repo *Repository `json:"repository,omitempty"`
|
||||
Invitee *User `json:"invitee,omitempty"`
|
||||
Inviter *User `json:"inviter,omitempty"`
|
||||
Permissions *string `json:"permissions,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
}
|
||||
|
||||
// ListCollaborators lists the GitHub users that have access to the repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/collaborators/collaborators#list-repository-collaborators
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/collaborators
|
||||
func (s *RepositoriesService) ListCollaborators(ctx context.Context, owner, repo string, opts *ListCollaboratorsOptions) ([]*User, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/collaborators", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var users []*User
|
||||
resp, err := s.client.Do(ctx, req, &users)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return users, resp, nil
|
||||
}
|
||||
|
||||
// IsCollaborator checks whether the specified GitHub user has collaborator
|
||||
// access to the given repo.
|
||||
// Note: This will return false if the user is not a collaborator OR the user
|
||||
// is not a GitHub user.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/collaborators/collaborators#check-if-a-user-is-a-repository-collaborator
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/collaborators/{username}
|
||||
func (s *RepositoriesService) IsCollaborator(ctx context.Context, owner, repo, user string) (bool, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/collaborators/%v", owner, repo, user)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
resp, err := s.client.Do(ctx, req, nil)
|
||||
isCollab, err := parseBoolResponse(err)
|
||||
return isCollab, resp, err
|
||||
}
|
||||
|
||||
// RepositoryPermissionLevel represents the permission level an organization
|
||||
// member has for a given repository.
|
||||
type RepositoryPermissionLevel struct {
|
||||
// Possible values: "admin", "write", "read", "none"
|
||||
Permission *string `json:"permission,omitempty"`
|
||||
|
||||
User *User `json:"user,omitempty"`
|
||||
}
|
||||
|
||||
// GetPermissionLevel retrieves the specific permission level a collaborator has for a given repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/collaborators/collaborators#get-repository-permissions-for-a-user
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/collaborators/{username}/permission
|
||||
func (s *RepositoriesService) GetPermissionLevel(ctx context.Context, owner, repo, user string) (*RepositoryPermissionLevel, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/collaborators/%v/permission", owner, repo, user)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
rpl := new(RepositoryPermissionLevel)
|
||||
resp, err := s.client.Do(ctx, req, rpl)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return rpl, resp, nil
|
||||
}
|
||||
|
||||
// RepositoryAddCollaboratorOptions specifies the optional parameters to the
|
||||
// RepositoriesService.AddCollaborator method.
|
||||
type RepositoryAddCollaboratorOptions struct {
|
||||
// Permission specifies the permission to grant the user on this repository.
|
||||
// Possible values are:
|
||||
// pull - team members can pull, but not push to or administer this repository
|
||||
// push - team members can pull and push, but not administer this repository
|
||||
// admin - team members can pull, push and administer this repository
|
||||
// maintain - team members can manage the repository without access to sensitive or destructive actions.
|
||||
// triage - team members can proactively manage issues and pull requests without write access.
|
||||
//
|
||||
// Default value is "push". This option is only valid for organization-owned repositories.
|
||||
Permission string `json:"permission,omitempty"`
|
||||
}
|
||||
|
||||
// AddCollaborator sends an invitation to the specified GitHub user
|
||||
// to become a collaborator to the given repo.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/collaborators/collaborators#add-a-repository-collaborator
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/collaborators/{username}
|
||||
func (s *RepositoriesService) AddCollaborator(ctx context.Context, owner, repo, user string, opts *RepositoryAddCollaboratorOptions) (*CollaboratorInvitation, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/collaborators/%v", owner, repo, user)
|
||||
req, err := s.client.NewRequest("PUT", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
acr := new(CollaboratorInvitation)
|
||||
resp, err := s.client.Do(ctx, req, acr)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return acr, resp, nil
|
||||
}
|
||||
|
||||
// RemoveCollaborator removes the specified GitHub user as collaborator from the given repo.
|
||||
// Note: Does not return error if a valid user that is not a collaborator is removed.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/collaborators/collaborators#remove-a-repository-collaborator
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/collaborators/{username}
|
||||
func (s *RepositoriesService) RemoveCollaborator(ctx context.Context, owner, repo, user string) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/collaborators/%v", owner, repo, user)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
359
vendor/github.com/google/go-github/v57/github/repos_contents.go
generated
vendored
359
vendor/github.com/google/go-github/v57/github/repos_contents.go
generated
vendored
|
|
@ -1,359 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Repository contents API methods.
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents/
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"path"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var ErrPathForbidden = errors.New("path must not contain '..' due to auth vulnerability issue")
|
||||
|
||||
// RepositoryContent represents a file or directory in a github repository.
|
||||
type RepositoryContent struct {
|
||||
Type *string `json:"type,omitempty"`
|
||||
// Target is only set if the type is "symlink" and the target is not a normal file.
|
||||
// If Target is set, Path will be the symlink path.
|
||||
Target *string `json:"target,omitempty"`
|
||||
Encoding *string `json:"encoding,omitempty"`
|
||||
Size *int `json:"size,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Path *string `json:"path,omitempty"`
|
||||
// Content contains the actual file content, which may be encoded.
|
||||
// Callers should call GetContent which will decode the content if
|
||||
// necessary.
|
||||
Content *string `json:"content,omitempty"`
|
||||
SHA *string `json:"sha,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
GitURL *string `json:"git_url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
DownloadURL *string `json:"download_url,omitempty"`
|
||||
SubmoduleGitURL *string `json:"submodule_git_url,omitempty"`
|
||||
}
|
||||
|
||||
// RepositoryContentResponse holds the parsed response from CreateFile, UpdateFile, and DeleteFile.
|
||||
type RepositoryContentResponse struct {
|
||||
Content *RepositoryContent `json:"content,omitempty"`
|
||||
Commit `json:"commit,omitempty"`
|
||||
}
|
||||
|
||||
// RepositoryContentFileOptions specifies optional parameters for CreateFile, UpdateFile, and DeleteFile.
|
||||
type RepositoryContentFileOptions struct {
|
||||
Message *string `json:"message,omitempty"`
|
||||
Content []byte `json:"content"` // unencoded
|
||||
SHA *string `json:"sha,omitempty"`
|
||||
Branch *string `json:"branch,omitempty"`
|
||||
Author *CommitAuthor `json:"author,omitempty"`
|
||||
Committer *CommitAuthor `json:"committer,omitempty"`
|
||||
}
|
||||
|
||||
// RepositoryContentGetOptions represents an optional ref parameter, which can be a SHA,
|
||||
// branch, or tag
|
||||
type RepositoryContentGetOptions struct {
|
||||
Ref string `url:"ref,omitempty"`
|
||||
}
|
||||
|
||||
// String converts RepositoryContent to a string. It's primarily for testing.
|
||||
func (r RepositoryContent) String() string {
|
||||
return Stringify(r)
|
||||
}
|
||||
|
||||
// GetContent returns the content of r, decoding it if necessary.
|
||||
func (r *RepositoryContent) GetContent() (string, error) {
|
||||
var encoding string
|
||||
if r.Encoding != nil {
|
||||
encoding = *r.Encoding
|
||||
}
|
||||
|
||||
switch encoding {
|
||||
case "base64":
|
||||
if r.Content == nil {
|
||||
return "", errors.New("malformed response: base64 encoding of null content")
|
||||
}
|
||||
c, err := base64.StdEncoding.DecodeString(*r.Content)
|
||||
return string(c), err
|
||||
case "":
|
||||
if r.Content == nil {
|
||||
return "", nil
|
||||
}
|
||||
return *r.Content, nil
|
||||
case "none":
|
||||
return "", errors.New("unsupported content encoding: none, this may occur when file size > 1 MB, if that is the case consider using DownloadContents")
|
||||
default:
|
||||
return "", fmt.Errorf("unsupported content encoding: %v", encoding)
|
||||
}
|
||||
}
|
||||
|
||||
// GetReadme gets the Readme file for the repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents#get-a-repository-readme
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/readme
|
||||
func (s *RepositoriesService) GetReadme(ctx context.Context, owner, repo string, opts *RepositoryContentGetOptions) (*RepositoryContent, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/readme", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
readme := new(RepositoryContent)
|
||||
resp, err := s.client.Do(ctx, req, readme)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return readme, resp, nil
|
||||
}
|
||||
|
||||
// DownloadContents returns an io.ReadCloser that reads the contents of the
|
||||
// specified file. This function will work with files of any size, as opposed
|
||||
// to GetContents which is limited to 1 Mb files. It is the caller's
|
||||
// responsibility to close the ReadCloser.
|
||||
//
|
||||
// It is possible for the download to result in a failed response when the
|
||||
// returned error is nil. Callers should check the returned Response status
|
||||
// code to verify the content is from a successful response.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents#get-repository-content
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/contents/{path}
|
||||
func (s *RepositoriesService) DownloadContents(ctx context.Context, owner, repo, filepath string, opts *RepositoryContentGetOptions) (io.ReadCloser, *Response, error) {
|
||||
dir := path.Dir(filepath)
|
||||
filename := path.Base(filepath)
|
||||
_, dirContents, resp, err := s.GetContents(ctx, owner, repo, dir, opts)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
for _, contents := range dirContents {
|
||||
if *contents.Name == filename {
|
||||
if contents.DownloadURL == nil || *contents.DownloadURL == "" {
|
||||
return nil, resp, fmt.Errorf("no download link found for %s", filepath)
|
||||
}
|
||||
|
||||
dlResp, err := s.client.client.Get(*contents.DownloadURL)
|
||||
if err != nil {
|
||||
return nil, &Response{Response: dlResp}, err
|
||||
}
|
||||
|
||||
return dlResp.Body, &Response{Response: dlResp}, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, resp, fmt.Errorf("no file named %s found in %s", filename, dir)
|
||||
}
|
||||
|
||||
// DownloadContentsWithMeta is identical to DownloadContents but additionally
|
||||
// returns the RepositoryContent of the requested file. This additional data
|
||||
// is useful for future operations involving the requested file. For merely
|
||||
// reading the content of a file, DownloadContents is perfectly adequate.
|
||||
//
|
||||
// It is possible for the download to result in a failed response when the
|
||||
// returned error is nil. Callers should check the returned Response status
|
||||
// code to verify the content is from a successful response.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents#get-repository-content
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/contents/{path}
|
||||
func (s *RepositoriesService) DownloadContentsWithMeta(ctx context.Context, owner, repo, filepath string, opts *RepositoryContentGetOptions) (io.ReadCloser, *RepositoryContent, *Response, error) {
|
||||
dir := path.Dir(filepath)
|
||||
filename := path.Base(filepath)
|
||||
_, dirContents, resp, err := s.GetContents(ctx, owner, repo, dir, opts)
|
||||
if err != nil {
|
||||
return nil, nil, resp, err
|
||||
}
|
||||
|
||||
for _, contents := range dirContents {
|
||||
if *contents.Name == filename {
|
||||
if contents.DownloadURL == nil || *contents.DownloadURL == "" {
|
||||
return nil, contents, resp, fmt.Errorf("no download link found for %s", filepath)
|
||||
}
|
||||
|
||||
dlResp, err := s.client.client.Get(*contents.DownloadURL)
|
||||
if err != nil {
|
||||
return nil, contents, &Response{Response: dlResp}, err
|
||||
}
|
||||
|
||||
return dlResp.Body, contents, &Response{Response: dlResp}, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, nil, resp, fmt.Errorf("no file named %s found in %s", filename, dir)
|
||||
}
|
||||
|
||||
// GetContents can return either the metadata and content of a single file
|
||||
// (when path references a file) or the metadata of all the files and/or
|
||||
// subdirectories of a directory (when path references a directory). To make it
|
||||
// easy to distinguish between both result types and to mimic the API as much
|
||||
// as possible, both result types will be returned but only one will contain a
|
||||
// value and the other will be nil.
|
||||
//
|
||||
// Due to an auth vulnerability issue in the GitHub v3 API, ".." is not allowed
|
||||
// to appear anywhere in the "path" or this method will return an error.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents#get-repository-content
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/contents/{path}
|
||||
func (s *RepositoriesService) GetContents(ctx context.Context, owner, repo, path string, opts *RepositoryContentGetOptions) (fileContent *RepositoryContent, directoryContent []*RepositoryContent, resp *Response, err error) {
|
||||
if strings.Contains(path, "..") {
|
||||
return nil, nil, nil, ErrPathForbidden
|
||||
}
|
||||
|
||||
escapedPath := (&url.URL{Path: strings.TrimSuffix(path, "/")}).String()
|
||||
u := fmt.Sprintf("repos/%s/%s/contents/%s", owner, repo, escapedPath)
|
||||
u, err = addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
|
||||
var rawJSON json.RawMessage
|
||||
resp, err = s.client.Do(ctx, req, &rawJSON)
|
||||
if err != nil {
|
||||
return nil, nil, resp, err
|
||||
}
|
||||
|
||||
fileUnmarshalError := json.Unmarshal(rawJSON, &fileContent)
|
||||
if fileUnmarshalError == nil {
|
||||
return fileContent, nil, resp, nil
|
||||
}
|
||||
|
||||
directoryUnmarshalError := json.Unmarshal(rawJSON, &directoryContent)
|
||||
if directoryUnmarshalError == nil {
|
||||
return nil, directoryContent, resp, nil
|
||||
}
|
||||
|
||||
return nil, nil, resp, fmt.Errorf("unmarshalling failed for both file and directory content: %s and %s", fileUnmarshalError, directoryUnmarshalError)
|
||||
}
|
||||
|
||||
// CreateFile creates a new file in a repository at the given path and returns
|
||||
// the commit and file metadata.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents#create-or-update-file-contents
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/contents/{path}
|
||||
func (s *RepositoriesService) CreateFile(ctx context.Context, owner, repo, path string, opts *RepositoryContentFileOptions) (*RepositoryContentResponse, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/contents/%s", owner, repo, path)
|
||||
req, err := s.client.NewRequest("PUT", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
createResponse := new(RepositoryContentResponse)
|
||||
resp, err := s.client.Do(ctx, req, createResponse)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return createResponse, resp, nil
|
||||
}
|
||||
|
||||
// UpdateFile updates a file in a repository at the given path and returns the
|
||||
// commit and file metadata. Requires the blob SHA of the file being updated.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents#create-or-update-file-contents
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/contents/{path}
|
||||
func (s *RepositoriesService) UpdateFile(ctx context.Context, owner, repo, path string, opts *RepositoryContentFileOptions) (*RepositoryContentResponse, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/contents/%s", owner, repo, path)
|
||||
req, err := s.client.NewRequest("PUT", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
updateResponse := new(RepositoryContentResponse)
|
||||
resp, err := s.client.Do(ctx, req, updateResponse)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return updateResponse, resp, nil
|
||||
}
|
||||
|
||||
// DeleteFile deletes a file from a repository and returns the commit.
|
||||
// Requires the blob SHA of the file to be deleted.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents#delete-a-file
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/contents/{path}
|
||||
func (s *RepositoriesService) DeleteFile(ctx context.Context, owner, repo, path string, opts *RepositoryContentFileOptions) (*RepositoryContentResponse, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/contents/%s", owner, repo, path)
|
||||
req, err := s.client.NewRequest("DELETE", u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
deleteResponse := new(RepositoryContentResponse)
|
||||
resp, err := s.client.Do(ctx, req, deleteResponse)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return deleteResponse, resp, nil
|
||||
}
|
||||
|
||||
// ArchiveFormat is used to define the archive type when calling GetArchiveLink.
|
||||
type ArchiveFormat string
|
||||
|
||||
const (
|
||||
// Tarball specifies an archive in gzipped tar format.
|
||||
Tarball ArchiveFormat = "tarball"
|
||||
|
||||
// Zipball specifies an archive in zip format.
|
||||
Zipball ArchiveFormat = "zipball"
|
||||
)
|
||||
|
||||
// GetArchiveLink returns an URL to download a tarball or zipball archive for a
|
||||
// repository. The archiveFormat can be specified by either the github.Tarball
|
||||
// or github.Zipball constant.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents#download-a-repository-archive-tar
|
||||
// GitHub API docs: https://docs.github.com/rest/repos/contents#download-a-repository-archive-zip
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/tarball/{ref}
|
||||
//meta:operation GET /repos/{owner}/{repo}/zipball/{ref}
|
||||
func (s *RepositoriesService) GetArchiveLink(ctx context.Context, owner, repo string, archiveformat ArchiveFormat, opts *RepositoryContentGetOptions, maxRedirects int) (*url.URL, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/%s", owner, repo, archiveformat)
|
||||
if opts != nil && opts.Ref != "" {
|
||||
u += fmt.Sprintf("/%s", opts.Ref)
|
||||
}
|
||||
resp, err := s.client.roundTripWithOptionalFollowRedirect(ctx, u, maxRedirects)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusFound {
|
||||
return nil, newResponse(resp), fmt.Errorf("unexpected status code: %s", resp.Status)
|
||||
}
|
||||
|
||||
parsedURL, err := url.Parse(resp.Header.Get("Location"))
|
||||
if err != nil {
|
||||
return nil, newResponse(resp), err
|
||||
}
|
||||
|
||||
return parsedURL, newResponse(resp), nil
|
||||
}
|
||||
264
vendor/github.com/google/go-github/v57/github/repos_deployments.go
generated
vendored
264
vendor/github.com/google/go-github/v57/github/repos_deployments.go
generated
vendored
|
|
@ -1,264 +0,0 @@
|
|||
// Copyright 2014 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Deployment represents a deployment in a repo
|
||||
type Deployment struct {
|
||||
URL *string `json:"url,omitempty"`
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
SHA *string `json:"sha,omitempty"`
|
||||
Ref *string `json:"ref,omitempty"`
|
||||
Task *string `json:"task,omitempty"`
|
||||
Payload json.RawMessage `json:"payload,omitempty"`
|
||||
Environment *string `json:"environment,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
Creator *User `json:"creator,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
StatusesURL *string `json:"statuses_url,omitempty"`
|
||||
RepositoryURL *string `json:"repository_url,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
}
|
||||
|
||||
// DeploymentRequest represents a deployment request
|
||||
type DeploymentRequest struct {
|
||||
Ref *string `json:"ref,omitempty"`
|
||||
Task *string `json:"task,omitempty"`
|
||||
AutoMerge *bool `json:"auto_merge,omitempty"`
|
||||
RequiredContexts *[]string `json:"required_contexts,omitempty"`
|
||||
Payload interface{} `json:"payload,omitempty"`
|
||||
Environment *string `json:"environment,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
TransientEnvironment *bool `json:"transient_environment,omitempty"`
|
||||
ProductionEnvironment *bool `json:"production_environment,omitempty"`
|
||||
}
|
||||
|
||||
// DeploymentsListOptions specifies the optional parameters to the
|
||||
// RepositoriesService.ListDeployments method.
|
||||
type DeploymentsListOptions struct {
|
||||
// SHA of the Deployment.
|
||||
SHA string `url:"sha,omitempty"`
|
||||
|
||||
// List deployments for a given ref.
|
||||
Ref string `url:"ref,omitempty"`
|
||||
|
||||
// List deployments for a given task.
|
||||
Task string `url:"task,omitempty"`
|
||||
|
||||
// List deployments for a given environment.
|
||||
Environment string `url:"environment,omitempty"`
|
||||
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListDeployments lists the deployments of a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/deployments#list-deployments
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/deployments
|
||||
func (s *RepositoriesService) ListDeployments(ctx context.Context, owner, repo string, opts *DeploymentsListOptions) ([]*Deployment, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/deployments", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var deployments []*Deployment
|
||||
resp, err := s.client.Do(ctx, req, &deployments)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return deployments, resp, nil
|
||||
}
|
||||
|
||||
// GetDeployment returns a single deployment of a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/deployments#get-a-deployment
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/deployments/{deployment_id}
|
||||
func (s *RepositoriesService) GetDeployment(ctx context.Context, owner, repo string, deploymentID int64) (*Deployment, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/deployments/%v", owner, repo, deploymentID)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
deployment := new(Deployment)
|
||||
resp, err := s.client.Do(ctx, req, deployment)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return deployment, resp, nil
|
||||
}
|
||||
|
||||
// CreateDeployment creates a new deployment for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/deployments#create-a-deployment
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/deployments
|
||||
func (s *RepositoriesService) CreateDeployment(ctx context.Context, owner, repo string, request *DeploymentRequest) (*Deployment, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/deployments", owner, repo)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, request)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
acceptHeaders := []string{mediaTypeDeploymentStatusPreview, mediaTypeExpandDeploymentStatusPreview}
|
||||
req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
|
||||
|
||||
d := new(Deployment)
|
||||
resp, err := s.client.Do(ctx, req, d)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return d, resp, nil
|
||||
}
|
||||
|
||||
// DeleteDeployment deletes an existing deployment for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/deployments#delete-a-deployment
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/deployments/{deployment_id}
|
||||
func (s *RepositoriesService) DeleteDeployment(ctx context.Context, owner, repo string, deploymentID int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/deployments/%v", owner, repo, deploymentID)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// DeploymentStatus represents the status of a
|
||||
// particular deployment.
|
||||
type DeploymentStatus struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
// State is the deployment state.
|
||||
// Possible values are: "pending", "success", "failure", "error",
|
||||
// "inactive", "in_progress", "queued".
|
||||
State *string `json:"state,omitempty"`
|
||||
Creator *User `json:"creator,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
Environment *string `json:"environment,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
TargetURL *string `json:"target_url,omitempty"`
|
||||
DeploymentURL *string `json:"deployment_url,omitempty"`
|
||||
RepositoryURL *string `json:"repository_url,omitempty"`
|
||||
EnvironmentURL *string `json:"environment_url,omitempty"`
|
||||
LogURL *string `json:"log_url,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
// DeploymentStatusRequest represents a deployment request
|
||||
type DeploymentStatusRequest struct {
|
||||
State *string `json:"state,omitempty"`
|
||||
LogURL *string `json:"log_url,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
Environment *string `json:"environment,omitempty"`
|
||||
EnvironmentURL *string `json:"environment_url,omitempty"`
|
||||
AutoInactive *bool `json:"auto_inactive,omitempty"`
|
||||
}
|
||||
|
||||
// ListDeploymentStatuses lists the statuses of a given deployment of a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/statuses#list-deployment-statuses
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses
|
||||
func (s *RepositoriesService) ListDeploymentStatuses(ctx context.Context, owner, repo string, deployment int64, opts *ListOptions) ([]*DeploymentStatus, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/deployments/%v/statuses", owner, repo, deployment)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
acceptHeaders := []string{mediaTypeDeploymentStatusPreview, mediaTypeExpandDeploymentStatusPreview}
|
||||
req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
|
||||
|
||||
var statuses []*DeploymentStatus
|
||||
resp, err := s.client.Do(ctx, req, &statuses)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return statuses, resp, nil
|
||||
}
|
||||
|
||||
// GetDeploymentStatus returns a single deployment status of a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/statuses#get-a-deployment-status
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}
|
||||
func (s *RepositoriesService) GetDeploymentStatus(ctx context.Context, owner, repo string, deploymentID, deploymentStatusID int64) (*DeploymentStatus, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/deployments/%v/statuses/%v", owner, repo, deploymentID, deploymentStatusID)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
acceptHeaders := []string{mediaTypeDeploymentStatusPreview, mediaTypeExpandDeploymentStatusPreview}
|
||||
req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
|
||||
|
||||
d := new(DeploymentStatus)
|
||||
resp, err := s.client.Do(ctx, req, d)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return d, resp, nil
|
||||
}
|
||||
|
||||
// CreateDeploymentStatus creates a new status for a deployment.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/statuses#create-a-deployment-status
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses
|
||||
func (s *RepositoriesService) CreateDeploymentStatus(ctx context.Context, owner, repo string, deployment int64, request *DeploymentStatusRequest) (*DeploymentStatus, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/deployments/%v/statuses", owner, repo, deployment)
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, request)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// TODO: remove custom Accept headers when APIs fully launch.
|
||||
acceptHeaders := []string{mediaTypeDeploymentStatusPreview, mediaTypeExpandDeploymentStatusPreview}
|
||||
req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))
|
||||
|
||||
d := new(DeploymentStatus)
|
||||
resp, err := s.client.Do(ctx, req, d)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return d, resp, nil
|
||||
}
|
||||
252
vendor/github.com/google/go-github/v57/github/repos_environments.go
generated
vendored
252
vendor/github.com/google/go-github/v57/github/repos_environments.go
generated
vendored
|
|
@ -1,252 +0,0 @@
|
|||
// Copyright 2021 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// Environment represents a single environment in a repository.
|
||||
type Environment struct {
|
||||
Owner *string `json:"owner,omitempty"`
|
||||
Repo *string `json:"repo,omitempty"`
|
||||
EnvironmentName *string `json:"environment_name,omitempty"`
|
||||
WaitTimer *int `json:"wait_timer,omitempty"`
|
||||
Reviewers []*EnvReviewers `json:"reviewers,omitempty"`
|
||||
DeploymentBranchPolicy *BranchPolicy `json:"deployment_branch_policy,omitempty"`
|
||||
// Return/response only values
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
HTMLURL *string `json:"html_url,omitempty"`
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
CanAdminsBypass *bool `json:"can_admins_bypass,omitempty"`
|
||||
ProtectionRules []*ProtectionRule `json:"protection_rules,omitempty"`
|
||||
}
|
||||
|
||||
// EnvReviewers represents a single environment reviewer entry.
|
||||
type EnvReviewers struct {
|
||||
Type *string `json:"type,omitempty"`
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
}
|
||||
|
||||
// BranchPolicy represents the options for whether a branch deployment policy is applied to this environment.
|
||||
type BranchPolicy struct {
|
||||
ProtectedBranches *bool `json:"protected_branches,omitempty"`
|
||||
CustomBranchPolicies *bool `json:"custom_branch_policies,omitempty"`
|
||||
}
|
||||
|
||||
// EnvResponse represents the slightly different format of response that comes back when you list an environment.
|
||||
type EnvResponse struct {
|
||||
TotalCount *int `json:"total_count,omitempty"`
|
||||
Environments []*Environment `json:"environments,omitempty"`
|
||||
}
|
||||
|
||||
// ProtectionRule represents a single protection rule applied to the environment.
|
||||
type ProtectionRule struct {
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
NodeID *string `json:"node_id,omitempty"`
|
||||
PreventSelfReview *bool `json:"prevent_self_review,omitempty"`
|
||||
Type *string `json:"type,omitempty"`
|
||||
WaitTimer *int `json:"wait_timer,omitempty"`
|
||||
Reviewers []*RequiredReviewer `json:"reviewers,omitempty"`
|
||||
}
|
||||
|
||||
// RequiredReviewer represents a required reviewer.
|
||||
type RequiredReviewer struct {
|
||||
Type *string `json:"type,omitempty"`
|
||||
Reviewer interface{} `json:"reviewer,omitempty"`
|
||||
}
|
||||
|
||||
// EnvironmentListOptions specifies the optional parameters to the
|
||||
// RepositoriesService.ListEnvironments method.
|
||||
type EnvironmentListOptions struct {
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
||||
// This helps us handle the fact that RequiredReviewer can have either a User or Team type reviewer field.
|
||||
func (r *RequiredReviewer) UnmarshalJSON(data []byte) error {
|
||||
type aliasReviewer RequiredReviewer
|
||||
var reviewer aliasReviewer
|
||||
if err := json.Unmarshal(data, &reviewer); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
r.Type = reviewer.Type
|
||||
|
||||
switch *reviewer.Type {
|
||||
case "User":
|
||||
reviewer.Reviewer = &User{}
|
||||
if err := json.Unmarshal(data, &reviewer); err != nil {
|
||||
return err
|
||||
}
|
||||
r.Reviewer = reviewer.Reviewer
|
||||
case "Team":
|
||||
reviewer.Reviewer = &Team{}
|
||||
if err := json.Unmarshal(data, &reviewer); err != nil {
|
||||
return err
|
||||
}
|
||||
r.Reviewer = reviewer.Reviewer
|
||||
default:
|
||||
r.Type = nil
|
||||
r.Reviewer = nil
|
||||
return fmt.Errorf("reviewer.Type is %T, not a string of 'User' or 'Team', unable to unmarshal", reviewer.Type)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ListEnvironments lists all environments for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/environments#list-environments
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/environments
|
||||
func (s *RepositoriesService) ListEnvironments(ctx context.Context, owner, repo string, opts *EnvironmentListOptions) (*EnvResponse, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/environments", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var list *EnvResponse
|
||||
resp, err := s.client.Do(ctx, req, &list)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
return list, resp, nil
|
||||
}
|
||||
|
||||
// GetEnvironment get a single environment for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/environments#get-an-environment
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/environments/{environment_name}
|
||||
func (s *RepositoriesService) GetEnvironment(ctx context.Context, owner, repo, name string) (*Environment, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/environments/%s", owner, repo, name)
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var env *Environment
|
||||
resp, err := s.client.Do(ctx, req, &env)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
return env, resp, nil
|
||||
}
|
||||
|
||||
// MarshalJSON implements the json.Marshaler interface.
|
||||
// As the only way to clear a WaitTimer is to set it to 0, a missing WaitTimer object should default to 0, not null.
|
||||
// As the default value for CanAdminsBypass is true, a nil value here marshals to true.
|
||||
func (c *CreateUpdateEnvironment) MarshalJSON() ([]byte, error) {
|
||||
type Alias CreateUpdateEnvironment
|
||||
if c.WaitTimer == nil {
|
||||
c.WaitTimer = Int(0)
|
||||
}
|
||||
if c.CanAdminsBypass == nil {
|
||||
c.CanAdminsBypass = Bool(true)
|
||||
}
|
||||
return json.Marshal(&struct {
|
||||
*Alias
|
||||
}{
|
||||
Alias: (*Alias)(c),
|
||||
})
|
||||
}
|
||||
|
||||
// CreateUpdateEnvironment represents the fields required for the create/update operation
|
||||
// following the Create/Update release example.
|
||||
// See https://github.com/google/go-github/issues/992 for more information.
|
||||
// Removed omitempty here as the API expects null values for reviewers and deployment_branch_policy to clear them.
|
||||
type CreateUpdateEnvironment struct {
|
||||
WaitTimer *int `json:"wait_timer"`
|
||||
Reviewers []*EnvReviewers `json:"reviewers"`
|
||||
CanAdminsBypass *bool `json:"can_admins_bypass"`
|
||||
DeploymentBranchPolicy *BranchPolicy `json:"deployment_branch_policy"`
|
||||
PreventSelfReview *bool `json:"prevent_self_review,omitempty"`
|
||||
}
|
||||
|
||||
// createUpdateEnvironmentNoEnterprise represents the fields accepted for Pro/Teams private repos.
|
||||
// Ref: https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment
|
||||
// See https://github.com/google/go-github/issues/2602 for more information.
|
||||
type createUpdateEnvironmentNoEnterprise struct {
|
||||
DeploymentBranchPolicy *BranchPolicy `json:"deployment_branch_policy"`
|
||||
}
|
||||
|
||||
// CreateUpdateEnvironment create or update a new environment for a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/environments#create-or-update-an-environment
|
||||
//
|
||||
//meta:operation PUT /repos/{owner}/{repo}/environments/{environment_name}
|
||||
func (s *RepositoriesService) CreateUpdateEnvironment(ctx context.Context, owner, repo, name string, environment *CreateUpdateEnvironment) (*Environment, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/environments/%s", owner, repo, name)
|
||||
|
||||
req, err := s.client.NewRequest("PUT", u, environment)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
e := new(Environment)
|
||||
resp, err := s.client.Do(ctx, req, e)
|
||||
if err != nil {
|
||||
// The API returns 422 when the pricing plan doesn't support all the fields sent.
|
||||
// This path will be executed for Pro/Teams private repos.
|
||||
// For public repos, regardless of the pricing plan, all fields supported.
|
||||
// For Free plan private repos the returned error code is 404.
|
||||
// We are checking that the user didn't try to send a value for unsupported fields,
|
||||
// and return an error if they did.
|
||||
if resp != nil && resp.StatusCode == http.StatusUnprocessableEntity && environment != nil && len(environment.Reviewers) == 0 && environment.GetWaitTimer() == 0 {
|
||||
return s.createNewEnvNoEnterprise(ctx, u, environment)
|
||||
}
|
||||
return nil, resp, err
|
||||
}
|
||||
return e, resp, nil
|
||||
}
|
||||
|
||||
// createNewEnvNoEnterprise is an internal function for cases where the original call returned 422.
|
||||
// Currently only the `deployment_branch_policy` parameter is supported for Pro/Team private repos.
|
||||
func (s *RepositoriesService) createNewEnvNoEnterprise(ctx context.Context, u string, environment *CreateUpdateEnvironment) (*Environment, *Response, error) {
|
||||
req, err := s.client.NewRequest("PUT", u, &createUpdateEnvironmentNoEnterprise{
|
||||
DeploymentBranchPolicy: environment.DeploymentBranchPolicy,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
e := new(Environment)
|
||||
resp, err := s.client.Do(ctx, req, e)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
return e, resp, nil
|
||||
}
|
||||
|
||||
// DeleteEnvironment delete an environment from a repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/deployments/environments#delete-an-environment
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/environments/{environment_name}
|
||||
func (s *RepositoriesService) DeleteEnvironment(ctx context.Context, owner, repo, name string) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%s/%s/environments/%s", owner, repo, name)
|
||||
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
271
vendor/github.com/google/go-github/v57/github/repos_hooks.go
generated
vendored
271
vendor/github.com/google/go-github/v57/github/repos_hooks.go
generated
vendored
|
|
@ -1,271 +0,0 @@
|
|||
// Copyright 2013 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// WebHookPayload represents the data that is received from GitHub when a push
|
||||
// event hook is triggered. The format of these payloads pre-date most of the
|
||||
// GitHub v3 API, so there are lots of minor incompatibilities with the types
|
||||
// defined in the rest of the API. Therefore, several types are duplicated
|
||||
// here to account for these differences.
|
||||
//
|
||||
// GitHub API docs: https://help.github.com/articles/post-receive-hooks
|
||||
//
|
||||
// Deprecated: Please use PushEvent instead.
|
||||
type WebHookPayload = PushEvent
|
||||
|
||||
// WebHookCommit represents the commit variant we receive from GitHub in a
|
||||
// WebHookPayload.
|
||||
//
|
||||
// Deprecated: Please use HeadCommit instead.
|
||||
type WebHookCommit = HeadCommit
|
||||
|
||||
// WebHookAuthor represents the author or committer of a commit, as specified
|
||||
// in a WebHookCommit. The commit author may not correspond to a GitHub User.
|
||||
//
|
||||
// Deprecated: Please use CommitAuthor instead.
|
||||
// NOTE Breaking API change: the `Username` field is now called `Login`.
|
||||
type WebHookAuthor = CommitAuthor
|
||||
|
||||
// Hook represents a GitHub (web and service) hook for a repository.
|
||||
type Hook struct {
|
||||
CreatedAt *Timestamp `json:"created_at,omitempty"`
|
||||
UpdatedAt *Timestamp `json:"updated_at,omitempty"`
|
||||
URL *string `json:"url,omitempty"`
|
||||
ID *int64 `json:"id,omitempty"`
|
||||
Type *string `json:"type,omitempty"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
TestURL *string `json:"test_url,omitempty"`
|
||||
PingURL *string `json:"ping_url,omitempty"`
|
||||
LastResponse map[string]interface{} `json:"last_response,omitempty"`
|
||||
|
||||
// Only the following fields are used when creating a hook.
|
||||
// Config is required.
|
||||
Config map[string]interface{} `json:"config,omitempty"`
|
||||
Events []string `json:"events,omitempty"`
|
||||
Active *bool `json:"active,omitempty"`
|
||||
}
|
||||
|
||||
func (h Hook) String() string {
|
||||
return Stringify(h)
|
||||
}
|
||||
|
||||
// createHookRequest is a subset of Hook and is used internally
|
||||
// by CreateHook to pass only the known fields for the endpoint.
|
||||
//
|
||||
// See https://github.com/google/go-github/issues/1015 for more
|
||||
// information.
|
||||
type createHookRequest struct {
|
||||
// Config is required.
|
||||
Name string `json:"name"`
|
||||
Config map[string]interface{} `json:"config,omitempty"`
|
||||
Events []string `json:"events,omitempty"`
|
||||
Active *bool `json:"active,omitempty"`
|
||||
}
|
||||
|
||||
// CreateHook creates a Hook for the specified repository.
|
||||
// Config is a required field.
|
||||
//
|
||||
// Note that only a subset of the hook fields are used and hook must
|
||||
// not be nil.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/webhooks/repos#create-a-repository-webhook
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/hooks
|
||||
func (s *RepositoriesService) CreateHook(ctx context.Context, owner, repo string, hook *Hook) (*Hook, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/hooks", owner, repo)
|
||||
|
||||
hookReq := &createHookRequest{
|
||||
Name: "web",
|
||||
Events: hook.Events,
|
||||
Active: hook.Active,
|
||||
Config: hook.Config,
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("POST", u, hookReq)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
h := new(Hook)
|
||||
resp, err := s.client.Do(ctx, req, h)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return h, resp, nil
|
||||
}
|
||||
|
||||
// ListHooks lists all Hooks for the specified repository.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/webhooks/repos#list-repository-webhooks
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/hooks
|
||||
func (s *RepositoriesService) ListHooks(ctx context.Context, owner, repo string, opts *ListOptions) ([]*Hook, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/hooks", owner, repo)
|
||||
u, err := addOptions(u, opts)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var hooks []*Hook
|
||||
resp, err := s.client.Do(ctx, req, &hooks)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return hooks, resp, nil
|
||||
}
|
||||
|
||||
// GetHook returns a single specified Hook.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/webhooks/repos#get-a-repository-webhook
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/hooks/{hook_id}
|
||||
func (s *RepositoriesService) GetHook(ctx context.Context, owner, repo string, id int64) (*Hook, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/hooks/%d", owner, repo, id)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
h := new(Hook)
|
||||
resp, err := s.client.Do(ctx, req, h)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return h, resp, nil
|
||||
}
|
||||
|
||||
// EditHook updates a specified Hook.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/webhooks/repos#update-a-repository-webhook
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/hooks/{hook_id}
|
||||
func (s *RepositoriesService) EditHook(ctx context.Context, owner, repo string, id int64, hook *Hook) (*Hook, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/hooks/%d", owner, repo, id)
|
||||
req, err := s.client.NewRequest("PATCH", u, hook)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
h := new(Hook)
|
||||
resp, err := s.client.Do(ctx, req, h)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return h, resp, nil
|
||||
}
|
||||
|
||||
// DeleteHook deletes a specified Hook.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/webhooks/repos#delete-a-repository-webhook
|
||||
//
|
||||
//meta:operation DELETE /repos/{owner}/{repo}/hooks/{hook_id}
|
||||
func (s *RepositoriesService) DeleteHook(ctx context.Context, owner, repo string, id int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/hooks/%d", owner, repo, id)
|
||||
req, err := s.client.NewRequest("DELETE", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// PingHook triggers a 'ping' event to be sent to the Hook.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/webhooks/repos#ping-a-repository-webhook
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/hooks/{hook_id}/pings
|
||||
func (s *RepositoriesService) PingHook(ctx context.Context, owner, repo string, id int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/hooks/%d/pings", owner, repo, id)
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// TestHook triggers a test Hook by github.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/webhooks/repos#test-the-push-repository-webhook
|
||||
//
|
||||
//meta:operation POST /repos/{owner}/{repo}/hooks/{hook_id}/tests
|
||||
func (s *RepositoriesService) TestHook(ctx context.Context, owner, repo string, id int64) (*Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/hooks/%d/tests", owner, repo, id)
|
||||
req, err := s.client.NewRequest("POST", u, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// Subscribe lets servers register to receive updates when a topic is updated.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/webhooks/about-webhooks-for-repositories#pubsubhubbub
|
||||
//
|
||||
//meta:operation POST /hub
|
||||
func (s *RepositoriesService) Subscribe(ctx context.Context, owner, repo, event, callback string, secret []byte) (*Response, error) {
|
||||
req, err := s.createWebSubRequest("subscribe", owner, repo, event, callback, secret)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// Unsubscribe lets servers unregister to no longer receive updates when a topic is updated.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/webhooks/about-webhooks-for-repositories#pubsubhubbub
|
||||
//
|
||||
//meta:operation POST /hub
|
||||
func (s *RepositoriesService) Unsubscribe(ctx context.Context, owner, repo, event, callback string, secret []byte) (*Response, error) {
|
||||
req, err := s.createWebSubRequest("unsubscribe", owner, repo, event, callback, secret)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.client.Do(ctx, req, nil)
|
||||
}
|
||||
|
||||
// createWebSubRequest returns a subscribe/unsubscribe request that implements
|
||||
// the WebSub (formerly PubSubHubbub) protocol.
|
||||
//
|
||||
// See: https://www.w3.org/TR/websub/#subscriber-sends-subscription-request
|
||||
func (s *RepositoriesService) createWebSubRequest(hubMode, owner, repo, event, callback string, secret []byte) (*http.Request, error) {
|
||||
topic := fmt.Sprintf(
|
||||
"https://github.com/%s/%s/events/%s",
|
||||
owner,
|
||||
repo,
|
||||
event,
|
||||
)
|
||||
form := url.Values{}
|
||||
form.Add("hub.mode", hubMode)
|
||||
form.Add("hub.topic", topic)
|
||||
form.Add("hub.callback", callback)
|
||||
if secret != nil {
|
||||
form.Add("hub.secret", string(secret))
|
||||
}
|
||||
body := strings.NewReader(form.Encode())
|
||||
|
||||
req, err := s.client.NewFormRequest("hub", body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return req, nil
|
||||
}
|
||||
53
vendor/github.com/google/go-github/v57/github/repos_hooks_configuration.go
generated
vendored
53
vendor/github.com/google/go-github/v57/github/repos_hooks_configuration.go
generated
vendored
|
|
@ -1,53 +0,0 @@
|
|||
// Copyright 2023 The go-github AUTHORS. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package github
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// GetHookConfiguration returns the configuration for the specified repository webhook.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository
|
||||
//
|
||||
//meta:operation GET /repos/{owner}/{repo}/hooks/{hook_id}/config
|
||||
func (s *RepositoriesService) GetHookConfiguration(ctx context.Context, owner, repo string, id int64) (*HookConfig, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/hooks/%v/config", owner, repo, id)
|
||||
req, err := s.client.NewRequest("GET", u, nil)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
config := new(HookConfig)
|
||||
resp, err := s.client.Do(ctx, req, config)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return config, resp, nil
|
||||
}
|
||||
|
||||
// EditHookConfiguration updates the configuration for the specified repository webhook.
|
||||
//
|
||||
// GitHub API docs: https://docs.github.com/rest/webhooks/repo-config#update-a-webhook-configuration-for-a-repository
|
||||
//
|
||||
//meta:operation PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config
|
||||
func (s *RepositoriesService) EditHookConfiguration(ctx context.Context, owner, repo string, id int64, config *HookConfig) (*HookConfig, *Response, error) {
|
||||
u := fmt.Sprintf("repos/%v/%v/hooks/%v/config", owner, repo, id)
|
||||
req, err := s.client.NewRequest("PATCH", u, config)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
c := new(HookConfig)
|
||||
resp, err := s.client.Do(ctx, req, c)
|
||||
if err != nil {
|
||||
return nil, resp, err
|
||||
}
|
||||
|
||||
return c, resp, nil
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue