diff --git a/.cirrus.yml b/.cirrus.yml index cc7d24fa..6ab4f0b4 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -175,6 +175,15 @@ task: generate_script: buf generate check_script: git diff --exit-code +task: + name: Check for lacking "go generate ./..." invocation + + container: + image: golang:latest + + generate_script: go generate ./... + check_script: git diff --exit-code + task: only_if: $CIRRUS_TAG != '' name: buf push (tagged) diff --git a/go.mod b/go.mod index 79f6059a..5bd2ced8 100644 --- a/go.mod +++ b/go.mod @@ -56,10 +56,10 @@ require ( github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect github.com/yudai/pp v2.0.1+incompatible // indirect go.starlark.net v0.0.0-20240314022150-ee8ed142361c - golang.org/x/crypto v0.25.0 + golang.org/x/crypto v0.26.0 golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sys v0.23.0 - golang.org/x/text v0.16.0 + golang.org/x/sys v0.24.0 + golang.org/x/text v0.18.0 google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 gopkg.in/natefinch/lumberjack.v2 v2.2.1 @@ -75,10 +75,13 @@ require ( github.com/cirruslabs/terminal v0.16.0 github.com/docker/go-connections v0.5.0 github.com/go-chi/render v1.0.3 + github.com/go-faster/errors v0.7.1 + github.com/go-faster/jx v1.1.0 github.com/golang-jwt/jwt/v5 v5.2.1 github.com/google/go-github/v59 v59.0.0 github.com/hashicorp/vault/api v1.12.2 github.com/klauspost/pgzip v1.2.6 + github.com/ogen-go/ogen v1.4.1 github.com/pkg/errors v0.9.1 github.com/prometheus/procfs v0.13.0 github.com/puzpuzpuz/xsync/v3 v3.1.0 @@ -87,15 +90,16 @@ require ( github.com/testcontainers/testcontainers-go v0.33.0 github.com/tonistiigi/go-actions-cache v0.0.0-20240327122527-58651d5e11d6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 - go.opentelemetry.io/otel v1.27.0 + go.opentelemetry.io/otel v1.29.0 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0 - go.opentelemetry.io/otel/metric v1.27.0 - go.opentelemetry.io/otel/sdk v1.27.0 - go.opentelemetry.io/otel/sdk/metric v1.27.0 - go.opentelemetry.io/otel/trace v1.27.0 + go.opentelemetry.io/otel/metric v1.29.0 + go.opentelemetry.io/otel/sdk v1.29.0 + go.opentelemetry.io/otel/sdk/metric v1.29.0 + go.opentelemetry.io/otel/trace v1.29.0 + go.uber.org/multierr v1.11.0 golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 - golang.org/x/sync v0.7.0 + golang.org/x/sync v0.8.0 golang.org/x/time v0.5.0 ) @@ -127,13 +131,17 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dimchansky/utfbom v1.1.1 // indirect github.com/distribution/reference v0.6.0 // indirect + github.com/dlclark/regexp2 v1.11.4 // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.1 // indirect github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect github.com/docker/go-metrics v0.0.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect + github.com/ghodss/yaml v1.0.0 // indirect + github.com/go-faster/yaml v0.4.6 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/go-logr/logr v1.4.2 // indirect @@ -166,6 +174,8 @@ require ( github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae // indirect github.com/magiconair/properties v1.8.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/miekg/pkcs11 v1.1.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -187,6 +197,7 @@ require ( github.com/prometheus/common v0.51.1 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect + github.com/segmentio/asm v1.2.0 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/shopspring/decimal v1.3.1 // indirect @@ -207,10 +218,11 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect go.opentelemetry.io/proto/otlp v1.2.0 // indirect - go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/term v0.22.0 // indirect + golang.org/x/mod v0.20.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/tools v0.24.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240805194559-2c9e96a0b5d4 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index a417f82a..e20c070f 100644 --- a/go.sum +++ b/go.sum @@ -162,6 +162,8 @@ github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo= +github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/docker/cli v27.2.0+incompatible h1:yHD1QEB1/0vr5eBNpu8tncu8gWxg8EydFPOSKHzXSMM= github.com/docker/cli v27.2.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= @@ -197,8 +199,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= +github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -207,10 +209,9 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= -github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= -github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/getsentry/sentry-go v0.29.0 h1:YtWluuCFg9OfcqnaujpY918N/AhCCwarIDWOYSBAjCA= github.com/getsentry/sentry-go v0.29.0/go.mod h1:jhPesDAL0Q0W2+2YEuVOvdWmVtdsr1+jtBrlDEVWwLY= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= @@ -218,6 +219,12 @@ github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4= github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-faster/errors v0.7.1 h1:MkJTnDoEdi9pDabt1dpWf7AA8/BaSYZqibYyhZ20AYg= +github.com/go-faster/errors v0.7.1/go.mod h1:5ySTjWFiphBs07IKuiL69nxdfd5+fzh1u7FPGZP2quo= +github.com/go-faster/jx v1.1.0 h1:ZsW3wD+snOdmTDy9eIVgQdjUpXRRV4rqW8NS3t+20bg= +github.com/go-faster/jx v1.1.0/go.mod h1:vKDNikrKoyUmpzaJ0OkIkRQClNHFX/nF3dnTJZb3skg= +github.com/go-faster/yaml v0.4.6 h1:lOK/EhI04gCpPgPhgt0bChS6bvw7G3WwI8xxVe0sw9I= +github.com/go-faster/yaml v0.4.6/go.mod h1:390dRIvV4zbnO7qC9FGo6YYutc+wyyUSHBgbXL52eXk= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= @@ -448,6 +455,7 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v1.6.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= @@ -499,9 +507,11 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= +github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= +github.com/ogen-go/ogen v1.4.1 h1:uVZWKw80eZaMQu7LpTJxpHqwu6oMqYuh8ElqP1Mf2bI= +github.com/ogen-go/ogen v1.4.1/go.mod h1:YeliH7gAS6QToqDqIM5BrnEUOiXiqCnNqNwzEpebDsY= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= @@ -595,6 +605,8 @@ github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXn github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= +github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= @@ -702,8 +714,8 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.4 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 h1:9l89oX4ba9kHbBol3Xin3leYJ+252h0zszDtBwyKe2A= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0/go.mod h1:XLZfZboOJWHNKUv7eH0inh0E9VV6eWDFB/9yJyTLPp0= -go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg= -go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ= +go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0 h1:ZtfnDL+tUrs1F0Pzfwbg2d59Gru9NCH3bgSHBM6LDwU= go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0/go.mod h1:hG4Fj/y8TR/tlEDREo8tWstl9fO9gcFkn4xrx0Io8xU= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 h1:NmnYCiR0qNufkldjVvyQfZTHSdzeHoZ41zggMsdMcLM= @@ -716,14 +728,14 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqhe go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0 h1:QY7/0NeRPKlzusf40ZE4t1VlMKbqSNT7cJRYzWuja0s= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0/go.mod h1:HVkSiDhTM9BoUJU8qE6j2eSWLLXvi1USXjyd2BXT8PY= -go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik= -go.opentelemetry.io/otel/metric v1.27.0/go.mod h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak= -go.opentelemetry.io/otel/sdk v1.27.0 h1:mlk+/Y1gLPLn84U4tI8d3GNJmGT/eXe3ZuOXN9kTWmI= -go.opentelemetry.io/otel/sdk v1.27.0/go.mod h1:Ha9vbLwJE6W86YstIywK2xFfPjbWlCuwPtMkKdz/Y4A= -go.opentelemetry.io/otel/sdk/metric v1.27.0 h1:5uGNOlpXi+Hbo/DRoI31BSb1v+OGcpv2NemcCrOL8gI= -go.opentelemetry.io/otel/sdk/metric v1.27.0/go.mod h1:we7jJVrYN2kh3mVBlswtPU22K0SA+769l93J6bsyvqw= -go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw= -go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4= +go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= +go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= +go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= +go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= +go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= +go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= go.opentelemetry.io/proto/otlp v1.2.0 h1:pVeZGk7nXDC9O2hncA6nHldxEjm6LByfA2aN8IOkz94= go.opentelemetry.io/proto/otlp v1.2.0/go.mod h1:gGpR8txAl5M03pDhMC79G6SdqNV26naRm/KDsgaHD8A= go.starlark.net v0.0.0-20210406145628-7a1108eaa012/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= @@ -760,8 +772,8 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -786,6 +798,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -817,8 +831,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -834,8 +848,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -870,6 +884,7 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -879,8 +894,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -891,8 +906,8 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -905,8 +920,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= @@ -936,6 +951,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/internal/agent/executor/executor.go b/internal/agent/executor/executor.go index 05815ac6..94419b0f 100644 --- a/internal/agent/executor/executor.go +++ b/internal/agent/executor/executor.go @@ -13,6 +13,7 @@ import ( "github.com/cirruslabs/cirrus-cli/internal/agent/executor/updatebatcher" "github.com/cirruslabs/cirrus-cli/internal/agent/executor/vaultunboxer" "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache" + "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache/tuistcache" "github.com/cirruslabs/cirrus-cli/pkg/api" "github.com/samber/lo" "log" @@ -206,12 +207,39 @@ func (executor *Executor) RunBuild(ctx context.Context) { commands := response.Commands + // Prefer the HTTP cache host passed through the OS environment variables if cacheHost, ok := os.LookupEnv("CIRRUS_HTTP_CACHE_HOST"); ok { executor.env.Set("CIRRUS_HTTP_CACHE_HOST", cacheHost) } + // Otherwise, if the HTTP cache host is not passed either through + // the OS environment nor through the task's environment, + // run our built-in cache server if _, ok := executor.env.Lookup("CIRRUS_HTTP_CACHE_HOST"); !ok { - executor.env.Set("CIRRUS_HTTP_CACHE_HOST", http_cache.Start()) + var httpCacheOpts []http_cache.Option + var tuistCaching bool + + // Tuist caching API support + // + // Can be enabled through the OS environment variable and + // only works with our built-in cache server. + if _, ok := os.LookupEnv("CIRRUS_TUIST_CACHE_ENABLED"); ok { + tuistCache, err := tuistcache.New() + if err != nil { + log.Printf("Failed to initialize Tuist cache: %v", err) + } else { + httpCacheOpts = append(httpCacheOpts, http_cache.WithTuistCache(tuistCache)) + tuistCaching = true + } + } + + httpCacheHost := http_cache.Start(httpCacheOpts...) + + executor.env.Set("CIRRUS_HTTP_CACHE_HOST", httpCacheHost) + + if tuistCaching { + executor.env.Set("CIRRUS_TUIST_CACHE_URL", tuistcache.URL(httpCacheHost)) + } } executor.httpCacheHost = executor.env.Get("CIRRUS_HTTP_CACHE_HOST") diff --git a/internal/agent/http_cache/ghacache/cirruscimock/cirruscimock.go b/internal/agent/http_cache/ghacache/cirruscimock/cirruscimock.go index 93cb1913..efc52bb3 100644 --- a/internal/agent/http_cache/ghacache/cirruscimock/cirruscimock.go +++ b/internal/agent/http_cache/ghacache/cirruscimock/cirruscimock.go @@ -133,6 +133,25 @@ func (mock *cirrusCIMock) DownloadCache(request *api.DownloadCacheRequest, strea return nil } +func (mock *cirrusCIMock) GenerateCacheDownloadURLs( + _ context.Context, + request *api.CacheKey, +) (*api.GenerateURLsResponse, error) { + uploadPartRequest, _ := mock.s3Client.GetObjectRequest(&s3.GetObjectInput{ + Bucket: mock.s3Bucket, + Key: aws.String(request.CacheKey), + }) + + url, _, err := uploadPartRequest.PresignRequest(10 * time.Minute) + if err != nil { + return nil, err + } + + return &api.GenerateURLsResponse{ + Urls: []string{url}, + }, nil +} + func (mock *cirrusCIMock) CacheInfo(ctx context.Context, request *api.CacheInfoRequest) (*api.CacheInfoResponse, error) { result, err := mock.s3Client.HeadObjectWithContext(ctx, &s3.HeadObjectInput{ Bucket: mock.s3Bucket, diff --git a/internal/agent/http_cache/ghacache/ghacache_test.go b/internal/agent/http_cache/ghacache/ghacache_test.go index 52f4502e..03c7cf94 100644 --- a/internal/agent/http_cache/ghacache/ghacache_test.go +++ b/internal/agent/http_cache/ghacache/ghacache_test.go @@ -6,19 +6,17 @@ import ( "github.com/cirruslabs/cirrus-cli/internal/agent/client" "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache" "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache/ghacache/cirruscimock" + "github.com/cirruslabs/cirrus-cli/internal/testutil" "github.com/golang-jwt/jwt/v5" "github.com/google/uuid" "github.com/stretchr/testify/require" actionscache "github.com/tonistiigi/go-actions-cache" - "os" "testing" "time" ) func TestGHA(t *testing.T) { - if _, ok := os.LookupEnv("CIRRUS_CONTAINER_BACKEND"); !ok { - t.Skip("no container backend configured") - } + testutil.NeedsContainerization(t) ctx := context.Background() diff --git a/internal/agent/http_cache/http_cache.go b/internal/agent/http_cache/http_cache.go index 45b6f04f..95443a63 100644 --- a/internal/agent/http_cache/http_cache.go +++ b/internal/agent/http_cache/http_cache.go @@ -31,7 +31,7 @@ var sem = semaphore.NewWeighted(int64(runtime.NumCPU() * activeRequestsPerLogica var httpProxyClient = &http.Client{} -func Start() string { +func Start(opts ...Option) string { maxConcurrentConnections := runtime.NumCPU() * activeRequestsPerLogicalCPU httpProxyClient = &http.Client{ Transport: &http.Transport{ @@ -44,7 +44,7 @@ func Start() string { mux := http.NewServeMux() // HTTP cache protocol - mux.HandleFunc("/", handler) + mux.HandleFunc("/{objectname}", handler) address := "127.0.0.1:12321" listener, err := net.Listen("tcp", address) @@ -63,6 +63,11 @@ func Start() string { mux.Handle(ghacache.APIMountPoint+"/", sentryHandler.Handle(http.StripPrefix(ghacache.APIMountPoint, ghacache.New(address)))) + // Apply options + for _, opt := range opts { + opt(mux) + } + go http.Serve(listener, mux) } else { log.Printf("Failed to start http cache server %s: %s\n", address, err) diff --git a/internal/agent/http_cache/http_cache_test.go b/internal/agent/http_cache/http_cache_test.go new file mode 100644 index 00000000..7791ffad --- /dev/null +++ b/internal/agent/http_cache/http_cache_test.go @@ -0,0 +1,49 @@ +package http_cache_test + +import ( + "github.com/cirruslabs/cirrus-cli/internal/agent/client" + "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache" + "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache/ghacache/cirruscimock" + "github.com/cirruslabs/cirrus-cli/internal/testutil" + "github.com/google/uuid" + "github.com/stretchr/testify/require" + "io" + "net/http" + "strings" + "testing" +) + +func TestHTTPCache(t *testing.T) { + testutil.NeedsContainerization(t) + + client.InitClient(cirruscimock.ClientConn(t), "test", "test") + + httpCacheObjectURL := "http://" + http_cache.Start() + "/" + uuid.NewString() + + // Ensure that the cache entry does not exist + resp, err := http.Get(httpCacheObjectURL) + require.NoError(t, err) + require.Equal(t, http.StatusNotFound, resp.StatusCode) + + resp, err = http.Head(httpCacheObjectURL) + require.NoError(t, err) + require.Equal(t, http.StatusNotFound, resp.StatusCode) + + // Create the cache entry + resp, err = http.Post(httpCacheObjectURL, "text/plain", strings.NewReader("Hello, World!")) + require.NoError(t, err) + require.Equal(t, http.StatusCreated, resp.StatusCode) + + // Ensure that the cache entry now exists + resp, err = http.Head(httpCacheObjectURL) + require.NoError(t, err) + require.Equal(t, http.StatusOK, resp.StatusCode) + + resp, err = http.Get(httpCacheObjectURL) + require.NoError(t, err) + require.Equal(t, http.StatusOK, resp.StatusCode) + + cacheEntryBody, err := io.ReadAll(resp.Body) + require.NoError(t, err) + require.Equal(t, "Hello, World!", string(cacheEntryBody)) +} diff --git a/internal/agent/http_cache/option.go b/internal/agent/http_cache/option.go new file mode 100644 index 00000000..71f2a30d --- /dev/null +++ b/internal/agent/http_cache/option.go @@ -0,0 +1,14 @@ +package http_cache + +import ( + "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache/tuistcache" + "net/http" +) + +type Option func(mux *http.ServeMux) + +func WithTuistCache(tuistCache *tuistcache.TuistCache) Option { + return func(mux *http.ServeMux) { + mux.Handle(tuistcache.APIMountPoint+"/", http.StripPrefix(tuistcache.APIMountPoint, tuistCache)) + } +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_cfg_gen.go b/internal/agent/http_cache/tuistcache/api/oas_cfg_gen.go new file mode 100644 index 00000000..fc3ff344 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_cfg_gen.go @@ -0,0 +1,283 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/trace" + + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/middleware" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/otelogen" +) + +var ( + // Allocate option closure once. + clientSpanKind = trace.WithSpanKind(trace.SpanKindClient) + // Allocate option closure once. + serverSpanKind = trace.WithSpanKind(trace.SpanKindServer) +) + +type ( + optionFunc[C any] func(*C) + otelOptionFunc func(*otelConfig) +) + +type otelConfig struct { + TracerProvider trace.TracerProvider + Tracer trace.Tracer + MeterProvider metric.MeterProvider + Meter metric.Meter +} + +func (cfg *otelConfig) initOTEL() { + if cfg.TracerProvider == nil { + cfg.TracerProvider = otel.GetTracerProvider() + } + if cfg.MeterProvider == nil { + cfg.MeterProvider = otel.GetMeterProvider() + } + cfg.Tracer = cfg.TracerProvider.Tracer(otelogen.Name, + trace.WithInstrumentationVersion(otelogen.SemVersion()), + ) + cfg.Meter = cfg.MeterProvider.Meter(otelogen.Name, + metric.WithInstrumentationVersion(otelogen.SemVersion()), + ) +} + +// ErrorHandler is error handler. +type ErrorHandler = ogenerrors.ErrorHandler + +type serverConfig struct { + otelConfig + NotFound http.HandlerFunc + MethodNotAllowed func(w http.ResponseWriter, r *http.Request, allowed string) + ErrorHandler ErrorHandler + Prefix string + Middleware Middleware + MaxMultipartMemory int64 +} + +// ServerOption is server config option. +type ServerOption interface { + applyServer(*serverConfig) +} + +var _ ServerOption = (optionFunc[serverConfig])(nil) + +func (o optionFunc[C]) applyServer(c *C) { + o(c) +} + +var _ ServerOption = (otelOptionFunc)(nil) + +func (o otelOptionFunc) applyServer(c *serverConfig) { + o(&c.otelConfig) +} + +func newServerConfig(opts ...ServerOption) serverConfig { + cfg := serverConfig{ + NotFound: http.NotFound, + MethodNotAllowed: func(w http.ResponseWriter, r *http.Request, allowed string) { + status := http.StatusMethodNotAllowed + if r.Method == "OPTIONS" { + w.Header().Set("Access-Control-Allow-Methods", allowed) + w.Header().Set("Access-Control-Allow-Headers", "Content-Type") + status = http.StatusNoContent + } else { + w.Header().Set("Allow", allowed) + } + w.WriteHeader(status) + }, + ErrorHandler: ogenerrors.DefaultErrorHandler, + Middleware: nil, + MaxMultipartMemory: 32 << 20, // 32 MB + } + for _, opt := range opts { + opt.applyServer(&cfg) + } + cfg.initOTEL() + return cfg +} + +type baseServer struct { + cfg serverConfig + requests metric.Int64Counter + errors metric.Int64Counter + duration metric.Float64Histogram +} + +func (s baseServer) notFound(w http.ResponseWriter, r *http.Request) { + s.cfg.NotFound(w, r) +} + +func (s baseServer) notAllowed(w http.ResponseWriter, r *http.Request, allowed string) { + s.cfg.MethodNotAllowed(w, r, allowed) +} + +func (cfg serverConfig) baseServer() (s baseServer, err error) { + s = baseServer{cfg: cfg} + if s.requests, err = otelogen.ServerRequestCountCounter(s.cfg.Meter); err != nil { + return s, err + } + if s.errors, err = otelogen.ServerErrorsCountCounter(s.cfg.Meter); err != nil { + return s, err + } + if s.duration, err = otelogen.ServerDurationHistogram(s.cfg.Meter); err != nil { + return s, err + } + return s, nil +} + +type clientConfig struct { + otelConfig + Client ht.Client +} + +// ClientOption is client config option. +type ClientOption interface { + applyClient(*clientConfig) +} + +var _ ClientOption = (optionFunc[clientConfig])(nil) + +func (o optionFunc[C]) applyClient(c *C) { + o(c) +} + +var _ ClientOption = (otelOptionFunc)(nil) + +func (o otelOptionFunc) applyClient(c *clientConfig) { + o(&c.otelConfig) +} + +func newClientConfig(opts ...ClientOption) clientConfig { + cfg := clientConfig{ + Client: http.DefaultClient, + } + for _, opt := range opts { + opt.applyClient(&cfg) + } + cfg.initOTEL() + return cfg +} + +type baseClient struct { + cfg clientConfig + requests metric.Int64Counter + errors metric.Int64Counter + duration metric.Float64Histogram +} + +func (cfg clientConfig) baseClient() (c baseClient, err error) { + c = baseClient{cfg: cfg} + if c.requests, err = otelogen.ClientRequestCountCounter(c.cfg.Meter); err != nil { + return c, err + } + if c.errors, err = otelogen.ClientErrorsCountCounter(c.cfg.Meter); err != nil { + return c, err + } + if c.duration, err = otelogen.ClientDurationHistogram(c.cfg.Meter); err != nil { + return c, err + } + return c, nil +} + +// Option is config option. +type Option interface { + ServerOption + ClientOption +} + +// WithTracerProvider specifies a tracer provider to use for creating a tracer. +// +// If none is specified, the global provider is used. +func WithTracerProvider(provider trace.TracerProvider) Option { + return otelOptionFunc(func(cfg *otelConfig) { + if provider != nil { + cfg.TracerProvider = provider + } + }) +} + +// WithMeterProvider specifies a meter provider to use for creating a meter. +// +// If none is specified, the otel.GetMeterProvider() is used. +func WithMeterProvider(provider metric.MeterProvider) Option { + return otelOptionFunc(func(cfg *otelConfig) { + if provider != nil { + cfg.MeterProvider = provider + } + }) +} + +// WithClient specifies http client to use. +func WithClient(client ht.Client) ClientOption { + return optionFunc[clientConfig](func(cfg *clientConfig) { + if client != nil { + cfg.Client = client + } + }) +} + +// WithNotFound specifies Not Found handler to use. +func WithNotFound(notFound http.HandlerFunc) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if notFound != nil { + cfg.NotFound = notFound + } + }) +} + +// WithMethodNotAllowed specifies Method Not Allowed handler to use. +func WithMethodNotAllowed(methodNotAllowed func(w http.ResponseWriter, r *http.Request, allowed string)) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if methodNotAllowed != nil { + cfg.MethodNotAllowed = methodNotAllowed + } + }) +} + +// WithErrorHandler specifies error handler to use. +func WithErrorHandler(h ErrorHandler) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if h != nil { + cfg.ErrorHandler = h + } + }) +} + +// WithPathPrefix specifies server path prefix. +func WithPathPrefix(prefix string) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + cfg.Prefix = prefix + }) +} + +// WithMiddleware specifies middlewares to use. +func WithMiddleware(m ...Middleware) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + switch len(m) { + case 0: + cfg.Middleware = nil + case 1: + cfg.Middleware = m[0] + default: + cfg.Middleware = middleware.ChainMiddlewares(m...) + } + }) +} + +// WithMaxMultipartMemory specifies limit of memory for storing file parts. +// File parts which can't be stored in memory will be stored on disk in temporary files. +func WithMaxMultipartMemory(max int64) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if max > 0 { + cfg.MaxMultipartMemory = max + } + }) +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_client_gen.go b/internal/agent/http_cache/tuistcache/api/oas_client_gen.go new file mode 100644 index 00000000..bd920005 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_client_gen.go @@ -0,0 +1,5855 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + "net/url" + "strings" + "time" + + "github.com/go-faster/errors" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/metric" + semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + "go.opentelemetry.io/otel/trace" + + "github.com/ogen-go/ogen/conv" + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/otelogen" + "github.com/ogen-go/ogen/uri" +) + +// Invoker invokes operations described by OpenAPI v3 specification. +type Invoker interface { + // Authenticate invokes authenticate operation. + // + // This endpoint returns API tokens for a given email and password. + // + // POST /api/auth + Authenticate(ctx context.Context, request OptAuthenticateReq) (AuthenticateRes, error) + // CacheArtifactExists invokes cacheArtifactExists operation. + // + // This endpoint checks if an artifact exists in the cache. It returns a 404 status code if the + // artifact does not exist. + // + // Deprecated: schema marks this operation as deprecated. + // + // GET /api/cache/exists + CacheArtifactExists(ctx context.Context, params CacheArtifactExistsParams) (CacheArtifactExistsRes, error) + // CleanCache invokes cleanCache operation. + // + // Cleans cache for a given project. + // + // PUT /api/projects/{account_handle}/{project_handle}/cache/clean + CleanCache(ctx context.Context, params CleanCacheParams) (CleanCacheRes, error) + // CompleteAnalyticsArtifactMultipartUpload invokes completeAnalyticsArtifactMultipartUpload operation. + // + // Given the upload ID and all the parts with their ETags, this endpoint completes the multipart + // upload. + // + // POST /api/runs/{run_id}/complete + CompleteAnalyticsArtifactMultipartUpload(ctx context.Context, request OptCompleteAnalyticsArtifactMultipartUploadReq, params CompleteAnalyticsArtifactMultipartUploadParams) (CompleteAnalyticsArtifactMultipartUploadRes, error) + // CompleteAnalyticsArtifactsUploads invokes completeAnalyticsArtifactsUploads operation. + // + // Given a command event, it marks all artifact uploads as finished and does extra processing of a + // given command run, such as test flakiness detection. + // + // PUT /api/runs/{run_id}/complete_artifacts_uploads + CompleteAnalyticsArtifactsUploads(ctx context.Context, request OptCompleteAnalyticsArtifactsUploadsReq, params CompleteAnalyticsArtifactsUploadsParams) (CompleteAnalyticsArtifactsUploadsRes, error) + // CompleteCacheArtifactMultipartUpload invokes completeCacheArtifactMultipartUpload operation. + // + // Given the upload ID and all the parts with their ETags, this endpoint completes the multipart + // upload. The cache will then be able to serve the artifact. + // + // POST /api/cache/multipart/complete + CompleteCacheArtifactMultipartUpload(ctx context.Context, request OptCompleteCacheArtifactMultipartUploadReq, params CompleteCacheArtifactMultipartUploadParams) (CompleteCacheArtifactMultipartUploadRes, error) + // CompletePreviewsMultipartUpload invokes completePreviewsMultipartUpload operation. + // + // Given the upload ID and all the parts with their ETags, this endpoint completes the multipart + // upload. + // + // POST /api/projects/{account_handle}/{project_handle}/previews/complete + CompletePreviewsMultipartUpload(ctx context.Context, request OptCompletePreviewsMultipartUploadReq, params CompletePreviewsMultipartUploadParams) (CompletePreviewsMultipartUploadRes, error) + // CreateCommandEvent invokes createCommandEvent operation. + // + // Create a a new command analytics event. + // + // POST /api/analytics + CreateCommandEvent(ctx context.Context, request OptCreateCommandEventReq, params CreateCommandEventParams) (CreateCommandEventRes, error) + // CreateInvitation invokes createInvitation operation. + // + // Invites a user with a given email to a given organization. + // + // POST /api/organizations/{organization_name}/invitations + CreateInvitation(ctx context.Context, request OptCreateInvitationReq, params CreateInvitationParams) (CreateInvitationRes, error) + // CreateOrganization invokes createOrganization operation. + // + // Creates an organization with the given name. + // + // POST /api/organizations + CreateOrganization(ctx context.Context, request OptCreateOrganizationReq) (CreateOrganizationRes, error) + // CreateProject invokes createProject operation. + // + // Create a new project. + // + // POST /api/projects + CreateProject(ctx context.Context, request OptCreateProjectReq) (CreateProjectRes, error) + // CreateProjectToken invokes createProjectToken operation. + // + // This endpoint returns a new project token. + // + // POST /api/projects/{account_handle}/{project_handle}/tokens + CreateProjectToken(ctx context.Context, params CreateProjectTokenParams) (CreateProjectTokenRes, error) + // DeleteOrganization invokes deleteOrganization operation. + // + // Deletes the organization with the given name. + // + // DELETE /api/organizations/{organization_name} + DeleteOrganization(ctx context.Context, params DeleteOrganizationParams) (DeleteOrganizationRes, error) + // DeleteProject invokes deleteProject operation. + // + // Deletes a project with a given id. + // + // DELETE /api/projects/{id} + DeleteProject(ctx context.Context, params DeleteProjectParams) (DeleteProjectRes, error) + // DownloadCacheArtifact invokes downloadCacheArtifact operation. + // + // This endpoint returns a signed URL that can be used to download an artifact from the cache. + // + // GET /api/cache + DownloadCacheArtifact(ctx context.Context, params DownloadCacheArtifactParams) (DownloadCacheArtifactRes, error) + // DownloadPreview invokes downloadPreview operation. + // + // This endpoint returns a signed URL that can be used to download a preview. + // + // GET /api/projects/{account_handle}/{project_handle}/previews/{preview_id} + DownloadPreview(ctx context.Context, params DownloadPreviewParams) (DownloadPreviewRes, error) + // GenerateAnalyticsArtifactMultipartUploadURL invokes generateAnalyticsArtifactMultipartUploadURL operation. + // + // Given an upload ID and a part number, this endpoint returns a signed URL that can be used to + // upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. + // + // POST /api/runs/{run_id}/generate-url + GenerateAnalyticsArtifactMultipartUploadURL(ctx context.Context, request OptGenerateAnalyticsArtifactMultipartUploadURLReq, params GenerateAnalyticsArtifactMultipartUploadURLParams) (GenerateAnalyticsArtifactMultipartUploadURLRes, error) + // GenerateCacheArtifactMultipartUploadURL invokes generateCacheArtifactMultipartUploadURL operation. + // + // Given an upload ID and a part number, this endpoint returns a signed URL that can be used to + // upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. + // + // POST /api/cache/multipart/generate-url + GenerateCacheArtifactMultipartUploadURL(ctx context.Context, params GenerateCacheArtifactMultipartUploadURLParams) (GenerateCacheArtifactMultipartUploadURLRes, error) + // GeneratePreviewsMultipartUploadURL invokes generatePreviewsMultipartUploadURL operation. + // + // Given an upload ID and a part number, this endpoint returns a signed URL that can be used to + // upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. + // + // POST /api/projects/{account_handle}/{project_handle}/previews/generate-url + GeneratePreviewsMultipartUploadURL(ctx context.Context, request OptGeneratePreviewsMultipartUploadURLReq, params GeneratePreviewsMultipartUploadURLParams) (GeneratePreviewsMultipartUploadURLRes, error) + // GetCacheActionItem invokes getCacheActionItem operation. + // + // This endpoint gets an item from the action cache. + // + // GET /api/projects/{account_handle}/{project_handle}/cache/ac/{hash} + GetCacheActionItem(ctx context.Context, params GetCacheActionItemParams) (GetCacheActionItemRes, error) + // GetDeviceCode invokes getDeviceCode operation. + // + // This endpoint returns a token for a given device code if the device code is authenticated. + // + // GET /api/auth/device_code/{device_code} + GetDeviceCode(ctx context.Context, params GetDeviceCodeParams) (GetDeviceCodeRes, error) + // ListOrganizations invokes listOrganizations operation. + // + // Returns all the organizations the authenticated subject is part of. + // + // GET /api/organizations + ListOrganizations(ctx context.Context) (ListOrganizationsRes, error) + // ListProjectTokens invokes listProjectTokens operation. + // + // This endpoint returns all tokens for a given project. + // + // GET /api/projects/{account_handle}/{project_handle}/tokens + ListProjectTokens(ctx context.Context, params ListProjectTokensParams) (ListProjectTokensRes, error) + // ListProjects invokes listProjects operation. + // + // List projects the authenticated user has access to. + // + // GET /api/projects + ListProjects(ctx context.Context) (ListProjectsRes, error) + // RefreshToken invokes refreshToken operation. + // + // This endpoint returns new tokens for a given refresh token if the refresh token is valid. + // + // POST /api/auth/refresh_token + RefreshToken(ctx context.Context, request OptRefreshTokenReq) (RefreshTokenRes, error) + // RevokeProjectToken invokes revokeProjectToken operation. + // + // Revokes a project token. + // + // DELETE /api/projects/{account_handle}/{project_handle}/tokens/{id} + RevokeProjectToken(ctx context.Context, params RevokeProjectTokenParams) (RevokeProjectTokenRes, error) + // ShowOrganization invokes showOrganization operation. + // + // Returns the organization with the given identifier. + // + // GET /api/organizations/{organization_name} + ShowOrganization(ctx context.Context, params ShowOrganizationParams) (ShowOrganizationRes, error) + // ShowOrganizationUsage invokes showOrganizationUsage operation. + // + // Returns the usage of the organization with the given identifier. (e.g. number of remote cache hits). + // + // GET /api/organizations/{organization_name}/usage + ShowOrganizationUsage(ctx context.Context, params ShowOrganizationUsageParams) (ShowOrganizationUsageRes, error) + // ShowProject invokes showProject operation. + // + // Returns a project based on the handle. + // + // GET /api/projects/{account_handle}/{project_handle} + ShowProject(ctx context.Context, params ShowProjectParams) (ShowProjectRes, error) + // StartAnalyticsArtifactMultipartUpload invokes startAnalyticsArtifactMultipartUpload operation. + // + // The endpoint returns an upload ID that can be used to generate URLs for the individual parts and + // complete the upload. + // + // POST /api/runs/{run_id}/start + StartAnalyticsArtifactMultipartUpload(ctx context.Context, request CommandEventArtifact, params StartAnalyticsArtifactMultipartUploadParams) (StartAnalyticsArtifactMultipartUploadRes, error) + // StartCacheArtifactMultipartUpload invokes startCacheArtifactMultipartUpload operation. + // + // The endpoint returns an upload ID that can be used to generate URLs for the individual parts and + // complete the upload. + // + // POST /api/cache/multipart/start + StartCacheArtifactMultipartUpload(ctx context.Context, params StartCacheArtifactMultipartUploadParams) (StartCacheArtifactMultipartUploadRes, error) + // StartPreviewsMultipartUpload invokes startPreviewsMultipartUpload operation. + // + // The endpoint returns an upload ID that can be used to generate URLs for the individual parts and + // complete the upload. + // + // POST /api/projects/{account_handle}/{project_handle}/previews/start + StartPreviewsMultipartUpload(ctx context.Context, request OptStartPreviewsMultipartUploadReq, params StartPreviewsMultipartUploadParams) (StartPreviewsMultipartUploadRes, error) + // UpdateOrganization invokes updateOrganization operation. + // + // Updates an organization with given parameters. + // + // PUT /api/organizations/{organization_name} + UpdateOrganization(ctx context.Context, request OptUpdateOrganizationReq, params UpdateOrganizationParams) (UpdateOrganizationRes, error) + // UpdateOrganization2 invokes updateOrganization (2) operation. + // + // Updates an organization with given parameters. + // + // PATCH /api/organizations/{organization_name} + UpdateOrganization2(ctx context.Context, request OptUpdateOrganization2Req, params UpdateOrganization2Params) (UpdateOrganization2Res, error) + // UpdateOrganizationMember invokes updateOrganizationMember operation. + // + // Updates a member in a given organization. + // + // PUT /api/organizations/{organization_name}/members/{user_name} + UpdateOrganizationMember(ctx context.Context, request OptUpdateOrganizationMemberReq, params UpdateOrganizationMemberParams) (UpdateOrganizationMemberRes, error) + // UpdateProject invokes updateProject operation. + // + // Updates a project with given parameters. + // + // PUT /api/projects/{account_handle}/{project_handle} + UpdateProject(ctx context.Context, request OptUpdateProjectReq, params UpdateProjectParams) (UpdateProjectRes, error) + // UploadCacheActionItem invokes uploadCacheActionItem operation. + // + // The endpoint caches a given action item without uploading a file. To upload files, use the + // multipart upload instead. + // + // POST /api/projects/{account_handle}/{project_handle}/cache/ac + UploadCacheActionItem(ctx context.Context, request OptUploadCacheActionItemReq, params UploadCacheActionItemParams) (UploadCacheActionItemRes, error) +} + +// Client implements OAS client. +type Client struct { + serverURL *url.URL + sec SecuritySource + baseClient +} + +var _ Handler = struct { + *Client +}{} + +func trimTrailingSlashes(u *url.URL) { + u.Path = strings.TrimRight(u.Path, "/") + u.RawPath = strings.TrimRight(u.RawPath, "/") +} + +// NewClient initializes new Client defined by OAS. +func NewClient(serverURL string, sec SecuritySource, opts ...ClientOption) (*Client, error) { + u, err := url.Parse(serverURL) + if err != nil { + return nil, err + } + trimTrailingSlashes(u) + + c, err := newClientConfig(opts...).baseClient() + if err != nil { + return nil, err + } + return &Client{ + serverURL: u, + sec: sec, + baseClient: c, + }, nil +} + +type serverURLKey struct{} + +// WithServerURL sets context key to override server URL. +func WithServerURL(ctx context.Context, u *url.URL) context.Context { + return context.WithValue(ctx, serverURLKey{}, u) +} + +func (c *Client) requestURL(ctx context.Context) *url.URL { + u, ok := ctx.Value(serverURLKey{}).(*url.URL) + if !ok { + return c.serverURL + } + return u +} + +// Authenticate invokes authenticate operation. +// +// This endpoint returns API tokens for a given email and password. +// +// POST /api/auth +func (c *Client) Authenticate(ctx context.Context, request OptAuthenticateReq) (AuthenticateRes, error) { + res, err := c.sendAuthenticate(ctx, request) + return res, err +} + +func (c *Client) sendAuthenticate(ctx context.Context, request OptAuthenticateReq) (res AuthenticateRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("authenticate"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/auth"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "Authenticate", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/auth" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeAuthenticateRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "Authenticate", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "Authenticate", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeAuthenticateResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CacheArtifactExists invokes cacheArtifactExists operation. +// +// This endpoint checks if an artifact exists in the cache. It returns a 404 status code if the +// artifact does not exist. +// +// Deprecated: schema marks this operation as deprecated. +// +// GET /api/cache/exists +func (c *Client) CacheArtifactExists(ctx context.Context, params CacheArtifactExistsParams) (CacheArtifactExistsRes, error) { + res, err := c.sendCacheArtifactExists(ctx, params) + return res, err +} + +func (c *Client) sendCacheArtifactExists(ctx context.Context, params CacheArtifactExistsParams) (res CacheArtifactExistsRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("cacheArtifactExists"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/cache/exists"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CacheArtifactExists", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/cache/exists" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "cache_category" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.CacheCategory.Get(); ok { + return e.EncodeValue(conv.StringToString(string(val))) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "project_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.ProjectID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "hash" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Hash)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "name" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Name)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CacheArtifactExists", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CacheArtifactExists", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCacheArtifactExistsResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CleanCache invokes cleanCache operation. +// +// Cleans cache for a given project. +// +// PUT /api/projects/{account_handle}/{project_handle}/cache/clean +func (c *Client) CleanCache(ctx context.Context, params CleanCacheParams) (CleanCacheRes, error) { + res, err := c.sendCleanCache(ctx, params) + return res, err +} + +func (c *Client) sendCleanCache(ctx context.Context, params CleanCacheParams) (res CleanCacheRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("cleanCache"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/cache/clean"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CleanCache", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [5]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/cache/clean" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "PUT", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CleanCache", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CleanCache", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCleanCacheResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CompleteAnalyticsArtifactMultipartUpload invokes completeAnalyticsArtifactMultipartUpload operation. +// +// Given the upload ID and all the parts with their ETags, this endpoint completes the multipart +// upload. +// +// POST /api/runs/{run_id}/complete +func (c *Client) CompleteAnalyticsArtifactMultipartUpload(ctx context.Context, request OptCompleteAnalyticsArtifactMultipartUploadReq, params CompleteAnalyticsArtifactMultipartUploadParams) (CompleteAnalyticsArtifactMultipartUploadRes, error) { + res, err := c.sendCompleteAnalyticsArtifactMultipartUpload(ctx, request, params) + return res, err +} + +func (c *Client) sendCompleteAnalyticsArtifactMultipartUpload(ctx context.Context, request OptCompleteAnalyticsArtifactMultipartUploadReq, params CompleteAnalyticsArtifactMultipartUploadParams) (res CompleteAnalyticsArtifactMultipartUploadRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("completeAnalyticsArtifactMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/runs/{run_id}/complete"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CompleteAnalyticsArtifactMultipartUpload", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [3]string + pathParts[0] = "/api/runs/" + { + // Encode "run_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "run_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.IntToString(params.RunID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/complete" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeCompleteAnalyticsArtifactMultipartUploadRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CompleteAnalyticsArtifactMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CompleteAnalyticsArtifactMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCompleteAnalyticsArtifactMultipartUploadResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CompleteAnalyticsArtifactsUploads invokes completeAnalyticsArtifactsUploads operation. +// +// Given a command event, it marks all artifact uploads as finished and does extra processing of a +// given command run, such as test flakiness detection. +// +// PUT /api/runs/{run_id}/complete_artifacts_uploads +func (c *Client) CompleteAnalyticsArtifactsUploads(ctx context.Context, request OptCompleteAnalyticsArtifactsUploadsReq, params CompleteAnalyticsArtifactsUploadsParams) (CompleteAnalyticsArtifactsUploadsRes, error) { + res, err := c.sendCompleteAnalyticsArtifactsUploads(ctx, request, params) + return res, err +} + +func (c *Client) sendCompleteAnalyticsArtifactsUploads(ctx context.Context, request OptCompleteAnalyticsArtifactsUploadsReq, params CompleteAnalyticsArtifactsUploadsParams) (res CompleteAnalyticsArtifactsUploadsRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("completeAnalyticsArtifactsUploads"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/runs/{run_id}/complete_artifacts_uploads"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CompleteAnalyticsArtifactsUploads", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [3]string + pathParts[0] = "/api/runs/" + { + // Encode "run_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "run_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.IntToString(params.RunID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/complete_artifacts_uploads" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "PUT", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeCompleteAnalyticsArtifactsUploadsRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CompleteAnalyticsArtifactsUploads", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CompleteAnalyticsArtifactsUploads", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCompleteAnalyticsArtifactsUploadsResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CompleteCacheArtifactMultipartUpload invokes completeCacheArtifactMultipartUpload operation. +// +// Given the upload ID and all the parts with their ETags, this endpoint completes the multipart +// upload. The cache will then be able to serve the artifact. +// +// POST /api/cache/multipart/complete +func (c *Client) CompleteCacheArtifactMultipartUpload(ctx context.Context, request OptCompleteCacheArtifactMultipartUploadReq, params CompleteCacheArtifactMultipartUploadParams) (CompleteCacheArtifactMultipartUploadRes, error) { + res, err := c.sendCompleteCacheArtifactMultipartUpload(ctx, request, params) + return res, err +} + +func (c *Client) sendCompleteCacheArtifactMultipartUpload(ctx context.Context, request OptCompleteCacheArtifactMultipartUploadReq, params CompleteCacheArtifactMultipartUploadParams) (res CompleteCacheArtifactMultipartUploadRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("completeCacheArtifactMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/cache/multipart/complete"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CompleteCacheArtifactMultipartUpload", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/cache/multipart/complete" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "cache_category" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.CacheCategory.Get(); ok { + return e.EncodeValue(conv.StringToString(string(val))) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "project_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.ProjectID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "hash" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Hash)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "upload_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "upload_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.UploadID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "name" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Name)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeCompleteCacheArtifactMultipartUploadRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CompleteCacheArtifactMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CompleteCacheArtifactMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCompleteCacheArtifactMultipartUploadResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CompletePreviewsMultipartUpload invokes completePreviewsMultipartUpload operation. +// +// Given the upload ID and all the parts with their ETags, this endpoint completes the multipart +// upload. +// +// POST /api/projects/{account_handle}/{project_handle}/previews/complete +func (c *Client) CompletePreviewsMultipartUpload(ctx context.Context, request OptCompletePreviewsMultipartUploadReq, params CompletePreviewsMultipartUploadParams) (CompletePreviewsMultipartUploadRes, error) { + res, err := c.sendCompletePreviewsMultipartUpload(ctx, request, params) + return res, err +} + +func (c *Client) sendCompletePreviewsMultipartUpload(ctx context.Context, request OptCompletePreviewsMultipartUploadReq, params CompletePreviewsMultipartUploadParams) (res CompletePreviewsMultipartUploadRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("completePreviewsMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/previews/complete"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CompletePreviewsMultipartUpload", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [5]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/previews/complete" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeCompletePreviewsMultipartUploadRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CompletePreviewsMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CompletePreviewsMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCompletePreviewsMultipartUploadResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CreateCommandEvent invokes createCommandEvent operation. +// +// Create a a new command analytics event. +// +// POST /api/analytics +func (c *Client) CreateCommandEvent(ctx context.Context, request OptCreateCommandEventReq, params CreateCommandEventParams) (CreateCommandEventRes, error) { + res, err := c.sendCreateCommandEvent(ctx, request, params) + return res, err +} + +func (c *Client) sendCreateCommandEvent(ctx context.Context, request OptCreateCommandEventReq, params CreateCommandEventParams) (res CreateCommandEventRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createCommandEvent"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/analytics"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CreateCommandEvent", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/analytics" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "project_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.ProjectID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeCreateCommandEventRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CreateCommandEvent", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CreateCommandEvent", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCreateCommandEventResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CreateInvitation invokes createInvitation operation. +// +// Invites a user with a given email to a given organization. +// +// POST /api/organizations/{organization_name}/invitations +func (c *Client) CreateInvitation(ctx context.Context, request OptCreateInvitationReq, params CreateInvitationParams) (CreateInvitationRes, error) { + res, err := c.sendCreateInvitation(ctx, request, params) + return res, err +} + +func (c *Client) sendCreateInvitation(ctx context.Context, request OptCreateInvitationReq, params CreateInvitationParams) (res CreateInvitationRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createInvitation"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}/invitations"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CreateInvitation", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [3]string + pathParts[0] = "/api/organizations/" + { + // Encode "organization_name" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "organization_name", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.OrganizationName)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/invitations" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeCreateInvitationRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CreateInvitation", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CreateInvitation", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCreateInvitationResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CreateOrganization invokes createOrganization operation. +// +// Creates an organization with the given name. +// +// POST /api/organizations +func (c *Client) CreateOrganization(ctx context.Context, request OptCreateOrganizationReq) (CreateOrganizationRes, error) { + res, err := c.sendCreateOrganization(ctx, request) + return res, err +} + +func (c *Client) sendCreateOrganization(ctx context.Context, request OptCreateOrganizationReq) (res CreateOrganizationRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createOrganization"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/organizations"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CreateOrganization", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/organizations" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeCreateOrganizationRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CreateOrganization", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CreateOrganization", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCreateOrganizationResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CreateProject invokes createProject operation. +// +// Create a new project. +// +// POST /api/projects +func (c *Client) CreateProject(ctx context.Context, request OptCreateProjectReq) (CreateProjectRes, error) { + res, err := c.sendCreateProject(ctx, request) + return res, err +} + +func (c *Client) sendCreateProject(ctx context.Context, request OptCreateProjectReq) (res CreateProjectRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createProject"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CreateProject", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/projects" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeCreateProjectRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CreateProject", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CreateProject", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCreateProjectResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// CreateProjectToken invokes createProjectToken operation. +// +// This endpoint returns a new project token. +// +// POST /api/projects/{account_handle}/{project_handle}/tokens +func (c *Client) CreateProjectToken(ctx context.Context, params CreateProjectTokenParams) (CreateProjectTokenRes, error) { + res, err := c.sendCreateProjectToken(ctx, params) + return res, err +} + +func (c *Client) sendCreateProjectToken(ctx context.Context, params CreateProjectTokenParams) (res CreateProjectTokenRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createProjectToken"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/tokens"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "CreateProjectToken", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [5]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/tokens" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "CreateProjectToken", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "CreateProjectToken", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeCreateProjectTokenResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// DeleteOrganization invokes deleteOrganization operation. +// +// Deletes the organization with the given name. +// +// DELETE /api/organizations/{organization_name} +func (c *Client) DeleteOrganization(ctx context.Context, params DeleteOrganizationParams) (DeleteOrganizationRes, error) { + res, err := c.sendDeleteOrganization(ctx, params) + return res, err +} + +func (c *Client) sendDeleteOrganization(ctx context.Context, params DeleteOrganizationParams) (res DeleteOrganizationRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("deleteOrganization"), + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "DeleteOrganization", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/organizations/" + { + // Encode "organization_name" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "organization_name", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.OrganizationName)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "DELETE", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "DeleteOrganization", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "DeleteOrganization", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeDeleteOrganizationResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// DeleteProject invokes deleteProject operation. +// +// Deletes a project with a given id. +// +// DELETE /api/projects/{id} +func (c *Client) DeleteProject(ctx context.Context, params DeleteProjectParams) (DeleteProjectRes, error) { + res, err := c.sendDeleteProject(ctx, params) + return res, err +} + +func (c *Client) sendDeleteProject(ctx context.Context, params DeleteProjectParams) (res DeleteProjectRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("deleteProject"), + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/projects/{id}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "DeleteProject", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/projects/" + { + // Encode "id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.IntToString(params.ID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "DELETE", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "DeleteProject", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "DeleteProject", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeDeleteProjectResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// DownloadCacheArtifact invokes downloadCacheArtifact operation. +// +// This endpoint returns a signed URL that can be used to download an artifact from the cache. +// +// GET /api/cache +func (c *Client) DownloadCacheArtifact(ctx context.Context, params DownloadCacheArtifactParams) (DownloadCacheArtifactRes, error) { + res, err := c.sendDownloadCacheArtifact(ctx, params) + return res, err +} + +func (c *Client) sendDownloadCacheArtifact(ctx context.Context, params DownloadCacheArtifactParams) (res DownloadCacheArtifactRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("downloadCacheArtifact"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/cache"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "DownloadCacheArtifact", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/cache" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "cache_category" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.CacheCategory.Get(); ok { + return e.EncodeValue(conv.StringToString(string(val))) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "project_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.ProjectID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "hash" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Hash)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "name" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Name)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "DownloadCacheArtifact", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "DownloadCacheArtifact", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeDownloadCacheArtifactResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// DownloadPreview invokes downloadPreview operation. +// +// This endpoint returns a signed URL that can be used to download a preview. +// +// GET /api/projects/{account_handle}/{project_handle}/previews/{preview_id} +func (c *Client) DownloadPreview(ctx context.Context, params DownloadPreviewParams) (DownloadPreviewRes, error) { + res, err := c.sendDownloadPreview(ctx, params) + return res, err +} + +func (c *Client) sendDownloadPreview(ctx context.Context, params DownloadPreviewParams) (res DownloadPreviewRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("downloadPreview"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/previews/{preview_id}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "DownloadPreview", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [6]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/previews/" + { + // Encode "preview_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "preview_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.PreviewID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[5] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "DownloadPreview", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "DownloadPreview", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeDownloadPreviewResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GenerateAnalyticsArtifactMultipartUploadURL invokes generateAnalyticsArtifactMultipartUploadURL operation. +// +// Given an upload ID and a part number, this endpoint returns a signed URL that can be used to +// upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. +// +// POST /api/runs/{run_id}/generate-url +func (c *Client) GenerateAnalyticsArtifactMultipartUploadURL(ctx context.Context, request OptGenerateAnalyticsArtifactMultipartUploadURLReq, params GenerateAnalyticsArtifactMultipartUploadURLParams) (GenerateAnalyticsArtifactMultipartUploadURLRes, error) { + res, err := c.sendGenerateAnalyticsArtifactMultipartUploadURL(ctx, request, params) + return res, err +} + +func (c *Client) sendGenerateAnalyticsArtifactMultipartUploadURL(ctx context.Context, request OptGenerateAnalyticsArtifactMultipartUploadURLReq, params GenerateAnalyticsArtifactMultipartUploadURLParams) (res GenerateAnalyticsArtifactMultipartUploadURLRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("generateAnalyticsArtifactMultipartUploadURL"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/runs/{run_id}/generate-url"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "GenerateAnalyticsArtifactMultipartUploadURL", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [3]string + pathParts[0] = "/api/runs/" + { + // Encode "run_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "run_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.IntToString(params.RunID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/generate-url" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeGenerateAnalyticsArtifactMultipartUploadURLRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "GenerateAnalyticsArtifactMultipartUploadURL", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "GenerateAnalyticsArtifactMultipartUploadURL", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGenerateAnalyticsArtifactMultipartUploadURLResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GenerateCacheArtifactMultipartUploadURL invokes generateCacheArtifactMultipartUploadURL operation. +// +// Given an upload ID and a part number, this endpoint returns a signed URL that can be used to +// upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. +// +// POST /api/cache/multipart/generate-url +func (c *Client) GenerateCacheArtifactMultipartUploadURL(ctx context.Context, params GenerateCacheArtifactMultipartUploadURLParams) (GenerateCacheArtifactMultipartUploadURLRes, error) { + res, err := c.sendGenerateCacheArtifactMultipartUploadURL(ctx, params) + return res, err +} + +func (c *Client) sendGenerateCacheArtifactMultipartUploadURL(ctx context.Context, params GenerateCacheArtifactMultipartUploadURLParams) (res GenerateCacheArtifactMultipartUploadURLRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("generateCacheArtifactMultipartUploadURL"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/cache/multipart/generate-url"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "GenerateCacheArtifactMultipartUploadURL", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/cache/multipart/generate-url" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "cache_category" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.CacheCategory.Get(); ok { + return e.EncodeValue(conv.StringToString(string(val))) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "project_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.ProjectID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "hash" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Hash)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "part_number" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "part_number", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.IntToString(params.PartNumber)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "upload_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "upload_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.UploadID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "name" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Name)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "GenerateCacheArtifactMultipartUploadURL", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "GenerateCacheArtifactMultipartUploadURL", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGenerateCacheArtifactMultipartUploadURLResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GeneratePreviewsMultipartUploadURL invokes generatePreviewsMultipartUploadURL operation. +// +// Given an upload ID and a part number, this endpoint returns a signed URL that can be used to +// upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. +// +// POST /api/projects/{account_handle}/{project_handle}/previews/generate-url +func (c *Client) GeneratePreviewsMultipartUploadURL(ctx context.Context, request OptGeneratePreviewsMultipartUploadURLReq, params GeneratePreviewsMultipartUploadURLParams) (GeneratePreviewsMultipartUploadURLRes, error) { + res, err := c.sendGeneratePreviewsMultipartUploadURL(ctx, request, params) + return res, err +} + +func (c *Client) sendGeneratePreviewsMultipartUploadURL(ctx context.Context, request OptGeneratePreviewsMultipartUploadURLReq, params GeneratePreviewsMultipartUploadURLParams) (res GeneratePreviewsMultipartUploadURLRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("generatePreviewsMultipartUploadURL"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/previews/generate-url"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "GeneratePreviewsMultipartUploadURL", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [5]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/previews/generate-url" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeGeneratePreviewsMultipartUploadURLRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "GeneratePreviewsMultipartUploadURL", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "GeneratePreviewsMultipartUploadURL", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGeneratePreviewsMultipartUploadURLResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GetCacheActionItem invokes getCacheActionItem operation. +// +// This endpoint gets an item from the action cache. +// +// GET /api/projects/{account_handle}/{project_handle}/cache/ac/{hash} +func (c *Client) GetCacheActionItem(ctx context.Context, params GetCacheActionItemParams) (GetCacheActionItemRes, error) { + res, err := c.sendGetCacheActionItem(ctx, params) + return res, err +} + +func (c *Client) sendGetCacheActionItem(ctx context.Context, params GetCacheActionItemParams) (res GetCacheActionItemRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getCacheActionItem"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/cache/ac/{hash}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "GetCacheActionItem", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [6]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/cache/ac/" + { + // Encode "hash" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "hash", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.Hash)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[5] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "GetCacheActionItem", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "GetCacheActionItem", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGetCacheActionItemResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GetDeviceCode invokes getDeviceCode operation. +// +// This endpoint returns a token for a given device code if the device code is authenticated. +// +// GET /api/auth/device_code/{device_code} +func (c *Client) GetDeviceCode(ctx context.Context, params GetDeviceCodeParams) (GetDeviceCodeRes, error) { + res, err := c.sendGetDeviceCode(ctx, params) + return res, err +} + +func (c *Client) sendGetDeviceCode(ctx context.Context, params GetDeviceCodeParams) (res GetDeviceCodeRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getDeviceCode"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/auth/device_code/{device_code}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "GetDeviceCode", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/auth/device_code/" + { + // Encode "device_code" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "device_code", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.DeviceCode)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "GetDeviceCode", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "GetDeviceCode", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGetDeviceCodeResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ListOrganizations invokes listOrganizations operation. +// +// Returns all the organizations the authenticated subject is part of. +// +// GET /api/organizations +func (c *Client) ListOrganizations(ctx context.Context) (ListOrganizationsRes, error) { + res, err := c.sendListOrganizations(ctx) + return res, err +} + +func (c *Client) sendListOrganizations(ctx context.Context) (res ListOrganizationsRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("listOrganizations"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/organizations"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "ListOrganizations", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/organizations" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "ListOrganizations", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "ListOrganizations", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeListOrganizationsResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ListProjectTokens invokes listProjectTokens operation. +// +// This endpoint returns all tokens for a given project. +// +// GET /api/projects/{account_handle}/{project_handle}/tokens +func (c *Client) ListProjectTokens(ctx context.Context, params ListProjectTokensParams) (ListProjectTokensRes, error) { + res, err := c.sendListProjectTokens(ctx, params) + return res, err +} + +func (c *Client) sendListProjectTokens(ctx context.Context, params ListProjectTokensParams) (res ListProjectTokensRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("listProjectTokens"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/tokens"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "ListProjectTokens", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [5]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/tokens" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "ListProjectTokens", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "ListProjectTokens", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeListProjectTokensResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ListProjects invokes listProjects operation. +// +// List projects the authenticated user has access to. +// +// GET /api/projects +func (c *Client) ListProjects(ctx context.Context) (ListProjectsRes, error) { + res, err := c.sendListProjects(ctx) + return res, err +} + +func (c *Client) sendListProjects(ctx context.Context) (res ListProjectsRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("listProjects"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "ListProjects", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/projects" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "ListProjects", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "ListProjects", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeListProjectsResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// RefreshToken invokes refreshToken operation. +// +// This endpoint returns new tokens for a given refresh token if the refresh token is valid. +// +// POST /api/auth/refresh_token +func (c *Client) RefreshToken(ctx context.Context, request OptRefreshTokenReq) (RefreshTokenRes, error) { + res, err := c.sendRefreshToken(ctx, request) + return res, err +} + +func (c *Client) sendRefreshToken(ctx context.Context, request OptRefreshTokenReq) (res RefreshTokenRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("refreshToken"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/auth/refresh_token"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "RefreshToken", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/auth/refresh_token" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeRefreshTokenRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "RefreshToken", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "RefreshToken", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeRefreshTokenResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// RevokeProjectToken invokes revokeProjectToken operation. +// +// Revokes a project token. +// +// DELETE /api/projects/{account_handle}/{project_handle}/tokens/{id} +func (c *Client) RevokeProjectToken(ctx context.Context, params RevokeProjectTokenParams) (RevokeProjectTokenRes, error) { + res, err := c.sendRevokeProjectToken(ctx, params) + return res, err +} + +func (c *Client) sendRevokeProjectToken(ctx context.Context, params RevokeProjectTokenParams) (res RevokeProjectTokenRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("revokeProjectToken"), + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/tokens/{id}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "RevokeProjectToken", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [6]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/tokens/" + { + // Encode "id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[5] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "DELETE", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "RevokeProjectToken", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "RevokeProjectToken", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeRevokeProjectTokenResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ShowOrganization invokes showOrganization operation. +// +// Returns the organization with the given identifier. +// +// GET /api/organizations/{organization_name} +func (c *Client) ShowOrganization(ctx context.Context, params ShowOrganizationParams) (ShowOrganizationRes, error) { + res, err := c.sendShowOrganization(ctx, params) + return res, err +} + +func (c *Client) sendShowOrganization(ctx context.Context, params ShowOrganizationParams) (res ShowOrganizationRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("showOrganization"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "ShowOrganization", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/organizations/" + { + // Encode "organization_name" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "organization_name", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.OrganizationName)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "ShowOrganization", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "ShowOrganization", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeShowOrganizationResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ShowOrganizationUsage invokes showOrganizationUsage operation. +// +// Returns the usage of the organization with the given identifier. (e.g. number of remote cache hits). +// +// GET /api/organizations/{organization_name}/usage +func (c *Client) ShowOrganizationUsage(ctx context.Context, params ShowOrganizationUsageParams) (ShowOrganizationUsageRes, error) { + res, err := c.sendShowOrganizationUsage(ctx, params) + return res, err +} + +func (c *Client) sendShowOrganizationUsage(ctx context.Context, params ShowOrganizationUsageParams) (res ShowOrganizationUsageRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("showOrganizationUsage"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}/usage"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "ShowOrganizationUsage", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [3]string + pathParts[0] = "/api/organizations/" + { + // Encode "organization_name" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "organization_name", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.OrganizationName)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/usage" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "ShowOrganizationUsage", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "ShowOrganizationUsage", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeShowOrganizationUsageResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// ShowProject invokes showProject operation. +// +// Returns a project based on the handle. +// +// GET /api/projects/{account_handle}/{project_handle} +func (c *Client) ShowProject(ctx context.Context, params ShowProjectParams) (ShowProjectRes, error) { + res, err := c.sendShowProject(ctx, params) + return res, err +} + +func (c *Client) sendShowProject(ctx context.Context, params ShowProjectParams) (res ShowProjectRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("showProject"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "ShowProject", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [4]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "ShowProject", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "ShowProject", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeShowProjectResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// StartAnalyticsArtifactMultipartUpload invokes startAnalyticsArtifactMultipartUpload operation. +// +// The endpoint returns an upload ID that can be used to generate URLs for the individual parts and +// complete the upload. +// +// POST /api/runs/{run_id}/start +func (c *Client) StartAnalyticsArtifactMultipartUpload(ctx context.Context, request CommandEventArtifact, params StartAnalyticsArtifactMultipartUploadParams) (StartAnalyticsArtifactMultipartUploadRes, error) { + res, err := c.sendStartAnalyticsArtifactMultipartUpload(ctx, request, params) + return res, err +} + +func (c *Client) sendStartAnalyticsArtifactMultipartUpload(ctx context.Context, request CommandEventArtifact, params StartAnalyticsArtifactMultipartUploadParams) (res StartAnalyticsArtifactMultipartUploadRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("startAnalyticsArtifactMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/runs/{run_id}/start"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "StartAnalyticsArtifactMultipartUpload", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [3]string + pathParts[0] = "/api/runs/" + { + // Encode "run_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "run_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.IntToString(params.RunID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/start" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeStartAnalyticsArtifactMultipartUploadRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "StartAnalyticsArtifactMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "StartAnalyticsArtifactMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeStartAnalyticsArtifactMultipartUploadResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// StartCacheArtifactMultipartUpload invokes startCacheArtifactMultipartUpload operation. +// +// The endpoint returns an upload ID that can be used to generate URLs for the individual parts and +// complete the upload. +// +// POST /api/cache/multipart/start +func (c *Client) StartCacheArtifactMultipartUpload(ctx context.Context, params StartCacheArtifactMultipartUploadParams) (StartCacheArtifactMultipartUploadRes, error) { + res, err := c.sendStartCacheArtifactMultipartUpload(ctx, params) + return res, err +} + +func (c *Client) sendStartCacheArtifactMultipartUpload(ctx context.Context, params StartCacheArtifactMultipartUploadParams) (res StartCacheArtifactMultipartUploadRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("startCacheArtifactMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/cache/multipart/start"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "StartCacheArtifactMultipartUpload", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/api/cache/multipart/start" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "cache_category" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.CacheCategory.Get(); ok { + return e.EncodeValue(conv.StringToString(string(val))) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "project_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.ProjectID)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "hash" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Hash)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "name" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.Name)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "StartCacheArtifactMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "StartCacheArtifactMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeStartCacheArtifactMultipartUploadResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// StartPreviewsMultipartUpload invokes startPreviewsMultipartUpload operation. +// +// The endpoint returns an upload ID that can be used to generate URLs for the individual parts and +// complete the upload. +// +// POST /api/projects/{account_handle}/{project_handle}/previews/start +func (c *Client) StartPreviewsMultipartUpload(ctx context.Context, request OptStartPreviewsMultipartUploadReq, params StartPreviewsMultipartUploadParams) (StartPreviewsMultipartUploadRes, error) { + res, err := c.sendStartPreviewsMultipartUpload(ctx, request, params) + return res, err +} + +func (c *Client) sendStartPreviewsMultipartUpload(ctx context.Context, request OptStartPreviewsMultipartUploadReq, params StartPreviewsMultipartUploadParams) (res StartPreviewsMultipartUploadRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("startPreviewsMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/previews/start"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "StartPreviewsMultipartUpload", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [5]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/previews/start" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeStartPreviewsMultipartUploadRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "StartPreviewsMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "StartPreviewsMultipartUpload", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeStartPreviewsMultipartUploadResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// UpdateOrganization invokes updateOrganization operation. +// +// Updates an organization with given parameters. +// +// PUT /api/organizations/{organization_name} +func (c *Client) UpdateOrganization(ctx context.Context, request OptUpdateOrganizationReq, params UpdateOrganizationParams) (UpdateOrganizationRes, error) { + res, err := c.sendUpdateOrganization(ctx, request, params) + return res, err +} + +func (c *Client) sendUpdateOrganization(ctx context.Context, request OptUpdateOrganizationReq, params UpdateOrganizationParams) (res UpdateOrganizationRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("updateOrganization"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "UpdateOrganization", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/organizations/" + { + // Encode "organization_name" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "organization_name", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.OrganizationName)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "PUT", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeUpdateOrganizationRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "UpdateOrganization", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "UpdateOrganization", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeUpdateOrganizationResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// UpdateOrganization2 invokes updateOrganization (2) operation. +// +// Updates an organization with given parameters. +// +// PATCH /api/organizations/{organization_name} +func (c *Client) UpdateOrganization2(ctx context.Context, request OptUpdateOrganization2Req, params UpdateOrganization2Params) (UpdateOrganization2Res, error) { + res, err := c.sendUpdateOrganization2(ctx, request, params) + return res, err +} + +func (c *Client) sendUpdateOrganization2(ctx context.Context, request OptUpdateOrganization2Req, params UpdateOrganization2Params) (res UpdateOrganization2Res, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("updateOrganization (2)"), + semconv.HTTPRequestMethodKey.String("PATCH"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "UpdateOrganization2", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/api/organizations/" + { + // Encode "organization_name" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "organization_name", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.OrganizationName)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "PATCH", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeUpdateOrganization2Request(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "UpdateOrganization2", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "UpdateOrganization2", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeUpdateOrganization2Response(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// UpdateOrganizationMember invokes updateOrganizationMember operation. +// +// Updates a member in a given organization. +// +// PUT /api/organizations/{organization_name}/members/{user_name} +func (c *Client) UpdateOrganizationMember(ctx context.Context, request OptUpdateOrganizationMemberReq, params UpdateOrganizationMemberParams) (UpdateOrganizationMemberRes, error) { + res, err := c.sendUpdateOrganizationMember(ctx, request, params) + return res, err +} + +func (c *Client) sendUpdateOrganizationMember(ctx context.Context, request OptUpdateOrganizationMemberReq, params UpdateOrganizationMemberParams) (res UpdateOrganizationMemberRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("updateOrganizationMember"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}/members/{user_name}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "UpdateOrganizationMember", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [4]string + pathParts[0] = "/api/organizations/" + { + // Encode "organization_name" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "organization_name", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.OrganizationName)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/members/" + { + // Encode "user_name" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "user_name", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.UserName)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "PUT", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeUpdateOrganizationMemberRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "UpdateOrganizationMember", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "UpdateOrganizationMember", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeUpdateOrganizationMemberResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// UpdateProject invokes updateProject operation. +// +// Updates a project with given parameters. +// +// PUT /api/projects/{account_handle}/{project_handle} +func (c *Client) UpdateProject(ctx context.Context, request OptUpdateProjectReq, params UpdateProjectParams) (UpdateProjectRes, error) { + res, err := c.sendUpdateProject(ctx, request, params) + return res, err +} + +func (c *Client) sendUpdateProject(ctx context.Context, request OptUpdateProjectReq, params UpdateProjectParams) (res UpdateProjectRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("updateProject"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "UpdateProject", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [4]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "PUT", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeUpdateProjectRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "UpdateProject", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "UpdateProject", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeUpdateProjectResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// UploadCacheActionItem invokes uploadCacheActionItem operation. +// +// The endpoint caches a given action item without uploading a file. To upload files, use the +// multipart upload instead. +// +// POST /api/projects/{account_handle}/{project_handle}/cache/ac +func (c *Client) UploadCacheActionItem(ctx context.Context, request OptUploadCacheActionItemReq, params UploadCacheActionItemParams) (UploadCacheActionItemRes, error) { + res, err := c.sendUploadCacheActionItem(ctx, request, params) + return res, err +} + +func (c *Client) sendUploadCacheActionItem(ctx context.Context, request OptUploadCacheActionItemReq, params UploadCacheActionItemParams) (res UploadCacheActionItemRes, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("uploadCacheActionItem"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/cache/ac"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "UploadCacheActionItem", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [5]string + pathParts[0] = "/api/projects/" + { + // Encode "account_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/" + { + // Encode "project_handle" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "project_handle", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.ProjectHandle)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } + pathParts[4] = "/cache/ac" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeUploadCacheActionItemRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:Authorization" + switch err := c.securityAuthorization(ctx, "UploadCacheActionItem", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Authorization\"") + } + } + { + stage = "Security:Cookie" + switch err := c.securityCookie(ctx, "UploadCacheActionItem", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 1 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"Cookie\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeUploadCacheActionItemResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_defaults_gen.go b/internal/agent/http_cache/tuistcache/api/oas_defaults_gen.go new file mode 100644 index 00000000..23ae46f4 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_defaults_gen.go @@ -0,0 +1,59 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +// setDefaults set default value of fields. +func (s *ArtifactMultipartUploadURL) setDefaults() { + { + val := ArtifactMultipartUploadURLStatus("success") + s.Status = val + } +} + +// setDefaults set default value of fields. +func (s *ArtifactUploadID) setDefaults() { + { + val := ArtifactUploadIDStatus("success") + s.Status = val + } +} + +// setDefaults set default value of fields. +func (s *CacheArtifactDownloadURL) setDefaults() { + { + val := CacheArtifactDownloadURLStatus("success") + s.Status = val + } +} + +// setDefaults set default value of fields. +func (s *CacheArtifactExistsNotFoundErrorItem) setDefaults() { + { + val := string("not_found") + s.Code.SetTo(val) + } +} + +// setDefaults set default value of fields. +func (s *CacheArtifactExistsOK) setDefaults() { + { + val := CacheArtifactExistsOKStatus("success") + s.Status.SetTo(val) + } +} + +// setDefaults set default value of fields. +func (s *CompleteCacheArtifactMultipartUploadOK) setDefaults() { + { + val := CompleteCacheArtifactMultipartUploadOKStatus("success") + s.Status.SetTo(val) + } +} + +// setDefaults set default value of fields. +func (s *StartPreviewsMultipartUploadOK) setDefaults() { + { + val := StartPreviewsMultipartUploadOKStatus("success") + s.Status = val + } +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_handlers_gen.go b/internal/agent/http_cache/tuistcache/api/oas_handlers_gen.go new file mode 100644 index 00000000..511e512b --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_handlers_gen.go @@ -0,0 +1,6804 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + "net/http" + "time" + + "github.com/go-faster/errors" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/metric" + semconv "go.opentelemetry.io/otel/semconv/v1.26.0" + "go.opentelemetry.io/otel/trace" + + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/middleware" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/otelogen" +) + +// handleAuthenticateRequest handles authenticate operation. +// +// This endpoint returns API tokens for a given email and password. +// +// POST /api/auth +func (s *Server) handleAuthenticateRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("authenticate"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/auth"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "Authenticate", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "Authenticate", + ID: "authenticate", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "Authenticate", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "Authenticate", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeAuthenticateRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response AuthenticateRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "Authenticate", + OperationSummary: "Authenticate with email and password.", + OperationID: "authenticate", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = OptAuthenticateReq + Params = struct{} + Response = AuthenticateRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.Authenticate(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.Authenticate(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeAuthenticateResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCacheArtifactExistsRequest handles cacheArtifactExists operation. +// +// This endpoint checks if an artifact exists in the cache. It returns a 404 status code if the +// artifact does not exist. +// +// Deprecated: schema marks this operation as deprecated. +// +// GET /api/cache/exists +func (s *Server) handleCacheArtifactExistsRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("cacheArtifactExists"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/cache/exists"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CacheArtifactExists", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CacheArtifactExists", + ID: "cacheArtifactExists", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CacheArtifactExists", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CacheArtifactExists", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeCacheArtifactExistsParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response CacheArtifactExistsRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CacheArtifactExists", + OperationSummary: "It checks if an artifact exists in the cache.", + OperationID: "cacheArtifactExists", + Body: nil, + Params: middleware.Parameters{ + { + Name: "cache_category", + In: "query", + }: params.CacheCategory, + { + Name: "project_id", + In: "query", + }: params.ProjectID, + { + Name: "hash", + In: "query", + }: params.Hash, + { + Name: "name", + In: "query", + }: params.Name, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = CacheArtifactExistsParams + Response = CacheArtifactExistsRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackCacheArtifactExistsParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CacheArtifactExists(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.CacheArtifactExists(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCacheArtifactExistsResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCleanCacheRequest handles cleanCache operation. +// +// Cleans cache for a given project. +// +// PUT /api/projects/{account_handle}/{project_handle}/cache/clean +func (s *Server) handleCleanCacheRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("cleanCache"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/cache/clean"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CleanCache", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CleanCache", + ID: "cleanCache", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CleanCache", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CleanCache", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeCleanCacheParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response CleanCacheRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CleanCache", + OperationSummary: "Cleans cache for a given project", + OperationID: "cleanCache", + Body: nil, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = CleanCacheParams + Response = CleanCacheRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackCleanCacheParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CleanCache(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.CleanCache(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCleanCacheResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCompleteAnalyticsArtifactMultipartUploadRequest handles completeAnalyticsArtifactMultipartUpload operation. +// +// Given the upload ID and all the parts with their ETags, this endpoint completes the multipart +// upload. +// +// POST /api/runs/{run_id}/complete +func (s *Server) handleCompleteAnalyticsArtifactMultipartUploadRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("completeAnalyticsArtifactMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/runs/{run_id}/complete"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CompleteAnalyticsArtifactMultipartUpload", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CompleteAnalyticsArtifactMultipartUpload", + ID: "completeAnalyticsArtifactMultipartUpload", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CompleteAnalyticsArtifactMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CompleteAnalyticsArtifactMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeCompleteAnalyticsArtifactMultipartUploadParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeCompleteAnalyticsArtifactMultipartUploadRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response CompleteAnalyticsArtifactMultipartUploadRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CompleteAnalyticsArtifactMultipartUpload", + OperationSummary: "It completes a multi-part upload.", + OperationID: "completeAnalyticsArtifactMultipartUpload", + Body: request, + Params: middleware.Parameters{ + { + Name: "run_id", + In: "path", + }: params.RunID, + }, + Raw: r, + } + + type ( + Request = OptCompleteAnalyticsArtifactMultipartUploadReq + Params = CompleteAnalyticsArtifactMultipartUploadParams + Response = CompleteAnalyticsArtifactMultipartUploadRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackCompleteAnalyticsArtifactMultipartUploadParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CompleteAnalyticsArtifactMultipartUpload(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.CompleteAnalyticsArtifactMultipartUpload(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCompleteAnalyticsArtifactMultipartUploadResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCompleteAnalyticsArtifactsUploadsRequest handles completeAnalyticsArtifactsUploads operation. +// +// Given a command event, it marks all artifact uploads as finished and does extra processing of a +// given command run, such as test flakiness detection. +// +// PUT /api/runs/{run_id}/complete_artifacts_uploads +func (s *Server) handleCompleteAnalyticsArtifactsUploadsRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("completeAnalyticsArtifactsUploads"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/runs/{run_id}/complete_artifacts_uploads"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CompleteAnalyticsArtifactsUploads", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CompleteAnalyticsArtifactsUploads", + ID: "completeAnalyticsArtifactsUploads", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CompleteAnalyticsArtifactsUploads", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CompleteAnalyticsArtifactsUploads", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeCompleteAnalyticsArtifactsUploadsParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeCompleteAnalyticsArtifactsUploadsRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response CompleteAnalyticsArtifactsUploadsRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CompleteAnalyticsArtifactsUploads", + OperationSummary: "Completes artifacts uploads for a given command event", + OperationID: "completeAnalyticsArtifactsUploads", + Body: request, + Params: middleware.Parameters{ + { + Name: "run_id", + In: "path", + }: params.RunID, + }, + Raw: r, + } + + type ( + Request = OptCompleteAnalyticsArtifactsUploadsReq + Params = CompleteAnalyticsArtifactsUploadsParams + Response = CompleteAnalyticsArtifactsUploadsRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackCompleteAnalyticsArtifactsUploadsParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CompleteAnalyticsArtifactsUploads(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.CompleteAnalyticsArtifactsUploads(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCompleteAnalyticsArtifactsUploadsResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCompleteCacheArtifactMultipartUploadRequest handles completeCacheArtifactMultipartUpload operation. +// +// Given the upload ID and all the parts with their ETags, this endpoint completes the multipart +// upload. The cache will then be able to serve the artifact. +// +// POST /api/cache/multipart/complete +func (s *Server) handleCompleteCacheArtifactMultipartUploadRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("completeCacheArtifactMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/cache/multipart/complete"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CompleteCacheArtifactMultipartUpload", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CompleteCacheArtifactMultipartUpload", + ID: "completeCacheArtifactMultipartUpload", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CompleteCacheArtifactMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CompleteCacheArtifactMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeCompleteCacheArtifactMultipartUploadParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeCompleteCacheArtifactMultipartUploadRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response CompleteCacheArtifactMultipartUploadRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CompleteCacheArtifactMultipartUpload", + OperationSummary: "It completes a multi-part upload.", + OperationID: "completeCacheArtifactMultipartUpload", + Body: request, + Params: middleware.Parameters{ + { + Name: "cache_category", + In: "query", + }: params.CacheCategory, + { + Name: "project_id", + In: "query", + }: params.ProjectID, + { + Name: "hash", + In: "query", + }: params.Hash, + { + Name: "upload_id", + In: "query", + }: params.UploadID, + { + Name: "name", + In: "query", + }: params.Name, + }, + Raw: r, + } + + type ( + Request = OptCompleteCacheArtifactMultipartUploadReq + Params = CompleteCacheArtifactMultipartUploadParams + Response = CompleteCacheArtifactMultipartUploadRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackCompleteCacheArtifactMultipartUploadParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CompleteCacheArtifactMultipartUpload(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.CompleteCacheArtifactMultipartUpload(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCompleteCacheArtifactMultipartUploadResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCompletePreviewsMultipartUploadRequest handles completePreviewsMultipartUpload operation. +// +// Given the upload ID and all the parts with their ETags, this endpoint completes the multipart +// upload. +// +// POST /api/projects/{account_handle}/{project_handle}/previews/complete +func (s *Server) handleCompletePreviewsMultipartUploadRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("completePreviewsMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/previews/complete"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CompletePreviewsMultipartUpload", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CompletePreviewsMultipartUpload", + ID: "completePreviewsMultipartUpload", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CompletePreviewsMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CompletePreviewsMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeCompletePreviewsMultipartUploadParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeCompletePreviewsMultipartUploadRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response CompletePreviewsMultipartUploadRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CompletePreviewsMultipartUpload", + OperationSummary: "It completes a multi-part upload.", + OperationID: "completePreviewsMultipartUpload", + Body: request, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + }, + Raw: r, + } + + type ( + Request = OptCompletePreviewsMultipartUploadReq + Params = CompletePreviewsMultipartUploadParams + Response = CompletePreviewsMultipartUploadRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackCompletePreviewsMultipartUploadParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CompletePreviewsMultipartUpload(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.CompletePreviewsMultipartUpload(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCompletePreviewsMultipartUploadResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCreateCommandEventRequest handles createCommandEvent operation. +// +// Create a a new command analytics event. +// +// POST /api/analytics +func (s *Server) handleCreateCommandEventRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createCommandEvent"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/analytics"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CreateCommandEvent", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CreateCommandEvent", + ID: "createCommandEvent", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CreateCommandEvent", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CreateCommandEvent", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeCreateCommandEventParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeCreateCommandEventRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response CreateCommandEventRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CreateCommandEvent", + OperationSummary: "Create a a new command analytics event", + OperationID: "createCommandEvent", + Body: request, + Params: middleware.Parameters{ + { + Name: "project_id", + In: "query", + }: params.ProjectID, + }, + Raw: r, + } + + type ( + Request = OptCreateCommandEventReq + Params = CreateCommandEventParams + Response = CreateCommandEventRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackCreateCommandEventParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CreateCommandEvent(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.CreateCommandEvent(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCreateCommandEventResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCreateInvitationRequest handles createInvitation operation. +// +// Invites a user with a given email to a given organization. +// +// POST /api/organizations/{organization_name}/invitations +func (s *Server) handleCreateInvitationRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createInvitation"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}/invitations"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CreateInvitation", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CreateInvitation", + ID: "createInvitation", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CreateInvitation", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CreateInvitation", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeCreateInvitationParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeCreateInvitationRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response CreateInvitationRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CreateInvitation", + OperationSummary: "Creates an invitation", + OperationID: "createInvitation", + Body: request, + Params: middleware.Parameters{ + { + Name: "organization_name", + In: "path", + }: params.OrganizationName, + }, + Raw: r, + } + + type ( + Request = OptCreateInvitationReq + Params = CreateInvitationParams + Response = CreateInvitationRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackCreateInvitationParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CreateInvitation(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.CreateInvitation(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCreateInvitationResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCreateOrganizationRequest handles createOrganization operation. +// +// Creates an organization with the given name. +// +// POST /api/organizations +func (s *Server) handleCreateOrganizationRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createOrganization"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/organizations"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CreateOrganization", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CreateOrganization", + ID: "createOrganization", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CreateOrganization", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CreateOrganization", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeCreateOrganizationRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response CreateOrganizationRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CreateOrganization", + OperationSummary: "Creates an organization", + OperationID: "createOrganization", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = OptCreateOrganizationReq + Params = struct{} + Response = CreateOrganizationRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CreateOrganization(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.CreateOrganization(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCreateOrganizationResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCreateProjectRequest handles createProject operation. +// +// Create a new project. +// +// POST /api/projects +func (s *Server) handleCreateProjectRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createProject"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CreateProject", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CreateProject", + ID: "createProject", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CreateProject", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CreateProject", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeCreateProjectRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response CreateProjectRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CreateProject", + OperationSummary: "Create a new project.", + OperationID: "createProject", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = OptCreateProjectReq + Params = struct{} + Response = CreateProjectRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CreateProject(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.CreateProject(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCreateProjectResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleCreateProjectTokenRequest handles createProjectToken operation. +// +// This endpoint returns a new project token. +// +// POST /api/projects/{account_handle}/{project_handle}/tokens +func (s *Server) handleCreateProjectTokenRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("createProjectToken"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/tokens"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "CreateProjectToken", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "CreateProjectToken", + ID: "createProjectToken", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "CreateProjectToken", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "CreateProjectToken", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeCreateProjectTokenParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response CreateProjectTokenRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "CreateProjectToken", + OperationSummary: "Create a new project token.", + OperationID: "createProjectToken", + Body: nil, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = CreateProjectTokenParams + Response = CreateProjectTokenRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackCreateProjectTokenParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.CreateProjectToken(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.CreateProjectToken(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeCreateProjectTokenResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleDeleteOrganizationRequest handles deleteOrganization operation. +// +// Deletes the organization with the given name. +// +// DELETE /api/organizations/{organization_name} +func (s *Server) handleDeleteOrganizationRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("deleteOrganization"), + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "DeleteOrganization", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "DeleteOrganization", + ID: "deleteOrganization", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "DeleteOrganization", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "DeleteOrganization", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeDeleteOrganizationParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response DeleteOrganizationRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "DeleteOrganization", + OperationSummary: "Deletes an organization", + OperationID: "deleteOrganization", + Body: nil, + Params: middleware.Parameters{ + { + Name: "organization_name", + In: "path", + }: params.OrganizationName, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = DeleteOrganizationParams + Response = DeleteOrganizationRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackDeleteOrganizationParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.DeleteOrganization(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.DeleteOrganization(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeDeleteOrganizationResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleDeleteProjectRequest handles deleteProject operation. +// +// Deletes a project with a given id. +// +// DELETE /api/projects/{id} +func (s *Server) handleDeleteProjectRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("deleteProject"), + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/projects/{id}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "DeleteProject", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "DeleteProject", + ID: "deleteProject", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "DeleteProject", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "DeleteProject", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeDeleteProjectParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response DeleteProjectRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "DeleteProject", + OperationSummary: "Deletes a project with a given id.", + OperationID: "deleteProject", + Body: nil, + Params: middleware.Parameters{ + { + Name: "id", + In: "path", + }: params.ID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = DeleteProjectParams + Response = DeleteProjectRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackDeleteProjectParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.DeleteProject(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.DeleteProject(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeDeleteProjectResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleDownloadCacheArtifactRequest handles downloadCacheArtifact operation. +// +// This endpoint returns a signed URL that can be used to download an artifact from the cache. +// +// GET /api/cache +func (s *Server) handleDownloadCacheArtifactRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("downloadCacheArtifact"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/cache"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "DownloadCacheArtifact", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "DownloadCacheArtifact", + ID: "downloadCacheArtifact", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "DownloadCacheArtifact", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "DownloadCacheArtifact", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeDownloadCacheArtifactParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response DownloadCacheArtifactRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "DownloadCacheArtifact", + OperationSummary: "Downloads an artifact from the cache.", + OperationID: "downloadCacheArtifact", + Body: nil, + Params: middleware.Parameters{ + { + Name: "cache_category", + In: "query", + }: params.CacheCategory, + { + Name: "project_id", + In: "query", + }: params.ProjectID, + { + Name: "hash", + In: "query", + }: params.Hash, + { + Name: "name", + In: "query", + }: params.Name, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = DownloadCacheArtifactParams + Response = DownloadCacheArtifactRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackDownloadCacheArtifactParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.DownloadCacheArtifact(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.DownloadCacheArtifact(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeDownloadCacheArtifactResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleDownloadPreviewRequest handles downloadPreview operation. +// +// This endpoint returns a signed URL that can be used to download a preview. +// +// GET /api/projects/{account_handle}/{project_handle}/previews/{preview_id} +func (s *Server) handleDownloadPreviewRequest(args [3]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("downloadPreview"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/previews/{preview_id}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "DownloadPreview", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "DownloadPreview", + ID: "downloadPreview", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "DownloadPreview", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "DownloadPreview", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeDownloadPreviewParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response DownloadPreviewRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "DownloadPreview", + OperationSummary: "Downloads a preview.", + OperationID: "downloadPreview", + Body: nil, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + { + Name: "preview_id", + In: "path", + }: params.PreviewID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = DownloadPreviewParams + Response = DownloadPreviewRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackDownloadPreviewParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.DownloadPreview(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.DownloadPreview(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeDownloadPreviewResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleGenerateAnalyticsArtifactMultipartUploadURLRequest handles generateAnalyticsArtifactMultipartUploadURL operation. +// +// Given an upload ID and a part number, this endpoint returns a signed URL that can be used to +// upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. +// +// POST /api/runs/{run_id}/generate-url +func (s *Server) handleGenerateAnalyticsArtifactMultipartUploadURLRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("generateAnalyticsArtifactMultipartUploadURL"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/runs/{run_id}/generate-url"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "GenerateAnalyticsArtifactMultipartUploadURL", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "GenerateAnalyticsArtifactMultipartUploadURL", + ID: "generateAnalyticsArtifactMultipartUploadURL", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "GenerateAnalyticsArtifactMultipartUploadURL", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "GenerateAnalyticsArtifactMultipartUploadURL", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeGenerateAnalyticsArtifactMultipartUploadURLParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeGenerateAnalyticsArtifactMultipartUploadURLRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response GenerateAnalyticsArtifactMultipartUploadURLRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "GenerateAnalyticsArtifactMultipartUploadURL", + OperationSummary: "It generates a signed URL for uploading a part.", + OperationID: "generateAnalyticsArtifactMultipartUploadURL", + Body: request, + Params: middleware.Parameters{ + { + Name: "run_id", + In: "path", + }: params.RunID, + }, + Raw: r, + } + + type ( + Request = OptGenerateAnalyticsArtifactMultipartUploadURLReq + Params = GenerateAnalyticsArtifactMultipartUploadURLParams + Response = GenerateAnalyticsArtifactMultipartUploadURLRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackGenerateAnalyticsArtifactMultipartUploadURLParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.GenerateAnalyticsArtifactMultipartUploadURL(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.GenerateAnalyticsArtifactMultipartUploadURL(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeGenerateAnalyticsArtifactMultipartUploadURLResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleGenerateCacheArtifactMultipartUploadURLRequest handles generateCacheArtifactMultipartUploadURL operation. +// +// Given an upload ID and a part number, this endpoint returns a signed URL that can be used to +// upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. +// +// POST /api/cache/multipart/generate-url +func (s *Server) handleGenerateCacheArtifactMultipartUploadURLRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("generateCacheArtifactMultipartUploadURL"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/cache/multipart/generate-url"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "GenerateCacheArtifactMultipartUploadURL", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "GenerateCacheArtifactMultipartUploadURL", + ID: "generateCacheArtifactMultipartUploadURL", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "GenerateCacheArtifactMultipartUploadURL", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "GenerateCacheArtifactMultipartUploadURL", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeGenerateCacheArtifactMultipartUploadURLParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response GenerateCacheArtifactMultipartUploadURLRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "GenerateCacheArtifactMultipartUploadURL", + OperationSummary: "It generates a signed URL for uploading a part.", + OperationID: "generateCacheArtifactMultipartUploadURL", + Body: nil, + Params: middleware.Parameters{ + { + Name: "cache_category", + In: "query", + }: params.CacheCategory, + { + Name: "project_id", + In: "query", + }: params.ProjectID, + { + Name: "hash", + In: "query", + }: params.Hash, + { + Name: "part_number", + In: "query", + }: params.PartNumber, + { + Name: "upload_id", + In: "query", + }: params.UploadID, + { + Name: "name", + In: "query", + }: params.Name, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = GenerateCacheArtifactMultipartUploadURLParams + Response = GenerateCacheArtifactMultipartUploadURLRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackGenerateCacheArtifactMultipartUploadURLParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.GenerateCacheArtifactMultipartUploadURL(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.GenerateCacheArtifactMultipartUploadURL(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeGenerateCacheArtifactMultipartUploadURLResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleGeneratePreviewsMultipartUploadURLRequest handles generatePreviewsMultipartUploadURL operation. +// +// Given an upload ID and a part number, this endpoint returns a signed URL that can be used to +// upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. +// +// POST /api/projects/{account_handle}/{project_handle}/previews/generate-url +func (s *Server) handleGeneratePreviewsMultipartUploadURLRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("generatePreviewsMultipartUploadURL"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/previews/generate-url"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "GeneratePreviewsMultipartUploadURL", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "GeneratePreviewsMultipartUploadURL", + ID: "generatePreviewsMultipartUploadURL", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "GeneratePreviewsMultipartUploadURL", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "GeneratePreviewsMultipartUploadURL", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeGeneratePreviewsMultipartUploadURLParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeGeneratePreviewsMultipartUploadURLRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response GeneratePreviewsMultipartUploadURLRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "GeneratePreviewsMultipartUploadURL", + OperationSummary: "It generates a signed URL for uploading a part.", + OperationID: "generatePreviewsMultipartUploadURL", + Body: request, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + }, + Raw: r, + } + + type ( + Request = OptGeneratePreviewsMultipartUploadURLReq + Params = GeneratePreviewsMultipartUploadURLParams + Response = GeneratePreviewsMultipartUploadURLRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackGeneratePreviewsMultipartUploadURLParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.GeneratePreviewsMultipartUploadURL(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.GeneratePreviewsMultipartUploadURL(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeGeneratePreviewsMultipartUploadURLResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleGetCacheActionItemRequest handles getCacheActionItem operation. +// +// This endpoint gets an item from the action cache. +// +// GET /api/projects/{account_handle}/{project_handle}/cache/ac/{hash} +func (s *Server) handleGetCacheActionItemRequest(args [3]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getCacheActionItem"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/cache/ac/{hash}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "GetCacheActionItem", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "GetCacheActionItem", + ID: "getCacheActionItem", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "GetCacheActionItem", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "GetCacheActionItem", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeGetCacheActionItemParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response GetCacheActionItemRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "GetCacheActionItem", + OperationSummary: "Get a cache action item.", + OperationID: "getCacheActionItem", + Body: nil, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + { + Name: "hash", + In: "path", + }: params.Hash, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = GetCacheActionItemParams + Response = GetCacheActionItemRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackGetCacheActionItemParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.GetCacheActionItem(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.GetCacheActionItem(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeGetCacheActionItemResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleGetDeviceCodeRequest handles getDeviceCode operation. +// +// This endpoint returns a token for a given device code if the device code is authenticated. +// +// GET /api/auth/device_code/{device_code} +func (s *Server) handleGetDeviceCodeRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getDeviceCode"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/auth/device_code/{device_code}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "GetDeviceCode", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "GetDeviceCode", + ID: "getDeviceCode", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "GetDeviceCode", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "GetDeviceCode", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeGetDeviceCodeParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response GetDeviceCodeRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "GetDeviceCode", + OperationSummary: "Get a specific device code.", + OperationID: "getDeviceCode", + Body: nil, + Params: middleware.Parameters{ + { + Name: "device_code", + In: "path", + }: params.DeviceCode, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = GetDeviceCodeParams + Response = GetDeviceCodeRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackGetDeviceCodeParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.GetDeviceCode(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.GetDeviceCode(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeGetDeviceCodeResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleListOrganizationsRequest handles listOrganizations operation. +// +// Returns all the organizations the authenticated subject is part of. +// +// GET /api/organizations +func (s *Server) handleListOrganizationsRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("listOrganizations"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/organizations"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "ListOrganizations", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "ListOrganizations", + ID: "listOrganizations", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "ListOrganizations", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "ListOrganizations", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + + var response ListOrganizationsRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "ListOrganizations", + OperationSummary: "Lists the organizations", + OperationID: "listOrganizations", + Body: nil, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = struct{} + Params = struct{} + Response = ListOrganizationsRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ListOrganizations(ctx) + return response, err + }, + ) + } else { + response, err = s.h.ListOrganizations(ctx) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeListOrganizationsResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleListProjectTokensRequest handles listProjectTokens operation. +// +// This endpoint returns all tokens for a given project. +// +// GET /api/projects/{account_handle}/{project_handle}/tokens +func (s *Server) handleListProjectTokensRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("listProjectTokens"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/tokens"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "ListProjectTokens", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "ListProjectTokens", + ID: "listProjectTokens", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "ListProjectTokens", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "ListProjectTokens", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeListProjectTokensParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ListProjectTokensRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "ListProjectTokens", + OperationSummary: "List all project tokens.", + OperationID: "listProjectTokens", + Body: nil, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ListProjectTokensParams + Response = ListProjectTokensRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackListProjectTokensParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ListProjectTokens(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ListProjectTokens(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeListProjectTokensResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleListProjectsRequest handles listProjects operation. +// +// List projects the authenticated user has access to. +// +// GET /api/projects +func (s *Server) handleListProjectsRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("listProjects"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "ListProjects", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "ListProjects", + ID: "listProjects", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "ListProjects", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "ListProjects", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + + var response ListProjectsRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "ListProjects", + OperationSummary: "List projects the authenticated user has access to.", + OperationID: "listProjects", + Body: nil, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = struct{} + Params = struct{} + Response = ListProjectsRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ListProjects(ctx) + return response, err + }, + ) + } else { + response, err = s.h.ListProjects(ctx) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeListProjectsResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleRefreshTokenRequest handles refreshToken operation. +// +// This endpoint returns new tokens for a given refresh token if the refresh token is valid. +// +// POST /api/auth/refresh_token +func (s *Server) handleRefreshTokenRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("refreshToken"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/auth/refresh_token"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "RefreshToken", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "RefreshToken", + ID: "refreshToken", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "RefreshToken", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "RefreshToken", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + request, close, err := s.decodeRefreshTokenRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response RefreshTokenRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "RefreshToken", + OperationSummary: "Request new tokens.", + OperationID: "refreshToken", + Body: request, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = OptRefreshTokenReq + Params = struct{} + Response = RefreshTokenRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.RefreshToken(ctx, request) + return response, err + }, + ) + } else { + response, err = s.h.RefreshToken(ctx, request) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeRefreshTokenResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleRevokeProjectTokenRequest handles revokeProjectToken operation. +// +// Revokes a project token. +// +// DELETE /api/projects/{account_handle}/{project_handle}/tokens/{id} +func (s *Server) handleRevokeProjectTokenRequest(args [3]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("revokeProjectToken"), + semconv.HTTPRequestMethodKey.String("DELETE"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/tokens/{id}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "RevokeProjectToken", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "RevokeProjectToken", + ID: "revokeProjectToken", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "RevokeProjectToken", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "RevokeProjectToken", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeRevokeProjectTokenParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response RevokeProjectTokenRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "RevokeProjectToken", + OperationSummary: "Revokes a project token.", + OperationID: "revokeProjectToken", + Body: nil, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + { + Name: "id", + In: "path", + }: params.ID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = RevokeProjectTokenParams + Response = RevokeProjectTokenRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackRevokeProjectTokenParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.RevokeProjectToken(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.RevokeProjectToken(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeRevokeProjectTokenResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleShowOrganizationRequest handles showOrganization operation. +// +// Returns the organization with the given identifier. +// +// GET /api/organizations/{organization_name} +func (s *Server) handleShowOrganizationRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("showOrganization"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "ShowOrganization", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "ShowOrganization", + ID: "showOrganization", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "ShowOrganization", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "ShowOrganization", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeShowOrganizationParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ShowOrganizationRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "ShowOrganization", + OperationSummary: "Shows an organization", + OperationID: "showOrganization", + Body: nil, + Params: middleware.Parameters{ + { + Name: "organization_name", + In: "path", + }: params.OrganizationName, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ShowOrganizationParams + Response = ShowOrganizationRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackShowOrganizationParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ShowOrganization(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ShowOrganization(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeShowOrganizationResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleShowOrganizationUsageRequest handles showOrganizationUsage operation. +// +// Returns the usage of the organization with the given identifier. (e.g. number of remote cache hits). +// +// GET /api/organizations/{organization_name}/usage +func (s *Server) handleShowOrganizationUsageRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("showOrganizationUsage"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}/usage"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "ShowOrganizationUsage", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "ShowOrganizationUsage", + ID: "showOrganizationUsage", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "ShowOrganizationUsage", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "ShowOrganizationUsage", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeShowOrganizationUsageParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ShowOrganizationUsageRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "ShowOrganizationUsage", + OperationSummary: "Shows the usage of an organization", + OperationID: "showOrganizationUsage", + Body: nil, + Params: middleware.Parameters{ + { + Name: "organization_name", + In: "path", + }: params.OrganizationName, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ShowOrganizationUsageParams + Response = ShowOrganizationUsageRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackShowOrganizationUsageParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ShowOrganizationUsage(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ShowOrganizationUsage(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeShowOrganizationUsageResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleShowProjectRequest handles showProject operation. +// +// Returns a project based on the handle. +// +// GET /api/projects/{account_handle}/{project_handle} +func (s *Server) handleShowProjectRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("showProject"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "ShowProject", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "ShowProject", + ID: "showProject", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "ShowProject", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "ShowProject", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeShowProjectParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response ShowProjectRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "ShowProject", + OperationSummary: "Returns a project based on the handle.", + OperationID: "showProject", + Body: nil, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ShowProjectParams + Response = ShowProjectRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackShowProjectParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.ShowProject(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.ShowProject(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeShowProjectResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleStartAnalyticsArtifactMultipartUploadRequest handles startAnalyticsArtifactMultipartUpload operation. +// +// The endpoint returns an upload ID that can be used to generate URLs for the individual parts and +// complete the upload. +// +// POST /api/runs/{run_id}/start +func (s *Server) handleStartAnalyticsArtifactMultipartUploadRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("startAnalyticsArtifactMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/runs/{run_id}/start"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "StartAnalyticsArtifactMultipartUpload", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "StartAnalyticsArtifactMultipartUpload", + ID: "startAnalyticsArtifactMultipartUpload", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "StartAnalyticsArtifactMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "StartAnalyticsArtifactMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeStartAnalyticsArtifactMultipartUploadParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeStartAnalyticsArtifactMultipartUploadRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response StartAnalyticsArtifactMultipartUploadRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "StartAnalyticsArtifactMultipartUpload", + OperationSummary: "It initiates a multipart upload for a command event artifact.", + OperationID: "startAnalyticsArtifactMultipartUpload", + Body: request, + Params: middleware.Parameters{ + { + Name: "run_id", + In: "path", + }: params.RunID, + }, + Raw: r, + } + + type ( + Request = CommandEventArtifact + Params = StartAnalyticsArtifactMultipartUploadParams + Response = StartAnalyticsArtifactMultipartUploadRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackStartAnalyticsArtifactMultipartUploadParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.StartAnalyticsArtifactMultipartUpload(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.StartAnalyticsArtifactMultipartUpload(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeStartAnalyticsArtifactMultipartUploadResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleStartCacheArtifactMultipartUploadRequest handles startCacheArtifactMultipartUpload operation. +// +// The endpoint returns an upload ID that can be used to generate URLs for the individual parts and +// complete the upload. +// +// POST /api/cache/multipart/start +func (s *Server) handleStartCacheArtifactMultipartUploadRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("startCacheArtifactMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/cache/multipart/start"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "StartCacheArtifactMultipartUpload", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "StartCacheArtifactMultipartUpload", + ID: "startCacheArtifactMultipartUpload", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "StartCacheArtifactMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "StartCacheArtifactMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeStartCacheArtifactMultipartUploadParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response StartCacheArtifactMultipartUploadRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "StartCacheArtifactMultipartUpload", + OperationSummary: "It initiates a multipart upload in the cache.", + OperationID: "startCacheArtifactMultipartUpload", + Body: nil, + Params: middleware.Parameters{ + { + Name: "cache_category", + In: "query", + }: params.CacheCategory, + { + Name: "project_id", + In: "query", + }: params.ProjectID, + { + Name: "hash", + In: "query", + }: params.Hash, + { + Name: "name", + In: "query", + }: params.Name, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = StartCacheArtifactMultipartUploadParams + Response = StartCacheArtifactMultipartUploadRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackStartCacheArtifactMultipartUploadParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.StartCacheArtifactMultipartUpload(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.StartCacheArtifactMultipartUpload(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeStartCacheArtifactMultipartUploadResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleStartPreviewsMultipartUploadRequest handles startPreviewsMultipartUpload operation. +// +// The endpoint returns an upload ID that can be used to generate URLs for the individual parts and +// complete the upload. +// +// POST /api/projects/{account_handle}/{project_handle}/previews/start +func (s *Server) handleStartPreviewsMultipartUploadRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("startPreviewsMultipartUpload"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/previews/start"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "StartPreviewsMultipartUpload", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "StartPreviewsMultipartUpload", + ID: "startPreviewsMultipartUpload", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "StartPreviewsMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "StartPreviewsMultipartUpload", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeStartPreviewsMultipartUploadParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeStartPreviewsMultipartUploadRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response StartPreviewsMultipartUploadRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "StartPreviewsMultipartUpload", + OperationSummary: "It initiates a multipart upload for a preview artifact.", + OperationID: "startPreviewsMultipartUpload", + Body: request, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + }, + Raw: r, + } + + type ( + Request = OptStartPreviewsMultipartUploadReq + Params = StartPreviewsMultipartUploadParams + Response = StartPreviewsMultipartUploadRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackStartPreviewsMultipartUploadParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.StartPreviewsMultipartUpload(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.StartPreviewsMultipartUpload(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeStartPreviewsMultipartUploadResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleUpdateOrganizationRequest handles updateOrganization operation. +// +// Updates an organization with given parameters. +// +// PUT /api/organizations/{organization_name} +func (s *Server) handleUpdateOrganizationRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("updateOrganization"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "UpdateOrganization", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "UpdateOrganization", + ID: "updateOrganization", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "UpdateOrganization", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "UpdateOrganization", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeUpdateOrganizationParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeUpdateOrganizationRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response UpdateOrganizationRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "UpdateOrganization", + OperationSummary: "Updates an organization", + OperationID: "updateOrganization", + Body: request, + Params: middleware.Parameters{ + { + Name: "organization_name", + In: "path", + }: params.OrganizationName, + }, + Raw: r, + } + + type ( + Request = OptUpdateOrganizationReq + Params = UpdateOrganizationParams + Response = UpdateOrganizationRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackUpdateOrganizationParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.UpdateOrganization(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.UpdateOrganization(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeUpdateOrganizationResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleUpdateOrganization2Request handles updateOrganization (2) operation. +// +// Updates an organization with given parameters. +// +// PATCH /api/organizations/{organization_name} +func (s *Server) handleUpdateOrganization2Request(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("updateOrganization (2)"), + semconv.HTTPRequestMethodKey.String("PATCH"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "UpdateOrganization2", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "UpdateOrganization2", + ID: "updateOrganization (2)", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "UpdateOrganization2", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "UpdateOrganization2", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeUpdateOrganization2Params(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeUpdateOrganization2Request(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response UpdateOrganization2Res + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "UpdateOrganization2", + OperationSummary: "Updates an organization", + OperationID: "updateOrganization (2)", + Body: request, + Params: middleware.Parameters{ + { + Name: "organization_name", + In: "path", + }: params.OrganizationName, + }, + Raw: r, + } + + type ( + Request = OptUpdateOrganization2Req + Params = UpdateOrganization2Params + Response = UpdateOrganization2Res + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackUpdateOrganization2Params, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.UpdateOrganization2(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.UpdateOrganization2(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeUpdateOrganization2Response(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleUpdateOrganizationMemberRequest handles updateOrganizationMember operation. +// +// Updates a member in a given organization. +// +// PUT /api/organizations/{organization_name}/members/{user_name} +func (s *Server) handleUpdateOrganizationMemberRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("updateOrganizationMember"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/organizations/{organization_name}/members/{user_name}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "UpdateOrganizationMember", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "UpdateOrganizationMember", + ID: "updateOrganizationMember", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "UpdateOrganizationMember", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "UpdateOrganizationMember", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeUpdateOrganizationMemberParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeUpdateOrganizationMemberRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response UpdateOrganizationMemberRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "UpdateOrganizationMember", + OperationSummary: "Updates a member in an organization", + OperationID: "updateOrganizationMember", + Body: request, + Params: middleware.Parameters{ + { + Name: "organization_name", + In: "path", + }: params.OrganizationName, + { + Name: "user_name", + In: "path", + }: params.UserName, + }, + Raw: r, + } + + type ( + Request = OptUpdateOrganizationMemberReq + Params = UpdateOrganizationMemberParams + Response = UpdateOrganizationMemberRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackUpdateOrganizationMemberParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.UpdateOrganizationMember(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.UpdateOrganizationMember(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeUpdateOrganizationMemberResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleUpdateProjectRequest handles updateProject operation. +// +// Updates a project with given parameters. +// +// PUT /api/projects/{account_handle}/{project_handle} +func (s *Server) handleUpdateProjectRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("updateProject"), + semconv.HTTPRequestMethodKey.String("PUT"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "UpdateProject", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "UpdateProject", + ID: "updateProject", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "UpdateProject", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "UpdateProject", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeUpdateProjectParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeUpdateProjectRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response UpdateProjectRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "UpdateProject", + OperationSummary: "Updates a project", + OperationID: "updateProject", + Body: request, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + }, + Raw: r, + } + + type ( + Request = OptUpdateProjectReq + Params = UpdateProjectParams + Response = UpdateProjectRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackUpdateProjectParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.UpdateProject(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.UpdateProject(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeUpdateProjectResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handleUploadCacheActionItemRequest handles uploadCacheActionItem operation. +// +// The endpoint caches a given action item without uploading a file. To upload files, use the +// multipart upload instead. +// +// POST /api/projects/{account_handle}/{project_handle}/cache/ac +func (s *Server) handleUploadCacheActionItemRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("uploadCacheActionItem"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/api/projects/{account_handle}/{project_handle}/cache/ac"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "UploadCacheActionItem", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "UploadCacheActionItem", + ID: "uploadCacheActionItem", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityAuthorization(ctx, "UploadCacheActionItem", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Authorization", + Err: err, + } + defer recordError("Security:Authorization", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + { + sctx, ok, err := s.securityCookie(ctx, "UploadCacheActionItem", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "Cookie", + Err: err, + } + defer recordError("Security:Cookie", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 1 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {0b00000010}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodeUploadCacheActionItemParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + request, close, err := s.decodeUploadCacheActionItemRequest(r) + if err != nil { + err = &ogenerrors.DecodeRequestError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeRequest", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + defer func() { + if err := close(); err != nil { + recordError("CloseRequest", err) + } + }() + + var response UploadCacheActionItemRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "UploadCacheActionItem", + OperationSummary: "It uploads a given cache action item.", + OperationID: "uploadCacheActionItem", + Body: request, + Params: middleware.Parameters{ + { + Name: "account_handle", + In: "path", + }: params.AccountHandle, + { + Name: "project_handle", + In: "path", + }: params.ProjectHandle, + }, + Raw: r, + } + + type ( + Request = OptUploadCacheActionItemReq + Params = UploadCacheActionItemParams + Response = UploadCacheActionItemRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackUploadCacheActionItemParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.UploadCacheActionItem(ctx, request, params) + return response, err + }, + ) + } else { + response, err = s.h.UploadCacheActionItem(ctx, request, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodeUploadCacheActionItemResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_interfaces_gen.go b/internal/agent/http_cache/tuistcache/api/oas_interfaces_gen.go new file mode 100644 index 00000000..f8370a7e --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_interfaces_gen.go @@ -0,0 +1,150 @@ +// Code generated by ogen, DO NOT EDIT. +package api + +type AuthenticateRes interface { + authenticateRes() +} + +type CacheArtifactExistsRes interface { + cacheArtifactExistsRes() +} + +type CleanCacheRes interface { + cleanCacheRes() +} + +type CompleteAnalyticsArtifactMultipartUploadRes interface { + completeAnalyticsArtifactMultipartUploadRes() +} + +type CompleteAnalyticsArtifactsUploadsRes interface { + completeAnalyticsArtifactsUploadsRes() +} + +type CompleteCacheArtifactMultipartUploadRes interface { + completeCacheArtifactMultipartUploadRes() +} + +type CompletePreviewsMultipartUploadRes interface { + completePreviewsMultipartUploadRes() +} + +type CreateCommandEventRes interface { + createCommandEventRes() +} + +type CreateInvitationRes interface { + createInvitationRes() +} + +type CreateOrganizationRes interface { + createOrganizationRes() +} + +type CreateProjectRes interface { + createProjectRes() +} + +type CreateProjectTokenRes interface { + createProjectTokenRes() +} + +type DeleteOrganizationRes interface { + deleteOrganizationRes() +} + +type DeleteProjectRes interface { + deleteProjectRes() +} + +type DownloadCacheArtifactRes interface { + downloadCacheArtifactRes() +} + +type DownloadPreviewRes interface { + downloadPreviewRes() +} + +type GenerateAnalyticsArtifactMultipartUploadURLRes interface { + generateAnalyticsArtifactMultipartUploadURLRes() +} + +type GenerateCacheArtifactMultipartUploadURLRes interface { + generateCacheArtifactMultipartUploadURLRes() +} + +type GeneratePreviewsMultipartUploadURLRes interface { + generatePreviewsMultipartUploadURLRes() +} + +type GetCacheActionItemRes interface { + getCacheActionItemRes() +} + +type GetDeviceCodeRes interface { + getDeviceCodeRes() +} + +type ListOrganizationsRes interface { + listOrganizationsRes() +} + +type ListProjectTokensRes interface { + listProjectTokensRes() +} + +type ListProjectsRes interface { + listProjectsRes() +} + +type RefreshTokenRes interface { + refreshTokenRes() +} + +type RevokeProjectTokenRes interface { + revokeProjectTokenRes() +} + +type ShowOrganizationRes interface { + showOrganizationRes() +} + +type ShowOrganizationUsageRes interface { + showOrganizationUsageRes() +} + +type ShowProjectRes interface { + showProjectRes() +} + +type StartAnalyticsArtifactMultipartUploadRes interface { + startAnalyticsArtifactMultipartUploadRes() +} + +type StartCacheArtifactMultipartUploadRes interface { + startCacheArtifactMultipartUploadRes() +} + +type StartPreviewsMultipartUploadRes interface { + startPreviewsMultipartUploadRes() +} + +type UpdateOrganization2Res interface { + updateOrganization2Res() +} + +type UpdateOrganizationMemberRes interface { + updateOrganizationMemberRes() +} + +type UpdateOrganizationRes interface { + updateOrganizationRes() +} + +type UpdateProjectRes interface { + updateProjectRes() +} + +type UploadCacheActionItemRes interface { + uploadCacheActionItemRes() +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_json_gen.go b/internal/agent/http_cache/tuistcache/api/oas_json_gen.go new file mode 100644 index 00000000..471dfee3 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_json_gen.go @@ -0,0 +1,11841 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "math/bits" + "strconv" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + + "github.com/ogen-go/ogen/json" + "github.com/ogen-go/ogen/validate" +) + +// Encode implements json.Marshaler. +func (s *ArtifactDownloadURL) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ArtifactDownloadURL) encodeFields(e *jx.Encoder) { + { + e.FieldStart("expires_at") + e.Int(s.ExpiresAt) + } + { + e.FieldStart("url") + e.Str(s.URL) + } +} + +var jsonFieldsNameOfArtifactDownloadURL = [2]string{ + 0: "expires_at", + 1: "url", +} + +// Decode decodes ArtifactDownloadURL from json. +func (s *ArtifactDownloadURL) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactDownloadURL to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "expires_at": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int() + s.ExpiresAt = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"expires_at\"") + } + case "url": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.URL = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"url\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ArtifactDownloadURL") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfArtifactDownloadURL) { + name = jsonFieldsNameOfArtifactDownloadURL[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ArtifactDownloadURL) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactDownloadURL) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ArtifactMultipartUploadPart as json. +func (s ArtifactMultipartUploadPart) Encode(e *jx.Encoder) { + unwrapped := jx.Raw(s) + + if len(unwrapped) != 0 { + e.Raw(unwrapped) + } +} + +// Decode decodes ArtifactMultipartUploadPart from json. +func (s *ArtifactMultipartUploadPart) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactMultipartUploadPart to nil") + } + var unwrapped jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + unwrapped = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ArtifactMultipartUploadPart(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s ArtifactMultipartUploadPart) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactMultipartUploadPart) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ArtifactMultipartUploadParts) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ArtifactMultipartUploadParts) encodeFields(e *jx.Encoder) { + { + e.FieldStart("parts") + e.ArrStart() + for _, elem := range s.Parts { + elem.Encode(e) + } + e.ArrEnd() + } + { + e.FieldStart("upload_id") + e.Str(s.UploadID) + } +} + +var jsonFieldsNameOfArtifactMultipartUploadParts = [2]string{ + 0: "parts", + 1: "upload_id", +} + +// Decode decodes ArtifactMultipartUploadParts from json. +func (s *ArtifactMultipartUploadParts) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactMultipartUploadParts to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "parts": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Parts = make([]ArtifactMultipartUploadPartsPartsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ArtifactMultipartUploadPartsPartsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Parts = append(s.Parts, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"parts\"") + } + case "upload_id": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.UploadID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"upload_id\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ArtifactMultipartUploadParts") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfArtifactMultipartUploadParts) { + name = jsonFieldsNameOfArtifactMultipartUploadParts[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ArtifactMultipartUploadParts) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactMultipartUploadParts) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ArtifactMultipartUploadPartsPartsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ArtifactMultipartUploadPartsPartsItem) encodeFields(e *jx.Encoder) { + { + e.FieldStart("etag") + e.Str(s.Etag) + } + { + e.FieldStart("part_number") + e.Int(s.PartNumber) + } +} + +var jsonFieldsNameOfArtifactMultipartUploadPartsPartsItem = [2]string{ + 0: "etag", + 1: "part_number", +} + +// Decode decodes ArtifactMultipartUploadPartsPartsItem from json. +func (s *ArtifactMultipartUploadPartsPartsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactMultipartUploadPartsPartsItem to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "etag": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Etag = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"etag\"") + } + case "part_number": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Int() + s.PartNumber = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"part_number\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ArtifactMultipartUploadPartsPartsItem") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfArtifactMultipartUploadPartsPartsItem) { + name = jsonFieldsNameOfArtifactMultipartUploadPartsPartsItem[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ArtifactMultipartUploadPartsPartsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactMultipartUploadPartsPartsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ArtifactMultipartUploadURL) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ArtifactMultipartUploadURL) encodeFields(e *jx.Encoder) { + { + e.FieldStart("data") + s.Data.Encode(e) + } + { + e.FieldStart("status") + s.Status.Encode(e) + } +} + +var jsonFieldsNameOfArtifactMultipartUploadURL = [2]string{ + 0: "data", + 1: "status", +} + +// Decode decodes ArtifactMultipartUploadURL from json. +func (s *ArtifactMultipartUploadURL) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactMultipartUploadURL to nil") + } + var requiredBitSet [1]uint8 + s.setDefaults() + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "status": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ArtifactMultipartUploadURL") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfArtifactMultipartUploadURL) { + name = jsonFieldsNameOfArtifactMultipartUploadURL[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ArtifactMultipartUploadURL) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactMultipartUploadURL) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ArtifactMultipartUploadURLData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ArtifactMultipartUploadURLData) encodeFields(e *jx.Encoder) { + { + e.FieldStart("url") + e.Str(s.URL) + } +} + +var jsonFieldsNameOfArtifactMultipartUploadURLData = [1]string{ + 0: "url", +} + +// Decode decodes ArtifactMultipartUploadURLData from json. +func (s *ArtifactMultipartUploadURLData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactMultipartUploadURLData to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "url": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.URL = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"url\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ArtifactMultipartUploadURLData") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfArtifactMultipartUploadURLData) { + name = jsonFieldsNameOfArtifactMultipartUploadURLData[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ArtifactMultipartUploadURLData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactMultipartUploadURLData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ArtifactMultipartUploadURLStatus as json. +func (s ArtifactMultipartUploadURLStatus) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes ArtifactMultipartUploadURLStatus from json. +func (s *ArtifactMultipartUploadURLStatus) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactMultipartUploadURLStatus to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch ArtifactMultipartUploadURLStatus(v) { + case ArtifactMultipartUploadURLStatusSuccess: + *s = ArtifactMultipartUploadURLStatusSuccess + default: + *s = ArtifactMultipartUploadURLStatus(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s ArtifactMultipartUploadURLStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactMultipartUploadURLStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ArtifactUploadID) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ArtifactUploadID) encodeFields(e *jx.Encoder) { + { + e.FieldStart("data") + s.Data.Encode(e) + } + { + e.FieldStart("status") + s.Status.Encode(e) + } +} + +var jsonFieldsNameOfArtifactUploadID = [2]string{ + 0: "data", + 1: "status", +} + +// Decode decodes ArtifactUploadID from json. +func (s *ArtifactUploadID) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactUploadID to nil") + } + var requiredBitSet [1]uint8 + s.setDefaults() + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "status": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ArtifactUploadID") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfArtifactUploadID) { + name = jsonFieldsNameOfArtifactUploadID[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ArtifactUploadID) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactUploadID) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ArtifactUploadIDData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ArtifactUploadIDData) encodeFields(e *jx.Encoder) { + { + e.FieldStart("upload_id") + e.Str(s.UploadID) + } +} + +var jsonFieldsNameOfArtifactUploadIDData = [1]string{ + 0: "upload_id", +} + +// Decode decodes ArtifactUploadIDData from json. +func (s *ArtifactUploadIDData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactUploadIDData to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "upload_id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.UploadID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"upload_id\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ArtifactUploadIDData") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfArtifactUploadIDData) { + name = jsonFieldsNameOfArtifactUploadIDData[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ArtifactUploadIDData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactUploadIDData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ArtifactUploadIDStatus as json. +func (s ArtifactUploadIDStatus) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes ArtifactUploadIDStatus from json. +func (s *ArtifactUploadIDStatus) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ArtifactUploadIDStatus to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch ArtifactUploadIDStatus(v) { + case ArtifactUploadIDStatusSuccess: + *s = ArtifactUploadIDStatusSuccess + default: + *s = ArtifactUploadIDStatus(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s ArtifactUploadIDStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ArtifactUploadIDStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *AuthenticateReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *AuthenticateReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("email") + e.Str(s.Email) + } + { + e.FieldStart("password") + e.Str(s.Password) + } +} + +var jsonFieldsNameOfAuthenticateReq = [2]string{ + 0: "email", + 1: "password", +} + +// Decode decodes AuthenticateReq from json. +func (s *AuthenticateReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode AuthenticateReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "email": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Email = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"email\"") + } + case "password": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.Password = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"password\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode AuthenticateReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfAuthenticateReq) { + name = jsonFieldsNameOfAuthenticateReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *AuthenticateReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *AuthenticateReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *AuthenticationTokens) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *AuthenticationTokens) encodeFields(e *jx.Encoder) { + { + e.FieldStart("access_token") + e.Str(s.AccessToken) + } + { + e.FieldStart("refresh_token") + e.Str(s.RefreshToken) + } +} + +var jsonFieldsNameOfAuthenticationTokens = [2]string{ + 0: "access_token", + 1: "refresh_token", +} + +// Decode decodes AuthenticationTokens from json. +func (s *AuthenticationTokens) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode AuthenticationTokens to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "access_token": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.AccessToken = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"access_token\"") + } + case "refresh_token": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.RefreshToken = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"refresh_token\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode AuthenticationTokens") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfAuthenticationTokens) { + name = jsonFieldsNameOfAuthenticationTokens[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *AuthenticationTokens) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *AuthenticationTokens) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CacheActionItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CacheActionItem) encodeFields(e *jx.Encoder) { + { + e.FieldStart("hash") + e.Str(s.Hash) + } +} + +var jsonFieldsNameOfCacheActionItem = [1]string{ + 0: "hash", +} + +// Decode decodes CacheActionItem from json. +func (s *CacheActionItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheActionItem to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "hash": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Hash = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"hash\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CacheActionItem") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCacheActionItem) { + name = jsonFieldsNameOfCacheActionItem[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheActionItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheActionItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CacheArtifactDownloadURL) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CacheArtifactDownloadURL) encodeFields(e *jx.Encoder) { + { + e.FieldStart("data") + s.Data.Encode(e) + } + { + e.FieldStart("status") + s.Status.Encode(e) + } +} + +var jsonFieldsNameOfCacheArtifactDownloadURL = [2]string{ + 0: "data", + 1: "status", +} + +// Decode decodes CacheArtifactDownloadURL from json. +func (s *CacheArtifactDownloadURL) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactDownloadURL to nil") + } + var requiredBitSet [1]uint8 + s.setDefaults() + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "status": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CacheArtifactDownloadURL") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCacheArtifactDownloadURL) { + name = jsonFieldsNameOfCacheArtifactDownloadURL[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheArtifactDownloadURL) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactDownloadURL) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CacheArtifactDownloadURLData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CacheArtifactDownloadURLData) encodeFields(e *jx.Encoder) { + { + e.FieldStart("expires_at") + e.Int(s.ExpiresAt) + } + { + e.FieldStart("url") + e.Str(s.URL) + } +} + +var jsonFieldsNameOfCacheArtifactDownloadURLData = [2]string{ + 0: "expires_at", + 1: "url", +} + +// Decode decodes CacheArtifactDownloadURLData from json. +func (s *CacheArtifactDownloadURLData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactDownloadURLData to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "expires_at": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int() + s.ExpiresAt = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"expires_at\"") + } + case "url": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.URL = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"url\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CacheArtifactDownloadURLData") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCacheArtifactDownloadURLData) { + name = jsonFieldsNameOfCacheArtifactDownloadURLData[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheArtifactDownloadURLData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactDownloadURLData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CacheArtifactDownloadURLStatus as json. +func (s CacheArtifactDownloadURLStatus) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes CacheArtifactDownloadURLStatus from json. +func (s *CacheArtifactDownloadURLStatus) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactDownloadURLStatus to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch CacheArtifactDownloadURLStatus(v) { + case CacheArtifactDownloadURLStatusSuccess: + *s = CacheArtifactDownloadURLStatusSuccess + default: + *s = CacheArtifactDownloadURLStatus(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s CacheArtifactDownloadURLStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactDownloadURLStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CacheArtifactExistsForbidden as json. +func (s *CacheArtifactExistsForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CacheArtifactExistsForbidden from json. +func (s *CacheArtifactExistsForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactExistsForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CacheArtifactExistsForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheArtifactExistsForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactExistsForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CacheArtifactExistsNotFound) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CacheArtifactExistsNotFound) encodeFields(e *jx.Encoder) { + { + if s.Error != nil { + e.FieldStart("error") + e.ArrStart() + for _, elem := range s.Error { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfCacheArtifactExistsNotFound = [1]string{ + 0: "error", +} + +// Decode decodes CacheArtifactExistsNotFound from json. +func (s *CacheArtifactExistsNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactExistsNotFound to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "error": + if err := func() error { + s.Error = make([]CacheArtifactExistsNotFoundErrorItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem CacheArtifactExistsNotFoundErrorItem + if err := elem.Decode(d); err != nil { + return err + } + s.Error = append(s.Error, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CacheArtifactExistsNotFound") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheArtifactExistsNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactExistsNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CacheArtifactExistsNotFoundErrorItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CacheArtifactExistsNotFoundErrorItem) encodeFields(e *jx.Encoder) { + { + if s.Code.Set { + e.FieldStart("code") + s.Code.Encode(e) + } + } + { + if s.Message.Set { + e.FieldStart("message") + s.Message.Encode(e) + } + } +} + +var jsonFieldsNameOfCacheArtifactExistsNotFoundErrorItem = [2]string{ + 0: "code", + 1: "message", +} + +// Decode decodes CacheArtifactExistsNotFoundErrorItem from json. +func (s *CacheArtifactExistsNotFoundErrorItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactExistsNotFoundErrorItem to nil") + } + s.setDefaults() + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "code": + if err := func() error { + s.Code.Reset() + if err := s.Code.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"code\"") + } + case "message": + if err := func() error { + s.Message.Reset() + if err := s.Message.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"message\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CacheArtifactExistsNotFoundErrorItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheArtifactExistsNotFoundErrorItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactExistsNotFoundErrorItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CacheArtifactExistsOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CacheArtifactExistsOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } +} + +var jsonFieldsNameOfCacheArtifactExistsOK = [2]string{ + 0: "data", + 1: "status", +} + +// Decode decodes CacheArtifactExistsOK from json. +func (s *CacheArtifactExistsOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactExistsOK to nil") + } + s.setDefaults() + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = nil + var elem CacheArtifactExistsOKData + if err := elem.Decode(d); err != nil { + return err + } + s.Data = &elem + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CacheArtifactExistsOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheArtifactExistsOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactExistsOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CacheArtifactExistsOKData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CacheArtifactExistsOKData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfCacheArtifactExistsOKData = [0]string{} + +// Decode decodes CacheArtifactExistsOKData from json. +func (s *CacheArtifactExistsOKData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactExistsOKData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode CacheArtifactExistsOKData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheArtifactExistsOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactExistsOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CacheArtifactExistsOKStatus as json. +func (s CacheArtifactExistsOKStatus) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes CacheArtifactExistsOKStatus from json. +func (s *CacheArtifactExistsOKStatus) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactExistsOKStatus to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch CacheArtifactExistsOKStatus(v) { + case CacheArtifactExistsOKStatusSuccess: + *s = CacheArtifactExistsOKStatusSuccess + default: + *s = CacheArtifactExistsOKStatus(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s CacheArtifactExistsOKStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactExistsOKStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CacheArtifactExistsPaymentRequired as json. +func (s *CacheArtifactExistsPaymentRequired) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CacheArtifactExistsPaymentRequired from json. +func (s *CacheArtifactExistsPaymentRequired) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactExistsPaymentRequired to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CacheArtifactExistsPaymentRequired(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheArtifactExistsPaymentRequired) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactExistsPaymentRequired) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CacheArtifactExistsUnauthorized as json. +func (s *CacheArtifactExistsUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CacheArtifactExistsUnauthorized from json. +func (s *CacheArtifactExistsUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CacheArtifactExistsUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CacheArtifactExistsUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CacheArtifactExistsUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CacheArtifactExistsUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CleanCacheForbidden as json. +func (s *CleanCacheForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CleanCacheForbidden from json. +func (s *CleanCacheForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CleanCacheForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CleanCacheForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CleanCacheForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CleanCacheForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CleanCacheNotFound as json. +func (s *CleanCacheNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CleanCacheNotFound from json. +func (s *CleanCacheNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CleanCacheNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CleanCacheNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CleanCacheNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CleanCacheNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CleanCacheUnauthorized as json. +func (s *CleanCacheUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CleanCacheUnauthorized from json. +func (s *CleanCacheUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CleanCacheUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CleanCacheUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CleanCacheUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CleanCacheUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CommandEvent) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CommandEvent) encodeFields(e *jx.Encoder) { + { + e.FieldStart("id") + e.Float64(s.ID) + } + { + e.FieldStart("name") + e.Str(s.Name) + } + { + e.FieldStart("url") + e.Str(s.URL) + } +} + +var jsonFieldsNameOfCommandEvent = [3]string{ + 0: "id", + 1: "name", + 2: "url", +} + +// Decode decodes CommandEvent from json. +func (s *CommandEvent) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CommandEvent to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Float64() + s.ID = float64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "name": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "url": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Str() + s.URL = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"url\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CommandEvent") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCommandEvent) { + name = jsonFieldsNameOfCommandEvent[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CommandEvent) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CommandEvent) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CommandEventArtifact as json. +func (s CommandEventArtifact) Encode(e *jx.Encoder) { + unwrapped := jx.Raw(s) + + if len(unwrapped) != 0 { + e.Raw(unwrapped) + } +} + +// Decode decodes CommandEventArtifact from json. +func (s *CommandEventArtifact) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CommandEventArtifact to nil") + } + var unwrapped jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + unwrapped = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CommandEventArtifact(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s CommandEventArtifact) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CommandEventArtifact) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteAnalyticsArtifactMultipartUploadForbidden as json. +func (s *CompleteAnalyticsArtifactMultipartUploadForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteAnalyticsArtifactMultipartUploadForbidden from json. +func (s *CompleteAnalyticsArtifactMultipartUploadForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteAnalyticsArtifactMultipartUploadForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteAnalyticsArtifactMultipartUploadForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteAnalyticsArtifactMultipartUploadInternalServerError as json. +func (s *CompleteAnalyticsArtifactMultipartUploadInternalServerError) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteAnalyticsArtifactMultipartUploadInternalServerError from json. +func (s *CompleteAnalyticsArtifactMultipartUploadInternalServerError) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteAnalyticsArtifactMultipartUploadInternalServerError to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteAnalyticsArtifactMultipartUploadInternalServerError(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadInternalServerError) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadInternalServerError) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteAnalyticsArtifactMultipartUploadNotFound as json. +func (s *CompleteAnalyticsArtifactMultipartUploadNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteAnalyticsArtifactMultipartUploadNotFound from json. +func (s *CompleteAnalyticsArtifactMultipartUploadNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteAnalyticsArtifactMultipartUploadNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteAnalyticsArtifactMultipartUploadNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CompleteAnalyticsArtifactMultipartUploadReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("command_event_artifact") + s.CommandEventArtifact.Encode(e) + } + { + e.FieldStart("multipart_upload_parts") + s.MultipartUploadParts.Encode(e) + } +} + +var jsonFieldsNameOfCompleteAnalyticsArtifactMultipartUploadReq = [2]string{ + 0: "command_event_artifact", + 1: "multipart_upload_parts", +} + +// Decode decodes CompleteAnalyticsArtifactMultipartUploadReq from json. +func (s *CompleteAnalyticsArtifactMultipartUploadReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteAnalyticsArtifactMultipartUploadReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "command_event_artifact": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.CommandEventArtifact.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"command_event_artifact\"") + } + case "multipart_upload_parts": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.MultipartUploadParts.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"multipart_upload_parts\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CompleteAnalyticsArtifactMultipartUploadReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCompleteAnalyticsArtifactMultipartUploadReq) { + name = jsonFieldsNameOfCompleteAnalyticsArtifactMultipartUploadReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteAnalyticsArtifactMultipartUploadUnauthorized as json. +func (s *CompleteAnalyticsArtifactMultipartUploadUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteAnalyticsArtifactMultipartUploadUnauthorized from json. +func (s *CompleteAnalyticsArtifactMultipartUploadUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteAnalyticsArtifactMultipartUploadUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteAnalyticsArtifactMultipartUploadUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteAnalyticsArtifactMultipartUploadUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteAnalyticsArtifactsUploadsForbidden as json. +func (s *CompleteAnalyticsArtifactsUploadsForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteAnalyticsArtifactsUploadsForbidden from json. +func (s *CompleteAnalyticsArtifactsUploadsForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteAnalyticsArtifactsUploadsForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteAnalyticsArtifactsUploadsForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteAnalyticsArtifactsUploadsForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteAnalyticsArtifactsUploadsForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteAnalyticsArtifactsUploadsNotFound as json. +func (s *CompleteAnalyticsArtifactsUploadsNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteAnalyticsArtifactsUploadsNotFound from json. +func (s *CompleteAnalyticsArtifactsUploadsNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteAnalyticsArtifactsUploadsNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteAnalyticsArtifactsUploadsNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteAnalyticsArtifactsUploadsNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteAnalyticsArtifactsUploadsNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CompleteAnalyticsArtifactsUploadsReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CompleteAnalyticsArtifactsUploadsReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("modules") + e.ArrStart() + for _, elem := range s.Modules { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfCompleteAnalyticsArtifactsUploadsReq = [1]string{ + 0: "modules", +} + +// Decode decodes CompleteAnalyticsArtifactsUploadsReq from json. +func (s *CompleteAnalyticsArtifactsUploadsReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteAnalyticsArtifactsUploadsReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "modules": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Modules = make([]Module, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem Module + if err := elem.Decode(d); err != nil { + return err + } + s.Modules = append(s.Modules, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"modules\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CompleteAnalyticsArtifactsUploadsReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCompleteAnalyticsArtifactsUploadsReq) { + name = jsonFieldsNameOfCompleteAnalyticsArtifactsUploadsReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteAnalyticsArtifactsUploadsReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteAnalyticsArtifactsUploadsReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteAnalyticsArtifactsUploadsUnauthorized as json. +func (s *CompleteAnalyticsArtifactsUploadsUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteAnalyticsArtifactsUploadsUnauthorized from json. +func (s *CompleteAnalyticsArtifactsUploadsUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteAnalyticsArtifactsUploadsUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteAnalyticsArtifactsUploadsUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteAnalyticsArtifactsUploadsUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteAnalyticsArtifactsUploadsUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteCacheArtifactMultipartUploadForbidden as json. +func (s *CompleteCacheArtifactMultipartUploadForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteCacheArtifactMultipartUploadForbidden from json. +func (s *CompleteCacheArtifactMultipartUploadForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteCacheArtifactMultipartUploadForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteCacheArtifactMultipartUploadForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteCacheArtifactMultipartUploadForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteCacheArtifactMultipartUploadNotFound as json. +func (s *CompleteCacheArtifactMultipartUploadNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteCacheArtifactMultipartUploadNotFound from json. +func (s *CompleteCacheArtifactMultipartUploadNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteCacheArtifactMultipartUploadNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteCacheArtifactMultipartUploadNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteCacheArtifactMultipartUploadNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CompleteCacheArtifactMultipartUploadOK) encodeFields(e *jx.Encoder) { + { + if s.Data != nil { + e.FieldStart("data") + s.Data.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } +} + +var jsonFieldsNameOfCompleteCacheArtifactMultipartUploadOK = [2]string{ + 0: "data", + 1: "status", +} + +// Decode decodes CompleteCacheArtifactMultipartUploadOK from json. +func (s *CompleteCacheArtifactMultipartUploadOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteCacheArtifactMultipartUploadOK to nil") + } + s.setDefaults() + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + if err := func() error { + s.Data = nil + var elem CompleteCacheArtifactMultipartUploadOKData + if err := elem.Decode(d); err != nil { + return err + } + s.Data = &elem + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CompleteCacheArtifactMultipartUploadOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteCacheArtifactMultipartUploadOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadOKData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CompleteCacheArtifactMultipartUploadOKData) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfCompleteCacheArtifactMultipartUploadOKData = [0]string{} + +// Decode decodes CompleteCacheArtifactMultipartUploadOKData from json. +func (s *CompleteCacheArtifactMultipartUploadOKData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteCacheArtifactMultipartUploadOKData to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode CompleteCacheArtifactMultipartUploadOKData") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteCacheArtifactMultipartUploadOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteCacheArtifactMultipartUploadOKStatus as json. +func (s CompleteCacheArtifactMultipartUploadOKStatus) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes CompleteCacheArtifactMultipartUploadOKStatus from json. +func (s *CompleteCacheArtifactMultipartUploadOKStatus) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteCacheArtifactMultipartUploadOKStatus to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch CompleteCacheArtifactMultipartUploadOKStatus(v) { + case CompleteCacheArtifactMultipartUploadOKStatusSuccess: + *s = CompleteCacheArtifactMultipartUploadOKStatusSuccess + default: + *s = CompleteCacheArtifactMultipartUploadOKStatus(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s CompleteCacheArtifactMultipartUploadOKStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteCacheArtifactMultipartUploadOKStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteCacheArtifactMultipartUploadPaymentRequired as json. +func (s *CompleteCacheArtifactMultipartUploadPaymentRequired) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteCacheArtifactMultipartUploadPaymentRequired from json. +func (s *CompleteCacheArtifactMultipartUploadPaymentRequired) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteCacheArtifactMultipartUploadPaymentRequired to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteCacheArtifactMultipartUploadPaymentRequired(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadPaymentRequired) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteCacheArtifactMultipartUploadPaymentRequired) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CompleteCacheArtifactMultipartUploadReq) encodeFields(e *jx.Encoder) { + { + if s.Parts != nil { + e.FieldStart("parts") + e.ArrStart() + for _, elem := range s.Parts { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfCompleteCacheArtifactMultipartUploadReq = [1]string{ + 0: "parts", +} + +// Decode decodes CompleteCacheArtifactMultipartUploadReq from json. +func (s *CompleteCacheArtifactMultipartUploadReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteCacheArtifactMultipartUploadReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "parts": + if err := func() error { + s.Parts = make([]CompleteCacheArtifactMultipartUploadReqPartsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem CompleteCacheArtifactMultipartUploadReqPartsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Parts = append(s.Parts, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"parts\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CompleteCacheArtifactMultipartUploadReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteCacheArtifactMultipartUploadReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadReqPartsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CompleteCacheArtifactMultipartUploadReqPartsItem) encodeFields(e *jx.Encoder) { + { + if s.Etag.Set { + e.FieldStart("etag") + s.Etag.Encode(e) + } + } + { + if s.PartNumber.Set { + e.FieldStart("part_number") + s.PartNumber.Encode(e) + } + } +} + +var jsonFieldsNameOfCompleteCacheArtifactMultipartUploadReqPartsItem = [2]string{ + 0: "etag", + 1: "part_number", +} + +// Decode decodes CompleteCacheArtifactMultipartUploadReqPartsItem from json. +func (s *CompleteCacheArtifactMultipartUploadReqPartsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteCacheArtifactMultipartUploadReqPartsItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "etag": + if err := func() error { + s.Etag.Reset() + if err := s.Etag.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"etag\"") + } + case "part_number": + if err := func() error { + s.PartNumber.Reset() + if err := s.PartNumber.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"part_number\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CompleteCacheArtifactMultipartUploadReqPartsItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadReqPartsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteCacheArtifactMultipartUploadReqPartsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteCacheArtifactMultipartUploadUnauthorized as json. +func (s *CompleteCacheArtifactMultipartUploadUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompleteCacheArtifactMultipartUploadUnauthorized from json. +func (s *CompleteCacheArtifactMultipartUploadUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompleteCacheArtifactMultipartUploadUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompleteCacheArtifactMultipartUploadUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompleteCacheArtifactMultipartUploadUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompleteCacheArtifactMultipartUploadUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompletePreviewsMultipartUploadForbidden as json. +func (s *CompletePreviewsMultipartUploadForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompletePreviewsMultipartUploadForbidden from json. +func (s *CompletePreviewsMultipartUploadForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompletePreviewsMultipartUploadForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompletePreviewsMultipartUploadForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompletePreviewsMultipartUploadForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompletePreviewsMultipartUploadForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompletePreviewsMultipartUploadNotFound as json. +func (s *CompletePreviewsMultipartUploadNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompletePreviewsMultipartUploadNotFound from json. +func (s *CompletePreviewsMultipartUploadNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompletePreviewsMultipartUploadNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompletePreviewsMultipartUploadNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompletePreviewsMultipartUploadNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompletePreviewsMultipartUploadNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CompletePreviewsMultipartUploadOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CompletePreviewsMultipartUploadOK) encodeFields(e *jx.Encoder) { + { + e.FieldStart("url") + e.Str(s.URL) + } +} + +var jsonFieldsNameOfCompletePreviewsMultipartUploadOK = [1]string{ + 0: "url", +} + +// Decode decodes CompletePreviewsMultipartUploadOK from json. +func (s *CompletePreviewsMultipartUploadOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompletePreviewsMultipartUploadOK to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "url": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.URL = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"url\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CompletePreviewsMultipartUploadOK") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCompletePreviewsMultipartUploadOK) { + name = jsonFieldsNameOfCompletePreviewsMultipartUploadOK[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompletePreviewsMultipartUploadOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompletePreviewsMultipartUploadOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CompletePreviewsMultipartUploadReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CompletePreviewsMultipartUploadReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("multipart_upload_parts") + s.MultipartUploadParts.Encode(e) + } + { + e.FieldStart("preview_id") + e.Str(s.PreviewID) + } +} + +var jsonFieldsNameOfCompletePreviewsMultipartUploadReq = [2]string{ + 0: "multipart_upload_parts", + 1: "preview_id", +} + +// Decode decodes CompletePreviewsMultipartUploadReq from json. +func (s *CompletePreviewsMultipartUploadReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompletePreviewsMultipartUploadReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "multipart_upload_parts": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.MultipartUploadParts.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"multipart_upload_parts\"") + } + case "preview_id": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.PreviewID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"preview_id\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CompletePreviewsMultipartUploadReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCompletePreviewsMultipartUploadReq) { + name = jsonFieldsNameOfCompletePreviewsMultipartUploadReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompletePreviewsMultipartUploadReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompletePreviewsMultipartUploadReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompletePreviewsMultipartUploadUnauthorized as json. +func (s *CompletePreviewsMultipartUploadUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CompletePreviewsMultipartUploadUnauthorized from json. +func (s *CompletePreviewsMultipartUploadUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CompletePreviewsMultipartUploadUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CompletePreviewsMultipartUploadUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CompletePreviewsMultipartUploadUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CompletePreviewsMultipartUploadUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateCommandEventForbidden as json. +func (s *CreateCommandEventForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateCommandEventForbidden from json. +func (s *CreateCommandEventForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateCommandEventForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateCommandEventForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateCommandEventForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateCommandEventForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CreateCommandEventReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CreateCommandEventReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("client_id") + e.Str(s.ClientID) + } + { + if s.CommandArguments != nil { + e.FieldStart("command_arguments") + e.ArrStart() + for _, elem := range s.CommandArguments { + e.Str(elem) + } + e.ArrEnd() + } + } + { + e.FieldStart("duration") + e.Float64(s.Duration) + } + { + if s.ErrorMessage.Set { + e.FieldStart("error_message") + s.ErrorMessage.Encode(e) + } + } + { + if s.GitCommitSha.Set { + e.FieldStart("git_commit_sha") + s.GitCommitSha.Encode(e) + } + } + { + if s.GitRef.Set { + e.FieldStart("git_ref") + s.GitRef.Encode(e) + } + } + { + if s.GitRemoteURLOrigin.Set { + e.FieldStart("git_remote_url_origin") + s.GitRemoteURLOrigin.Encode(e) + } + } + { + e.FieldStart("is_ci") + e.Bool(s.IsCi) + } + { + e.FieldStart("macos_version") + e.Str(s.MacosVersion) + } + { + e.FieldStart("name") + e.Str(s.Name) + } + { + if s.Params.Set { + e.FieldStart("params") + s.Params.Encode(e) + } + } + { + if s.PreviewID.Set { + e.FieldStart("preview_id") + s.PreviewID.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } + { + if s.Subcommand.Set { + e.FieldStart("subcommand") + s.Subcommand.Encode(e) + } + } + { + e.FieldStart("swift_version") + e.Str(s.SwiftVersion) + } + { + e.FieldStart("tuist_version") + e.Str(s.TuistVersion) + } +} + +var jsonFieldsNameOfCreateCommandEventReq = [16]string{ + 0: "client_id", + 1: "command_arguments", + 2: "duration", + 3: "error_message", + 4: "git_commit_sha", + 5: "git_ref", + 6: "git_remote_url_origin", + 7: "is_ci", + 8: "macos_version", + 9: "name", + 10: "params", + 11: "preview_id", + 12: "status", + 13: "subcommand", + 14: "swift_version", + 15: "tuist_version", +} + +// Decode decodes CreateCommandEventReq from json. +func (s *CreateCommandEventReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateCommandEventReq to nil") + } + var requiredBitSet [2]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "client_id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.ClientID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"client_id\"") + } + case "command_arguments": + if err := func() error { + s.CommandArguments = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.CommandArguments = append(s.CommandArguments, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"command_arguments\"") + } + case "duration": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Float64() + s.Duration = float64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"duration\"") + } + case "error_message": + if err := func() error { + s.ErrorMessage.Reset() + if err := s.ErrorMessage.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error_message\"") + } + case "git_commit_sha": + if err := func() error { + s.GitCommitSha.Reset() + if err := s.GitCommitSha.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"git_commit_sha\"") + } + case "git_ref": + if err := func() error { + s.GitRef.Reset() + if err := s.GitRef.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"git_ref\"") + } + case "git_remote_url_origin": + if err := func() error { + s.GitRemoteURLOrigin.Reset() + if err := s.GitRemoteURLOrigin.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"git_remote_url_origin\"") + } + case "is_ci": + requiredBitSet[0] |= 1 << 7 + if err := func() error { + v, err := d.Bool() + s.IsCi = bool(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"is_ci\"") + } + case "macos_version": + requiredBitSet[1] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.MacosVersion = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"macos_version\"") + } + case "name": + requiredBitSet[1] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "params": + if err := func() error { + s.Params.Reset() + if err := s.Params.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"params\"") + } + case "preview_id": + if err := func() error { + s.PreviewID.Reset() + if err := s.PreviewID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"preview_id\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "subcommand": + if err := func() error { + s.Subcommand.Reset() + if err := s.Subcommand.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subcommand\"") + } + case "swift_version": + requiredBitSet[1] |= 1 << 6 + if err := func() error { + v, err := d.Str() + s.SwiftVersion = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"swift_version\"") + } + case "tuist_version": + requiredBitSet[1] |= 1 << 7 + if err := func() error { + v, err := d.Str() + s.TuistVersion = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tuist_version\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CreateCommandEventReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [2]uint8{ + 0b10000101, + 0b11000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCreateCommandEventReq) { + name = jsonFieldsNameOfCreateCommandEventReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateCommandEventReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateCommandEventReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CreateCommandEventReqParams) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CreateCommandEventReqParams) encodeFields(e *jx.Encoder) { + { + if s.CacheableTargets != nil { + e.FieldStart("cacheable_targets") + e.ArrStart() + for _, elem := range s.CacheableTargets { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.LocalCacheTargetHits != nil { + e.FieldStart("local_cache_target_hits") + e.ArrStart() + for _, elem := range s.LocalCacheTargetHits { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.LocalTestTargetHits != nil { + e.FieldStart("local_test_target_hits") + e.ArrStart() + for _, elem := range s.LocalTestTargetHits { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.RemoteCacheTargetHits != nil { + e.FieldStart("remote_cache_target_hits") + e.ArrStart() + for _, elem := range s.RemoteCacheTargetHits { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.RemoteTestTargetHits != nil { + e.FieldStart("remote_test_target_hits") + e.ArrStart() + for _, elem := range s.RemoteTestTargetHits { + e.Str(elem) + } + e.ArrEnd() + } + } + { + if s.TestTargets != nil { + e.FieldStart("test_targets") + e.ArrStart() + for _, elem := range s.TestTargets { + e.Str(elem) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfCreateCommandEventReqParams = [6]string{ + 0: "cacheable_targets", + 1: "local_cache_target_hits", + 2: "local_test_target_hits", + 3: "remote_cache_target_hits", + 4: "remote_test_target_hits", + 5: "test_targets", +} + +// Decode decodes CreateCommandEventReqParams from json. +func (s *CreateCommandEventReqParams) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateCommandEventReqParams to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "cacheable_targets": + if err := func() error { + s.CacheableTargets = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.CacheableTargets = append(s.CacheableTargets, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"cacheable_targets\"") + } + case "local_cache_target_hits": + if err := func() error { + s.LocalCacheTargetHits = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.LocalCacheTargetHits = append(s.LocalCacheTargetHits, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"local_cache_target_hits\"") + } + case "local_test_target_hits": + if err := func() error { + s.LocalTestTargetHits = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.LocalTestTargetHits = append(s.LocalTestTargetHits, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"local_test_target_hits\"") + } + case "remote_cache_target_hits": + if err := func() error { + s.RemoteCacheTargetHits = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.RemoteCacheTargetHits = append(s.RemoteCacheTargetHits, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"remote_cache_target_hits\"") + } + case "remote_test_target_hits": + if err := func() error { + s.RemoteTestTargetHits = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.RemoteTestTargetHits = append(s.RemoteTestTargetHits, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"remote_test_target_hits\"") + } + case "test_targets": + if err := func() error { + s.TestTargets = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.TestTargets = append(s.TestTargets, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"test_targets\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CreateCommandEventReqParams") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateCommandEventReqParams) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateCommandEventReqParams) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateCommandEventReqStatus as json. +func (s CreateCommandEventReqStatus) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes CreateCommandEventReqStatus from json. +func (s *CreateCommandEventReqStatus) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateCommandEventReqStatus to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch CreateCommandEventReqStatus(v) { + case CreateCommandEventReqStatusSuccess: + *s = CreateCommandEventReqStatusSuccess + case CreateCommandEventReqStatusFailure: + *s = CreateCommandEventReqStatusFailure + default: + *s = CreateCommandEventReqStatus(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s CreateCommandEventReqStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateCommandEventReqStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateCommandEventUnauthorized as json. +func (s *CreateCommandEventUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateCommandEventUnauthorized from json. +func (s *CreateCommandEventUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateCommandEventUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateCommandEventUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateCommandEventUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateCommandEventUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateInvitationBadRequest as json. +func (s *CreateInvitationBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateInvitationBadRequest from json. +func (s *CreateInvitationBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateInvitationBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateInvitationBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateInvitationBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateInvitationBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateInvitationForbidden as json. +func (s *CreateInvitationForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateInvitationForbidden from json. +func (s *CreateInvitationForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateInvitationForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateInvitationForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateInvitationForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateInvitationForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateInvitationNotFound as json. +func (s *CreateInvitationNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateInvitationNotFound from json. +func (s *CreateInvitationNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateInvitationNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateInvitationNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateInvitationNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateInvitationNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CreateInvitationReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CreateInvitationReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("invitee_email") + e.Str(s.InviteeEmail) + } +} + +var jsonFieldsNameOfCreateInvitationReq = [1]string{ + 0: "invitee_email", +} + +// Decode decodes CreateInvitationReq from json. +func (s *CreateInvitationReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateInvitationReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "invitee_email": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.InviteeEmail = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"invitee_email\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CreateInvitationReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCreateInvitationReq) { + name = jsonFieldsNameOfCreateInvitationReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateInvitationReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateInvitationReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateInvitationUnauthorized as json. +func (s *CreateInvitationUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateInvitationUnauthorized from json. +func (s *CreateInvitationUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateInvitationUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateInvitationUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateInvitationUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateInvitationUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CreateOrganizationReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CreateOrganizationReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("name") + e.Str(s.Name) + } +} + +var jsonFieldsNameOfCreateOrganizationReq = [1]string{ + 0: "name", +} + +// Decode decodes CreateOrganizationReq from json. +func (s *CreateOrganizationReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateOrganizationReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "name": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CreateOrganizationReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCreateOrganizationReq) { + name = jsonFieldsNameOfCreateOrganizationReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateOrganizationReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateOrganizationReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateProjectBadRequest as json. +func (s *CreateProjectBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateProjectBadRequest from json. +func (s *CreateProjectBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateProjectBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateProjectBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateProjectBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateProjectBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateProjectForbidden as json. +func (s *CreateProjectForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateProjectForbidden from json. +func (s *CreateProjectForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateProjectForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateProjectForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateProjectForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateProjectForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CreateProjectReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CreateProjectReq) encodeFields(e *jx.Encoder) { + { + if s.FullHandle.Set { + e.FieldStart("full_handle") + s.FullHandle.Encode(e) + } + } + { + if s.Name.Set { + e.FieldStart("name") + s.Name.Encode(e) + } + } + { + if s.Organization.Set { + e.FieldStart("organization") + s.Organization.Encode(e) + } + } +} + +var jsonFieldsNameOfCreateProjectReq = [3]string{ + 0: "full_handle", + 1: "name", + 2: "organization", +} + +// Decode decodes CreateProjectReq from json. +func (s *CreateProjectReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateProjectReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "full_handle": + if err := func() error { + s.FullHandle.Reset() + if err := s.FullHandle.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"full_handle\"") + } + case "name": + if err := func() error { + s.Name.Reset() + if err := s.Name.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "organization": + if err := func() error { + s.Organization.Reset() + if err := s.Organization.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"organization\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CreateProjectReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateProjectReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateProjectReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateProjectTokenForbidden as json. +func (s *CreateProjectTokenForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateProjectTokenForbidden from json. +func (s *CreateProjectTokenForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateProjectTokenForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateProjectTokenForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateProjectTokenForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateProjectTokenForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateProjectTokenNotFound as json. +func (s *CreateProjectTokenNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateProjectTokenNotFound from json. +func (s *CreateProjectTokenNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateProjectTokenNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateProjectTokenNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateProjectTokenNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateProjectTokenNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *CreateProjectTokenOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *CreateProjectTokenOK) encodeFields(e *jx.Encoder) { + { + e.FieldStart("token") + e.Str(s.Token) + } +} + +var jsonFieldsNameOfCreateProjectTokenOK = [1]string{ + 0: "token", +} + +// Decode decodes CreateProjectTokenOK from json. +func (s *CreateProjectTokenOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateProjectTokenOK to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "token": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Token = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"token\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode CreateProjectTokenOK") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfCreateProjectTokenOK) { + name = jsonFieldsNameOfCreateProjectTokenOK[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateProjectTokenOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateProjectTokenOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateProjectTokenUnauthorized as json. +func (s *CreateProjectTokenUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateProjectTokenUnauthorized from json. +func (s *CreateProjectTokenUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateProjectTokenUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateProjectTokenUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateProjectTokenUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateProjectTokenUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateProjectUnauthorized as json. +func (s *CreateProjectUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes CreateProjectUnauthorized from json. +func (s *CreateProjectUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CreateProjectUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = CreateProjectUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *CreateProjectUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CreateProjectUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DeleteOrganizationForbidden as json. +func (s *DeleteOrganizationForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DeleteOrganizationForbidden from json. +func (s *DeleteOrganizationForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DeleteOrganizationForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DeleteOrganizationForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DeleteOrganizationForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DeleteOrganizationForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DeleteOrganizationNotFound as json. +func (s *DeleteOrganizationNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DeleteOrganizationNotFound from json. +func (s *DeleteOrganizationNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DeleteOrganizationNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DeleteOrganizationNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DeleteOrganizationNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DeleteOrganizationNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DeleteOrganizationUnauthorized as json. +func (s *DeleteOrganizationUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DeleteOrganizationUnauthorized from json. +func (s *DeleteOrganizationUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DeleteOrganizationUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DeleteOrganizationUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DeleteOrganizationUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DeleteOrganizationUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DeleteProjectForbidden as json. +func (s *DeleteProjectForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DeleteProjectForbidden from json. +func (s *DeleteProjectForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DeleteProjectForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DeleteProjectForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DeleteProjectForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DeleteProjectForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DeleteProjectNotFound as json. +func (s *DeleteProjectNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DeleteProjectNotFound from json. +func (s *DeleteProjectNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DeleteProjectNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DeleteProjectNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DeleteProjectNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DeleteProjectNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DeleteProjectUnauthorized as json. +func (s *DeleteProjectUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DeleteProjectUnauthorized from json. +func (s *DeleteProjectUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DeleteProjectUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DeleteProjectUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DeleteProjectUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DeleteProjectUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DownloadCacheArtifactForbidden as json. +func (s *DownloadCacheArtifactForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DownloadCacheArtifactForbidden from json. +func (s *DownloadCacheArtifactForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DownloadCacheArtifactForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DownloadCacheArtifactForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DownloadCacheArtifactForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DownloadCacheArtifactForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DownloadCacheArtifactNotFound as json. +func (s *DownloadCacheArtifactNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DownloadCacheArtifactNotFound from json. +func (s *DownloadCacheArtifactNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DownloadCacheArtifactNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DownloadCacheArtifactNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DownloadCacheArtifactNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DownloadCacheArtifactNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DownloadCacheArtifactPaymentRequired as json. +func (s *DownloadCacheArtifactPaymentRequired) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DownloadCacheArtifactPaymentRequired from json. +func (s *DownloadCacheArtifactPaymentRequired) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DownloadCacheArtifactPaymentRequired to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DownloadCacheArtifactPaymentRequired(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DownloadCacheArtifactPaymentRequired) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DownloadCacheArtifactPaymentRequired) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DownloadCacheArtifactUnauthorized as json. +func (s *DownloadCacheArtifactUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DownloadCacheArtifactUnauthorized from json. +func (s *DownloadCacheArtifactUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DownloadCacheArtifactUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DownloadCacheArtifactUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DownloadCacheArtifactUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DownloadCacheArtifactUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DownloadPreviewForbidden as json. +func (s *DownloadPreviewForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DownloadPreviewForbidden from json. +func (s *DownloadPreviewForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DownloadPreviewForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DownloadPreviewForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DownloadPreviewForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DownloadPreviewForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DownloadPreviewNotFound as json. +func (s *DownloadPreviewNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DownloadPreviewNotFound from json. +func (s *DownloadPreviewNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DownloadPreviewNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DownloadPreviewNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DownloadPreviewNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DownloadPreviewNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes DownloadPreviewUnauthorized as json. +func (s *DownloadPreviewUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes DownloadPreviewUnauthorized from json. +func (s *DownloadPreviewUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode DownloadPreviewUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = DownloadPreviewUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *DownloadPreviewUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *DownloadPreviewUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Error) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Error) encodeFields(e *jx.Encoder) { + { + e.FieldStart("message") + e.Str(s.Message) + } +} + +var jsonFieldsNameOfError = [1]string{ + 0: "message", +} + +// Decode decodes Error from json. +func (s *Error) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Error to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "message": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Message = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"message\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Error") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfError) { + name = jsonFieldsNameOfError[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Error) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Error) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GenerateAnalyticsArtifactMultipartUploadURLForbidden as json. +func (s *GenerateAnalyticsArtifactMultipartUploadURLForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GenerateAnalyticsArtifactMultipartUploadURLForbidden from json. +func (s *GenerateAnalyticsArtifactMultipartUploadURLForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GenerateAnalyticsArtifactMultipartUploadURLForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GenerateAnalyticsArtifactMultipartUploadURLForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GenerateAnalyticsArtifactMultipartUploadURLForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GenerateAnalyticsArtifactMultipartUploadURLForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GenerateAnalyticsArtifactMultipartUploadURLNotFound as json. +func (s *GenerateAnalyticsArtifactMultipartUploadURLNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GenerateAnalyticsArtifactMultipartUploadURLNotFound from json. +func (s *GenerateAnalyticsArtifactMultipartUploadURLNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GenerateAnalyticsArtifactMultipartUploadURLNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GenerateAnalyticsArtifactMultipartUploadURLNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GenerateAnalyticsArtifactMultipartUploadURLNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GenerateAnalyticsArtifactMultipartUploadURLNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *GenerateAnalyticsArtifactMultipartUploadURLReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GenerateAnalyticsArtifactMultipartUploadURLReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("command_event_artifact") + s.CommandEventArtifact.Encode(e) + } + { + e.FieldStart("multipart_upload_part") + s.MultipartUploadPart.Encode(e) + } +} + +var jsonFieldsNameOfGenerateAnalyticsArtifactMultipartUploadURLReq = [2]string{ + 0: "command_event_artifact", + 1: "multipart_upload_part", +} + +// Decode decodes GenerateAnalyticsArtifactMultipartUploadURLReq from json. +func (s *GenerateAnalyticsArtifactMultipartUploadURLReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GenerateAnalyticsArtifactMultipartUploadURLReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "command_event_artifact": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.CommandEventArtifact.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"command_event_artifact\"") + } + case "multipart_upload_part": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.MultipartUploadPart.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"multipart_upload_part\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode GenerateAnalyticsArtifactMultipartUploadURLReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfGenerateAnalyticsArtifactMultipartUploadURLReq) { + name = jsonFieldsNameOfGenerateAnalyticsArtifactMultipartUploadURLReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GenerateAnalyticsArtifactMultipartUploadURLReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GenerateAnalyticsArtifactMultipartUploadURLReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GenerateAnalyticsArtifactMultipartUploadURLUnauthorized as json. +func (s *GenerateAnalyticsArtifactMultipartUploadURLUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GenerateAnalyticsArtifactMultipartUploadURLUnauthorized from json. +func (s *GenerateAnalyticsArtifactMultipartUploadURLUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GenerateAnalyticsArtifactMultipartUploadURLUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GenerateAnalyticsArtifactMultipartUploadURLUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GenerateAnalyticsArtifactMultipartUploadURLUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GenerateAnalyticsArtifactMultipartUploadURLUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GenerateCacheArtifactMultipartUploadURLForbidden as json. +func (s *GenerateCacheArtifactMultipartUploadURLForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GenerateCacheArtifactMultipartUploadURLForbidden from json. +func (s *GenerateCacheArtifactMultipartUploadURLForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GenerateCacheArtifactMultipartUploadURLForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GenerateCacheArtifactMultipartUploadURLForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GenerateCacheArtifactMultipartUploadURLForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GenerateCacheArtifactMultipartUploadURLForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GenerateCacheArtifactMultipartUploadURLNotFound as json. +func (s *GenerateCacheArtifactMultipartUploadURLNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GenerateCacheArtifactMultipartUploadURLNotFound from json. +func (s *GenerateCacheArtifactMultipartUploadURLNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GenerateCacheArtifactMultipartUploadURLNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GenerateCacheArtifactMultipartUploadURLNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GenerateCacheArtifactMultipartUploadURLNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GenerateCacheArtifactMultipartUploadURLNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GenerateCacheArtifactMultipartUploadURLPaymentRequired as json. +func (s *GenerateCacheArtifactMultipartUploadURLPaymentRequired) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GenerateCacheArtifactMultipartUploadURLPaymentRequired from json. +func (s *GenerateCacheArtifactMultipartUploadURLPaymentRequired) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GenerateCacheArtifactMultipartUploadURLPaymentRequired to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GenerateCacheArtifactMultipartUploadURLPaymentRequired(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GenerateCacheArtifactMultipartUploadURLPaymentRequired) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GenerateCacheArtifactMultipartUploadURLPaymentRequired) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GenerateCacheArtifactMultipartUploadURLUnauthorized as json. +func (s *GenerateCacheArtifactMultipartUploadURLUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GenerateCacheArtifactMultipartUploadURLUnauthorized from json. +func (s *GenerateCacheArtifactMultipartUploadURLUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GenerateCacheArtifactMultipartUploadURLUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GenerateCacheArtifactMultipartUploadURLUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GenerateCacheArtifactMultipartUploadURLUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GenerateCacheArtifactMultipartUploadURLUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GeneratePreviewsMultipartUploadURLForbidden as json. +func (s *GeneratePreviewsMultipartUploadURLForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GeneratePreviewsMultipartUploadURLForbidden from json. +func (s *GeneratePreviewsMultipartUploadURLForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GeneratePreviewsMultipartUploadURLForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GeneratePreviewsMultipartUploadURLForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GeneratePreviewsMultipartUploadURLForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GeneratePreviewsMultipartUploadURLForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GeneratePreviewsMultipartUploadURLNotFound as json. +func (s *GeneratePreviewsMultipartUploadURLNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GeneratePreviewsMultipartUploadURLNotFound from json. +func (s *GeneratePreviewsMultipartUploadURLNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GeneratePreviewsMultipartUploadURLNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GeneratePreviewsMultipartUploadURLNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GeneratePreviewsMultipartUploadURLNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GeneratePreviewsMultipartUploadURLNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *GeneratePreviewsMultipartUploadURLReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GeneratePreviewsMultipartUploadURLReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("multipart_upload_part") + s.MultipartUploadPart.Encode(e) + } + { + e.FieldStart("preview_id") + e.Str(s.PreviewID) + } +} + +var jsonFieldsNameOfGeneratePreviewsMultipartUploadURLReq = [2]string{ + 0: "multipart_upload_part", + 1: "preview_id", +} + +// Decode decodes GeneratePreviewsMultipartUploadURLReq from json. +func (s *GeneratePreviewsMultipartUploadURLReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GeneratePreviewsMultipartUploadURLReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "multipart_upload_part": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.MultipartUploadPart.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"multipart_upload_part\"") + } + case "preview_id": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.PreviewID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"preview_id\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode GeneratePreviewsMultipartUploadURLReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfGeneratePreviewsMultipartUploadURLReq) { + name = jsonFieldsNameOfGeneratePreviewsMultipartUploadURLReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GeneratePreviewsMultipartUploadURLReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GeneratePreviewsMultipartUploadURLReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GeneratePreviewsMultipartUploadURLUnauthorized as json. +func (s *GeneratePreviewsMultipartUploadURLUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GeneratePreviewsMultipartUploadURLUnauthorized from json. +func (s *GeneratePreviewsMultipartUploadURLUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GeneratePreviewsMultipartUploadURLUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GeneratePreviewsMultipartUploadURLUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GeneratePreviewsMultipartUploadURLUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GeneratePreviewsMultipartUploadURLUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GetCacheActionItemForbidden as json. +func (s *GetCacheActionItemForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GetCacheActionItemForbidden from json. +func (s *GetCacheActionItemForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GetCacheActionItemForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GetCacheActionItemForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GetCacheActionItemForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GetCacheActionItemForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GetCacheActionItemNotFound as json. +func (s *GetCacheActionItemNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GetCacheActionItemNotFound from json. +func (s *GetCacheActionItemNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GetCacheActionItemNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GetCacheActionItemNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GetCacheActionItemNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GetCacheActionItemNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GetCacheActionItemPaymentRequired as json. +func (s *GetCacheActionItemPaymentRequired) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GetCacheActionItemPaymentRequired from json. +func (s *GetCacheActionItemPaymentRequired) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GetCacheActionItemPaymentRequired to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GetCacheActionItemPaymentRequired(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GetCacheActionItemPaymentRequired) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GetCacheActionItemPaymentRequired) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GetCacheActionItemUnauthorized as json. +func (s *GetCacheActionItemUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes GetCacheActionItemUnauthorized from json. +func (s *GetCacheActionItemUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GetCacheActionItemUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = GetCacheActionItemUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GetCacheActionItemUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GetCacheActionItemUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *GetDeviceCodeAccepted) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GetDeviceCodeAccepted) encodeFields(e *jx.Encoder) { +} + +var jsonFieldsNameOfGetDeviceCodeAccepted = [0]string{} + +// Decode decodes GetDeviceCodeAccepted from json. +func (s *GetDeviceCodeAccepted) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GetDeviceCodeAccepted to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + default: + return d.Skip() + } + }); err != nil { + return errors.Wrap(err, "decode GetDeviceCodeAccepted") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GetDeviceCodeAccepted) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GetDeviceCodeAccepted) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *GetDeviceCodeOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GetDeviceCodeOK) encodeFields(e *jx.Encoder) { + { + if s.AccessToken.Set { + e.FieldStart("access_token") + s.AccessToken.Encode(e) + } + } + { + if s.RefreshToken.Set { + e.FieldStart("refresh_token") + s.RefreshToken.Encode(e) + } + } + { + if s.Token.Set { + e.FieldStart("token") + s.Token.Encode(e) + } + } +} + +var jsonFieldsNameOfGetDeviceCodeOK = [3]string{ + 0: "access_token", + 1: "refresh_token", + 2: "token", +} + +// Decode decodes GetDeviceCodeOK from json. +func (s *GetDeviceCodeOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GetDeviceCodeOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "access_token": + if err := func() error { + s.AccessToken.Reset() + if err := s.AccessToken.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"access_token\"") + } + case "refresh_token": + if err := func() error { + s.RefreshToken.Reset() + if err := s.RefreshToken.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"refresh_token\"") + } + case "token": + if err := func() error { + s.Token.Reset() + if err := s.Token.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"token\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode GetDeviceCodeOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GetDeviceCodeOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GetDeviceCodeOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Invitation) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Invitation) encodeFields(e *jx.Encoder) { + { + e.FieldStart("id") + e.Float64(s.ID) + } + { + e.FieldStart("invitee_email") + e.Str(s.InviteeEmail) + } + { + e.FieldStart("inviter") + s.Inviter.Encode(e) + } + { + e.FieldStart("organization_id") + e.Float64(s.OrganizationID) + } + { + e.FieldStart("token") + e.Str(s.Token) + } +} + +var jsonFieldsNameOfInvitation = [5]string{ + 0: "id", + 1: "invitee_email", + 2: "inviter", + 3: "organization_id", + 4: "token", +} + +// Decode decodes Invitation from json. +func (s *Invitation) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Invitation to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Float64() + s.ID = float64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "invitee_email": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.InviteeEmail = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"invitee_email\"") + } + case "inviter": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + if err := s.Inviter.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"inviter\"") + } + case "organization_id": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + v, err := d.Float64() + s.OrganizationID = float64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"organization_id\"") + } + case "token": + requiredBitSet[0] |= 1 << 4 + if err := func() error { + v, err := d.Str() + s.Token = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"token\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Invitation") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00011111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfInvitation) { + name = jsonFieldsNameOfInvitation[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Invitation) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Invitation) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ListOrganizationsForbidden as json. +func (s *ListOrganizationsForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ListOrganizationsForbidden from json. +func (s *ListOrganizationsForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ListOrganizationsForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ListOrganizationsForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ListOrganizationsForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ListOrganizationsForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ListOrganizationsOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ListOrganizationsOK) encodeFields(e *jx.Encoder) { + { + e.FieldStart("organizations") + e.ArrStart() + for _, elem := range s.Organizations { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfListOrganizationsOK = [1]string{ + 0: "organizations", +} + +// Decode decodes ListOrganizationsOK from json. +func (s *ListOrganizationsOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ListOrganizationsOK to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "organizations": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Organizations = make([]Organization, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem Organization + if err := elem.Decode(d); err != nil { + return err + } + s.Organizations = append(s.Organizations, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"organizations\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ListOrganizationsOK") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfListOrganizationsOK) { + name = jsonFieldsNameOfListOrganizationsOK[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ListOrganizationsOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ListOrganizationsOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ListOrganizationsUnauthorized as json. +func (s *ListOrganizationsUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ListOrganizationsUnauthorized from json. +func (s *ListOrganizationsUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ListOrganizationsUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ListOrganizationsUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ListOrganizationsUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ListOrganizationsUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ListProjectTokensForbidden as json. +func (s *ListProjectTokensForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ListProjectTokensForbidden from json. +func (s *ListProjectTokensForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ListProjectTokensForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ListProjectTokensForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ListProjectTokensForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ListProjectTokensForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ListProjectTokensNotFound as json. +func (s *ListProjectTokensNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ListProjectTokensNotFound from json. +func (s *ListProjectTokensNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ListProjectTokensNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ListProjectTokensNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ListProjectTokensNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ListProjectTokensNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ListProjectTokensOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ListProjectTokensOK) encodeFields(e *jx.Encoder) { + { + e.FieldStart("tokens") + e.ArrStart() + for _, elem := range s.Tokens { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfListProjectTokensOK = [1]string{ + 0: "tokens", +} + +// Decode decodes ListProjectTokensOK from json. +func (s *ListProjectTokensOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ListProjectTokensOK to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "tokens": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Tokens = make([]ProjectToken, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ProjectToken + if err := elem.Decode(d); err != nil { + return err + } + s.Tokens = append(s.Tokens, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tokens\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ListProjectTokensOK") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfListProjectTokensOK) { + name = jsonFieldsNameOfListProjectTokensOK[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ListProjectTokensOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ListProjectTokensOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ListProjectTokensUnauthorized as json. +func (s *ListProjectTokensUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ListProjectTokensUnauthorized from json. +func (s *ListProjectTokensUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ListProjectTokensUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ListProjectTokensUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ListProjectTokensUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ListProjectTokensUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ListProjectsOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ListProjectsOK) encodeFields(e *jx.Encoder) { + { + e.FieldStart("projects") + e.ArrStart() + for _, elem := range s.Projects { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfListProjectsOK = [1]string{ + 0: "projects", +} + +// Decode decodes ListProjectsOK from json. +func (s *ListProjectsOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ListProjectsOK to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "projects": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Projects = make([]Project, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem Project + if err := elem.Decode(d); err != nil { + return err + } + s.Projects = append(s.Projects, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"projects\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ListProjectsOK") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfListProjectsOK) { + name = jsonFieldsNameOfListProjectsOK[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ListProjectsOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ListProjectsOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Module) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Module) encodeFields(e *jx.Encoder) { + { + e.FieldStart("hash") + e.Str(s.Hash) + } + { + e.FieldStart("name") + e.Str(s.Name) + } + { + e.FieldStart("project_identifier") + e.Str(s.ProjectIdentifier) + } +} + +var jsonFieldsNameOfModule = [3]string{ + 0: "hash", + 1: "name", + 2: "project_identifier", +} + +// Decode decodes Module from json. +func (s *Module) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Module to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "hash": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Hash = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"hash\"") + } + case "name": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "project_identifier": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Str() + s.ProjectIdentifier = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"project_identifier\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Module") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfModule) { + name = jsonFieldsNameOfModule[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Module) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Module) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes AuthenticateReq as json. +func (o OptAuthenticateReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes AuthenticateReq from json. +func (o *OptAuthenticateReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptAuthenticateReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptAuthenticateReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptAuthenticateReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CacheArtifactExistsOKStatus as json. +func (o OptCacheArtifactExistsOKStatus) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Str(string(o.Value)) +} + +// Decode decodes CacheArtifactExistsOKStatus from json. +func (o *OptCacheArtifactExistsOKStatus) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCacheArtifactExistsOKStatus to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCacheArtifactExistsOKStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCacheArtifactExistsOKStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteAnalyticsArtifactMultipartUploadReq as json. +func (o OptCompleteAnalyticsArtifactMultipartUploadReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CompleteAnalyticsArtifactMultipartUploadReq from json. +func (o *OptCompleteAnalyticsArtifactMultipartUploadReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCompleteAnalyticsArtifactMultipartUploadReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCompleteAnalyticsArtifactMultipartUploadReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCompleteAnalyticsArtifactMultipartUploadReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteAnalyticsArtifactsUploadsReq as json. +func (o OptCompleteAnalyticsArtifactsUploadsReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CompleteAnalyticsArtifactsUploadsReq from json. +func (o *OptCompleteAnalyticsArtifactsUploadsReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCompleteAnalyticsArtifactsUploadsReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCompleteAnalyticsArtifactsUploadsReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCompleteAnalyticsArtifactsUploadsReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteCacheArtifactMultipartUploadOKStatus as json. +func (o OptCompleteCacheArtifactMultipartUploadOKStatus) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Str(string(o.Value)) +} + +// Decode decodes CompleteCacheArtifactMultipartUploadOKStatus from json. +func (o *OptCompleteCacheArtifactMultipartUploadOKStatus) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCompleteCacheArtifactMultipartUploadOKStatus to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCompleteCacheArtifactMultipartUploadOKStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCompleteCacheArtifactMultipartUploadOKStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompleteCacheArtifactMultipartUploadReq as json. +func (o OptCompleteCacheArtifactMultipartUploadReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CompleteCacheArtifactMultipartUploadReq from json. +func (o *OptCompleteCacheArtifactMultipartUploadReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCompleteCacheArtifactMultipartUploadReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCompleteCacheArtifactMultipartUploadReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCompleteCacheArtifactMultipartUploadReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CompletePreviewsMultipartUploadReq as json. +func (o OptCompletePreviewsMultipartUploadReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CompletePreviewsMultipartUploadReq from json. +func (o *OptCompletePreviewsMultipartUploadReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCompletePreviewsMultipartUploadReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCompletePreviewsMultipartUploadReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCompletePreviewsMultipartUploadReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateCommandEventReq as json. +func (o OptCreateCommandEventReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CreateCommandEventReq from json. +func (o *OptCreateCommandEventReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCreateCommandEventReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCreateCommandEventReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCreateCommandEventReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateCommandEventReqParams as json. +func (o OptCreateCommandEventReqParams) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CreateCommandEventReqParams from json. +func (o *OptCreateCommandEventReqParams) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCreateCommandEventReqParams to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCreateCommandEventReqParams) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCreateCommandEventReqParams) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateCommandEventReqStatus as json. +func (o OptCreateCommandEventReqStatus) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Str(string(o.Value)) +} + +// Decode decodes CreateCommandEventReqStatus from json. +func (o *OptCreateCommandEventReqStatus) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCreateCommandEventReqStatus to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCreateCommandEventReqStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCreateCommandEventReqStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateInvitationReq as json. +func (o OptCreateInvitationReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CreateInvitationReq from json. +func (o *OptCreateInvitationReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCreateInvitationReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCreateInvitationReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCreateInvitationReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateOrganizationReq as json. +func (o OptCreateOrganizationReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CreateOrganizationReq from json. +func (o *OptCreateOrganizationReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCreateOrganizationReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCreateOrganizationReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCreateOrganizationReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes CreateProjectReq as json. +func (o OptCreateProjectReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CreateProjectReq from json. +func (o *OptCreateProjectReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCreateProjectReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCreateProjectReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCreateProjectReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GenerateAnalyticsArtifactMultipartUploadURLReq as json. +func (o OptGenerateAnalyticsArtifactMultipartUploadURLReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes GenerateAnalyticsArtifactMultipartUploadURLReq from json. +func (o *OptGenerateAnalyticsArtifactMultipartUploadURLReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptGenerateAnalyticsArtifactMultipartUploadURLReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptGenerateAnalyticsArtifactMultipartUploadURLReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptGenerateAnalyticsArtifactMultipartUploadURLReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes GeneratePreviewsMultipartUploadURLReq as json. +func (o OptGeneratePreviewsMultipartUploadURLReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes GeneratePreviewsMultipartUploadURLReq from json. +func (o *OptGeneratePreviewsMultipartUploadURLReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptGeneratePreviewsMultipartUploadURLReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptGeneratePreviewsMultipartUploadURLReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptGeneratePreviewsMultipartUploadURLReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes int as json. +func (o OptInt) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Int(int(o.Value)) +} + +// Decode decodes int from json. +func (o *OptInt) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptInt to nil") + } + o.Set = true + v, err := d.Int() + if err != nil { + return err + } + o.Value = int(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptInt) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptInt) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes string as json. +func (o OptNilString) Encode(e *jx.Encoder) { + if !o.Set { + return + } + if o.Null { + e.Null() + return + } + e.Str(string(o.Value)) +} + +// Decode decodes string from json. +func (o *OptNilString) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptNilString to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v string + o.Value = v + o.Set = true + o.Null = true + return nil + } + o.Set = true + o.Null = false + v, err := d.Str() + if err != nil { + return err + } + o.Value = string(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptNilString) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptNilString) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes OrganizationSSOProvider as json. +func (o OptOrganizationSSOProvider) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Str(string(o.Value)) +} + +// Decode decodes OrganizationSSOProvider from json. +func (o *OptOrganizationSSOProvider) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptOrganizationSSOProvider to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptOrganizationSSOProvider) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptOrganizationSSOProvider) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes RefreshTokenReq as json. +func (o OptRefreshTokenReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes RefreshTokenReq from json. +func (o *OptRefreshTokenReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptRefreshTokenReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptRefreshTokenReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptRefreshTokenReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartPreviewsMultipartUploadReq as json. +func (o OptStartPreviewsMultipartUploadReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes StartPreviewsMultipartUploadReq from json. +func (o *OptStartPreviewsMultipartUploadReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptStartPreviewsMultipartUploadReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptStartPreviewsMultipartUploadReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptStartPreviewsMultipartUploadReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes string as json. +func (o OptString) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Str(string(o.Value)) +} + +// Decode decodes string from json. +func (o *OptString) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptString to nil") + } + o.Set = true + v, err := d.Str() + if err != nil { + return err + } + o.Value = string(v) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptString) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptString) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganization2Req as json. +func (o OptUpdateOrganization2Req) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes UpdateOrganization2Req from json. +func (o *OptUpdateOrganization2Req) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptUpdateOrganization2Req to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptUpdateOrganization2Req) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptUpdateOrganization2Req) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganization2ReqSSOProvider as json. +func (o OptUpdateOrganization2ReqSSOProvider) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Str(string(o.Value)) +} + +// Decode decodes UpdateOrganization2ReqSSOProvider from json. +func (o *OptUpdateOrganization2ReqSSOProvider) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptUpdateOrganization2ReqSSOProvider to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptUpdateOrganization2ReqSSOProvider) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptUpdateOrganization2ReqSSOProvider) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationMemberReq as json. +func (o OptUpdateOrganizationMemberReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes UpdateOrganizationMemberReq from json. +func (o *OptUpdateOrganizationMemberReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptUpdateOrganizationMemberReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptUpdateOrganizationMemberReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptUpdateOrganizationMemberReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationReq as json. +func (o OptUpdateOrganizationReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes UpdateOrganizationReq from json. +func (o *OptUpdateOrganizationReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptUpdateOrganizationReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptUpdateOrganizationReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptUpdateOrganizationReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationReqSSOProvider as json. +func (o OptUpdateOrganizationReqSSOProvider) Encode(e *jx.Encoder) { + if !o.Set { + return + } + e.Str(string(o.Value)) +} + +// Decode decodes UpdateOrganizationReqSSOProvider from json. +func (o *OptUpdateOrganizationReqSSOProvider) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptUpdateOrganizationReqSSOProvider to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptUpdateOrganizationReqSSOProvider) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptUpdateOrganizationReqSSOProvider) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateProjectReq as json. +func (o OptUpdateProjectReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes UpdateProjectReq from json. +func (o *OptUpdateProjectReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptUpdateProjectReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptUpdateProjectReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptUpdateProjectReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UploadCacheActionItemReq as json. +func (o OptUploadCacheActionItemReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes UploadCacheActionItemReq from json. +func (o *OptUploadCacheActionItemReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptUploadCacheActionItemReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptUploadCacheActionItemReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptUploadCacheActionItemReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Organization) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Organization) encodeFields(e *jx.Encoder) { + { + e.FieldStart("id") + e.Float64(s.ID) + } + { + e.FieldStart("invitations") + e.ArrStart() + for _, elem := range s.Invitations { + elem.Encode(e) + } + e.ArrEnd() + } + { + e.FieldStart("members") + e.ArrStart() + for _, elem := range s.Members { + elem.Encode(e) + } + e.ArrEnd() + } + { + e.FieldStart("name") + e.Str(s.Name) + } + { + e.FieldStart("plan") + s.Plan.Encode(e) + } + { + if s.SSOOrganizationID.Set { + e.FieldStart("sso_organization_id") + s.SSOOrganizationID.Encode(e) + } + } + { + if s.SSOProvider.Set { + e.FieldStart("sso_provider") + s.SSOProvider.Encode(e) + } + } +} + +var jsonFieldsNameOfOrganization = [7]string{ + 0: "id", + 1: "invitations", + 2: "members", + 3: "name", + 4: "plan", + 5: "sso_organization_id", + 6: "sso_provider", +} + +// Decode decodes Organization from json. +func (s *Organization) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Organization to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Float64() + s.ID = float64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "invitations": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + s.Invitations = make([]Invitation, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem Invitation + if err := elem.Decode(d); err != nil { + return err + } + s.Invitations = append(s.Invitations, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"invitations\"") + } + case "members": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + s.Members = make([]OrganizationMember, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem OrganizationMember + if err := elem.Decode(d); err != nil { + return err + } + s.Members = append(s.Members, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"members\"") + } + case "name": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "plan": + requiredBitSet[0] |= 1 << 4 + if err := func() error { + if err := s.Plan.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"plan\"") + } + case "sso_organization_id": + if err := func() error { + s.SSOOrganizationID.Reset() + if err := s.SSOOrganizationID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sso_organization_id\"") + } + case "sso_provider": + if err := func() error { + s.SSOProvider.Reset() + if err := s.SSOProvider.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sso_provider\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Organization") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00011111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfOrganization) { + name = jsonFieldsNameOfOrganization[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Organization) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Organization) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *OrganizationMember) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *OrganizationMember) encodeFields(e *jx.Encoder) { + { + e.FieldStart("email") + e.Str(s.Email) + } + { + e.FieldStart("id") + e.Float64(s.ID) + } + { + e.FieldStart("name") + e.Str(s.Name) + } + { + e.FieldStart("role") + s.Role.Encode(e) + } +} + +var jsonFieldsNameOfOrganizationMember = [4]string{ + 0: "email", + 1: "id", + 2: "name", + 3: "role", +} + +// Decode decodes OrganizationMember from json. +func (s *OrganizationMember) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode OrganizationMember to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "email": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Email = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"email\"") + } + case "id": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Float64() + s.ID = float64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "name": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "role": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + if err := s.Role.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"role\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode OrganizationMember") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00001111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfOrganizationMember) { + name = jsonFieldsNameOfOrganizationMember[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *OrganizationMember) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OrganizationMember) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes OrganizationMemberRole as json. +func (s OrganizationMemberRole) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes OrganizationMemberRole from json. +func (s *OrganizationMemberRole) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode OrganizationMemberRole to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch OrganizationMemberRole(v) { + case OrganizationMemberRoleAdmin: + *s = OrganizationMemberRoleAdmin + case OrganizationMemberRoleUser: + *s = OrganizationMemberRoleUser + default: + *s = OrganizationMemberRole(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OrganizationMemberRole) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OrganizationMemberRole) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes OrganizationPlan as json. +func (s OrganizationPlan) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes OrganizationPlan from json. +func (s *OrganizationPlan) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode OrganizationPlan to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch OrganizationPlan(v) { + case OrganizationPlanAir: + *s = OrganizationPlanAir + case OrganizationPlanPro: + *s = OrganizationPlanPro + case OrganizationPlanEnterprise: + *s = OrganizationPlanEnterprise + case OrganizationPlanNone: + *s = OrganizationPlanNone + default: + *s = OrganizationPlan(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OrganizationPlan) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OrganizationPlan) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes OrganizationSSOProvider as json. +func (s OrganizationSSOProvider) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes OrganizationSSOProvider from json. +func (s *OrganizationSSOProvider) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode OrganizationSSOProvider to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch OrganizationSSOProvider(v) { + case OrganizationSSOProviderGoogle: + *s = OrganizationSSOProviderGoogle + default: + *s = OrganizationSSOProvider(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OrganizationSSOProvider) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OrganizationSSOProvider) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *OrganizationUsage) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *OrganizationUsage) encodeFields(e *jx.Encoder) { + { + e.FieldStart("current_month_remote_cache_hits") + e.Float64(s.CurrentMonthRemoteCacheHits) + } +} + +var jsonFieldsNameOfOrganizationUsage = [1]string{ + 0: "current_month_remote_cache_hits", +} + +// Decode decodes OrganizationUsage from json. +func (s *OrganizationUsage) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode OrganizationUsage to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "current_month_remote_cache_hits": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Float64() + s.CurrentMonthRemoteCacheHits = float64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"current_month_remote_cache_hits\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode OrganizationUsage") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfOrganizationUsage) { + name = jsonFieldsNameOfOrganizationUsage[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *OrganizationUsage) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OrganizationUsage) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Project) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Project) encodeFields(e *jx.Encoder) { + { + e.FieldStart("default_branch") + e.Str(s.DefaultBranch) + } + { + e.FieldStart("full_name") + e.Str(s.FullName) + } + { + e.FieldStart("id") + e.Float64(s.ID) + } + { + if s.RepositoryURL.Set { + e.FieldStart("repository_url") + s.RepositoryURL.Encode(e) + } + } + { + e.FieldStart("token") + e.Str(s.Token) + } +} + +var jsonFieldsNameOfProject = [5]string{ + 0: "default_branch", + 1: "full_name", + 2: "id", + 3: "repository_url", + 4: "token", +} + +// Decode decodes Project from json. +func (s *Project) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Project to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "default_branch": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.DefaultBranch = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"default_branch\"") + } + case "full_name": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.FullName = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"full_name\"") + } + case "id": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Float64() + s.ID = float64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "repository_url": + if err := func() error { + s.RepositoryURL.Reset() + if err := s.RepositoryURL.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"repository_url\"") + } + case "token": + requiredBitSet[0] |= 1 << 4 + if err := func() error { + v, err := d.Str() + s.Token = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"token\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Project") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00010111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfProject) { + name = jsonFieldsNameOfProject[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Project) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Project) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ProjectToken) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ProjectToken) encodeFields(e *jx.Encoder) { + { + e.FieldStart("id") + e.Str(s.ID) + } + { + e.FieldStart("inserted_at") + json.EncodeDateTime(e, s.InsertedAt) + } +} + +var jsonFieldsNameOfProjectToken = [2]string{ + 0: "id", + 1: "inserted_at", +} + +// Decode decodes ProjectToken from json. +func (s *ProjectToken) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ProjectToken to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.ID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "inserted_at": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := json.DecodeDateTime(d) + s.InsertedAt = v + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"inserted_at\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ProjectToken") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfProjectToken) { + name = jsonFieldsNameOfProjectToken[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ProjectToken) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ProjectToken) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *RefreshTokenReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *RefreshTokenReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("refresh_token") + e.Str(s.RefreshToken) + } +} + +var jsonFieldsNameOfRefreshTokenReq = [1]string{ + 0: "refresh_token", +} + +// Decode decodes RefreshTokenReq from json. +func (s *RefreshTokenReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode RefreshTokenReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "refresh_token": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.RefreshToken = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"refresh_token\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode RefreshTokenReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfRefreshTokenReq) { + name = jsonFieldsNameOfRefreshTokenReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *RefreshTokenReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *RefreshTokenReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes RevokeProjectTokenBadRequest as json. +func (s *RevokeProjectTokenBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes RevokeProjectTokenBadRequest from json. +func (s *RevokeProjectTokenBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode RevokeProjectTokenBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = RevokeProjectTokenBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *RevokeProjectTokenBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *RevokeProjectTokenBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes RevokeProjectTokenForbidden as json. +func (s *RevokeProjectTokenForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes RevokeProjectTokenForbidden from json. +func (s *RevokeProjectTokenForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode RevokeProjectTokenForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = RevokeProjectTokenForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *RevokeProjectTokenForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *RevokeProjectTokenForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes RevokeProjectTokenNotFound as json. +func (s *RevokeProjectTokenNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes RevokeProjectTokenNotFound from json. +func (s *RevokeProjectTokenNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode RevokeProjectTokenNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = RevokeProjectTokenNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *RevokeProjectTokenNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *RevokeProjectTokenNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes RevokeProjectTokenUnauthorized as json. +func (s *RevokeProjectTokenUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes RevokeProjectTokenUnauthorized from json. +func (s *RevokeProjectTokenUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode RevokeProjectTokenUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = RevokeProjectTokenUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *RevokeProjectTokenUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *RevokeProjectTokenUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ShowOrganizationForbidden as json. +func (s *ShowOrganizationForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ShowOrganizationForbidden from json. +func (s *ShowOrganizationForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ShowOrganizationForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ShowOrganizationForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ShowOrganizationForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ShowOrganizationForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ShowOrganizationNotFound as json. +func (s *ShowOrganizationNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ShowOrganizationNotFound from json. +func (s *ShowOrganizationNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ShowOrganizationNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ShowOrganizationNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ShowOrganizationNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ShowOrganizationNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ShowOrganizationUnauthorized as json. +func (s *ShowOrganizationUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ShowOrganizationUnauthorized from json. +func (s *ShowOrganizationUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ShowOrganizationUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ShowOrganizationUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ShowOrganizationUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ShowOrganizationUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ShowOrganizationUsageForbidden as json. +func (s *ShowOrganizationUsageForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ShowOrganizationUsageForbidden from json. +func (s *ShowOrganizationUsageForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ShowOrganizationUsageForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ShowOrganizationUsageForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ShowOrganizationUsageForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ShowOrganizationUsageForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ShowOrganizationUsageNotFound as json. +func (s *ShowOrganizationUsageNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ShowOrganizationUsageNotFound from json. +func (s *ShowOrganizationUsageNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ShowOrganizationUsageNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ShowOrganizationUsageNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ShowOrganizationUsageNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ShowOrganizationUsageNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ShowOrganizationUsageUnauthorized as json. +func (s *ShowOrganizationUsageUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ShowOrganizationUsageUnauthorized from json. +func (s *ShowOrganizationUsageUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ShowOrganizationUsageUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ShowOrganizationUsageUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ShowOrganizationUsageUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ShowOrganizationUsageUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ShowProjectForbidden as json. +func (s *ShowProjectForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ShowProjectForbidden from json. +func (s *ShowProjectForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ShowProjectForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ShowProjectForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ShowProjectForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ShowProjectForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ShowProjectNotFound as json. +func (s *ShowProjectNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ShowProjectNotFound from json. +func (s *ShowProjectNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ShowProjectNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ShowProjectNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ShowProjectNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ShowProjectNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ShowProjectUnauthorized as json. +func (s *ShowProjectUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes ShowProjectUnauthorized from json. +func (s *ShowProjectUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ShowProjectUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = ShowProjectUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ShowProjectUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ShowProjectUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartAnalyticsArtifactMultipartUploadForbidden as json. +func (s *StartAnalyticsArtifactMultipartUploadForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartAnalyticsArtifactMultipartUploadForbidden from json. +func (s *StartAnalyticsArtifactMultipartUploadForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartAnalyticsArtifactMultipartUploadForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartAnalyticsArtifactMultipartUploadForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartAnalyticsArtifactMultipartUploadForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartAnalyticsArtifactMultipartUploadForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartAnalyticsArtifactMultipartUploadNotFound as json. +func (s *StartAnalyticsArtifactMultipartUploadNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartAnalyticsArtifactMultipartUploadNotFound from json. +func (s *StartAnalyticsArtifactMultipartUploadNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartAnalyticsArtifactMultipartUploadNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartAnalyticsArtifactMultipartUploadNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartAnalyticsArtifactMultipartUploadNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartAnalyticsArtifactMultipartUploadNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartAnalyticsArtifactMultipartUploadUnauthorized as json. +func (s *StartAnalyticsArtifactMultipartUploadUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartAnalyticsArtifactMultipartUploadUnauthorized from json. +func (s *StartAnalyticsArtifactMultipartUploadUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartAnalyticsArtifactMultipartUploadUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartAnalyticsArtifactMultipartUploadUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartAnalyticsArtifactMultipartUploadUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartAnalyticsArtifactMultipartUploadUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartCacheArtifactMultipartUploadForbidden as json. +func (s *StartCacheArtifactMultipartUploadForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartCacheArtifactMultipartUploadForbidden from json. +func (s *StartCacheArtifactMultipartUploadForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartCacheArtifactMultipartUploadForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartCacheArtifactMultipartUploadForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartCacheArtifactMultipartUploadForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartCacheArtifactMultipartUploadForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartCacheArtifactMultipartUploadNotFound as json. +func (s *StartCacheArtifactMultipartUploadNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartCacheArtifactMultipartUploadNotFound from json. +func (s *StartCacheArtifactMultipartUploadNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartCacheArtifactMultipartUploadNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartCacheArtifactMultipartUploadNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartCacheArtifactMultipartUploadNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartCacheArtifactMultipartUploadNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartCacheArtifactMultipartUploadPaymentRequired as json. +func (s *StartCacheArtifactMultipartUploadPaymentRequired) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartCacheArtifactMultipartUploadPaymentRequired from json. +func (s *StartCacheArtifactMultipartUploadPaymentRequired) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartCacheArtifactMultipartUploadPaymentRequired to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartCacheArtifactMultipartUploadPaymentRequired(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartCacheArtifactMultipartUploadPaymentRequired) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartCacheArtifactMultipartUploadPaymentRequired) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartCacheArtifactMultipartUploadUnauthorized as json. +func (s *StartCacheArtifactMultipartUploadUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartCacheArtifactMultipartUploadUnauthorized from json. +func (s *StartCacheArtifactMultipartUploadUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartCacheArtifactMultipartUploadUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartCacheArtifactMultipartUploadUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartCacheArtifactMultipartUploadUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartCacheArtifactMultipartUploadUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartPreviewsMultipartUploadForbidden as json. +func (s *StartPreviewsMultipartUploadForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartPreviewsMultipartUploadForbidden from json. +func (s *StartPreviewsMultipartUploadForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartPreviewsMultipartUploadForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartPreviewsMultipartUploadForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartPreviewsMultipartUploadForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartPreviewsMultipartUploadForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartPreviewsMultipartUploadNotFound as json. +func (s *StartPreviewsMultipartUploadNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartPreviewsMultipartUploadNotFound from json. +func (s *StartPreviewsMultipartUploadNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartPreviewsMultipartUploadNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartPreviewsMultipartUploadNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartPreviewsMultipartUploadNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartPreviewsMultipartUploadNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *StartPreviewsMultipartUploadOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *StartPreviewsMultipartUploadOK) encodeFields(e *jx.Encoder) { + { + e.FieldStart("data") + s.Data.Encode(e) + } + { + e.FieldStart("status") + s.Status.Encode(e) + } +} + +var jsonFieldsNameOfStartPreviewsMultipartUploadOK = [2]string{ + 0: "data", + 1: "status", +} + +// Decode decodes StartPreviewsMultipartUploadOK from json. +func (s *StartPreviewsMultipartUploadOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartPreviewsMultipartUploadOK to nil") + } + var requiredBitSet [1]uint8 + s.setDefaults() + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "data": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.Data.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"data\"") + } + case "status": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode StartPreviewsMultipartUploadOK") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfStartPreviewsMultipartUploadOK) { + name = jsonFieldsNameOfStartPreviewsMultipartUploadOK[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartPreviewsMultipartUploadOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartPreviewsMultipartUploadOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *StartPreviewsMultipartUploadOKData) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *StartPreviewsMultipartUploadOKData) encodeFields(e *jx.Encoder) { + { + e.FieldStart("preview_id") + e.Str(s.PreviewID) + } + { + e.FieldStart("upload_id") + e.Str(s.UploadID) + } +} + +var jsonFieldsNameOfStartPreviewsMultipartUploadOKData = [2]string{ + 0: "preview_id", + 1: "upload_id", +} + +// Decode decodes StartPreviewsMultipartUploadOKData from json. +func (s *StartPreviewsMultipartUploadOKData) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartPreviewsMultipartUploadOKData to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "preview_id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.PreviewID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"preview_id\"") + } + case "upload_id": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.UploadID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"upload_id\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode StartPreviewsMultipartUploadOKData") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfStartPreviewsMultipartUploadOKData) { + name = jsonFieldsNameOfStartPreviewsMultipartUploadOKData[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartPreviewsMultipartUploadOKData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartPreviewsMultipartUploadOKData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartPreviewsMultipartUploadOKStatus as json. +func (s StartPreviewsMultipartUploadOKStatus) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes StartPreviewsMultipartUploadOKStatus from json. +func (s *StartPreviewsMultipartUploadOKStatus) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartPreviewsMultipartUploadOKStatus to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch StartPreviewsMultipartUploadOKStatus(v) { + case StartPreviewsMultipartUploadOKStatusSuccess: + *s = StartPreviewsMultipartUploadOKStatusSuccess + default: + *s = StartPreviewsMultipartUploadOKStatus(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s StartPreviewsMultipartUploadOKStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartPreviewsMultipartUploadOKStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *StartPreviewsMultipartUploadReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *StartPreviewsMultipartUploadReq) encodeFields(e *jx.Encoder) { + { + if s.DisplayName.Set { + e.FieldStart("display_name") + s.DisplayName.Encode(e) + } + } +} + +var jsonFieldsNameOfStartPreviewsMultipartUploadReq = [1]string{ + 0: "display_name", +} + +// Decode decodes StartPreviewsMultipartUploadReq from json. +func (s *StartPreviewsMultipartUploadReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartPreviewsMultipartUploadReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "display_name": + if err := func() error { + s.DisplayName.Reset() + if err := s.DisplayName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"display_name\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode StartPreviewsMultipartUploadReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartPreviewsMultipartUploadReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartPreviewsMultipartUploadReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes StartPreviewsMultipartUploadUnauthorized as json. +func (s *StartPreviewsMultipartUploadUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes StartPreviewsMultipartUploadUnauthorized from json. +func (s *StartPreviewsMultipartUploadUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode StartPreviewsMultipartUploadUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = StartPreviewsMultipartUploadUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *StartPreviewsMultipartUploadUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *StartPreviewsMultipartUploadUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganization2BadRequest as json. +func (s *UpdateOrganization2BadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganization2BadRequest from json. +func (s *UpdateOrganization2BadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganization2BadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganization2BadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganization2BadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganization2BadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganization2Forbidden as json. +func (s *UpdateOrganization2Forbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganization2Forbidden from json. +func (s *UpdateOrganization2Forbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganization2Forbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganization2Forbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganization2Forbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganization2Forbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganization2NotFound as json. +func (s *UpdateOrganization2NotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganization2NotFound from json. +func (s *UpdateOrganization2NotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganization2NotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganization2NotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganization2NotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganization2NotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *UpdateOrganization2Req) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *UpdateOrganization2Req) encodeFields(e *jx.Encoder) { + { + if s.SSOOrganizationID.Set { + e.FieldStart("sso_organization_id") + s.SSOOrganizationID.Encode(e) + } + } + { + if s.SSOProvider.Set { + e.FieldStart("sso_provider") + s.SSOProvider.Encode(e) + } + } +} + +var jsonFieldsNameOfUpdateOrganization2Req = [2]string{ + 0: "sso_organization_id", + 1: "sso_provider", +} + +// Decode decodes UpdateOrganization2Req from json. +func (s *UpdateOrganization2Req) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganization2Req to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "sso_organization_id": + if err := func() error { + s.SSOOrganizationID.Reset() + if err := s.SSOOrganizationID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sso_organization_id\"") + } + case "sso_provider": + if err := func() error { + s.SSOProvider.Reset() + if err := s.SSOProvider.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sso_provider\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode UpdateOrganization2Req") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganization2Req) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganization2Req) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganization2ReqSSOProvider as json. +func (s UpdateOrganization2ReqSSOProvider) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes UpdateOrganization2ReqSSOProvider from json. +func (s *UpdateOrganization2ReqSSOProvider) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganization2ReqSSOProvider to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch UpdateOrganization2ReqSSOProvider(v) { + case UpdateOrganization2ReqSSOProviderGoogle: + *s = UpdateOrganization2ReqSSOProviderGoogle + case UpdateOrganization2ReqSSOProviderNone: + *s = UpdateOrganization2ReqSSOProviderNone + default: + *s = UpdateOrganization2ReqSSOProvider(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s UpdateOrganization2ReqSSOProvider) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganization2ReqSSOProvider) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganization2Unauthorized as json. +func (s *UpdateOrganization2Unauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganization2Unauthorized from json. +func (s *UpdateOrganization2Unauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganization2Unauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganization2Unauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganization2Unauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganization2Unauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationBadRequest as json. +func (s *UpdateOrganizationBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganizationBadRequest from json. +func (s *UpdateOrganizationBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganizationBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationForbidden as json. +func (s *UpdateOrganizationForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganizationForbidden from json. +func (s *UpdateOrganizationForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganizationForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationMemberBadRequest as json. +func (s *UpdateOrganizationMemberBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganizationMemberBadRequest from json. +func (s *UpdateOrganizationMemberBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationMemberBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganizationMemberBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationMemberBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationMemberBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationMemberForbidden as json. +func (s *UpdateOrganizationMemberForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganizationMemberForbidden from json. +func (s *UpdateOrganizationMemberForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationMemberForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganizationMemberForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationMemberForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationMemberForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationMemberNotFound as json. +func (s *UpdateOrganizationMemberNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganizationMemberNotFound from json. +func (s *UpdateOrganizationMemberNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationMemberNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganizationMemberNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationMemberNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationMemberNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *UpdateOrganizationMemberReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *UpdateOrganizationMemberReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("role") + s.Role.Encode(e) + } +} + +var jsonFieldsNameOfUpdateOrganizationMemberReq = [1]string{ + 0: "role", +} + +// Decode decodes UpdateOrganizationMemberReq from json. +func (s *UpdateOrganizationMemberReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationMemberReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "role": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.Role.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"role\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode UpdateOrganizationMemberReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfUpdateOrganizationMemberReq) { + name = jsonFieldsNameOfUpdateOrganizationMemberReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationMemberReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationMemberReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationMemberReqRole as json. +func (s UpdateOrganizationMemberReqRole) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes UpdateOrganizationMemberReqRole from json. +func (s *UpdateOrganizationMemberReqRole) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationMemberReqRole to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch UpdateOrganizationMemberReqRole(v) { + case UpdateOrganizationMemberReqRoleAdmin: + *s = UpdateOrganizationMemberReqRoleAdmin + case UpdateOrganizationMemberReqRoleUser: + *s = UpdateOrganizationMemberReqRoleUser + default: + *s = UpdateOrganizationMemberReqRole(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s UpdateOrganizationMemberReqRole) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationMemberReqRole) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationMemberUnauthorized as json. +func (s *UpdateOrganizationMemberUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganizationMemberUnauthorized from json. +func (s *UpdateOrganizationMemberUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationMemberUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganizationMemberUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationMemberUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationMemberUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationNotFound as json. +func (s *UpdateOrganizationNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganizationNotFound from json. +func (s *UpdateOrganizationNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganizationNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *UpdateOrganizationReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *UpdateOrganizationReq) encodeFields(e *jx.Encoder) { + { + if s.SSOOrganizationID.Set { + e.FieldStart("sso_organization_id") + s.SSOOrganizationID.Encode(e) + } + } + { + if s.SSOProvider.Set { + e.FieldStart("sso_provider") + s.SSOProvider.Encode(e) + } + } +} + +var jsonFieldsNameOfUpdateOrganizationReq = [2]string{ + 0: "sso_organization_id", + 1: "sso_provider", +} + +// Decode decodes UpdateOrganizationReq from json. +func (s *UpdateOrganizationReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "sso_organization_id": + if err := func() error { + s.SSOOrganizationID.Reset() + if err := s.SSOOrganizationID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sso_organization_id\"") + } + case "sso_provider": + if err := func() error { + s.SSOProvider.Reset() + if err := s.SSOProvider.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sso_provider\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode UpdateOrganizationReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationReqSSOProvider as json. +func (s UpdateOrganizationReqSSOProvider) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes UpdateOrganizationReqSSOProvider from json. +func (s *UpdateOrganizationReqSSOProvider) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationReqSSOProvider to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch UpdateOrganizationReqSSOProvider(v) { + case UpdateOrganizationReqSSOProviderGoogle: + *s = UpdateOrganizationReqSSOProviderGoogle + case UpdateOrganizationReqSSOProviderNone: + *s = UpdateOrganizationReqSSOProviderNone + default: + *s = UpdateOrganizationReqSSOProvider(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s UpdateOrganizationReqSSOProvider) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationReqSSOProvider) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateOrganizationUnauthorized as json. +func (s *UpdateOrganizationUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateOrganizationUnauthorized from json. +func (s *UpdateOrganizationUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateOrganizationUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateOrganizationUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateOrganizationUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateOrganizationUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateProjectBadRequest as json. +func (s *UpdateProjectBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateProjectBadRequest from json. +func (s *UpdateProjectBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateProjectBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateProjectBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateProjectBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateProjectBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateProjectForbidden as json. +func (s *UpdateProjectForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateProjectForbidden from json. +func (s *UpdateProjectForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateProjectForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateProjectForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateProjectForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateProjectForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateProjectNotFound as json. +func (s *UpdateProjectNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateProjectNotFound from json. +func (s *UpdateProjectNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateProjectNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateProjectNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateProjectNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateProjectNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *UpdateProjectReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *UpdateProjectReq) encodeFields(e *jx.Encoder) { + { + if s.DefaultBranch.Set { + e.FieldStart("default_branch") + s.DefaultBranch.Encode(e) + } + } + { + if s.RepositoryURL.Set { + e.FieldStart("repository_url") + s.RepositoryURL.Encode(e) + } + } +} + +var jsonFieldsNameOfUpdateProjectReq = [2]string{ + 0: "default_branch", + 1: "repository_url", +} + +// Decode decodes UpdateProjectReq from json. +func (s *UpdateProjectReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateProjectReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "default_branch": + if err := func() error { + s.DefaultBranch.Reset() + if err := s.DefaultBranch.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"default_branch\"") + } + case "repository_url": + if err := func() error { + s.RepositoryURL.Reset() + if err := s.RepositoryURL.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"repository_url\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode UpdateProjectReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateProjectReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateProjectReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UpdateProjectUnauthorized as json. +func (s *UpdateProjectUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UpdateProjectUnauthorized from json. +func (s *UpdateProjectUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UpdateProjectUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UpdateProjectUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UpdateProjectUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UpdateProjectUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UploadCacheActionItemBadRequest as json. +func (s *UploadCacheActionItemBadRequest) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UploadCacheActionItemBadRequest from json. +func (s *UploadCacheActionItemBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UploadCacheActionItemBadRequest to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UploadCacheActionItemBadRequest(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UploadCacheActionItemBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UploadCacheActionItemBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UploadCacheActionItemCreated as json. +func (s *UploadCacheActionItemCreated) Encode(e *jx.Encoder) { + unwrapped := (*CacheActionItem)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UploadCacheActionItemCreated from json. +func (s *UploadCacheActionItemCreated) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UploadCacheActionItemCreated to nil") + } + var unwrapped CacheActionItem + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UploadCacheActionItemCreated(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UploadCacheActionItemCreated) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UploadCacheActionItemCreated) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UploadCacheActionItemForbidden as json. +func (s *UploadCacheActionItemForbidden) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UploadCacheActionItemForbidden from json. +func (s *UploadCacheActionItemForbidden) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UploadCacheActionItemForbidden to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UploadCacheActionItemForbidden(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UploadCacheActionItemForbidden) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UploadCacheActionItemForbidden) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UploadCacheActionItemNotFound as json. +func (s *UploadCacheActionItemNotFound) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UploadCacheActionItemNotFound from json. +func (s *UploadCacheActionItemNotFound) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UploadCacheActionItemNotFound to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UploadCacheActionItemNotFound(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UploadCacheActionItemNotFound) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UploadCacheActionItemNotFound) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UploadCacheActionItemOK as json. +func (s *UploadCacheActionItemOK) Encode(e *jx.Encoder) { + unwrapped := (*CacheActionItem)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UploadCacheActionItemOK from json. +func (s *UploadCacheActionItemOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UploadCacheActionItemOK to nil") + } + var unwrapped CacheActionItem + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UploadCacheActionItemOK(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UploadCacheActionItemOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UploadCacheActionItemOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UploadCacheActionItemPaymentRequired as json. +func (s *UploadCacheActionItemPaymentRequired) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UploadCacheActionItemPaymentRequired from json. +func (s *UploadCacheActionItemPaymentRequired) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UploadCacheActionItemPaymentRequired to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UploadCacheActionItemPaymentRequired(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UploadCacheActionItemPaymentRequired) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UploadCacheActionItemPaymentRequired) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *UploadCacheActionItemReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *UploadCacheActionItemReq) encodeFields(e *jx.Encoder) { + { + if s.Hash.Set { + e.FieldStart("hash") + s.Hash.Encode(e) + } + } +} + +var jsonFieldsNameOfUploadCacheActionItemReq = [1]string{ + 0: "hash", +} + +// Decode decodes UploadCacheActionItemReq from json. +func (s *UploadCacheActionItemReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UploadCacheActionItemReq to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "hash": + if err := func() error { + s.Hash.Reset() + if err := s.Hash.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"hash\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode UploadCacheActionItemReq") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UploadCacheActionItemReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UploadCacheActionItemReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes UploadCacheActionItemUnauthorized as json. +func (s *UploadCacheActionItemUnauthorized) Encode(e *jx.Encoder) { + unwrapped := (*Error)(s) + + unwrapped.Encode(e) +} + +// Decode decodes UploadCacheActionItemUnauthorized from json. +func (s *UploadCacheActionItemUnauthorized) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode UploadCacheActionItemUnauthorized to nil") + } + var unwrapped Error + if err := func() error { + if err := unwrapped.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "alias") + } + *s = UploadCacheActionItemUnauthorized(unwrapped) + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *UploadCacheActionItemUnauthorized) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *UploadCacheActionItemUnauthorized) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *User) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *User) encodeFields(e *jx.Encoder) { + { + e.FieldStart("email") + e.Str(s.Email) + } + { + e.FieldStart("id") + e.Float64(s.ID) + } + { + e.FieldStart("name") + e.Str(s.Name) + } +} + +var jsonFieldsNameOfUser = [3]string{ + 0: "email", + 1: "id", + 2: "name", +} + +// Decode decodes User from json. +func (s *User) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode User to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "email": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Email = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"email\"") + } + case "id": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Float64() + s.ID = float64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "name": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode User") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfUser) { + name = jsonFieldsNameOfUser[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *User) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *User) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_labeler_gen.go b/internal/agent/http_cache/tuistcache/api/oas_labeler_gen.go new file mode 100644 index 00000000..7e519e84 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_labeler_gen.go @@ -0,0 +1,42 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + + "go.opentelemetry.io/otel/attribute" +) + +// Labeler is used to allow adding custom attributes to the server request metrics. +type Labeler struct { + attrs []attribute.KeyValue +} + +// Add attributes to the Labeler. +func (l *Labeler) Add(attrs ...attribute.KeyValue) { + l.attrs = append(l.attrs, attrs...) +} + +// AttributeSet returns the attributes added to the Labeler as an attribute.Set. +func (l *Labeler) AttributeSet() attribute.Set { + return attribute.NewSet(l.attrs...) +} + +type labelerContextKey struct{} + +// LabelerFromContext retrieves the Labeler from the provided context, if present. +// +// If no Labeler was found in the provided context a new, empty Labeler is returned and the second +// return value is false. In this case it is safe to use the Labeler but any attributes added to +// it will not be used. +func LabelerFromContext(ctx context.Context) (*Labeler, bool) { + if l, ok := ctx.Value(labelerContextKey{}).(*Labeler); ok { + return l, true + } + return &Labeler{}, false +} + +func contextWithLabeler(ctx context.Context, l *Labeler) context.Context { + return context.WithValue(ctx, labelerContextKey{}, l) +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_middleware_gen.go b/internal/agent/http_cache/tuistcache/api/oas_middleware_gen.go new file mode 100644 index 00000000..6f58a1a7 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_middleware_gen.go @@ -0,0 +1,10 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "github.com/ogen-go/ogen/middleware" +) + +// Middleware is middleware type. +type Middleware = middleware.Middleware diff --git a/internal/agent/http_cache/tuistcache/api/oas_parameters_gen.go b/internal/agent/http_cache/tuistcache/api/oas_parameters_gen.go new file mode 100644 index 00000000..ef2ada92 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_parameters_gen.go @@ -0,0 +1,3823 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + "net/url" + + "github.com/go-faster/errors" + + "github.com/ogen-go/ogen/conv" + "github.com/ogen-go/ogen/middleware" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/uri" + "github.com/ogen-go/ogen/validate" +) + +// CacheArtifactExistsParams is parameters of cacheArtifactExists operation. +type CacheArtifactExistsParams struct { + // The category of the cache. It's used to differentiate between different types of caches. + CacheCategory OptCacheCategory + // The project identifier '{account_name}/{project_name}'. + ProjectID string + // The hash that uniquely identifies the artifact in the cache. + Hash string + // The name of the artifact. + Name string +} + +func unpackCacheArtifactExistsParams(packed middleware.Parameters) (params CacheArtifactExistsParams) { + { + key := middleware.ParameterKey{ + Name: "cache_category", + In: "query", + } + if v, ok := packed[key]; ok { + params.CacheCategory = v.(OptCacheCategory) + } + } + { + key := middleware.ParameterKey{ + Name: "project_id", + In: "query", + } + params.ProjectID = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "hash", + In: "query", + } + params.Hash = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "name", + In: "query", + } + params.Name = packed[key].(string) + } + return params +} + +func decodeCacheArtifactExistsParams(args [0]string, argsEscaped bool, r *http.Request) (params CacheArtifactExistsParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Set default value for query: cache_category. + { + val := CacheCategory("builds") + params.CacheCategory.SetTo(val) + } + // Decode query: cache_category. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotCacheCategoryVal CacheCategory + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotCacheCategoryVal = CacheCategory(c) + return nil + }(); err != nil { + return err + } + params.CacheCategory.SetTo(paramsDotCacheCategoryVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.CacheCategory.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "cache_category", + In: "query", + Err: err, + } + } + // Decode query: project_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectID = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_id", + In: "query", + Err: err, + } + } + // Decode query: hash. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Hash = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "hash", + In: "query", + Err: err, + } + } + // Decode query: name. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Name = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "name", + In: "query", + Err: err, + } + } + return params, nil +} + +// CleanCacheParams is parameters of cleanCache operation. +type CleanCacheParams struct { + // The name of the account that the project belongs to. + AccountHandle string + // The name of the project to clean cache for. + ProjectHandle string +} + +func unpackCleanCacheParams(packed middleware.Parameters) (params CleanCacheParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + return params +} + +func decodeCleanCacheParams(args [2]string, argsEscaped bool, r *http.Request) (params CleanCacheParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + return params, nil +} + +// CompleteAnalyticsArtifactMultipartUploadParams is parameters of completeAnalyticsArtifactMultipartUpload operation. +type CompleteAnalyticsArtifactMultipartUploadParams struct { + // The id of the command event. + RunID int +} + +func unpackCompleteAnalyticsArtifactMultipartUploadParams(packed middleware.Parameters) (params CompleteAnalyticsArtifactMultipartUploadParams) { + { + key := middleware.ParameterKey{ + Name: "run_id", + In: "path", + } + params.RunID = packed[key].(int) + } + return params +} + +func decodeCompleteAnalyticsArtifactMultipartUploadParams(args [1]string, argsEscaped bool, r *http.Request) (params CompleteAnalyticsArtifactMultipartUploadParams, _ error) { + // Decode path: run_id. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "run_id", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.RunID = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "run_id", + In: "path", + Err: err, + } + } + return params, nil +} + +// CompleteAnalyticsArtifactsUploadsParams is parameters of completeAnalyticsArtifactsUploads operation. +type CompleteAnalyticsArtifactsUploadsParams struct { + // The id of the command event. + RunID int +} + +func unpackCompleteAnalyticsArtifactsUploadsParams(packed middleware.Parameters) (params CompleteAnalyticsArtifactsUploadsParams) { + { + key := middleware.ParameterKey{ + Name: "run_id", + In: "path", + } + params.RunID = packed[key].(int) + } + return params +} + +func decodeCompleteAnalyticsArtifactsUploadsParams(args [1]string, argsEscaped bool, r *http.Request) (params CompleteAnalyticsArtifactsUploadsParams, _ error) { + // Decode path: run_id. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "run_id", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.RunID = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "run_id", + In: "path", + Err: err, + } + } + return params, nil +} + +// CompleteCacheArtifactMultipartUploadParams is parameters of completeCacheArtifactMultipartUpload operation. +type CompleteCacheArtifactMultipartUploadParams struct { + // The category of the cache. It's used to differentiate between different types of caches. + CacheCategory OptCacheCategory + // The project identifier '{account_name}/{project_name}'. + ProjectID string + // The hash that uniquely identifies the artifact in the cache. + Hash string + // The upload ID. + UploadID string + // The name of the artifact. + Name string +} + +func unpackCompleteCacheArtifactMultipartUploadParams(packed middleware.Parameters) (params CompleteCacheArtifactMultipartUploadParams) { + { + key := middleware.ParameterKey{ + Name: "cache_category", + In: "query", + } + if v, ok := packed[key]; ok { + params.CacheCategory = v.(OptCacheCategory) + } + } + { + key := middleware.ParameterKey{ + Name: "project_id", + In: "query", + } + params.ProjectID = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "hash", + In: "query", + } + params.Hash = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "upload_id", + In: "query", + } + params.UploadID = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "name", + In: "query", + } + params.Name = packed[key].(string) + } + return params +} + +func decodeCompleteCacheArtifactMultipartUploadParams(args [0]string, argsEscaped bool, r *http.Request) (params CompleteCacheArtifactMultipartUploadParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Set default value for query: cache_category. + { + val := CacheCategory("builds") + params.CacheCategory.SetTo(val) + } + // Decode query: cache_category. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotCacheCategoryVal CacheCategory + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotCacheCategoryVal = CacheCategory(c) + return nil + }(); err != nil { + return err + } + params.CacheCategory.SetTo(paramsDotCacheCategoryVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.CacheCategory.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "cache_category", + In: "query", + Err: err, + } + } + // Decode query: project_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectID = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_id", + In: "query", + Err: err, + } + } + // Decode query: hash. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Hash = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "hash", + In: "query", + Err: err, + } + } + // Decode query: upload_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "upload_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.UploadID = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "upload_id", + In: "query", + Err: err, + } + } + // Decode query: name. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Name = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "name", + In: "query", + Err: err, + } + } + return params, nil +} + +// CompletePreviewsMultipartUploadParams is parameters of completePreviewsMultipartUpload operation. +type CompletePreviewsMultipartUploadParams struct { + // The handle of the account. + AccountHandle string + // The handle of the project. + ProjectHandle string +} + +func unpackCompletePreviewsMultipartUploadParams(packed middleware.Parameters) (params CompletePreviewsMultipartUploadParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + return params +} + +func decodeCompletePreviewsMultipartUploadParams(args [2]string, argsEscaped bool, r *http.Request) (params CompletePreviewsMultipartUploadParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + return params, nil +} + +// CreateCommandEventParams is parameters of createCommandEvent operation. +type CreateCommandEventParams struct { + // The project id. + ProjectID string +} + +func unpackCreateCommandEventParams(packed middleware.Parameters) (params CreateCommandEventParams) { + { + key := middleware.ParameterKey{ + Name: "project_id", + In: "query", + } + params.ProjectID = packed[key].(string) + } + return params +} + +func decodeCreateCommandEventParams(args [0]string, argsEscaped bool, r *http.Request) (params CreateCommandEventParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: project_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectID = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_id", + In: "query", + Err: err, + } + } + return params, nil +} + +// CreateInvitationParams is parameters of createInvitation operation. +type CreateInvitationParams struct { + // The name of the organization. + OrganizationName string +} + +func unpackCreateInvitationParams(packed middleware.Parameters) (params CreateInvitationParams) { + { + key := middleware.ParameterKey{ + Name: "organization_name", + In: "path", + } + params.OrganizationName = packed[key].(string) + } + return params +} + +func decodeCreateInvitationParams(args [1]string, argsEscaped bool, r *http.Request) (params CreateInvitationParams, _ error) { + // Decode path: organization_name. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "organization_name", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.OrganizationName = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "organization_name", + In: "path", + Err: err, + } + } + return params, nil +} + +// CreateProjectTokenParams is parameters of createProjectToken operation. +type CreateProjectTokenParams struct { + // The account handle. + AccountHandle string + // The project handle. + ProjectHandle string +} + +func unpackCreateProjectTokenParams(packed middleware.Parameters) (params CreateProjectTokenParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + return params +} + +func decodeCreateProjectTokenParams(args [2]string, argsEscaped bool, r *http.Request) (params CreateProjectTokenParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + return params, nil +} + +// DeleteOrganizationParams is parameters of deleteOrganization operation. +type DeleteOrganizationParams struct { + // The name of the organization to delete. + OrganizationName string +} + +func unpackDeleteOrganizationParams(packed middleware.Parameters) (params DeleteOrganizationParams) { + { + key := middleware.ParameterKey{ + Name: "organization_name", + In: "path", + } + params.OrganizationName = packed[key].(string) + } + return params +} + +func decodeDeleteOrganizationParams(args [1]string, argsEscaped bool, r *http.Request) (params DeleteOrganizationParams, _ error) { + // Decode path: organization_name. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "organization_name", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.OrganizationName = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "organization_name", + In: "path", + Err: err, + } + } + return params, nil +} + +// DeleteProjectParams is parameters of deleteProject operation. +type DeleteProjectParams struct { + // The id of the project to delete. + ID int +} + +func unpackDeleteProjectParams(packed middleware.Parameters) (params DeleteProjectParams) { + { + key := middleware.ParameterKey{ + Name: "id", + In: "path", + } + params.ID = packed[key].(int) + } + return params +} + +func decodeDeleteProjectParams(args [1]string, argsEscaped bool, r *http.Request) (params DeleteProjectParams, _ error) { + // Decode path: id. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "id", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.ID = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "id", + In: "path", + Err: err, + } + } + return params, nil +} + +// DownloadCacheArtifactParams is parameters of downloadCacheArtifact operation. +type DownloadCacheArtifactParams struct { + // The category of the cache. It's used to differentiate between different types of caches. + CacheCategory OptCacheCategory + // The project identifier '{account_name}/{project_name}'. + ProjectID string + // The hash that uniquely identifies the artifact in the cache. + Hash string + // The name of the artifact. + Name string +} + +func unpackDownloadCacheArtifactParams(packed middleware.Parameters) (params DownloadCacheArtifactParams) { + { + key := middleware.ParameterKey{ + Name: "cache_category", + In: "query", + } + if v, ok := packed[key]; ok { + params.CacheCategory = v.(OptCacheCategory) + } + } + { + key := middleware.ParameterKey{ + Name: "project_id", + In: "query", + } + params.ProjectID = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "hash", + In: "query", + } + params.Hash = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "name", + In: "query", + } + params.Name = packed[key].(string) + } + return params +} + +func decodeDownloadCacheArtifactParams(args [0]string, argsEscaped bool, r *http.Request) (params DownloadCacheArtifactParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Set default value for query: cache_category. + { + val := CacheCategory("builds") + params.CacheCategory.SetTo(val) + } + // Decode query: cache_category. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotCacheCategoryVal CacheCategory + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotCacheCategoryVal = CacheCategory(c) + return nil + }(); err != nil { + return err + } + params.CacheCategory.SetTo(paramsDotCacheCategoryVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.CacheCategory.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "cache_category", + In: "query", + Err: err, + } + } + // Decode query: project_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectID = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_id", + In: "query", + Err: err, + } + } + // Decode query: hash. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Hash = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "hash", + In: "query", + Err: err, + } + } + // Decode query: name. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Name = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "name", + In: "query", + Err: err, + } + } + return params, nil +} + +// DownloadPreviewParams is parameters of downloadPreview operation. +type DownloadPreviewParams struct { + // The handle of the account. + AccountHandle string + // The handle of the project. + ProjectHandle string + // The id of the preview. + PreviewID string +} + +func unpackDownloadPreviewParams(packed middleware.Parameters) (params DownloadPreviewParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "preview_id", + In: "path", + } + params.PreviewID = packed[key].(string) + } + return params +} + +func decodeDownloadPreviewParams(args [3]string, argsEscaped bool, r *http.Request) (params DownloadPreviewParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + // Decode path: preview_id. + if err := func() error { + param := args[2] + if argsEscaped { + unescaped, err := url.PathUnescape(args[2]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "preview_id", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.PreviewID = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "preview_id", + In: "path", + Err: err, + } + } + return params, nil +} + +// GenerateAnalyticsArtifactMultipartUploadURLParams is parameters of generateAnalyticsArtifactMultipartUploadURL operation. +type GenerateAnalyticsArtifactMultipartUploadURLParams struct { + // The id of the command event. + RunID int +} + +func unpackGenerateAnalyticsArtifactMultipartUploadURLParams(packed middleware.Parameters) (params GenerateAnalyticsArtifactMultipartUploadURLParams) { + { + key := middleware.ParameterKey{ + Name: "run_id", + In: "path", + } + params.RunID = packed[key].(int) + } + return params +} + +func decodeGenerateAnalyticsArtifactMultipartUploadURLParams(args [1]string, argsEscaped bool, r *http.Request) (params GenerateAnalyticsArtifactMultipartUploadURLParams, _ error) { + // Decode path: run_id. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "run_id", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.RunID = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "run_id", + In: "path", + Err: err, + } + } + return params, nil +} + +// GenerateCacheArtifactMultipartUploadURLParams is parameters of generateCacheArtifactMultipartUploadURL operation. +type GenerateCacheArtifactMultipartUploadURLParams struct { + // The category of the cache. It's used to differentiate between different types of caches. + CacheCategory OptCacheCategory + // The project identifier '{account_name}/{project_name}'. + ProjectID string + // The hash that uniquely identifies the artifact in the cache. + Hash string + // The part number of the multipart upload. + PartNumber int + // The upload ID. + UploadID string + // The name of the artifact. + Name string +} + +func unpackGenerateCacheArtifactMultipartUploadURLParams(packed middleware.Parameters) (params GenerateCacheArtifactMultipartUploadURLParams) { + { + key := middleware.ParameterKey{ + Name: "cache_category", + In: "query", + } + if v, ok := packed[key]; ok { + params.CacheCategory = v.(OptCacheCategory) + } + } + { + key := middleware.ParameterKey{ + Name: "project_id", + In: "query", + } + params.ProjectID = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "hash", + In: "query", + } + params.Hash = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "part_number", + In: "query", + } + params.PartNumber = packed[key].(int) + } + { + key := middleware.ParameterKey{ + Name: "upload_id", + In: "query", + } + params.UploadID = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "name", + In: "query", + } + params.Name = packed[key].(string) + } + return params +} + +func decodeGenerateCacheArtifactMultipartUploadURLParams(args [0]string, argsEscaped bool, r *http.Request) (params GenerateCacheArtifactMultipartUploadURLParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Set default value for query: cache_category. + { + val := CacheCategory("builds") + params.CacheCategory.SetTo(val) + } + // Decode query: cache_category. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotCacheCategoryVal CacheCategory + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotCacheCategoryVal = CacheCategory(c) + return nil + }(); err != nil { + return err + } + params.CacheCategory.SetTo(paramsDotCacheCategoryVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.CacheCategory.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "cache_category", + In: "query", + Err: err, + } + } + // Decode query: project_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectID = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_id", + In: "query", + Err: err, + } + } + // Decode query: hash. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Hash = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "hash", + In: "query", + Err: err, + } + } + // Decode query: part_number. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "part_number", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.PartNumber = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "part_number", + In: "query", + Err: err, + } + } + // Decode query: upload_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "upload_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.UploadID = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "upload_id", + In: "query", + Err: err, + } + } + // Decode query: name. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Name = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "name", + In: "query", + Err: err, + } + } + return params, nil +} + +// GeneratePreviewsMultipartUploadURLParams is parameters of generatePreviewsMultipartUploadURL operation. +type GeneratePreviewsMultipartUploadURLParams struct { + // The handle of the account. + AccountHandle string + // The handle of the project. + ProjectHandle string +} + +func unpackGeneratePreviewsMultipartUploadURLParams(packed middleware.Parameters) (params GeneratePreviewsMultipartUploadURLParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + return params +} + +func decodeGeneratePreviewsMultipartUploadURLParams(args [2]string, argsEscaped bool, r *http.Request) (params GeneratePreviewsMultipartUploadURLParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + return params, nil +} + +// GetCacheActionItemParams is parameters of getCacheActionItem operation. +type GetCacheActionItemParams struct { + // The name of the account that the project belongs to. + AccountHandle string + // The name of the project the cache action item belongs to. + ProjectHandle string + // The hash that uniquely identifies an item in the action cache. + Hash string +} + +func unpackGetCacheActionItemParams(packed middleware.Parameters) (params GetCacheActionItemParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "hash", + In: "path", + } + params.Hash = packed[key].(string) + } + return params +} + +func decodeGetCacheActionItemParams(args [3]string, argsEscaped bool, r *http.Request) (params GetCacheActionItemParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + // Decode path: hash. + if err := func() error { + param := args[2] + if argsEscaped { + unescaped, err := url.PathUnescape(args[2]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "hash", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Hash = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "hash", + In: "path", + Err: err, + } + } + return params, nil +} + +// GetDeviceCodeParams is parameters of getDeviceCode operation. +type GetDeviceCodeParams struct { + // The device code to query. + DeviceCode string +} + +func unpackGetDeviceCodeParams(packed middleware.Parameters) (params GetDeviceCodeParams) { + { + key := middleware.ParameterKey{ + Name: "device_code", + In: "path", + } + params.DeviceCode = packed[key].(string) + } + return params +} + +func decodeGetDeviceCodeParams(args [1]string, argsEscaped bool, r *http.Request) (params GetDeviceCodeParams, _ error) { + // Decode path: device_code. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "device_code", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.DeviceCode = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "device_code", + In: "path", + Err: err, + } + } + return params, nil +} + +// ListProjectTokensParams is parameters of listProjectTokens operation. +type ListProjectTokensParams struct { + // The account handle. + AccountHandle string + // The project handle. + ProjectHandle string +} + +func unpackListProjectTokensParams(packed middleware.Parameters) (params ListProjectTokensParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + return params +} + +func decodeListProjectTokensParams(args [2]string, argsEscaped bool, r *http.Request) (params ListProjectTokensParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + return params, nil +} + +// RevokeProjectTokenParams is parameters of revokeProjectToken operation. +type RevokeProjectTokenParams struct { + // The account handle. + AccountHandle string + // The project handle. + ProjectHandle string + // The ID of the project token. + ID string +} + +func unpackRevokeProjectTokenParams(packed middleware.Parameters) (params RevokeProjectTokenParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "id", + In: "path", + } + params.ID = packed[key].(string) + } + return params +} + +func decodeRevokeProjectTokenParams(args [3]string, argsEscaped bool, r *http.Request) (params RevokeProjectTokenParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + // Decode path: id. + if err := func() error { + param := args[2] + if argsEscaped { + unescaped, err := url.PathUnescape(args[2]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "id", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ID = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "id", + In: "path", + Err: err, + } + } + return params, nil +} + +// ShowOrganizationParams is parameters of showOrganization operation. +type ShowOrganizationParams struct { + // The name of the organization to show. + OrganizationName string +} + +func unpackShowOrganizationParams(packed middleware.Parameters) (params ShowOrganizationParams) { + { + key := middleware.ParameterKey{ + Name: "organization_name", + In: "path", + } + params.OrganizationName = packed[key].(string) + } + return params +} + +func decodeShowOrganizationParams(args [1]string, argsEscaped bool, r *http.Request) (params ShowOrganizationParams, _ error) { + // Decode path: organization_name. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "organization_name", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.OrganizationName = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "organization_name", + In: "path", + Err: err, + } + } + return params, nil +} + +// ShowOrganizationUsageParams is parameters of showOrganizationUsage operation. +type ShowOrganizationUsageParams struct { + // The name of the organization to show. + OrganizationName string +} + +func unpackShowOrganizationUsageParams(packed middleware.Parameters) (params ShowOrganizationUsageParams) { + { + key := middleware.ParameterKey{ + Name: "organization_name", + In: "path", + } + params.OrganizationName = packed[key].(string) + } + return params +} + +func decodeShowOrganizationUsageParams(args [1]string, argsEscaped bool, r *http.Request) (params ShowOrganizationUsageParams, _ error) { + // Decode path: organization_name. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "organization_name", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.OrganizationName = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "organization_name", + In: "path", + Err: err, + } + } + return params, nil +} + +// ShowProjectParams is parameters of showProject operation. +type ShowProjectParams struct { + // The name of the account that the project belongs to. + AccountHandle string + // The name of the project to show. + ProjectHandle string +} + +func unpackShowProjectParams(packed middleware.Parameters) (params ShowProjectParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + return params +} + +func decodeShowProjectParams(args [2]string, argsEscaped bool, r *http.Request) (params ShowProjectParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + return params, nil +} + +// StartAnalyticsArtifactMultipartUploadParams is parameters of startAnalyticsArtifactMultipartUpload operation. +type StartAnalyticsArtifactMultipartUploadParams struct { + // The id of the command event. + RunID int +} + +func unpackStartAnalyticsArtifactMultipartUploadParams(packed middleware.Parameters) (params StartAnalyticsArtifactMultipartUploadParams) { + { + key := middleware.ParameterKey{ + Name: "run_id", + In: "path", + } + params.RunID = packed[key].(int) + } + return params +} + +func decodeStartAnalyticsArtifactMultipartUploadParams(args [1]string, argsEscaped bool, r *http.Request) (params StartAnalyticsArtifactMultipartUploadParams, _ error) { + // Decode path: run_id. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "run_id", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + params.RunID = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "run_id", + In: "path", + Err: err, + } + } + return params, nil +} + +// StartCacheArtifactMultipartUploadParams is parameters of startCacheArtifactMultipartUpload operation. +type StartCacheArtifactMultipartUploadParams struct { + // The category of the cache. It's used to differentiate between different types of caches. + CacheCategory OptCacheCategory + // The project identifier '{account_name}/{project_name}'. + ProjectID string + // The hash that uniquely identifies the artifact in the cache. + Hash string + // The name of the artifact. + Name string +} + +func unpackStartCacheArtifactMultipartUploadParams(packed middleware.Parameters) (params StartCacheArtifactMultipartUploadParams) { + { + key := middleware.ParameterKey{ + Name: "cache_category", + In: "query", + } + if v, ok := packed[key]; ok { + params.CacheCategory = v.(OptCacheCategory) + } + } + { + key := middleware.ParameterKey{ + Name: "project_id", + In: "query", + } + params.ProjectID = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "hash", + In: "query", + } + params.Hash = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "name", + In: "query", + } + params.Name = packed[key].(string) + } + return params +} + +func decodeStartCacheArtifactMultipartUploadParams(args [0]string, argsEscaped bool, r *http.Request) (params StartCacheArtifactMultipartUploadParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Set default value for query: cache_category. + { + val := CacheCategory("builds") + params.CacheCategory.SetTo(val) + } + // Decode query: cache_category. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "cache_category", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotCacheCategoryVal CacheCategory + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotCacheCategoryVal = CacheCategory(c) + return nil + }(); err != nil { + return err + } + params.CacheCategory.SetTo(paramsDotCacheCategoryVal) + return nil + }); err != nil { + return err + } + if err := func() error { + if value, ok := params.CacheCategory.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "cache_category", + In: "query", + Err: err, + } + } + // Decode query: project_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "project_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectID = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_id", + In: "query", + Err: err, + } + } + // Decode query: hash. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "hash", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Hash = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "hash", + In: "query", + Err: err, + } + } + // Decode query: name. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "name", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.Name = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "name", + In: "query", + Err: err, + } + } + return params, nil +} + +// StartPreviewsMultipartUploadParams is parameters of startPreviewsMultipartUpload operation. +type StartPreviewsMultipartUploadParams struct { + // The handle of the account. + AccountHandle string + // The handle of the project. + ProjectHandle string +} + +func unpackStartPreviewsMultipartUploadParams(packed middleware.Parameters) (params StartPreviewsMultipartUploadParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + return params +} + +func decodeStartPreviewsMultipartUploadParams(args [2]string, argsEscaped bool, r *http.Request) (params StartPreviewsMultipartUploadParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + return params, nil +} + +// UpdateOrganizationParams is parameters of updateOrganization operation. +type UpdateOrganizationParams struct { + // The name of the organization to update. + OrganizationName string +} + +func unpackUpdateOrganizationParams(packed middleware.Parameters) (params UpdateOrganizationParams) { + { + key := middleware.ParameterKey{ + Name: "organization_name", + In: "path", + } + params.OrganizationName = packed[key].(string) + } + return params +} + +func decodeUpdateOrganizationParams(args [1]string, argsEscaped bool, r *http.Request) (params UpdateOrganizationParams, _ error) { + // Decode path: organization_name. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "organization_name", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.OrganizationName = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "organization_name", + In: "path", + Err: err, + } + } + return params, nil +} + +// UpdateOrganization2Params is parameters of updateOrganization (2) operation. +type UpdateOrganization2Params struct { + // The name of the organization to update. + OrganizationName string +} + +func unpackUpdateOrganization2Params(packed middleware.Parameters) (params UpdateOrganization2Params) { + { + key := middleware.ParameterKey{ + Name: "organization_name", + In: "path", + } + params.OrganizationName = packed[key].(string) + } + return params +} + +func decodeUpdateOrganization2Params(args [1]string, argsEscaped bool, r *http.Request) (params UpdateOrganization2Params, _ error) { + // Decode path: organization_name. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "organization_name", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.OrganizationName = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "organization_name", + In: "path", + Err: err, + } + } + return params, nil +} + +// UpdateOrganizationMemberParams is parameters of updateOrganizationMember operation. +type UpdateOrganizationMemberParams struct { + // The name of the organization to update the member in. + OrganizationName string + // The name of the user to update in the organization. + UserName string +} + +func unpackUpdateOrganizationMemberParams(packed middleware.Parameters) (params UpdateOrganizationMemberParams) { + { + key := middleware.ParameterKey{ + Name: "organization_name", + In: "path", + } + params.OrganizationName = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "user_name", + In: "path", + } + params.UserName = packed[key].(string) + } + return params +} + +func decodeUpdateOrganizationMemberParams(args [2]string, argsEscaped bool, r *http.Request) (params UpdateOrganizationMemberParams, _ error) { + // Decode path: organization_name. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "organization_name", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.OrganizationName = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "organization_name", + In: "path", + Err: err, + } + } + // Decode path: user_name. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "user_name", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.UserName = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "user_name", + In: "path", + Err: err, + } + } + return params, nil +} + +// UpdateProjectParams is parameters of updateProject operation. +type UpdateProjectParams struct { + // The handle of the project's account. + AccountHandle string + // The handle of the project to update. + ProjectHandle string +} + +func unpackUpdateProjectParams(packed middleware.Parameters) (params UpdateProjectParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + return params +} + +func decodeUpdateProjectParams(args [2]string, argsEscaped bool, r *http.Request) (params UpdateProjectParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + return params, nil +} + +// UploadCacheActionItemParams is parameters of uploadCacheActionItem operation. +type UploadCacheActionItemParams struct { + // The name of the account that the project belongs to. + AccountHandle string + // The name of the project to clean cache for. + ProjectHandle string +} + +func unpackUploadCacheActionItemParams(packed middleware.Parameters) (params UploadCacheActionItemParams) { + { + key := middleware.ParameterKey{ + Name: "account_handle", + In: "path", + } + params.AccountHandle = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "project_handle", + In: "path", + } + params.ProjectHandle = packed[key].(string) + } + return params +} + +func decodeUploadCacheActionItemParams(args [2]string, argsEscaped bool, r *http.Request) (params UploadCacheActionItemParams, _ error) { + // Decode path: account_handle. + if err := func() error { + param := args[0] + if argsEscaped { + unescaped, err := url.PathUnescape(args[0]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "account_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.AccountHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "account_handle", + In: "path", + Err: err, + } + } + // Decode path: project_handle. + if err := func() error { + param := args[1] + if argsEscaped { + unescaped, err := url.PathUnescape(args[1]) + if err != nil { + return errors.Wrap(err, "unescape path") + } + param = unescaped + } + if len(param) > 0 { + d := uri.NewPathDecoder(uri.PathDecoderConfig{ + Param: "project_handle", + Value: param, + Style: uri.PathStyleSimple, + Explode: false, + }) + + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.ProjectHandle = c + return nil + }(); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "project_handle", + In: "path", + Err: err, + } + } + return params, nil +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_request_decoders_gen.go b/internal/agent/http_cache/tuistcache/api/oas_request_decoders_gen.go new file mode 100644 index 00000000..ef4ac2e5 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_request_decoders_gen.go @@ -0,0 +1,1393 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "io" + "mime" + "net/http" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + "go.uber.org/multierr" + + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/validate" +) + +func (s *Server) decodeAuthenticateRequest(r *http.Request) ( + req OptAuthenticateReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptAuthenticateReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeCompleteAnalyticsArtifactMultipartUploadRequest(r *http.Request) ( + req OptCompleteAnalyticsArtifactMultipartUploadReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptCompleteAnalyticsArtifactMultipartUploadReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeCompleteAnalyticsArtifactsUploadsRequest(r *http.Request) ( + req OptCompleteAnalyticsArtifactsUploadsReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptCompleteAnalyticsArtifactsUploadsReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeCompleteCacheArtifactMultipartUploadRequest(r *http.Request) ( + req OptCompleteCacheArtifactMultipartUploadReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptCompleteCacheArtifactMultipartUploadReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeCompletePreviewsMultipartUploadRequest(r *http.Request) ( + req OptCompletePreviewsMultipartUploadReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptCompletePreviewsMultipartUploadReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeCreateCommandEventRequest(r *http.Request) ( + req OptCreateCommandEventReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptCreateCommandEventReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeCreateInvitationRequest(r *http.Request) ( + req OptCreateInvitationReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptCreateInvitationReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeCreateOrganizationRequest(r *http.Request) ( + req OptCreateOrganizationReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptCreateOrganizationReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeCreateProjectRequest(r *http.Request) ( + req OptCreateProjectReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptCreateProjectReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeGenerateAnalyticsArtifactMultipartUploadURLRequest(r *http.Request) ( + req OptGenerateAnalyticsArtifactMultipartUploadURLReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptGenerateAnalyticsArtifactMultipartUploadURLReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeGeneratePreviewsMultipartUploadURLRequest(r *http.Request) ( + req OptGeneratePreviewsMultipartUploadURLReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptGeneratePreviewsMultipartUploadURLReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeRefreshTokenRequest(r *http.Request) ( + req OptRefreshTokenReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptRefreshTokenReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeStartAnalyticsArtifactMultipartUploadRequest(r *http.Request) ( + req CommandEventArtifact, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request CommandEventArtifact + if err := func() error { + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeStartPreviewsMultipartUploadRequest(r *http.Request) ( + req OptStartPreviewsMultipartUploadReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptStartPreviewsMultipartUploadReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeUpdateOrganizationRequest(r *http.Request) ( + req OptUpdateOrganizationReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptUpdateOrganizationReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeUpdateOrganization2Request(r *http.Request) ( + req OptUpdateOrganization2Req, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptUpdateOrganization2Req + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeUpdateOrganizationMemberRequest(r *http.Request) ( + req OptUpdateOrganizationMemberReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptUpdateOrganizationMemberReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return req, close, errors.Wrap(err, "validate") + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeUpdateProjectRequest(r *http.Request) ( + req OptUpdateProjectReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptUpdateProjectReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} + +func (s *Server) decodeUploadCacheActionItemRequest(r *http.Request) ( + req OptUploadCacheActionItemReq, + close func() error, + rerr error, +) { + var closers []func() error + close = func() error { + var merr error + // Close in reverse order, to match defer behavior. + for i := len(closers) - 1; i >= 0; i-- { + c := closers[i] + merr = multierr.Append(merr, c()) + } + return merr + } + defer func() { + if rerr != nil { + rerr = multierr.Append(rerr, close()) + } + }() + if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 { + return req, close, nil + } + ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) + if err != nil { + return req, close, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + if r.ContentLength == 0 { + return req, close, nil + } + buf, err := io.ReadAll(r.Body) + if err != nil { + return req, close, err + } + + if len(buf) == 0 { + return req, close, nil + } + + d := jx.DecodeBytes(buf) + + var request OptUploadCacheActionItemReq + if err := func() error { + request.Reset() + if err := request.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return req, close, err + } + return request, close, nil + default: + return req, close, validate.InvalidContentType(ct) + } +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_request_encoders_gen.go b/internal/agent/http_cache/tuistcache/api/oas_request_encoders_gen.go new file mode 100644 index 00000000..1465f3f7 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_request_encoders_gen.go @@ -0,0 +1,386 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "bytes" + "net/http" + + "github.com/go-faster/jx" + + ht "github.com/ogen-go/ogen/http" +) + +func encodeAuthenticateRequest( + req OptAuthenticateReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeCompleteAnalyticsArtifactMultipartUploadRequest( + req OptCompleteAnalyticsArtifactMultipartUploadReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeCompleteAnalyticsArtifactsUploadsRequest( + req OptCompleteAnalyticsArtifactsUploadsReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeCompleteCacheArtifactMultipartUploadRequest( + req OptCompleteCacheArtifactMultipartUploadReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeCompletePreviewsMultipartUploadRequest( + req OptCompletePreviewsMultipartUploadReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeCreateCommandEventRequest( + req OptCreateCommandEventReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeCreateInvitationRequest( + req OptCreateInvitationReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeCreateOrganizationRequest( + req OptCreateOrganizationReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeCreateProjectRequest( + req OptCreateProjectReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeGenerateAnalyticsArtifactMultipartUploadURLRequest( + req OptGenerateAnalyticsArtifactMultipartUploadURLReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeGeneratePreviewsMultipartUploadURLRequest( + req OptGeneratePreviewsMultipartUploadURLReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeRefreshTokenRequest( + req OptRefreshTokenReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeStartAnalyticsArtifactMultipartUploadRequest( + req CommandEventArtifact, + r *http.Request, +) error { + const contentType = "application/json" + e := new(jx.Encoder) + { + req.Encode(e) + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeStartPreviewsMultipartUploadRequest( + req OptStartPreviewsMultipartUploadReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeUpdateOrganizationRequest( + req OptUpdateOrganizationReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeUpdateOrganization2Request( + req OptUpdateOrganization2Req, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeUpdateOrganizationMemberRequest( + req OptUpdateOrganizationMemberReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeUpdateProjectRequest( + req OptUpdateProjectReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + +func encodeUploadCacheActionItemRequest( + req OptUploadCacheActionItemReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_response_decoders_gen.go b/internal/agent/http_cache/tuistcache/api/oas_response_decoders_gen.go new file mode 100644 index 00000000..dc6f356f --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_response_decoders_gen.go @@ -0,0 +1,5607 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "io" + "mime" + "net/http" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/validate" +) + +func decodeAuthenticateResponse(resp *http.Response) (res AuthenticateRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response AuthenticationTokens + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCacheArtifactExistsResponse(resp *http.Response) (res CacheArtifactExistsRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CacheArtifactExistsOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CacheArtifactExistsUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 402: + // Code 402. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CacheArtifactExistsPaymentRequired + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CacheArtifactExistsForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CacheArtifactExistsNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCleanCacheResponse(resp *http.Response) (res CleanCacheRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &CleanCacheNoContent{}, nil + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CleanCacheUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CleanCacheForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CleanCacheNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCompleteAnalyticsArtifactMultipartUploadResponse(resp *http.Response) (res CompleteAnalyticsArtifactMultipartUploadRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &CompleteAnalyticsArtifactMultipartUploadNoContent{}, nil + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteAnalyticsArtifactMultipartUploadUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteAnalyticsArtifactMultipartUploadForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteAnalyticsArtifactMultipartUploadNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 500: + // Code 500. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteAnalyticsArtifactMultipartUploadInternalServerError + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCompleteAnalyticsArtifactsUploadsResponse(resp *http.Response) (res CompleteAnalyticsArtifactsUploadsRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &CompleteAnalyticsArtifactsUploadsNoContent{}, nil + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteAnalyticsArtifactsUploadsUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteAnalyticsArtifactsUploadsForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteAnalyticsArtifactsUploadsNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCompleteCacheArtifactMultipartUploadResponse(resp *http.Response) (res CompleteCacheArtifactMultipartUploadRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteCacheArtifactMultipartUploadOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteCacheArtifactMultipartUploadUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 402: + // Code 402. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteCacheArtifactMultipartUploadPaymentRequired + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteCacheArtifactMultipartUploadForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompleteCacheArtifactMultipartUploadNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCompletePreviewsMultipartUploadResponse(resp *http.Response) (res CompletePreviewsMultipartUploadRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompletePreviewsMultipartUploadOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompletePreviewsMultipartUploadUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompletePreviewsMultipartUploadForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CompletePreviewsMultipartUploadNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCreateCommandEventResponse(resp *http.Response) (res CreateCommandEventRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CommandEvent + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateCommandEventUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateCommandEventForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCreateInvitationResponse(resp *http.Response) (res CreateInvitationRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Invitation + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateInvitationBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateInvitationUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateInvitationForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateInvitationNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCreateOrganizationResponse(resp *http.Response) (res CreateOrganizationRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Organization + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCreateProjectResponse(resp *http.Response) (res CreateProjectRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Project + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateProjectBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateProjectUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateProjectForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeCreateProjectTokenResponse(resp *http.Response) (res CreateProjectTokenRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateProjectTokenOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateProjectTokenUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateProjectTokenForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CreateProjectTokenNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeDeleteOrganizationResponse(resp *http.Response) (res DeleteOrganizationRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &DeleteOrganizationNoContent{}, nil + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DeleteOrganizationUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DeleteOrganizationForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DeleteOrganizationNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeDeleteProjectResponse(resp *http.Response) (res DeleteProjectRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &DeleteProjectNoContent{}, nil + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DeleteProjectUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DeleteProjectForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DeleteProjectNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeDownloadCacheArtifactResponse(resp *http.Response) (res DownloadCacheArtifactRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CacheArtifactDownloadURL + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DownloadCacheArtifactUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 402: + // Code 402. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DownloadCacheArtifactPaymentRequired + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DownloadCacheArtifactForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DownloadCacheArtifactNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeDownloadPreviewResponse(resp *http.Response) (res DownloadPreviewRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ArtifactDownloadURL + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DownloadPreviewUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DownloadPreviewForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response DownloadPreviewNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeGenerateAnalyticsArtifactMultipartUploadURLResponse(resp *http.Response) (res GenerateAnalyticsArtifactMultipartUploadURLRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ArtifactMultipartUploadURL + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GenerateAnalyticsArtifactMultipartUploadURLUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GenerateAnalyticsArtifactMultipartUploadURLForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GenerateAnalyticsArtifactMultipartUploadURLNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeGenerateCacheArtifactMultipartUploadURLResponse(resp *http.Response) (res GenerateCacheArtifactMultipartUploadURLRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ArtifactMultipartUploadURL + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GenerateCacheArtifactMultipartUploadURLUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 402: + // Code 402. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GenerateCacheArtifactMultipartUploadURLPaymentRequired + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GenerateCacheArtifactMultipartUploadURLForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GenerateCacheArtifactMultipartUploadURLNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeGeneratePreviewsMultipartUploadURLResponse(resp *http.Response) (res GeneratePreviewsMultipartUploadURLRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ArtifactMultipartUploadURL + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GeneratePreviewsMultipartUploadURLUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GeneratePreviewsMultipartUploadURLForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GeneratePreviewsMultipartUploadURLNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeGetCacheActionItemResponse(resp *http.Response) (res GetCacheActionItemRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response CacheActionItem + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GetCacheActionItemUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 402: + // Code 402. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GetCacheActionItemPaymentRequired + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GetCacheActionItemForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GetCacheActionItemNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeGetDeviceCodeResponse(resp *http.Response) (res GetDeviceCodeRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GetDeviceCodeOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 202: + // Code 202. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response GetDeviceCodeAccepted + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeListOrganizationsResponse(resp *http.Response) (res ListOrganizationsRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ListOrganizationsOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ListOrganizationsUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ListOrganizationsForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeListProjectTokensResponse(resp *http.Response) (res ListProjectTokensRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ListProjectTokensOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ListProjectTokensUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ListProjectTokensForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ListProjectTokensNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeListProjectsResponse(resp *http.Response) (res ListProjectsRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ListProjectsOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeRefreshTokenResponse(resp *http.Response) (res RefreshTokenRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response AuthenticationTokens + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeRevokeProjectTokenResponse(resp *http.Response) (res RevokeProjectTokenRes, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &RevokeProjectTokenNoContent{}, nil + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response RevokeProjectTokenBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response RevokeProjectTokenUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response RevokeProjectTokenForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response RevokeProjectTokenNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeShowOrganizationResponse(resp *http.Response) (res ShowOrganizationRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Organization + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ShowOrganizationUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ShowOrganizationForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ShowOrganizationNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeShowOrganizationUsageResponse(resp *http.Response) (res ShowOrganizationUsageRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response OrganizationUsage + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ShowOrganizationUsageUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ShowOrganizationUsageForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ShowOrganizationUsageNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeShowProjectResponse(resp *http.Response) (res ShowProjectRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Project + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ShowProjectUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ShowProjectForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ShowProjectNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeStartAnalyticsArtifactMultipartUploadResponse(resp *http.Response) (res StartAnalyticsArtifactMultipartUploadRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ArtifactUploadID + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartAnalyticsArtifactMultipartUploadUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartAnalyticsArtifactMultipartUploadForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartAnalyticsArtifactMultipartUploadNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeStartCacheArtifactMultipartUploadResponse(resp *http.Response) (res StartCacheArtifactMultipartUploadRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response ArtifactUploadID + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartCacheArtifactMultipartUploadUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 402: + // Code 402. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartCacheArtifactMultipartUploadPaymentRequired + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartCacheArtifactMultipartUploadForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartCacheArtifactMultipartUploadNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeStartPreviewsMultipartUploadResponse(resp *http.Response) (res StartPreviewsMultipartUploadRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartPreviewsMultipartUploadOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartPreviewsMultipartUploadUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartPreviewsMultipartUploadForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response StartPreviewsMultipartUploadNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeUpdateOrganizationResponse(resp *http.Response) (res UpdateOrganizationRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Organization + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganizationBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganizationUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganizationForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganizationNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeUpdateOrganization2Response(resp *http.Response) (res UpdateOrganization2Res, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Organization + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganization2BadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganization2Unauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganization2Forbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganization2NotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeUpdateOrganizationMemberResponse(resp *http.Response) (res UpdateOrganizationMemberRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response OrganizationMember + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganizationMemberBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganizationMemberUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganizationMemberForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateOrganizationMemberNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeUpdateProjectResponse(resp *http.Response) (res UpdateProjectRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Project + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateProjectBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateProjectUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateProjectForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UpdateProjectNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + +func decodeUploadCacheActionItemResponse(resp *http.Response) (res UploadCacheActionItemRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UploadCacheActionItemOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 201: + // Code 201. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UploadCacheActionItemCreated + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UploadCacheActionItemBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 401: + // Code 401. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UploadCacheActionItemUnauthorized + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 402: + // Code 402. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UploadCacheActionItemPaymentRequired + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 403: + // Code 403. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UploadCacheActionItemForbidden + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 404: + // Code 404. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response UploadCacheActionItemNotFound + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_response_encoders_gen.go b/internal/agent/http_cache/tuistcache/api/oas_response_encoders_gen.go new file mode 100644 index 00000000..ef28c3c0 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_response_encoders_gen.go @@ -0,0 +1,2218 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/trace" +) + +func encodeAuthenticateResponse(response AuthenticateRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *AuthenticationTokens: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *Error: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCacheArtifactExistsResponse(response CacheArtifactExistsRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CacheArtifactExistsOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CacheArtifactExistsUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CacheArtifactExistsPaymentRequired: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(402) + span.SetStatus(codes.Error, http.StatusText(402)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CacheArtifactExistsForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CacheArtifactExistsNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCleanCacheResponse(response CleanCacheRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CleanCacheNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *CleanCacheUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CleanCacheForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CleanCacheNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCompleteAnalyticsArtifactMultipartUploadResponse(response CompleteAnalyticsArtifactMultipartUploadRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CompleteAnalyticsArtifactMultipartUploadNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *CompleteAnalyticsArtifactMultipartUploadUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompleteAnalyticsArtifactMultipartUploadForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompleteAnalyticsArtifactMultipartUploadNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompleteAnalyticsArtifactMultipartUploadInternalServerError: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(500) + span.SetStatus(codes.Error, http.StatusText(500)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCompleteAnalyticsArtifactsUploadsResponse(response CompleteAnalyticsArtifactsUploadsRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CompleteAnalyticsArtifactsUploadsNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *CompleteAnalyticsArtifactsUploadsUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompleteAnalyticsArtifactsUploadsForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompleteAnalyticsArtifactsUploadsNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCompleteCacheArtifactMultipartUploadResponse(response CompleteCacheArtifactMultipartUploadRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CompleteCacheArtifactMultipartUploadOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompleteCacheArtifactMultipartUploadUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompleteCacheArtifactMultipartUploadPaymentRequired: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(402) + span.SetStatus(codes.Error, http.StatusText(402)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompleteCacheArtifactMultipartUploadForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompleteCacheArtifactMultipartUploadNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCompletePreviewsMultipartUploadResponse(response CompletePreviewsMultipartUploadRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CompletePreviewsMultipartUploadOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompletePreviewsMultipartUploadUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompletePreviewsMultipartUploadForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CompletePreviewsMultipartUploadNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCreateCommandEventResponse(response CreateCommandEventRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CommandEvent: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateCommandEventUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateCommandEventForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCreateInvitationResponse(response CreateInvitationRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *Invitation: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateInvitationBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateInvitationUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateInvitationForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateInvitationNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCreateOrganizationResponse(response CreateOrganizationRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *Organization: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *Error: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCreateProjectResponse(response CreateProjectRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *Project: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateProjectBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateProjectUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateProjectForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeCreateProjectTokenResponse(response CreateProjectTokenRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CreateProjectTokenOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateProjectTokenUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateProjectTokenForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *CreateProjectTokenNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeDeleteOrganizationResponse(response DeleteOrganizationRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *DeleteOrganizationNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *DeleteOrganizationUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DeleteOrganizationForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DeleteOrganizationNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeDeleteProjectResponse(response DeleteProjectRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *DeleteProjectNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *DeleteProjectUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DeleteProjectForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DeleteProjectNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeDownloadCacheArtifactResponse(response DownloadCacheArtifactRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CacheArtifactDownloadURL: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DownloadCacheArtifactUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DownloadCacheArtifactPaymentRequired: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(402) + span.SetStatus(codes.Error, http.StatusText(402)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DownloadCacheArtifactForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DownloadCacheArtifactNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeDownloadPreviewResponse(response DownloadPreviewRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ArtifactDownloadURL: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DownloadPreviewUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DownloadPreviewForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *DownloadPreviewNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeGenerateAnalyticsArtifactMultipartUploadURLResponse(response GenerateAnalyticsArtifactMultipartUploadURLRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ArtifactMultipartUploadURL: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GenerateAnalyticsArtifactMultipartUploadURLUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GenerateAnalyticsArtifactMultipartUploadURLForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GenerateAnalyticsArtifactMultipartUploadURLNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeGenerateCacheArtifactMultipartUploadURLResponse(response GenerateCacheArtifactMultipartUploadURLRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ArtifactMultipartUploadURL: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GenerateCacheArtifactMultipartUploadURLUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GenerateCacheArtifactMultipartUploadURLPaymentRequired: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(402) + span.SetStatus(codes.Error, http.StatusText(402)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GenerateCacheArtifactMultipartUploadURLForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GenerateCacheArtifactMultipartUploadURLNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeGeneratePreviewsMultipartUploadURLResponse(response GeneratePreviewsMultipartUploadURLRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ArtifactMultipartUploadURL: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GeneratePreviewsMultipartUploadURLUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GeneratePreviewsMultipartUploadURLForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GeneratePreviewsMultipartUploadURLNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeGetCacheActionItemResponse(response GetCacheActionItemRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *CacheActionItem: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GetCacheActionItemUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GetCacheActionItemPaymentRequired: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(402) + span.SetStatus(codes.Error, http.StatusText(402)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GetCacheActionItemForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GetCacheActionItemNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeGetDeviceCodeResponse(response GetDeviceCodeRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *GetDeviceCodeOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *GetDeviceCodeAccepted: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(202) + span.SetStatus(codes.Ok, http.StatusText(202)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *Error: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeListOrganizationsResponse(response ListOrganizationsRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ListOrganizationsOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ListOrganizationsUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ListOrganizationsForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeListProjectTokensResponse(response ListProjectTokensRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ListProjectTokensOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ListProjectTokensUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ListProjectTokensForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ListProjectTokensNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeListProjectsResponse(response ListProjectsRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ListProjectsOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *Error: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeRefreshTokenResponse(response RefreshTokenRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *AuthenticationTokens: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *Error: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeRevokeProjectTokenResponse(response RevokeProjectTokenRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *RevokeProjectTokenNoContent: + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil + + case *RevokeProjectTokenBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *RevokeProjectTokenUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *RevokeProjectTokenForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *RevokeProjectTokenNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeShowOrganizationResponse(response ShowOrganizationRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *Organization: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ShowOrganizationUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ShowOrganizationForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ShowOrganizationNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeShowOrganizationUsageResponse(response ShowOrganizationUsageRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *OrganizationUsage: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ShowOrganizationUsageUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ShowOrganizationUsageForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ShowOrganizationUsageNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeShowProjectResponse(response ShowProjectRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *Project: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ShowProjectUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ShowProjectForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *ShowProjectNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeStartAnalyticsArtifactMultipartUploadResponse(response StartAnalyticsArtifactMultipartUploadRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ArtifactUploadID: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartAnalyticsArtifactMultipartUploadUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartAnalyticsArtifactMultipartUploadForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartAnalyticsArtifactMultipartUploadNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeStartCacheArtifactMultipartUploadResponse(response StartCacheArtifactMultipartUploadRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *ArtifactUploadID: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartCacheArtifactMultipartUploadUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartCacheArtifactMultipartUploadPaymentRequired: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(402) + span.SetStatus(codes.Error, http.StatusText(402)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartCacheArtifactMultipartUploadForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartCacheArtifactMultipartUploadNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeStartPreviewsMultipartUploadResponse(response StartPreviewsMultipartUploadRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *StartPreviewsMultipartUploadOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartPreviewsMultipartUploadUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartPreviewsMultipartUploadForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *StartPreviewsMultipartUploadNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeUpdateOrganizationResponse(response UpdateOrganizationRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *Organization: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganizationBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganizationUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganizationForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganizationNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeUpdateOrganization2Response(response UpdateOrganization2Res, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *Organization: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganization2BadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganization2Unauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganization2Forbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganization2NotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeUpdateOrganizationMemberResponse(response UpdateOrganizationMemberRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *OrganizationMember: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganizationMemberBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganizationMemberUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganizationMemberForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateOrganizationMemberNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeUpdateProjectResponse(response UpdateProjectRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *Project: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateProjectBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateProjectUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateProjectForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UpdateProjectNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + +func encodeUploadCacheActionItemResponse(response UploadCacheActionItemRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *UploadCacheActionItemOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UploadCacheActionItemCreated: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(201) + span.SetStatus(codes.Ok, http.StatusText(201)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UploadCacheActionItemBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UploadCacheActionItemUnauthorized: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(401) + span.SetStatus(codes.Error, http.StatusText(401)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UploadCacheActionItemPaymentRequired: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(402) + span.SetStatus(codes.Error, http.StatusText(402)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UploadCacheActionItemForbidden: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(403) + span.SetStatus(codes.Error, http.StatusText(403)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *UploadCacheActionItemNotFound: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(404) + span.SetStatus(codes.Error, http.StatusText(404)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_router_gen.go b/internal/agent/http_cache/tuistcache/api/oas_router_gen.go new file mode 100644 index 00000000..578481b7 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_router_gen.go @@ -0,0 +1,2103 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + "net/url" + "strings" + + "github.com/ogen-go/ogen/uri" +) + +func (s *Server) cutPrefix(path string) (string, bool) { + prefix := s.cfg.Prefix + if prefix == "" { + return path, true + } + if !strings.HasPrefix(path, prefix) { + // Prefix doesn't match. + return "", false + } + // Cut prefix from the path. + return strings.TrimPrefix(path, prefix), true +} + +// ServeHTTP serves http request as defined by OpenAPI v3 specification, +// calling handler that matches the path or returning not found error. +func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { + elem := r.URL.Path + elemIsEscaped := false + if rawPath := r.URL.RawPath; rawPath != "" { + if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { + elem = normalized + elemIsEscaped = strings.ContainsRune(elem, '%') + } + } + + elem, ok := s.cutPrefix(elem) + if !ok || len(elem) == 0 { + s.notFound(w, r) + return + } + args := [3]string{} + + // Static code generated router with unwrapped path search. + switch { + default: + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/api/" + origElem := elem + if l := len("/api/"); len(elem) >= l && elem[0:l] == "/api/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'a': // Prefix: "a" + origElem := elem + if l := len("a"); len(elem) >= l && elem[0:l] == "a" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'n': // Prefix: "nalytics" + origElem := elem + if l := len("nalytics"); len(elem) >= l && elem[0:l] == "nalytics" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleCreateCommandEventRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + case 'u': // Prefix: "uth" + origElem := elem + if l := len("uth"); len(elem) >= l && elem[0:l] == "uth" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "POST": + s.handleAuthenticateRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'd': // Prefix: "device_code/" + origElem := elem + if l := len("device_code/"); len(elem) >= l && elem[0:l] == "device_code/" { + elem = elem[l:] + } else { + break + } + + // Param: "device_code" + // Leaf parameter + args[0] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleGetDeviceCodeRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + elem = origElem + case 'r': // Prefix: "refresh_token" + origElem := elem + if l := len("refresh_token"); len(elem) >= l && elem[0:l] == "refresh_token" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleRefreshTokenRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + case 'c': // Prefix: "cache" + origElem := elem + if l := len("cache"); len(elem) >= l && elem[0:l] == "cache" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "GET": + s.handleDownloadCacheArtifactRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'e': // Prefix: "exists" + origElem := elem + if l := len("exists"); len(elem) >= l && elem[0:l] == "exists" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleCacheArtifactExistsRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + elem = origElem + case 'm': // Prefix: "multipart/" + origElem := elem + if l := len("multipart/"); len(elem) >= l && elem[0:l] == "multipart/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "complete" + origElem := elem + if l := len("complete"); len(elem) >= l && elem[0:l] == "complete" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleCompleteCacheArtifactMultipartUploadRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + case 'g': // Prefix: "generate-url" + origElem := elem + if l := len("generate-url"); len(elem) >= l && elem[0:l] == "generate-url" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleGenerateCacheArtifactMultipartUploadURLRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + case 's': // Prefix: "start" + origElem := elem + if l := len("start"); len(elem) >= l && elem[0:l] == "start" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleStartCacheArtifactMultipartUploadRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + case 'o': // Prefix: "organizations" + origElem := elem + if l := len("organizations"); len(elem) >= l && elem[0:l] == "organizations" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "GET": + s.handleListOrganizationsRequest([0]string{}, elemIsEscaped, w, r) + case "POST": + s.handleCreateOrganizationRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET,POST") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "organization_name" + // Match until "/" + idx := strings.IndexByte(elem, '/') + if idx < 0 { + idx = len(elem) + } + args[0] = elem[:idx] + elem = elem[idx:] + + if len(elem) == 0 { + switch r.Method { + case "DELETE": + s.handleDeleteOrganizationRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + case "GET": + s.handleShowOrganizationRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + case "PATCH": + s.handleUpdateOrganization2Request([1]string{ + args[0], + }, elemIsEscaped, w, r) + case "PUT": + s.handleUpdateOrganizationRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "DELETE,GET,PATCH,PUT") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'i': // Prefix: "invitations" + origElem := elem + if l := len("invitations"); len(elem) >= l && elem[0:l] == "invitations" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleCreateInvitationRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + case 'm': // Prefix: "members/" + origElem := elem + if l := len("members/"); len(elem) >= l && elem[0:l] == "members/" { + elem = elem[l:] + } else { + break + } + + // Param: "user_name" + // Leaf parameter + args[1] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "PUT": + s.handleUpdateOrganizationMemberRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "PUT") + } + + return + } + + elem = origElem + case 'u': // Prefix: "usage" + origElem := elem + if l := len("usage"); len(elem) >= l && elem[0:l] == "usage" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleShowOrganizationUsageRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + case 'p': // Prefix: "projects" + origElem := elem + if l := len("projects"); len(elem) >= l && elem[0:l] == "projects" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "GET": + s.handleListProjectsRequest([0]string{}, elemIsEscaped, w, r) + case "POST": + s.handleCreateProjectRequest([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET,POST") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "account_handle" + // Match until "/" + idx := strings.IndexByte(elem, '/') + if idx < 0 { + idx = len(elem) + } + args[0] = elem[:idx] + elem = elem[idx:] + + if len(elem) == 0 { + switch r.Method { + case "DELETE": + s.handleDeleteProjectRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "DELETE") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "project_handle" + // Match until "/" + idx := strings.IndexByte(elem, '/') + if idx < 0 { + idx = len(elem) + } + args[1] = elem[:idx] + elem = elem[idx:] + + if len(elem) == 0 { + switch r.Method { + case "GET": + s.handleShowProjectRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + case "PUT": + s.handleUpdateProjectRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET,PUT") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "cache/" + origElem := elem + if l := len("cache/"); len(elem) >= l && elem[0:l] == "cache/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'a': // Prefix: "ac" + origElem := elem + if l := len("ac"); len(elem) >= l && elem[0:l] == "ac" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "POST": + s.handleUploadCacheActionItemRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "hash" + // Leaf parameter + args[2] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleGetCacheActionItemRequest([3]string{ + args[0], + args[1], + args[2], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + elem = origElem + } + + elem = origElem + case 'c': // Prefix: "clean" + origElem := elem + if l := len("clean"); len(elem) >= l && elem[0:l] == "clean" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "PUT": + s.handleCleanCacheRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "PUT") + } + + return + } + + elem = origElem + } + + elem = origElem + case 'p': // Prefix: "previews/" + origElem := elem + if l := len("previews/"); len(elem) >= l && elem[0:l] == "previews/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "complete" + origElem := elem + if l := len("complete"); len(elem) >= l && elem[0:l] == "complete" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleCompletePreviewsMultipartUploadRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + case 'g': // Prefix: "generate-url" + origElem := elem + if l := len("generate-url"); len(elem) >= l && elem[0:l] == "generate-url" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleGeneratePreviewsMultipartUploadURLRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + case 's': // Prefix: "start" + origElem := elem + if l := len("start"); len(elem) >= l && elem[0:l] == "start" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleStartPreviewsMultipartUploadRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + } + // Param: "preview_id" + // Leaf parameter + args[2] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handleDownloadPreviewRequest([3]string{ + args[0], + args[1], + args[2], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + elem = origElem + case 't': // Prefix: "tokens" + origElem := elem + if l := len("tokens"); len(elem) >= l && elem[0:l] == "tokens" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "GET": + s.handleListProjectTokensRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + case "POST": + s.handleCreateProjectTokenRequest([2]string{ + args[0], + args[1], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET,POST") + } + + return + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "id" + // Leaf parameter + args[2] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "DELETE": + s.handleRevokeProjectTokenRequest([3]string{ + args[0], + args[1], + args[2], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "DELETE") + } + + return + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + case 'r': // Prefix: "runs/" + origElem := elem + if l := len("runs/"); len(elem) >= l && elem[0:l] == "runs/" { + elem = elem[l:] + } else { + break + } + + // Param: "run_id" + // Match until "/" + idx := strings.IndexByte(elem, '/') + if idx < 0 { + idx = len(elem) + } + args[0] = elem[:idx] + elem = elem[idx:] + + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "complete" + origElem := elem + if l := len("complete"); len(elem) >= l && elem[0:l] == "complete" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch r.Method { + case "POST": + s.handleCompleteAnalyticsArtifactMultipartUploadRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + switch elem[0] { + case '_': // Prefix: "_artifacts_uploads" + origElem := elem + if l := len("_artifacts_uploads"); len(elem) >= l && elem[0:l] == "_artifacts_uploads" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "PUT": + s.handleCompleteAnalyticsArtifactsUploadsRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "PUT") + } + + return + } + + elem = origElem + } + + elem = origElem + case 'g': // Prefix: "generate-url" + origElem := elem + if l := len("generate-url"); len(elem) >= l && elem[0:l] == "generate-url" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleGenerateAnalyticsArtifactMultipartUploadURLRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + case 's': // Prefix: "start" + origElem := elem + if l := len("start"); len(elem) >= l && elem[0:l] == "start" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleStartAnalyticsArtifactMultipartUploadRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + } + s.notFound(w, r) +} + +// Route is route object. +type Route struct { + name string + summary string + operationID string + pathPattern string + count int + args [3]string +} + +// Name returns ogen operation name. +// +// It is guaranteed to be unique and not empty. +func (r Route) Name() string { + return r.name +} + +// Summary returns OpenAPI summary. +func (r Route) Summary() string { + return r.summary +} + +// OperationID returns OpenAPI operationId. +func (r Route) OperationID() string { + return r.operationID +} + +// PathPattern returns OpenAPI path. +func (r Route) PathPattern() string { + return r.pathPattern +} + +// Args returns parsed arguments. +func (r Route) Args() []string { + return r.args[:r.count] +} + +// FindRoute finds Route for given method and path. +// +// Note: this method does not unescape path or handle reserved characters in path properly. Use FindPath instead. +func (s *Server) FindRoute(method, path string) (Route, bool) { + return s.FindPath(method, &url.URL{Path: path}) +} + +// FindPath finds Route for given method and URL. +func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { + var ( + elem = u.Path + args = r.args + ) + if rawPath := u.RawPath; rawPath != "" { + if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { + elem = normalized + } + defer func() { + for i, arg := range r.args[:r.count] { + if unescaped, err := url.PathUnescape(arg); err == nil { + r.args[i] = unescaped + } + } + }() + } + + elem, ok := s.cutPrefix(elem) + if !ok { + return r, false + } + + // Static code generated router with unwrapped path search. + switch { + default: + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/api/" + origElem := elem + if l := len("/api/"); len(elem) >= l && elem[0:l] == "/api/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'a': // Prefix: "a" + origElem := elem + if l := len("a"); len(elem) >= l && elem[0:l] == "a" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'n': // Prefix: "nalytics" + origElem := elem + if l := len("nalytics"); len(elem) >= l && elem[0:l] == "nalytics" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "CreateCommandEvent" + r.summary = "Create a a new command analytics event" + r.operationID = "createCommandEvent" + r.pathPattern = "/api/analytics" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + elem = origElem + case 'u': // Prefix: "uth" + origElem := elem + if l := len("uth"); len(elem) >= l && elem[0:l] == "uth" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "POST": + r.name = "Authenticate" + r.summary = "Authenticate with email and password." + r.operationID = "authenticate" + r.pathPattern = "/api/auth" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'd': // Prefix: "device_code/" + origElem := elem + if l := len("device_code/"); len(elem) >= l && elem[0:l] == "device_code/" { + elem = elem[l:] + } else { + break + } + + // Param: "device_code" + // Leaf parameter + args[0] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = "GetDeviceCode" + r.summary = "Get a specific device code." + r.operationID = "getDeviceCode" + r.pathPattern = "/api/auth/device_code/{device_code}" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + elem = origElem + case 'r': // Prefix: "refresh_token" + origElem := elem + if l := len("refresh_token"); len(elem) >= l && elem[0:l] == "refresh_token" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "RefreshToken" + r.summary = "Request new tokens." + r.operationID = "refreshToken" + r.pathPattern = "/api/auth/refresh_token" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + case 'c': // Prefix: "cache" + origElem := elem + if l := len("cache"); len(elem) >= l && elem[0:l] == "cache" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "GET": + r.name = "DownloadCacheArtifact" + r.summary = "Downloads an artifact from the cache." + r.operationID = "downloadCacheArtifact" + r.pathPattern = "/api/cache" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'e': // Prefix: "exists" + origElem := elem + if l := len("exists"); len(elem) >= l && elem[0:l] == "exists" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = "CacheArtifactExists" + r.summary = "It checks if an artifact exists in the cache." + r.operationID = "cacheArtifactExists" + r.pathPattern = "/api/cache/exists" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + elem = origElem + case 'm': // Prefix: "multipart/" + origElem := elem + if l := len("multipart/"); len(elem) >= l && elem[0:l] == "multipart/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "complete" + origElem := elem + if l := len("complete"); len(elem) >= l && elem[0:l] == "complete" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "CompleteCacheArtifactMultipartUpload" + r.summary = "It completes a multi-part upload." + r.operationID = "completeCacheArtifactMultipartUpload" + r.pathPattern = "/api/cache/multipart/complete" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + elem = origElem + case 'g': // Prefix: "generate-url" + origElem := elem + if l := len("generate-url"); len(elem) >= l && elem[0:l] == "generate-url" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "GenerateCacheArtifactMultipartUploadURL" + r.summary = "It generates a signed URL for uploading a part." + r.operationID = "generateCacheArtifactMultipartUploadURL" + r.pathPattern = "/api/cache/multipart/generate-url" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + elem = origElem + case 's': // Prefix: "start" + origElem := elem + if l := len("start"); len(elem) >= l && elem[0:l] == "start" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "StartCacheArtifactMultipartUpload" + r.summary = "It initiates a multipart upload in the cache." + r.operationID = "startCacheArtifactMultipartUpload" + r.pathPattern = "/api/cache/multipart/start" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + case 'o': // Prefix: "organizations" + origElem := elem + if l := len("organizations"); len(elem) >= l && elem[0:l] == "organizations" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "GET": + r.name = "ListOrganizations" + r.summary = "Lists the organizations" + r.operationID = "listOrganizations" + r.pathPattern = "/api/organizations" + r.args = args + r.count = 0 + return r, true + case "POST": + r.name = "CreateOrganization" + r.summary = "Creates an organization" + r.operationID = "createOrganization" + r.pathPattern = "/api/organizations" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "organization_name" + // Match until "/" + idx := strings.IndexByte(elem, '/') + if idx < 0 { + idx = len(elem) + } + args[0] = elem[:idx] + elem = elem[idx:] + + if len(elem) == 0 { + switch method { + case "DELETE": + r.name = "DeleteOrganization" + r.summary = "Deletes an organization" + r.operationID = "deleteOrganization" + r.pathPattern = "/api/organizations/{organization_name}" + r.args = args + r.count = 1 + return r, true + case "GET": + r.name = "ShowOrganization" + r.summary = "Shows an organization" + r.operationID = "showOrganization" + r.pathPattern = "/api/organizations/{organization_name}" + r.args = args + r.count = 1 + return r, true + case "PATCH": + r.name = "UpdateOrganization2" + r.summary = "Updates an organization" + r.operationID = "updateOrganization (2)" + r.pathPattern = "/api/organizations/{organization_name}" + r.args = args + r.count = 1 + return r, true + case "PUT": + r.name = "UpdateOrganization" + r.summary = "Updates an organization" + r.operationID = "updateOrganization" + r.pathPattern = "/api/organizations/{organization_name}" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'i': // Prefix: "invitations" + origElem := elem + if l := len("invitations"); len(elem) >= l && elem[0:l] == "invitations" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "CreateInvitation" + r.summary = "Creates an invitation" + r.operationID = "createInvitation" + r.pathPattern = "/api/organizations/{organization_name}/invitations" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + elem = origElem + case 'm': // Prefix: "members/" + origElem := elem + if l := len("members/"); len(elem) >= l && elem[0:l] == "members/" { + elem = elem[l:] + } else { + break + } + + // Param: "user_name" + // Leaf parameter + args[1] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch method { + case "PUT": + r.name = "UpdateOrganizationMember" + r.summary = "Updates a member in an organization" + r.operationID = "updateOrganizationMember" + r.pathPattern = "/api/organizations/{organization_name}/members/{user_name}" + r.args = args + r.count = 2 + return r, true + default: + return + } + } + + elem = origElem + case 'u': // Prefix: "usage" + origElem := elem + if l := len("usage"); len(elem) >= l && elem[0:l] == "usage" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = "ShowOrganizationUsage" + r.summary = "Shows the usage of an organization" + r.operationID = "showOrganizationUsage" + r.pathPattern = "/api/organizations/{organization_name}/usage" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + case 'p': // Prefix: "projects" + origElem := elem + if l := len("projects"); len(elem) >= l && elem[0:l] == "projects" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "GET": + r.name = "ListProjects" + r.summary = "List projects the authenticated user has access to." + r.operationID = "listProjects" + r.pathPattern = "/api/projects" + r.args = args + r.count = 0 + return r, true + case "POST": + r.name = "CreateProject" + r.summary = "Create a new project." + r.operationID = "createProject" + r.pathPattern = "/api/projects" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "account_handle" + // Match until "/" + idx := strings.IndexByte(elem, '/') + if idx < 0 { + idx = len(elem) + } + args[0] = elem[:idx] + elem = elem[idx:] + + if len(elem) == 0 { + switch method { + case "DELETE": + r.name = "DeleteProject" + r.summary = "Deletes a project with a given id." + r.operationID = "deleteProject" + r.pathPattern = "/api/projects/{id}" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "project_handle" + // Match until "/" + idx := strings.IndexByte(elem, '/') + if idx < 0 { + idx = len(elem) + } + args[1] = elem[:idx] + elem = elem[idx:] + + if len(elem) == 0 { + switch method { + case "GET": + r.name = "ShowProject" + r.summary = "Returns a project based on the handle." + r.operationID = "showProject" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}" + r.args = args + r.count = 2 + return r, true + case "PUT": + r.name = "UpdateProject" + r.summary = "Updates a project" + r.operationID = "updateProject" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}" + r.args = args + r.count = 2 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "cache/" + origElem := elem + if l := len("cache/"); len(elem) >= l && elem[0:l] == "cache/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'a': // Prefix: "ac" + origElem := elem + if l := len("ac"); len(elem) >= l && elem[0:l] == "ac" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "POST": + r.name = "UploadCacheActionItem" + r.summary = "It uploads a given cache action item." + r.operationID = "uploadCacheActionItem" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/cache/ac" + r.args = args + r.count = 2 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "hash" + // Leaf parameter + args[2] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = "GetCacheActionItem" + r.summary = "Get a cache action item." + r.operationID = "getCacheActionItem" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/cache/ac/{hash}" + r.args = args + r.count = 3 + return r, true + default: + return + } + } + + elem = origElem + } + + elem = origElem + case 'c': // Prefix: "clean" + origElem := elem + if l := len("clean"); len(elem) >= l && elem[0:l] == "clean" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "PUT": + r.name = "CleanCache" + r.summary = "Cleans cache for a given project" + r.operationID = "cleanCache" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/cache/clean" + r.args = args + r.count = 2 + return r, true + default: + return + } + } + + elem = origElem + } + + elem = origElem + case 'p': // Prefix: "previews/" + origElem := elem + if l := len("previews/"); len(elem) >= l && elem[0:l] == "previews/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "complete" + origElem := elem + if l := len("complete"); len(elem) >= l && elem[0:l] == "complete" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "CompletePreviewsMultipartUpload" + r.summary = "It completes a multi-part upload." + r.operationID = "completePreviewsMultipartUpload" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/previews/complete" + r.args = args + r.count = 2 + return r, true + default: + return + } + } + + elem = origElem + case 'g': // Prefix: "generate-url" + origElem := elem + if l := len("generate-url"); len(elem) >= l && elem[0:l] == "generate-url" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "GeneratePreviewsMultipartUploadURL" + r.summary = "It generates a signed URL for uploading a part." + r.operationID = "generatePreviewsMultipartUploadURL" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/previews/generate-url" + r.args = args + r.count = 2 + return r, true + default: + return + } + } + + elem = origElem + case 's': // Prefix: "start" + origElem := elem + if l := len("start"); len(elem) >= l && elem[0:l] == "start" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "StartPreviewsMultipartUpload" + r.summary = "It initiates a multipart upload for a preview artifact." + r.operationID = "startPreviewsMultipartUpload" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/previews/start" + r.args = args + r.count = 2 + return r, true + default: + return + } + } + + elem = origElem + } + // Param: "preview_id" + // Leaf parameter + args[2] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch method { + case "GET": + r.name = "DownloadPreview" + r.summary = "Downloads a preview." + r.operationID = "downloadPreview" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/previews/{preview_id}" + r.args = args + r.count = 3 + return r, true + default: + return + } + } + + elem = origElem + case 't': // Prefix: "tokens" + origElem := elem + if l := len("tokens"); len(elem) >= l && elem[0:l] == "tokens" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "GET": + r.name = "ListProjectTokens" + r.summary = "List all project tokens." + r.operationID = "listProjectTokens" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/tokens" + r.args = args + r.count = 2 + return r, true + case "POST": + r.name = "CreateProjectToken" + r.summary = "Create a new project token." + r.operationID = "createProjectToken" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/tokens" + r.args = args + r.count = 2 + return r, true + default: + return + } + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + // Param: "id" + // Leaf parameter + args[2] = elem + elem = "" + + if len(elem) == 0 { + // Leaf node. + switch method { + case "DELETE": + r.name = "RevokeProjectToken" + r.summary = "Revokes a project token." + r.operationID = "revokeProjectToken" + r.pathPattern = "/api/projects/{account_handle}/{project_handle}/tokens/{id}" + r.args = args + r.count = 3 + return r, true + default: + return + } + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + case 'r': // Prefix: "runs/" + origElem := elem + if l := len("runs/"); len(elem) >= l && elem[0:l] == "runs/" { + elem = elem[l:] + } else { + break + } + + // Param: "run_id" + // Match until "/" + idx := strings.IndexByte(elem, '/') + if idx < 0 { + idx = len(elem) + } + args[0] = elem[:idx] + elem = elem[idx:] + + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/" + origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case 'c': // Prefix: "complete" + origElem := elem + if l := len("complete"); len(elem) >= l && elem[0:l] == "complete" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "POST": + r.name = "CompleteAnalyticsArtifactMultipartUpload" + r.summary = "It completes a multi-part upload." + r.operationID = "completeAnalyticsArtifactMultipartUpload" + r.pathPattern = "/api/runs/{run_id}/complete" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + switch elem[0] { + case '_': // Prefix: "_artifacts_uploads" + origElem := elem + if l := len("_artifacts_uploads"); len(elem) >= l && elem[0:l] == "_artifacts_uploads" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "PUT": + r.name = "CompleteAnalyticsArtifactsUploads" + r.summary = "Completes artifacts uploads for a given command event" + r.operationID = "completeAnalyticsArtifactsUploads" + r.pathPattern = "/api/runs/{run_id}/complete_artifacts_uploads" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + elem = origElem + } + + elem = origElem + case 'g': // Prefix: "generate-url" + origElem := elem + if l := len("generate-url"); len(elem) >= l && elem[0:l] == "generate-url" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "GenerateAnalyticsArtifactMultipartUploadURL" + r.summary = "It generates a signed URL for uploading a part." + r.operationID = "generateAnalyticsArtifactMultipartUploadURL" + r.pathPattern = "/api/runs/{run_id}/generate-url" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + elem = origElem + case 's': // Prefix: "start" + origElem := elem + if l := len("start"); len(elem) >= l && elem[0:l] == "start" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = "StartAnalyticsArtifactMultipartUpload" + r.summary = "It initiates a multipart upload for a command event artifact." + r.operationID = "startAnalyticsArtifactMultipartUpload" + r.pathPattern = "/api/runs/{run_id}/start" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + + elem = origElem + } + } + return r, false +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_schemas_gen.go b/internal/agent/http_cache/tuistcache/api/oas_schemas_gen.go new file mode 100644 index 00000000..f4a4b365 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_schemas_gen.go @@ -0,0 +1,4161 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "time" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" +) + +// The URL to download an artifact. +// Ref: #/components/schemas/ArtifactDownloadURL +type ArtifactDownloadURL struct { + // The UNIX timestamp when the URL expires. + ExpiresAt int `json:"expires_at"` + // The URL to download the artifact. + URL string `json:"url"` +} + +// GetExpiresAt returns the value of ExpiresAt. +func (s *ArtifactDownloadURL) GetExpiresAt() int { + return s.ExpiresAt +} + +// GetURL returns the value of URL. +func (s *ArtifactDownloadURL) GetURL() string { + return s.URL +} + +// SetExpiresAt sets the value of ExpiresAt. +func (s *ArtifactDownloadURL) SetExpiresAt(val int) { + s.ExpiresAt = val +} + +// SetURL sets the value of URL. +func (s *ArtifactDownloadURL) SetURL(val string) { + s.URL = val +} + +func (*ArtifactDownloadURL) downloadPreviewRes() {} + +type ArtifactMultipartUploadPart jx.Raw + +// It represents a part that has been uploaded using multipart uploads. The part is identified by its +// number and the etag. +// Ref: #/components/schemas/ArtifactMultipartUploadParts +type ArtifactMultipartUploadParts struct { + Parts []ArtifactMultipartUploadPartsPartsItem `json:"parts"` + // The upload ID. + UploadID string `json:"upload_id"` +} + +// GetParts returns the value of Parts. +func (s *ArtifactMultipartUploadParts) GetParts() []ArtifactMultipartUploadPartsPartsItem { + return s.Parts +} + +// GetUploadID returns the value of UploadID. +func (s *ArtifactMultipartUploadParts) GetUploadID() string { + return s.UploadID +} + +// SetParts sets the value of Parts. +func (s *ArtifactMultipartUploadParts) SetParts(val []ArtifactMultipartUploadPartsPartsItem) { + s.Parts = val +} + +// SetUploadID sets the value of UploadID. +func (s *ArtifactMultipartUploadParts) SetUploadID(val string) { + s.UploadID = val +} + +type ArtifactMultipartUploadPartsPartsItem struct { + // The ETag of the part. + Etag string `json:"etag"` + // The part number. + PartNumber int `json:"part_number"` +} + +// GetEtag returns the value of Etag. +func (s *ArtifactMultipartUploadPartsPartsItem) GetEtag() string { + return s.Etag +} + +// GetPartNumber returns the value of PartNumber. +func (s *ArtifactMultipartUploadPartsPartsItem) GetPartNumber() int { + return s.PartNumber +} + +// SetEtag sets the value of Etag. +func (s *ArtifactMultipartUploadPartsPartsItem) SetEtag(val string) { + s.Etag = val +} + +// SetPartNumber sets the value of PartNumber. +func (s *ArtifactMultipartUploadPartsPartsItem) SetPartNumber(val int) { + s.PartNumber = val +} + +// The URL to upload a multipart part. +// Ref: #/components/schemas/ArtifactMultipartUploadURL +type ArtifactMultipartUploadURL struct { + Data ArtifactMultipartUploadURLData `json:"data"` + Status ArtifactMultipartUploadURLStatus `json:"status"` +} + +// GetData returns the value of Data. +func (s *ArtifactMultipartUploadURL) GetData() ArtifactMultipartUploadURLData { + return s.Data +} + +// GetStatus returns the value of Status. +func (s *ArtifactMultipartUploadURL) GetStatus() ArtifactMultipartUploadURLStatus { + return s.Status +} + +// SetData sets the value of Data. +func (s *ArtifactMultipartUploadURL) SetData(val ArtifactMultipartUploadURLData) { + s.Data = val +} + +// SetStatus sets the value of Status. +func (s *ArtifactMultipartUploadURL) SetStatus(val ArtifactMultipartUploadURLStatus) { + s.Status = val +} + +func (*ArtifactMultipartUploadURL) generateAnalyticsArtifactMultipartUploadURLRes() {} +func (*ArtifactMultipartUploadURL) generateCacheArtifactMultipartUploadURLRes() {} +func (*ArtifactMultipartUploadURL) generatePreviewsMultipartUploadURLRes() {} + +type ArtifactMultipartUploadURLData struct { + // The URL to upload the part. + URL string `json:"url"` +} + +// GetURL returns the value of URL. +func (s *ArtifactMultipartUploadURLData) GetURL() string { + return s.URL +} + +// SetURL sets the value of URL. +func (s *ArtifactMultipartUploadURLData) SetURL(val string) { + s.URL = val +} + +type ArtifactMultipartUploadURLStatus string + +const ( + ArtifactMultipartUploadURLStatusSuccess ArtifactMultipartUploadURLStatus = "success" +) + +// AllValues returns all ArtifactMultipartUploadURLStatus values. +func (ArtifactMultipartUploadURLStatus) AllValues() []ArtifactMultipartUploadURLStatus { + return []ArtifactMultipartUploadURLStatus{ + ArtifactMultipartUploadURLStatusSuccess, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s ArtifactMultipartUploadURLStatus) MarshalText() ([]byte, error) { + switch s { + case ArtifactMultipartUploadURLStatusSuccess: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *ArtifactMultipartUploadURLStatus) UnmarshalText(data []byte) error { + switch ArtifactMultipartUploadURLStatus(data) { + case ArtifactMultipartUploadURLStatusSuccess: + *s = ArtifactMultipartUploadURLStatusSuccess + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +// The upload has been initiated and a ID is returned to upload the various parts using multi-part +// uploads. +// Ref: #/components/schemas/ArtifactUploadID +type ArtifactUploadID struct { + // Data that contains ID that's associated with the multipart upload to use when uploading parts. + Data ArtifactUploadIDData `json:"data"` + Status ArtifactUploadIDStatus `json:"status"` +} + +// GetData returns the value of Data. +func (s *ArtifactUploadID) GetData() ArtifactUploadIDData { + return s.Data +} + +// GetStatus returns the value of Status. +func (s *ArtifactUploadID) GetStatus() ArtifactUploadIDStatus { + return s.Status +} + +// SetData sets the value of Data. +func (s *ArtifactUploadID) SetData(val ArtifactUploadIDData) { + s.Data = val +} + +// SetStatus sets the value of Status. +func (s *ArtifactUploadID) SetStatus(val ArtifactUploadIDStatus) { + s.Status = val +} + +func (*ArtifactUploadID) startAnalyticsArtifactMultipartUploadRes() {} +func (*ArtifactUploadID) startCacheArtifactMultipartUploadRes() {} + +// Data that contains ID that's associated with the multipart upload to use when uploading parts. +type ArtifactUploadIDData struct { + // The upload ID. + UploadID string `json:"upload_id"` +} + +// GetUploadID returns the value of UploadID. +func (s *ArtifactUploadIDData) GetUploadID() string { + return s.UploadID +} + +// SetUploadID sets the value of UploadID. +func (s *ArtifactUploadIDData) SetUploadID(val string) { + s.UploadID = val +} + +type ArtifactUploadIDStatus string + +const ( + ArtifactUploadIDStatusSuccess ArtifactUploadIDStatus = "success" +) + +// AllValues returns all ArtifactUploadIDStatus values. +func (ArtifactUploadIDStatus) AllValues() []ArtifactUploadIDStatus { + return []ArtifactUploadIDStatus{ + ArtifactUploadIDStatusSuccess, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s ArtifactUploadIDStatus) MarshalText() ([]byte, error) { + switch s { + case ArtifactUploadIDStatusSuccess: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *ArtifactUploadIDStatus) UnmarshalText(data []byte) error { + switch ArtifactUploadIDStatus(data) { + case ArtifactUploadIDStatusSuccess: + *s = ArtifactUploadIDStatusSuccess + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type AuthenticateReq struct { + // The email to authenticate with. + Email string `json:"email"` + // The password to authenticate with. + Password string `json:"password"` +} + +// GetEmail returns the value of Email. +func (s *AuthenticateReq) GetEmail() string { + return s.Email +} + +// GetPassword returns the value of Password. +func (s *AuthenticateReq) GetPassword() string { + return s.Password +} + +// SetEmail sets the value of Email. +func (s *AuthenticateReq) SetEmail(val string) { + s.Email = val +} + +// SetPassword sets the value of Password. +func (s *AuthenticateReq) SetPassword(val string) { + s.Password = val +} + +// A pair of access token to authenticate requests and refresh token to generate new access tokens +// when they expire. +// Ref: #/components/schemas/AuthenticationTokens +type AuthenticationTokens struct { + // API access token. + AccessToken string `json:"access_token"` + // A token to generate new API access tokens when they expire. + RefreshToken string `json:"refresh_token"` +} + +// GetAccessToken returns the value of AccessToken. +func (s *AuthenticationTokens) GetAccessToken() string { + return s.AccessToken +} + +// GetRefreshToken returns the value of RefreshToken. +func (s *AuthenticationTokens) GetRefreshToken() string { + return s.RefreshToken +} + +// SetAccessToken sets the value of AccessToken. +func (s *AuthenticationTokens) SetAccessToken(val string) { + s.AccessToken = val +} + +// SetRefreshToken sets the value of RefreshToken. +func (s *AuthenticationTokens) SetRefreshToken(val string) { + s.RefreshToken = val +} + +func (*AuthenticationTokens) authenticateRes() {} +func (*AuthenticationTokens) refreshTokenRes() {} + +type Authorization struct { + Token string +} + +// GetToken returns the value of Token. +func (s *Authorization) GetToken() string { + return s.Token +} + +// SetToken sets the value of Token. +func (s *Authorization) SetToken(val string) { + s.Token = val +} + +// Represents an action item stored in the cache. +// Ref: #/components/schemas/CacheActionItem +type CacheActionItem struct { + // The hash that uniquely identifies the artifact in the cache. + Hash string `json:"hash"` +} + +// GetHash returns the value of Hash. +func (s *CacheActionItem) GetHash() string { + return s.Hash +} + +// SetHash sets the value of Hash. +func (s *CacheActionItem) SetHash(val string) { + s.Hash = val +} + +func (*CacheActionItem) getCacheActionItemRes() {} + +// The URL to download the artifact from the cache. +// Ref: #/components/schemas/CacheArtifactDownloadURL +type CacheArtifactDownloadURL struct { + Data CacheArtifactDownloadURLData `json:"data"` + Status CacheArtifactDownloadURLStatus `json:"status"` +} + +// GetData returns the value of Data. +func (s *CacheArtifactDownloadURL) GetData() CacheArtifactDownloadURLData { + return s.Data +} + +// GetStatus returns the value of Status. +func (s *CacheArtifactDownloadURL) GetStatus() CacheArtifactDownloadURLStatus { + return s.Status +} + +// SetData sets the value of Data. +func (s *CacheArtifactDownloadURL) SetData(val CacheArtifactDownloadURLData) { + s.Data = val +} + +// SetStatus sets the value of Status. +func (s *CacheArtifactDownloadURL) SetStatus(val CacheArtifactDownloadURLStatus) { + s.Status = val +} + +func (*CacheArtifactDownloadURL) downloadCacheArtifactRes() {} + +type CacheArtifactDownloadURLData struct { + // The UNIX timestamp when the URL expires. + ExpiresAt int `json:"expires_at"` + // The URL to download the artifact from the cache. + URL string `json:"url"` +} + +// GetExpiresAt returns the value of ExpiresAt. +func (s *CacheArtifactDownloadURLData) GetExpiresAt() int { + return s.ExpiresAt +} + +// GetURL returns the value of URL. +func (s *CacheArtifactDownloadURLData) GetURL() string { + return s.URL +} + +// SetExpiresAt sets the value of ExpiresAt. +func (s *CacheArtifactDownloadURLData) SetExpiresAt(val int) { + s.ExpiresAt = val +} + +// SetURL sets the value of URL. +func (s *CacheArtifactDownloadURLData) SetURL(val string) { + s.URL = val +} + +type CacheArtifactDownloadURLStatus string + +const ( + CacheArtifactDownloadURLStatusSuccess CacheArtifactDownloadURLStatus = "success" +) + +// AllValues returns all CacheArtifactDownloadURLStatus values. +func (CacheArtifactDownloadURLStatus) AllValues() []CacheArtifactDownloadURLStatus { + return []CacheArtifactDownloadURLStatus{ + CacheArtifactDownloadURLStatusSuccess, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s CacheArtifactDownloadURLStatus) MarshalText() ([]byte, error) { + switch s { + case CacheArtifactDownloadURLStatusSuccess: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *CacheArtifactDownloadURLStatus) UnmarshalText(data []byte) error { + switch CacheArtifactDownloadURLStatus(data) { + case CacheArtifactDownloadURLStatusSuccess: + *s = CacheArtifactDownloadURLStatusSuccess + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type CacheArtifactExistsForbidden Error + +func (*CacheArtifactExistsForbidden) cacheArtifactExistsRes() {} + +type CacheArtifactExistsNotFound struct { + Error []CacheArtifactExistsNotFoundErrorItem `json:"error"` +} + +// GetError returns the value of Error. +func (s *CacheArtifactExistsNotFound) GetError() []CacheArtifactExistsNotFoundErrorItem { + return s.Error +} + +// SetError sets the value of Error. +func (s *CacheArtifactExistsNotFound) SetError(val []CacheArtifactExistsNotFoundErrorItem) { + s.Error = val +} + +func (*CacheArtifactExistsNotFound) cacheArtifactExistsRes() {} + +type CacheArtifactExistsNotFoundErrorItem struct { + Code OptString `json:"code"` + Message OptString `json:"message"` +} + +// GetCode returns the value of Code. +func (s *CacheArtifactExistsNotFoundErrorItem) GetCode() OptString { + return s.Code +} + +// GetMessage returns the value of Message. +func (s *CacheArtifactExistsNotFoundErrorItem) GetMessage() OptString { + return s.Message +} + +// SetCode sets the value of Code. +func (s *CacheArtifactExistsNotFoundErrorItem) SetCode(val OptString) { + s.Code = val +} + +// SetMessage sets the value of Message. +func (s *CacheArtifactExistsNotFoundErrorItem) SetMessage(val OptString) { + s.Message = val +} + +// The artifact exists in the cache and can be downloaded. +type CacheArtifactExistsOK struct { + Data *CacheArtifactExistsOKData `json:"data"` + Status OptCacheArtifactExistsOKStatus `json:"status"` +} + +// GetData returns the value of Data. +func (s *CacheArtifactExistsOK) GetData() *CacheArtifactExistsOKData { + return s.Data +} + +// GetStatus returns the value of Status. +func (s *CacheArtifactExistsOK) GetStatus() OptCacheArtifactExistsOKStatus { + return s.Status +} + +// SetData sets the value of Data. +func (s *CacheArtifactExistsOK) SetData(val *CacheArtifactExistsOKData) { + s.Data = val +} + +// SetStatus sets the value of Status. +func (s *CacheArtifactExistsOK) SetStatus(val OptCacheArtifactExistsOKStatus) { + s.Status = val +} + +func (*CacheArtifactExistsOK) cacheArtifactExistsRes() {} + +type CacheArtifactExistsOKData struct{} + +type CacheArtifactExistsOKStatus string + +const ( + CacheArtifactExistsOKStatusSuccess CacheArtifactExistsOKStatus = "success" +) + +// AllValues returns all CacheArtifactExistsOKStatus values. +func (CacheArtifactExistsOKStatus) AllValues() []CacheArtifactExistsOKStatus { + return []CacheArtifactExistsOKStatus{ + CacheArtifactExistsOKStatusSuccess, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s CacheArtifactExistsOKStatus) MarshalText() ([]byte, error) { + switch s { + case CacheArtifactExistsOKStatusSuccess: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *CacheArtifactExistsOKStatus) UnmarshalText(data []byte) error { + switch CacheArtifactExistsOKStatus(data) { + case CacheArtifactExistsOKStatusSuccess: + *s = CacheArtifactExistsOKStatusSuccess + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type CacheArtifactExistsPaymentRequired Error + +func (*CacheArtifactExistsPaymentRequired) cacheArtifactExistsRes() {} + +type CacheArtifactExistsUnauthorized Error + +func (*CacheArtifactExistsUnauthorized) cacheArtifactExistsRes() {} + +// The category of the cache. +// Ref: #/components/schemas/CacheCategory +type CacheCategory string + +const ( + CacheCategoryTests CacheCategory = "tests" + CacheCategoryBuilds CacheCategory = "builds" +) + +// AllValues returns all CacheCategory values. +func (CacheCategory) AllValues() []CacheCategory { + return []CacheCategory{ + CacheCategoryTests, + CacheCategoryBuilds, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s CacheCategory) MarshalText() ([]byte, error) { + switch s { + case CacheCategoryTests: + return []byte(s), nil + case CacheCategoryBuilds: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *CacheCategory) UnmarshalText(data []byte) error { + switch CacheCategory(data) { + case CacheCategoryTests: + *s = CacheCategoryTests + return nil + case CacheCategoryBuilds: + *s = CacheCategoryBuilds + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type CleanCacheForbidden Error + +func (*CleanCacheForbidden) cleanCacheRes() {} + +// CleanCacheNoContent is response for CleanCache operation. +type CleanCacheNoContent struct{} + +func (*CleanCacheNoContent) cleanCacheRes() {} + +type CleanCacheNotFound Error + +func (*CleanCacheNotFound) cleanCacheRes() {} + +type CleanCacheUnauthorized Error + +func (*CleanCacheUnauthorized) cleanCacheRes() {} + +// The schema for the command analytics event. +// Ref: #/components/schemas/CommandEvent +type CommandEvent struct { + // ID of the command event. + ID float64 `json:"id"` + // Name of the command. + Name string `json:"name"` + // URL to the command event. + URL string `json:"url"` +} + +// GetID returns the value of ID. +func (s *CommandEvent) GetID() float64 { + return s.ID +} + +// GetName returns the value of Name. +func (s *CommandEvent) GetName() string { + return s.Name +} + +// GetURL returns the value of URL. +func (s *CommandEvent) GetURL() string { + return s.URL +} + +// SetID sets the value of ID. +func (s *CommandEvent) SetID(val float64) { + s.ID = val +} + +// SetName sets the value of Name. +func (s *CommandEvent) SetName(val string) { + s.Name = val +} + +// SetURL sets the value of URL. +func (s *CommandEvent) SetURL(val string) { + s.URL = val +} + +func (*CommandEvent) createCommandEventRes() {} + +type CommandEventArtifact jx.Raw + +type CompleteAnalyticsArtifactMultipartUploadForbidden Error + +func (*CompleteAnalyticsArtifactMultipartUploadForbidden) completeAnalyticsArtifactMultipartUploadRes() { +} + +type CompleteAnalyticsArtifactMultipartUploadInternalServerError Error + +func (*CompleteAnalyticsArtifactMultipartUploadInternalServerError) completeAnalyticsArtifactMultipartUploadRes() { +} + +// CompleteAnalyticsArtifactMultipartUploadNoContent is response for CompleteAnalyticsArtifactMultipartUpload operation. +type CompleteAnalyticsArtifactMultipartUploadNoContent struct{} + +func (*CompleteAnalyticsArtifactMultipartUploadNoContent) completeAnalyticsArtifactMultipartUploadRes() { +} + +type CompleteAnalyticsArtifactMultipartUploadNotFound Error + +func (*CompleteAnalyticsArtifactMultipartUploadNotFound) completeAnalyticsArtifactMultipartUploadRes() { +} + +type CompleteAnalyticsArtifactMultipartUploadReq struct { + CommandEventArtifact CommandEventArtifact `json:"command_event_artifact"` + MultipartUploadParts ArtifactMultipartUploadParts `json:"multipart_upload_parts"` +} + +// GetCommandEventArtifact returns the value of CommandEventArtifact. +func (s *CompleteAnalyticsArtifactMultipartUploadReq) GetCommandEventArtifact() CommandEventArtifact { + return s.CommandEventArtifact +} + +// GetMultipartUploadParts returns the value of MultipartUploadParts. +func (s *CompleteAnalyticsArtifactMultipartUploadReq) GetMultipartUploadParts() ArtifactMultipartUploadParts { + return s.MultipartUploadParts +} + +// SetCommandEventArtifact sets the value of CommandEventArtifact. +func (s *CompleteAnalyticsArtifactMultipartUploadReq) SetCommandEventArtifact(val CommandEventArtifact) { + s.CommandEventArtifact = val +} + +// SetMultipartUploadParts sets the value of MultipartUploadParts. +func (s *CompleteAnalyticsArtifactMultipartUploadReq) SetMultipartUploadParts(val ArtifactMultipartUploadParts) { + s.MultipartUploadParts = val +} + +type CompleteAnalyticsArtifactMultipartUploadUnauthorized Error + +func (*CompleteAnalyticsArtifactMultipartUploadUnauthorized) completeAnalyticsArtifactMultipartUploadRes() { +} + +type CompleteAnalyticsArtifactsUploadsForbidden Error + +func (*CompleteAnalyticsArtifactsUploadsForbidden) completeAnalyticsArtifactsUploadsRes() {} + +// CompleteAnalyticsArtifactsUploadsNoContent is response for CompleteAnalyticsArtifactsUploads operation. +type CompleteAnalyticsArtifactsUploadsNoContent struct{} + +func (*CompleteAnalyticsArtifactsUploadsNoContent) completeAnalyticsArtifactsUploadsRes() {} + +type CompleteAnalyticsArtifactsUploadsNotFound Error + +func (*CompleteAnalyticsArtifactsUploadsNotFound) completeAnalyticsArtifactsUploadsRes() {} + +type CompleteAnalyticsArtifactsUploadsReq struct { + // A list of modules with their metadata. + Modules []Module `json:"modules"` +} + +// GetModules returns the value of Modules. +func (s *CompleteAnalyticsArtifactsUploadsReq) GetModules() []Module { + return s.Modules +} + +// SetModules sets the value of Modules. +func (s *CompleteAnalyticsArtifactsUploadsReq) SetModules(val []Module) { + s.Modules = val +} + +type CompleteAnalyticsArtifactsUploadsUnauthorized Error + +func (*CompleteAnalyticsArtifactsUploadsUnauthorized) completeAnalyticsArtifactsUploadsRes() {} + +type CompleteCacheArtifactMultipartUploadForbidden Error + +func (*CompleteCacheArtifactMultipartUploadForbidden) completeCacheArtifactMultipartUploadRes() {} + +type CompleteCacheArtifactMultipartUploadNotFound Error + +func (*CompleteCacheArtifactMultipartUploadNotFound) completeCacheArtifactMultipartUploadRes() {} + +// This response confirms that the upload has been completed successfully. The cache will now be able +// to serve the artifact. +type CompleteCacheArtifactMultipartUploadOK struct { + Data *CompleteCacheArtifactMultipartUploadOKData `json:"data"` + Status OptCompleteCacheArtifactMultipartUploadOKStatus `json:"status"` +} + +// GetData returns the value of Data. +func (s *CompleteCacheArtifactMultipartUploadOK) GetData() *CompleteCacheArtifactMultipartUploadOKData { + return s.Data +} + +// GetStatus returns the value of Status. +func (s *CompleteCacheArtifactMultipartUploadOK) GetStatus() OptCompleteCacheArtifactMultipartUploadOKStatus { + return s.Status +} + +// SetData sets the value of Data. +func (s *CompleteCacheArtifactMultipartUploadOK) SetData(val *CompleteCacheArtifactMultipartUploadOKData) { + s.Data = val +} + +// SetStatus sets the value of Status. +func (s *CompleteCacheArtifactMultipartUploadOK) SetStatus(val OptCompleteCacheArtifactMultipartUploadOKStatus) { + s.Status = val +} + +func (*CompleteCacheArtifactMultipartUploadOK) completeCacheArtifactMultipartUploadRes() {} + +type CompleteCacheArtifactMultipartUploadOKData struct{} + +type CompleteCacheArtifactMultipartUploadOKStatus string + +const ( + CompleteCacheArtifactMultipartUploadOKStatusSuccess CompleteCacheArtifactMultipartUploadOKStatus = "success" +) + +// AllValues returns all CompleteCacheArtifactMultipartUploadOKStatus values. +func (CompleteCacheArtifactMultipartUploadOKStatus) AllValues() []CompleteCacheArtifactMultipartUploadOKStatus { + return []CompleteCacheArtifactMultipartUploadOKStatus{ + CompleteCacheArtifactMultipartUploadOKStatusSuccess, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s CompleteCacheArtifactMultipartUploadOKStatus) MarshalText() ([]byte, error) { + switch s { + case CompleteCacheArtifactMultipartUploadOKStatusSuccess: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *CompleteCacheArtifactMultipartUploadOKStatus) UnmarshalText(data []byte) error { + switch CompleteCacheArtifactMultipartUploadOKStatus(data) { + case CompleteCacheArtifactMultipartUploadOKStatusSuccess: + *s = CompleteCacheArtifactMultipartUploadOKStatusSuccess + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type CompleteCacheArtifactMultipartUploadPaymentRequired Error + +func (*CompleteCacheArtifactMultipartUploadPaymentRequired) completeCacheArtifactMultipartUploadRes() { +} + +type CompleteCacheArtifactMultipartUploadReq struct { + Parts []CompleteCacheArtifactMultipartUploadReqPartsItem `json:"parts"` +} + +// GetParts returns the value of Parts. +func (s *CompleteCacheArtifactMultipartUploadReq) GetParts() []CompleteCacheArtifactMultipartUploadReqPartsItem { + return s.Parts +} + +// SetParts sets the value of Parts. +func (s *CompleteCacheArtifactMultipartUploadReq) SetParts(val []CompleteCacheArtifactMultipartUploadReqPartsItem) { + s.Parts = val +} + +type CompleteCacheArtifactMultipartUploadReqPartsItem struct { + // The ETag of the part. + Etag OptString `json:"etag"` + // The part number. + PartNumber OptInt `json:"part_number"` +} + +// GetEtag returns the value of Etag. +func (s *CompleteCacheArtifactMultipartUploadReqPartsItem) GetEtag() OptString { + return s.Etag +} + +// GetPartNumber returns the value of PartNumber. +func (s *CompleteCacheArtifactMultipartUploadReqPartsItem) GetPartNumber() OptInt { + return s.PartNumber +} + +// SetEtag sets the value of Etag. +func (s *CompleteCacheArtifactMultipartUploadReqPartsItem) SetEtag(val OptString) { + s.Etag = val +} + +// SetPartNumber sets the value of PartNumber. +func (s *CompleteCacheArtifactMultipartUploadReqPartsItem) SetPartNumber(val OptInt) { + s.PartNumber = val +} + +type CompleteCacheArtifactMultipartUploadUnauthorized Error + +func (*CompleteCacheArtifactMultipartUploadUnauthorized) completeCacheArtifactMultipartUploadRes() {} + +type CompletePreviewsMultipartUploadForbidden Error + +func (*CompletePreviewsMultipartUploadForbidden) completePreviewsMultipartUploadRes() {} + +type CompletePreviewsMultipartUploadNotFound Error + +func (*CompletePreviewsMultipartUploadNotFound) completePreviewsMultipartUploadRes() {} + +// The preview multipart upload has been completed. +type CompletePreviewsMultipartUploadOK struct { + // The URL to download the preview. + URL string `json:"url"` +} + +// GetURL returns the value of URL. +func (s *CompletePreviewsMultipartUploadOK) GetURL() string { + return s.URL +} + +// SetURL sets the value of URL. +func (s *CompletePreviewsMultipartUploadOK) SetURL(val string) { + s.URL = val +} + +func (*CompletePreviewsMultipartUploadOK) completePreviewsMultipartUploadRes() {} + +// The request body to complete the multipart upload of a preview. +type CompletePreviewsMultipartUploadReq struct { + MultipartUploadParts ArtifactMultipartUploadParts `json:"multipart_upload_parts"` + // The id of the preview. + PreviewID string `json:"preview_id"` +} + +// GetMultipartUploadParts returns the value of MultipartUploadParts. +func (s *CompletePreviewsMultipartUploadReq) GetMultipartUploadParts() ArtifactMultipartUploadParts { + return s.MultipartUploadParts +} + +// GetPreviewID returns the value of PreviewID. +func (s *CompletePreviewsMultipartUploadReq) GetPreviewID() string { + return s.PreviewID +} + +// SetMultipartUploadParts sets the value of MultipartUploadParts. +func (s *CompletePreviewsMultipartUploadReq) SetMultipartUploadParts(val ArtifactMultipartUploadParts) { + s.MultipartUploadParts = val +} + +// SetPreviewID sets the value of PreviewID. +func (s *CompletePreviewsMultipartUploadReq) SetPreviewID(val string) { + s.PreviewID = val +} + +type CompletePreviewsMultipartUploadUnauthorized Error + +func (*CompletePreviewsMultipartUploadUnauthorized) completePreviewsMultipartUploadRes() {} + +type Cookie struct { + APIKey string +} + +// GetAPIKey returns the value of APIKey. +func (s *Cookie) GetAPIKey() string { + return s.APIKey +} + +// SetAPIKey sets the value of APIKey. +func (s *Cookie) SetAPIKey(val string) { + s.APIKey = val +} + +type CreateCommandEventForbidden Error + +func (*CreateCommandEventForbidden) createCommandEventRes() {} + +type CreateCommandEventReq struct { + // The client id of the command. + ClientID string `json:"client_id"` + // The arguments of the command. + CommandArguments []string `json:"command_arguments"` + // The duration of the command. + Duration float64 `json:"duration"` + // The error message of the command. + ErrorMessage OptString `json:"error_message"` + // The commit SHA. + GitCommitSha OptString `json:"git_commit_sha"` + // The git ref. When on CI, the value can be equal to remote reference such as `refs/pull/1234/merge`. + GitRef OptString `json:"git_ref"` + // The git remote URL origin. + GitRemoteURLOrigin OptString `json:"git_remote_url_origin"` + // Whether the command was run in a CI environment. + IsCi bool `json:"is_ci"` + // The version of macOS that ran the command. + MacosVersion string `json:"macos_version"` + // The name of the command. + Name string `json:"name"` + // Extra parameters. + Params OptCreateCommandEventReqParams `json:"params"` + // The preview identifier. + PreviewID OptString `json:"preview_id"` + // The status of the command. + Status OptCreateCommandEventReqStatus `json:"status"` + // The subcommand of the command. + Subcommand OptString `json:"subcommand"` + // The version of Swift that ran the command. + SwiftVersion string `json:"swift_version"` + // The version of Tuist that ran the command. + TuistVersion string `json:"tuist_version"` +} + +// GetClientID returns the value of ClientID. +func (s *CreateCommandEventReq) GetClientID() string { + return s.ClientID +} + +// GetCommandArguments returns the value of CommandArguments. +func (s *CreateCommandEventReq) GetCommandArguments() []string { + return s.CommandArguments +} + +// GetDuration returns the value of Duration. +func (s *CreateCommandEventReq) GetDuration() float64 { + return s.Duration +} + +// GetErrorMessage returns the value of ErrorMessage. +func (s *CreateCommandEventReq) GetErrorMessage() OptString { + return s.ErrorMessage +} + +// GetGitCommitSha returns the value of GitCommitSha. +func (s *CreateCommandEventReq) GetGitCommitSha() OptString { + return s.GitCommitSha +} + +// GetGitRef returns the value of GitRef. +func (s *CreateCommandEventReq) GetGitRef() OptString { + return s.GitRef +} + +// GetGitRemoteURLOrigin returns the value of GitRemoteURLOrigin. +func (s *CreateCommandEventReq) GetGitRemoteURLOrigin() OptString { + return s.GitRemoteURLOrigin +} + +// GetIsCi returns the value of IsCi. +func (s *CreateCommandEventReq) GetIsCi() bool { + return s.IsCi +} + +// GetMacosVersion returns the value of MacosVersion. +func (s *CreateCommandEventReq) GetMacosVersion() string { + return s.MacosVersion +} + +// GetName returns the value of Name. +func (s *CreateCommandEventReq) GetName() string { + return s.Name +} + +// GetParams returns the value of Params. +func (s *CreateCommandEventReq) GetParams() OptCreateCommandEventReqParams { + return s.Params +} + +// GetPreviewID returns the value of PreviewID. +func (s *CreateCommandEventReq) GetPreviewID() OptString { + return s.PreviewID +} + +// GetStatus returns the value of Status. +func (s *CreateCommandEventReq) GetStatus() OptCreateCommandEventReqStatus { + return s.Status +} + +// GetSubcommand returns the value of Subcommand. +func (s *CreateCommandEventReq) GetSubcommand() OptString { + return s.Subcommand +} + +// GetSwiftVersion returns the value of SwiftVersion. +func (s *CreateCommandEventReq) GetSwiftVersion() string { + return s.SwiftVersion +} + +// GetTuistVersion returns the value of TuistVersion. +func (s *CreateCommandEventReq) GetTuistVersion() string { + return s.TuistVersion +} + +// SetClientID sets the value of ClientID. +func (s *CreateCommandEventReq) SetClientID(val string) { + s.ClientID = val +} + +// SetCommandArguments sets the value of CommandArguments. +func (s *CreateCommandEventReq) SetCommandArguments(val []string) { + s.CommandArguments = val +} + +// SetDuration sets the value of Duration. +func (s *CreateCommandEventReq) SetDuration(val float64) { + s.Duration = val +} + +// SetErrorMessage sets the value of ErrorMessage. +func (s *CreateCommandEventReq) SetErrorMessage(val OptString) { + s.ErrorMessage = val +} + +// SetGitCommitSha sets the value of GitCommitSha. +func (s *CreateCommandEventReq) SetGitCommitSha(val OptString) { + s.GitCommitSha = val +} + +// SetGitRef sets the value of GitRef. +func (s *CreateCommandEventReq) SetGitRef(val OptString) { + s.GitRef = val +} + +// SetGitRemoteURLOrigin sets the value of GitRemoteURLOrigin. +func (s *CreateCommandEventReq) SetGitRemoteURLOrigin(val OptString) { + s.GitRemoteURLOrigin = val +} + +// SetIsCi sets the value of IsCi. +func (s *CreateCommandEventReq) SetIsCi(val bool) { + s.IsCi = val +} + +// SetMacosVersion sets the value of MacosVersion. +func (s *CreateCommandEventReq) SetMacosVersion(val string) { + s.MacosVersion = val +} + +// SetName sets the value of Name. +func (s *CreateCommandEventReq) SetName(val string) { + s.Name = val +} + +// SetParams sets the value of Params. +func (s *CreateCommandEventReq) SetParams(val OptCreateCommandEventReqParams) { + s.Params = val +} + +// SetPreviewID sets the value of PreviewID. +func (s *CreateCommandEventReq) SetPreviewID(val OptString) { + s.PreviewID = val +} + +// SetStatus sets the value of Status. +func (s *CreateCommandEventReq) SetStatus(val OptCreateCommandEventReqStatus) { + s.Status = val +} + +// SetSubcommand sets the value of Subcommand. +func (s *CreateCommandEventReq) SetSubcommand(val OptString) { + s.Subcommand = val +} + +// SetSwiftVersion sets the value of SwiftVersion. +func (s *CreateCommandEventReq) SetSwiftVersion(val string) { + s.SwiftVersion = val +} + +// SetTuistVersion sets the value of TuistVersion. +func (s *CreateCommandEventReq) SetTuistVersion(val string) { + s.TuistVersion = val +} + +// Extra parameters. +type CreateCommandEventReqParams struct { + // A list of cacheable targets. + CacheableTargets []string `json:"cacheable_targets"` + // A list of local cache target hits. + LocalCacheTargetHits []string `json:"local_cache_target_hits"` + // A list of local targets whose tests were skipped. + LocalTestTargetHits []string `json:"local_test_target_hits"` + // A list of remote cache target hits. + RemoteCacheTargetHits []string `json:"remote_cache_target_hits"` + // A list of remote targets whose tests were skipped. + RemoteTestTargetHits []string `json:"remote_test_target_hits"` + // The list of targets that were tested. + TestTargets []string `json:"test_targets"` +} + +// GetCacheableTargets returns the value of CacheableTargets. +func (s *CreateCommandEventReqParams) GetCacheableTargets() []string { + return s.CacheableTargets +} + +// GetLocalCacheTargetHits returns the value of LocalCacheTargetHits. +func (s *CreateCommandEventReqParams) GetLocalCacheTargetHits() []string { + return s.LocalCacheTargetHits +} + +// GetLocalTestTargetHits returns the value of LocalTestTargetHits. +func (s *CreateCommandEventReqParams) GetLocalTestTargetHits() []string { + return s.LocalTestTargetHits +} + +// GetRemoteCacheTargetHits returns the value of RemoteCacheTargetHits. +func (s *CreateCommandEventReqParams) GetRemoteCacheTargetHits() []string { + return s.RemoteCacheTargetHits +} + +// GetRemoteTestTargetHits returns the value of RemoteTestTargetHits. +func (s *CreateCommandEventReqParams) GetRemoteTestTargetHits() []string { + return s.RemoteTestTargetHits +} + +// GetTestTargets returns the value of TestTargets. +func (s *CreateCommandEventReqParams) GetTestTargets() []string { + return s.TestTargets +} + +// SetCacheableTargets sets the value of CacheableTargets. +func (s *CreateCommandEventReqParams) SetCacheableTargets(val []string) { + s.CacheableTargets = val +} + +// SetLocalCacheTargetHits sets the value of LocalCacheTargetHits. +func (s *CreateCommandEventReqParams) SetLocalCacheTargetHits(val []string) { + s.LocalCacheTargetHits = val +} + +// SetLocalTestTargetHits sets the value of LocalTestTargetHits. +func (s *CreateCommandEventReqParams) SetLocalTestTargetHits(val []string) { + s.LocalTestTargetHits = val +} + +// SetRemoteCacheTargetHits sets the value of RemoteCacheTargetHits. +func (s *CreateCommandEventReqParams) SetRemoteCacheTargetHits(val []string) { + s.RemoteCacheTargetHits = val +} + +// SetRemoteTestTargetHits sets the value of RemoteTestTargetHits. +func (s *CreateCommandEventReqParams) SetRemoteTestTargetHits(val []string) { + s.RemoteTestTargetHits = val +} + +// SetTestTargets sets the value of TestTargets. +func (s *CreateCommandEventReqParams) SetTestTargets(val []string) { + s.TestTargets = val +} + +// The status of the command. +type CreateCommandEventReqStatus string + +const ( + CreateCommandEventReqStatusSuccess CreateCommandEventReqStatus = "success" + CreateCommandEventReqStatusFailure CreateCommandEventReqStatus = "failure" +) + +// AllValues returns all CreateCommandEventReqStatus values. +func (CreateCommandEventReqStatus) AllValues() []CreateCommandEventReqStatus { + return []CreateCommandEventReqStatus{ + CreateCommandEventReqStatusSuccess, + CreateCommandEventReqStatusFailure, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s CreateCommandEventReqStatus) MarshalText() ([]byte, error) { + switch s { + case CreateCommandEventReqStatusSuccess: + return []byte(s), nil + case CreateCommandEventReqStatusFailure: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *CreateCommandEventReqStatus) UnmarshalText(data []byte) error { + switch CreateCommandEventReqStatus(data) { + case CreateCommandEventReqStatusSuccess: + *s = CreateCommandEventReqStatusSuccess + return nil + case CreateCommandEventReqStatusFailure: + *s = CreateCommandEventReqStatusFailure + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type CreateCommandEventUnauthorized Error + +func (*CreateCommandEventUnauthorized) createCommandEventRes() {} + +type CreateInvitationBadRequest Error + +func (*CreateInvitationBadRequest) createInvitationRes() {} + +type CreateInvitationForbidden Error + +func (*CreateInvitationForbidden) createInvitationRes() {} + +type CreateInvitationNotFound Error + +func (*CreateInvitationNotFound) createInvitationRes() {} + +type CreateInvitationReq struct { + // The email of the invitee. + InviteeEmail string `json:"invitee_email"` +} + +// GetInviteeEmail returns the value of InviteeEmail. +func (s *CreateInvitationReq) GetInviteeEmail() string { + return s.InviteeEmail +} + +// SetInviteeEmail sets the value of InviteeEmail. +func (s *CreateInvitationReq) SetInviteeEmail(val string) { + s.InviteeEmail = val +} + +type CreateInvitationUnauthorized Error + +func (*CreateInvitationUnauthorized) createInvitationRes() {} + +type CreateOrganizationReq struct { + // The name of the organization that should be created. + Name string `json:"name"` +} + +// GetName returns the value of Name. +func (s *CreateOrganizationReq) GetName() string { + return s.Name +} + +// SetName sets the value of Name. +func (s *CreateOrganizationReq) SetName(val string) { + s.Name = val +} + +type CreateProjectBadRequest Error + +func (*CreateProjectBadRequest) createProjectRes() {} + +type CreateProjectForbidden Error + +func (*CreateProjectForbidden) createProjectRes() {} + +type CreateProjectReq struct { + // The full handle of the project that should be created. + FullHandle OptString `json:"full_handle"` + // The name of the project that should be created. + // + // Deprecated: schema marks this property as deprecated. + Name OptString `json:"name"` + // Organization to create the project with. If not specified, the project will be created with the + // current user's personal account. + // + // Deprecated: schema marks this property as deprecated. + Organization OptString `json:"organization"` +} + +// GetFullHandle returns the value of FullHandle. +func (s *CreateProjectReq) GetFullHandle() OptString { + return s.FullHandle +} + +// GetName returns the value of Name. +func (s *CreateProjectReq) GetName() OptString { + return s.Name +} + +// GetOrganization returns the value of Organization. +func (s *CreateProjectReq) GetOrganization() OptString { + return s.Organization +} + +// SetFullHandle sets the value of FullHandle. +func (s *CreateProjectReq) SetFullHandle(val OptString) { + s.FullHandle = val +} + +// SetName sets the value of Name. +func (s *CreateProjectReq) SetName(val OptString) { + s.Name = val +} + +// SetOrganization sets the value of Organization. +func (s *CreateProjectReq) SetOrganization(val OptString) { + s.Organization = val +} + +type CreateProjectTokenForbidden Error + +func (*CreateProjectTokenForbidden) createProjectTokenRes() {} + +type CreateProjectTokenNotFound Error + +func (*CreateProjectTokenNotFound) createProjectTokenRes() {} + +// A new project token. +type CreateProjectTokenOK struct { + // The generated project token. + Token string `json:"token"` +} + +// GetToken returns the value of Token. +func (s *CreateProjectTokenOK) GetToken() string { + return s.Token +} + +// SetToken sets the value of Token. +func (s *CreateProjectTokenOK) SetToken(val string) { + s.Token = val +} + +func (*CreateProjectTokenOK) createProjectTokenRes() {} + +type CreateProjectTokenUnauthorized Error + +func (*CreateProjectTokenUnauthorized) createProjectTokenRes() {} + +type CreateProjectUnauthorized Error + +func (*CreateProjectUnauthorized) createProjectRes() {} + +type DeleteOrganizationForbidden Error + +func (*DeleteOrganizationForbidden) deleteOrganizationRes() {} + +// DeleteOrganizationNoContent is response for DeleteOrganization operation. +type DeleteOrganizationNoContent struct{} + +func (*DeleteOrganizationNoContent) deleteOrganizationRes() {} + +type DeleteOrganizationNotFound Error + +func (*DeleteOrganizationNotFound) deleteOrganizationRes() {} + +type DeleteOrganizationUnauthorized Error + +func (*DeleteOrganizationUnauthorized) deleteOrganizationRes() {} + +type DeleteProjectForbidden Error + +func (*DeleteProjectForbidden) deleteProjectRes() {} + +// DeleteProjectNoContent is response for DeleteProject operation. +type DeleteProjectNoContent struct{} + +func (*DeleteProjectNoContent) deleteProjectRes() {} + +type DeleteProjectNotFound Error + +func (*DeleteProjectNotFound) deleteProjectRes() {} + +type DeleteProjectUnauthorized Error + +func (*DeleteProjectUnauthorized) deleteProjectRes() {} + +type DownloadCacheArtifactForbidden Error + +func (*DownloadCacheArtifactForbidden) downloadCacheArtifactRes() {} + +type DownloadCacheArtifactNotFound Error + +func (*DownloadCacheArtifactNotFound) downloadCacheArtifactRes() {} + +type DownloadCacheArtifactPaymentRequired Error + +func (*DownloadCacheArtifactPaymentRequired) downloadCacheArtifactRes() {} + +type DownloadCacheArtifactUnauthorized Error + +func (*DownloadCacheArtifactUnauthorized) downloadCacheArtifactRes() {} + +type DownloadPreviewForbidden Error + +func (*DownloadPreviewForbidden) downloadPreviewRes() {} + +type DownloadPreviewNotFound Error + +func (*DownloadPreviewNotFound) downloadPreviewRes() {} + +type DownloadPreviewUnauthorized Error + +func (*DownloadPreviewUnauthorized) downloadPreviewRes() {} + +// Ref: #/components/schemas/Error +type Error struct { + // The error message. + Message string `json:"message"` +} + +// GetMessage returns the value of Message. +func (s *Error) GetMessage() string { + return s.Message +} + +// SetMessage sets the value of Message. +func (s *Error) SetMessage(val string) { + s.Message = val +} + +func (*Error) authenticateRes() {} +func (*Error) createOrganizationRes() {} +func (*Error) getDeviceCodeRes() {} +func (*Error) listProjectsRes() {} +func (*Error) refreshTokenRes() {} + +type GenerateAnalyticsArtifactMultipartUploadURLForbidden Error + +func (*GenerateAnalyticsArtifactMultipartUploadURLForbidden) generateAnalyticsArtifactMultipartUploadURLRes() { +} + +type GenerateAnalyticsArtifactMultipartUploadURLNotFound Error + +func (*GenerateAnalyticsArtifactMultipartUploadURLNotFound) generateAnalyticsArtifactMultipartUploadURLRes() { +} + +type GenerateAnalyticsArtifactMultipartUploadURLReq struct { + CommandEventArtifact CommandEventArtifact `json:"command_event_artifact"` + MultipartUploadPart ArtifactMultipartUploadPart `json:"multipart_upload_part"` +} + +// GetCommandEventArtifact returns the value of CommandEventArtifact. +func (s *GenerateAnalyticsArtifactMultipartUploadURLReq) GetCommandEventArtifact() CommandEventArtifact { + return s.CommandEventArtifact +} + +// GetMultipartUploadPart returns the value of MultipartUploadPart. +func (s *GenerateAnalyticsArtifactMultipartUploadURLReq) GetMultipartUploadPart() ArtifactMultipartUploadPart { + return s.MultipartUploadPart +} + +// SetCommandEventArtifact sets the value of CommandEventArtifact. +func (s *GenerateAnalyticsArtifactMultipartUploadURLReq) SetCommandEventArtifact(val CommandEventArtifact) { + s.CommandEventArtifact = val +} + +// SetMultipartUploadPart sets the value of MultipartUploadPart. +func (s *GenerateAnalyticsArtifactMultipartUploadURLReq) SetMultipartUploadPart(val ArtifactMultipartUploadPart) { + s.MultipartUploadPart = val +} + +type GenerateAnalyticsArtifactMultipartUploadURLUnauthorized Error + +func (*GenerateAnalyticsArtifactMultipartUploadURLUnauthorized) generateAnalyticsArtifactMultipartUploadURLRes() { +} + +type GenerateCacheArtifactMultipartUploadURLForbidden Error + +func (*GenerateCacheArtifactMultipartUploadURLForbidden) generateCacheArtifactMultipartUploadURLRes() { +} + +type GenerateCacheArtifactMultipartUploadURLNotFound Error + +func (*GenerateCacheArtifactMultipartUploadURLNotFound) generateCacheArtifactMultipartUploadURLRes() { +} + +type GenerateCacheArtifactMultipartUploadURLPaymentRequired Error + +func (*GenerateCacheArtifactMultipartUploadURLPaymentRequired) generateCacheArtifactMultipartUploadURLRes() { +} + +type GenerateCacheArtifactMultipartUploadURLUnauthorized Error + +func (*GenerateCacheArtifactMultipartUploadURLUnauthorized) generateCacheArtifactMultipartUploadURLRes() { +} + +type GeneratePreviewsMultipartUploadURLForbidden Error + +func (*GeneratePreviewsMultipartUploadURLForbidden) generatePreviewsMultipartUploadURLRes() {} + +type GeneratePreviewsMultipartUploadURLNotFound Error + +func (*GeneratePreviewsMultipartUploadURLNotFound) generatePreviewsMultipartUploadURLRes() {} + +type GeneratePreviewsMultipartUploadURLReq struct { + MultipartUploadPart ArtifactMultipartUploadPart `json:"multipart_upload_part"` + // The id of the preview. + PreviewID string `json:"preview_id"` +} + +// GetMultipartUploadPart returns the value of MultipartUploadPart. +func (s *GeneratePreviewsMultipartUploadURLReq) GetMultipartUploadPart() ArtifactMultipartUploadPart { + return s.MultipartUploadPart +} + +// GetPreviewID returns the value of PreviewID. +func (s *GeneratePreviewsMultipartUploadURLReq) GetPreviewID() string { + return s.PreviewID +} + +// SetMultipartUploadPart sets the value of MultipartUploadPart. +func (s *GeneratePreviewsMultipartUploadURLReq) SetMultipartUploadPart(val ArtifactMultipartUploadPart) { + s.MultipartUploadPart = val +} + +// SetPreviewID sets the value of PreviewID. +func (s *GeneratePreviewsMultipartUploadURLReq) SetPreviewID(val string) { + s.PreviewID = val +} + +type GeneratePreviewsMultipartUploadURLUnauthorized Error + +func (*GeneratePreviewsMultipartUploadURLUnauthorized) generatePreviewsMultipartUploadURLRes() {} + +type GetCacheActionItemForbidden Error + +func (*GetCacheActionItemForbidden) getCacheActionItemRes() {} + +type GetCacheActionItemNotFound Error + +func (*GetCacheActionItemNotFound) getCacheActionItemRes() {} + +type GetCacheActionItemPaymentRequired Error + +func (*GetCacheActionItemPaymentRequired) getCacheActionItemRes() {} + +type GetCacheActionItemUnauthorized Error + +func (*GetCacheActionItemUnauthorized) getCacheActionItemRes() {} + +type GetDeviceCodeAccepted struct{} + +func (*GetDeviceCodeAccepted) getDeviceCodeRes() {} + +// Token to authenticate the user with. +type GetDeviceCodeOK struct { + // A short-lived token to authenticate API requests as user. + AccessToken OptString `json:"access_token"` + // A token to generate new access tokens when they expire. + RefreshToken OptString `json:"refresh_token"` + // User authentication token. + // + // Deprecated: schema marks this property as deprecated. + Token OptString `json:"token"` +} + +// GetAccessToken returns the value of AccessToken. +func (s *GetDeviceCodeOK) GetAccessToken() OptString { + return s.AccessToken +} + +// GetRefreshToken returns the value of RefreshToken. +func (s *GetDeviceCodeOK) GetRefreshToken() OptString { + return s.RefreshToken +} + +// GetToken returns the value of Token. +func (s *GetDeviceCodeOK) GetToken() OptString { + return s.Token +} + +// SetAccessToken sets the value of AccessToken. +func (s *GetDeviceCodeOK) SetAccessToken(val OptString) { + s.AccessToken = val +} + +// SetRefreshToken sets the value of RefreshToken. +func (s *GetDeviceCodeOK) SetRefreshToken(val OptString) { + s.RefreshToken = val +} + +// SetToken sets the value of Token. +func (s *GetDeviceCodeOK) SetToken(val OptString) { + s.Token = val +} + +func (*GetDeviceCodeOK) getDeviceCodeRes() {} + +// Ref: #/components/schemas/Invitation +type Invitation struct { + // The invitation's unique identifier. + ID float64 `json:"id"` + // The email of the invitee. + InviteeEmail string `json:"invitee_email"` + Inviter User `json:"inviter"` + // The id of the organization the invitee is invited to. + OrganizationID float64 `json:"organization_id"` + // The token to accept the invitation. + Token string `json:"token"` +} + +// GetID returns the value of ID. +func (s *Invitation) GetID() float64 { + return s.ID +} + +// GetInviteeEmail returns the value of InviteeEmail. +func (s *Invitation) GetInviteeEmail() string { + return s.InviteeEmail +} + +// GetInviter returns the value of Inviter. +func (s *Invitation) GetInviter() User { + return s.Inviter +} + +// GetOrganizationID returns the value of OrganizationID. +func (s *Invitation) GetOrganizationID() float64 { + return s.OrganizationID +} + +// GetToken returns the value of Token. +func (s *Invitation) GetToken() string { + return s.Token +} + +// SetID sets the value of ID. +func (s *Invitation) SetID(val float64) { + s.ID = val +} + +// SetInviteeEmail sets the value of InviteeEmail. +func (s *Invitation) SetInviteeEmail(val string) { + s.InviteeEmail = val +} + +// SetInviter sets the value of Inviter. +func (s *Invitation) SetInviter(val User) { + s.Inviter = val +} + +// SetOrganizationID sets the value of OrganizationID. +func (s *Invitation) SetOrganizationID(val float64) { + s.OrganizationID = val +} + +// SetToken sets the value of Token. +func (s *Invitation) SetToken(val string) { + s.Token = val +} + +func (*Invitation) createInvitationRes() {} + +type ListOrganizationsForbidden Error + +func (*ListOrganizationsForbidden) listOrganizationsRes() {} + +// The list of organizations the authenticated subject is part of. +type ListOrganizationsOK struct { + Organizations []Organization `json:"organizations"` +} + +// GetOrganizations returns the value of Organizations. +func (s *ListOrganizationsOK) GetOrganizations() []Organization { + return s.Organizations +} + +// SetOrganizations sets the value of Organizations. +func (s *ListOrganizationsOK) SetOrganizations(val []Organization) { + s.Organizations = val +} + +func (*ListOrganizationsOK) listOrganizationsRes() {} + +type ListOrganizationsUnauthorized Error + +func (*ListOrganizationsUnauthorized) listOrganizationsRes() {} + +type ListProjectTokensForbidden Error + +func (*ListProjectTokensForbidden) listProjectTokensRes() {} + +type ListProjectTokensNotFound Error + +func (*ListProjectTokensNotFound) listProjectTokensRes() {} + +// A list of project tokens. +type ListProjectTokensOK struct { + Tokens []ProjectToken `json:"tokens"` +} + +// GetTokens returns the value of Tokens. +func (s *ListProjectTokensOK) GetTokens() []ProjectToken { + return s.Tokens +} + +// SetTokens sets the value of Tokens. +func (s *ListProjectTokensOK) SetTokens(val []ProjectToken) { + s.Tokens = val +} + +func (*ListProjectTokensOK) listProjectTokensRes() {} + +type ListProjectTokensUnauthorized Error + +func (*ListProjectTokensUnauthorized) listProjectTokensRes() {} + +type ListProjectsOK struct { + Projects []Project `json:"projects"` +} + +// GetProjects returns the value of Projects. +func (s *ListProjectsOK) GetProjects() []Project { + return s.Projects +} + +// SetProjects sets the value of Projects. +func (s *ListProjectsOK) SetProjects(val []Project) { + s.Projects = val +} + +func (*ListProjectsOK) listProjectsRes() {} + +// Ref: #/components/schemas/Module +type Module struct { + // A hash that represents the module. + Hash string `json:"hash"` + // A name of the module. + Name string `json:"name"` + // Project's relative path from the root of the repository. + ProjectIdentifier string `json:"project_identifier"` +} + +// GetHash returns the value of Hash. +func (s *Module) GetHash() string { + return s.Hash +} + +// GetName returns the value of Name. +func (s *Module) GetName() string { + return s.Name +} + +// GetProjectIdentifier returns the value of ProjectIdentifier. +func (s *Module) GetProjectIdentifier() string { + return s.ProjectIdentifier +} + +// SetHash sets the value of Hash. +func (s *Module) SetHash(val string) { + s.Hash = val +} + +// SetName sets the value of Name. +func (s *Module) SetName(val string) { + s.Name = val +} + +// SetProjectIdentifier sets the value of ProjectIdentifier. +func (s *Module) SetProjectIdentifier(val string) { + s.ProjectIdentifier = val +} + +// NewOptAuthenticateReq returns new OptAuthenticateReq with value set to v. +func NewOptAuthenticateReq(v AuthenticateReq) OptAuthenticateReq { + return OptAuthenticateReq{ + Value: v, + Set: true, + } +} + +// OptAuthenticateReq is optional AuthenticateReq. +type OptAuthenticateReq struct { + Value AuthenticateReq + Set bool +} + +// IsSet returns true if OptAuthenticateReq was set. +func (o OptAuthenticateReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptAuthenticateReq) Reset() { + var v AuthenticateReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptAuthenticateReq) SetTo(v AuthenticateReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptAuthenticateReq) Get() (v AuthenticateReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptAuthenticateReq) Or(d AuthenticateReq) AuthenticateReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCacheArtifactExistsOKStatus returns new OptCacheArtifactExistsOKStatus with value set to v. +func NewOptCacheArtifactExistsOKStatus(v CacheArtifactExistsOKStatus) OptCacheArtifactExistsOKStatus { + return OptCacheArtifactExistsOKStatus{ + Value: v, + Set: true, + } +} + +// OptCacheArtifactExistsOKStatus is optional CacheArtifactExistsOKStatus. +type OptCacheArtifactExistsOKStatus struct { + Value CacheArtifactExistsOKStatus + Set bool +} + +// IsSet returns true if OptCacheArtifactExistsOKStatus was set. +func (o OptCacheArtifactExistsOKStatus) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCacheArtifactExistsOKStatus) Reset() { + var v CacheArtifactExistsOKStatus + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCacheArtifactExistsOKStatus) SetTo(v CacheArtifactExistsOKStatus) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCacheArtifactExistsOKStatus) Get() (v CacheArtifactExistsOKStatus, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCacheArtifactExistsOKStatus) Or(d CacheArtifactExistsOKStatus) CacheArtifactExistsOKStatus { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCacheCategory returns new OptCacheCategory with value set to v. +func NewOptCacheCategory(v CacheCategory) OptCacheCategory { + return OptCacheCategory{ + Value: v, + Set: true, + } +} + +// OptCacheCategory is optional CacheCategory. +type OptCacheCategory struct { + Value CacheCategory + Set bool +} + +// IsSet returns true if OptCacheCategory was set. +func (o OptCacheCategory) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCacheCategory) Reset() { + var v CacheCategory + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCacheCategory) SetTo(v CacheCategory) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCacheCategory) Get() (v CacheCategory, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCacheCategory) Or(d CacheCategory) CacheCategory { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCompleteAnalyticsArtifactMultipartUploadReq returns new OptCompleteAnalyticsArtifactMultipartUploadReq with value set to v. +func NewOptCompleteAnalyticsArtifactMultipartUploadReq(v CompleteAnalyticsArtifactMultipartUploadReq) OptCompleteAnalyticsArtifactMultipartUploadReq { + return OptCompleteAnalyticsArtifactMultipartUploadReq{ + Value: v, + Set: true, + } +} + +// OptCompleteAnalyticsArtifactMultipartUploadReq is optional CompleteAnalyticsArtifactMultipartUploadReq. +type OptCompleteAnalyticsArtifactMultipartUploadReq struct { + Value CompleteAnalyticsArtifactMultipartUploadReq + Set bool +} + +// IsSet returns true if OptCompleteAnalyticsArtifactMultipartUploadReq was set. +func (o OptCompleteAnalyticsArtifactMultipartUploadReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCompleteAnalyticsArtifactMultipartUploadReq) Reset() { + var v CompleteAnalyticsArtifactMultipartUploadReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCompleteAnalyticsArtifactMultipartUploadReq) SetTo(v CompleteAnalyticsArtifactMultipartUploadReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCompleteAnalyticsArtifactMultipartUploadReq) Get() (v CompleteAnalyticsArtifactMultipartUploadReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCompleteAnalyticsArtifactMultipartUploadReq) Or(d CompleteAnalyticsArtifactMultipartUploadReq) CompleteAnalyticsArtifactMultipartUploadReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCompleteAnalyticsArtifactsUploadsReq returns new OptCompleteAnalyticsArtifactsUploadsReq with value set to v. +func NewOptCompleteAnalyticsArtifactsUploadsReq(v CompleteAnalyticsArtifactsUploadsReq) OptCompleteAnalyticsArtifactsUploadsReq { + return OptCompleteAnalyticsArtifactsUploadsReq{ + Value: v, + Set: true, + } +} + +// OptCompleteAnalyticsArtifactsUploadsReq is optional CompleteAnalyticsArtifactsUploadsReq. +type OptCompleteAnalyticsArtifactsUploadsReq struct { + Value CompleteAnalyticsArtifactsUploadsReq + Set bool +} + +// IsSet returns true if OptCompleteAnalyticsArtifactsUploadsReq was set. +func (o OptCompleteAnalyticsArtifactsUploadsReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCompleteAnalyticsArtifactsUploadsReq) Reset() { + var v CompleteAnalyticsArtifactsUploadsReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCompleteAnalyticsArtifactsUploadsReq) SetTo(v CompleteAnalyticsArtifactsUploadsReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCompleteAnalyticsArtifactsUploadsReq) Get() (v CompleteAnalyticsArtifactsUploadsReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCompleteAnalyticsArtifactsUploadsReq) Or(d CompleteAnalyticsArtifactsUploadsReq) CompleteAnalyticsArtifactsUploadsReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCompleteCacheArtifactMultipartUploadOKStatus returns new OptCompleteCacheArtifactMultipartUploadOKStatus with value set to v. +func NewOptCompleteCacheArtifactMultipartUploadOKStatus(v CompleteCacheArtifactMultipartUploadOKStatus) OptCompleteCacheArtifactMultipartUploadOKStatus { + return OptCompleteCacheArtifactMultipartUploadOKStatus{ + Value: v, + Set: true, + } +} + +// OptCompleteCacheArtifactMultipartUploadOKStatus is optional CompleteCacheArtifactMultipartUploadOKStatus. +type OptCompleteCacheArtifactMultipartUploadOKStatus struct { + Value CompleteCacheArtifactMultipartUploadOKStatus + Set bool +} + +// IsSet returns true if OptCompleteCacheArtifactMultipartUploadOKStatus was set. +func (o OptCompleteCacheArtifactMultipartUploadOKStatus) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCompleteCacheArtifactMultipartUploadOKStatus) Reset() { + var v CompleteCacheArtifactMultipartUploadOKStatus + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCompleteCacheArtifactMultipartUploadOKStatus) SetTo(v CompleteCacheArtifactMultipartUploadOKStatus) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCompleteCacheArtifactMultipartUploadOKStatus) Get() (v CompleteCacheArtifactMultipartUploadOKStatus, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCompleteCacheArtifactMultipartUploadOKStatus) Or(d CompleteCacheArtifactMultipartUploadOKStatus) CompleteCacheArtifactMultipartUploadOKStatus { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCompleteCacheArtifactMultipartUploadReq returns new OptCompleteCacheArtifactMultipartUploadReq with value set to v. +func NewOptCompleteCacheArtifactMultipartUploadReq(v CompleteCacheArtifactMultipartUploadReq) OptCompleteCacheArtifactMultipartUploadReq { + return OptCompleteCacheArtifactMultipartUploadReq{ + Value: v, + Set: true, + } +} + +// OptCompleteCacheArtifactMultipartUploadReq is optional CompleteCacheArtifactMultipartUploadReq. +type OptCompleteCacheArtifactMultipartUploadReq struct { + Value CompleteCacheArtifactMultipartUploadReq + Set bool +} + +// IsSet returns true if OptCompleteCacheArtifactMultipartUploadReq was set. +func (o OptCompleteCacheArtifactMultipartUploadReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCompleteCacheArtifactMultipartUploadReq) Reset() { + var v CompleteCacheArtifactMultipartUploadReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCompleteCacheArtifactMultipartUploadReq) SetTo(v CompleteCacheArtifactMultipartUploadReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCompleteCacheArtifactMultipartUploadReq) Get() (v CompleteCacheArtifactMultipartUploadReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCompleteCacheArtifactMultipartUploadReq) Or(d CompleteCacheArtifactMultipartUploadReq) CompleteCacheArtifactMultipartUploadReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCompletePreviewsMultipartUploadReq returns new OptCompletePreviewsMultipartUploadReq with value set to v. +func NewOptCompletePreviewsMultipartUploadReq(v CompletePreviewsMultipartUploadReq) OptCompletePreviewsMultipartUploadReq { + return OptCompletePreviewsMultipartUploadReq{ + Value: v, + Set: true, + } +} + +// OptCompletePreviewsMultipartUploadReq is optional CompletePreviewsMultipartUploadReq. +type OptCompletePreviewsMultipartUploadReq struct { + Value CompletePreviewsMultipartUploadReq + Set bool +} + +// IsSet returns true if OptCompletePreviewsMultipartUploadReq was set. +func (o OptCompletePreviewsMultipartUploadReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCompletePreviewsMultipartUploadReq) Reset() { + var v CompletePreviewsMultipartUploadReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCompletePreviewsMultipartUploadReq) SetTo(v CompletePreviewsMultipartUploadReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCompletePreviewsMultipartUploadReq) Get() (v CompletePreviewsMultipartUploadReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCompletePreviewsMultipartUploadReq) Or(d CompletePreviewsMultipartUploadReq) CompletePreviewsMultipartUploadReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCreateCommandEventReq returns new OptCreateCommandEventReq with value set to v. +func NewOptCreateCommandEventReq(v CreateCommandEventReq) OptCreateCommandEventReq { + return OptCreateCommandEventReq{ + Value: v, + Set: true, + } +} + +// OptCreateCommandEventReq is optional CreateCommandEventReq. +type OptCreateCommandEventReq struct { + Value CreateCommandEventReq + Set bool +} + +// IsSet returns true if OptCreateCommandEventReq was set. +func (o OptCreateCommandEventReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCreateCommandEventReq) Reset() { + var v CreateCommandEventReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCreateCommandEventReq) SetTo(v CreateCommandEventReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCreateCommandEventReq) Get() (v CreateCommandEventReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCreateCommandEventReq) Or(d CreateCommandEventReq) CreateCommandEventReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCreateCommandEventReqParams returns new OptCreateCommandEventReqParams with value set to v. +func NewOptCreateCommandEventReqParams(v CreateCommandEventReqParams) OptCreateCommandEventReqParams { + return OptCreateCommandEventReqParams{ + Value: v, + Set: true, + } +} + +// OptCreateCommandEventReqParams is optional CreateCommandEventReqParams. +type OptCreateCommandEventReqParams struct { + Value CreateCommandEventReqParams + Set bool +} + +// IsSet returns true if OptCreateCommandEventReqParams was set. +func (o OptCreateCommandEventReqParams) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCreateCommandEventReqParams) Reset() { + var v CreateCommandEventReqParams + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCreateCommandEventReqParams) SetTo(v CreateCommandEventReqParams) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCreateCommandEventReqParams) Get() (v CreateCommandEventReqParams, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCreateCommandEventReqParams) Or(d CreateCommandEventReqParams) CreateCommandEventReqParams { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCreateCommandEventReqStatus returns new OptCreateCommandEventReqStatus with value set to v. +func NewOptCreateCommandEventReqStatus(v CreateCommandEventReqStatus) OptCreateCommandEventReqStatus { + return OptCreateCommandEventReqStatus{ + Value: v, + Set: true, + } +} + +// OptCreateCommandEventReqStatus is optional CreateCommandEventReqStatus. +type OptCreateCommandEventReqStatus struct { + Value CreateCommandEventReqStatus + Set bool +} + +// IsSet returns true if OptCreateCommandEventReqStatus was set. +func (o OptCreateCommandEventReqStatus) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCreateCommandEventReqStatus) Reset() { + var v CreateCommandEventReqStatus + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCreateCommandEventReqStatus) SetTo(v CreateCommandEventReqStatus) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCreateCommandEventReqStatus) Get() (v CreateCommandEventReqStatus, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCreateCommandEventReqStatus) Or(d CreateCommandEventReqStatus) CreateCommandEventReqStatus { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCreateInvitationReq returns new OptCreateInvitationReq with value set to v. +func NewOptCreateInvitationReq(v CreateInvitationReq) OptCreateInvitationReq { + return OptCreateInvitationReq{ + Value: v, + Set: true, + } +} + +// OptCreateInvitationReq is optional CreateInvitationReq. +type OptCreateInvitationReq struct { + Value CreateInvitationReq + Set bool +} + +// IsSet returns true if OptCreateInvitationReq was set. +func (o OptCreateInvitationReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCreateInvitationReq) Reset() { + var v CreateInvitationReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCreateInvitationReq) SetTo(v CreateInvitationReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCreateInvitationReq) Get() (v CreateInvitationReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCreateInvitationReq) Or(d CreateInvitationReq) CreateInvitationReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCreateOrganizationReq returns new OptCreateOrganizationReq with value set to v. +func NewOptCreateOrganizationReq(v CreateOrganizationReq) OptCreateOrganizationReq { + return OptCreateOrganizationReq{ + Value: v, + Set: true, + } +} + +// OptCreateOrganizationReq is optional CreateOrganizationReq. +type OptCreateOrganizationReq struct { + Value CreateOrganizationReq + Set bool +} + +// IsSet returns true if OptCreateOrganizationReq was set. +func (o OptCreateOrganizationReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCreateOrganizationReq) Reset() { + var v CreateOrganizationReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCreateOrganizationReq) SetTo(v CreateOrganizationReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCreateOrganizationReq) Get() (v CreateOrganizationReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCreateOrganizationReq) Or(d CreateOrganizationReq) CreateOrganizationReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptCreateProjectReq returns new OptCreateProjectReq with value set to v. +func NewOptCreateProjectReq(v CreateProjectReq) OptCreateProjectReq { + return OptCreateProjectReq{ + Value: v, + Set: true, + } +} + +// OptCreateProjectReq is optional CreateProjectReq. +type OptCreateProjectReq struct { + Value CreateProjectReq + Set bool +} + +// IsSet returns true if OptCreateProjectReq was set. +func (o OptCreateProjectReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCreateProjectReq) Reset() { + var v CreateProjectReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCreateProjectReq) SetTo(v CreateProjectReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCreateProjectReq) Get() (v CreateProjectReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCreateProjectReq) Or(d CreateProjectReq) CreateProjectReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptGenerateAnalyticsArtifactMultipartUploadURLReq returns new OptGenerateAnalyticsArtifactMultipartUploadURLReq with value set to v. +func NewOptGenerateAnalyticsArtifactMultipartUploadURLReq(v GenerateAnalyticsArtifactMultipartUploadURLReq) OptGenerateAnalyticsArtifactMultipartUploadURLReq { + return OptGenerateAnalyticsArtifactMultipartUploadURLReq{ + Value: v, + Set: true, + } +} + +// OptGenerateAnalyticsArtifactMultipartUploadURLReq is optional GenerateAnalyticsArtifactMultipartUploadURLReq. +type OptGenerateAnalyticsArtifactMultipartUploadURLReq struct { + Value GenerateAnalyticsArtifactMultipartUploadURLReq + Set bool +} + +// IsSet returns true if OptGenerateAnalyticsArtifactMultipartUploadURLReq was set. +func (o OptGenerateAnalyticsArtifactMultipartUploadURLReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptGenerateAnalyticsArtifactMultipartUploadURLReq) Reset() { + var v GenerateAnalyticsArtifactMultipartUploadURLReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptGenerateAnalyticsArtifactMultipartUploadURLReq) SetTo(v GenerateAnalyticsArtifactMultipartUploadURLReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptGenerateAnalyticsArtifactMultipartUploadURLReq) Get() (v GenerateAnalyticsArtifactMultipartUploadURLReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptGenerateAnalyticsArtifactMultipartUploadURLReq) Or(d GenerateAnalyticsArtifactMultipartUploadURLReq) GenerateAnalyticsArtifactMultipartUploadURLReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptGeneratePreviewsMultipartUploadURLReq returns new OptGeneratePreviewsMultipartUploadURLReq with value set to v. +func NewOptGeneratePreviewsMultipartUploadURLReq(v GeneratePreviewsMultipartUploadURLReq) OptGeneratePreviewsMultipartUploadURLReq { + return OptGeneratePreviewsMultipartUploadURLReq{ + Value: v, + Set: true, + } +} + +// OptGeneratePreviewsMultipartUploadURLReq is optional GeneratePreviewsMultipartUploadURLReq. +type OptGeneratePreviewsMultipartUploadURLReq struct { + Value GeneratePreviewsMultipartUploadURLReq + Set bool +} + +// IsSet returns true if OptGeneratePreviewsMultipartUploadURLReq was set. +func (o OptGeneratePreviewsMultipartUploadURLReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptGeneratePreviewsMultipartUploadURLReq) Reset() { + var v GeneratePreviewsMultipartUploadURLReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptGeneratePreviewsMultipartUploadURLReq) SetTo(v GeneratePreviewsMultipartUploadURLReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptGeneratePreviewsMultipartUploadURLReq) Get() (v GeneratePreviewsMultipartUploadURLReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptGeneratePreviewsMultipartUploadURLReq) Or(d GeneratePreviewsMultipartUploadURLReq) GeneratePreviewsMultipartUploadURLReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptInt returns new OptInt with value set to v. +func NewOptInt(v int) OptInt { + return OptInt{ + Value: v, + Set: true, + } +} + +// OptInt is optional int. +type OptInt struct { + Value int + Set bool +} + +// IsSet returns true if OptInt was set. +func (o OptInt) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptInt) Reset() { + var v int + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptInt) SetTo(v int) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptInt) Get() (v int, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptInt) Or(d int) int { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptNilString returns new OptNilString with value set to v. +func NewOptNilString(v string) OptNilString { + return OptNilString{ + Value: v, + Set: true, + } +} + +// OptNilString is optional nullable string. +type OptNilString struct { + Value string + Set bool + Null bool +} + +// IsSet returns true if OptNilString was set. +func (o OptNilString) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptNilString) Reset() { + var v string + o.Value = v + o.Set = false + o.Null = false +} + +// SetTo sets value to v. +func (o *OptNilString) SetTo(v string) { + o.Set = true + o.Null = false + o.Value = v +} + +// IsSet returns true if value is Null. +func (o OptNilString) IsNull() bool { return o.Null } + +// SetNull sets value to null. +func (o *OptNilString) SetToNull() { + o.Set = true + o.Null = true + var v string + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptNilString) Get() (v string, ok bool) { + if o.Null { + return v, false + } + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptNilString) Or(d string) string { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptOrganizationSSOProvider returns new OptOrganizationSSOProvider with value set to v. +func NewOptOrganizationSSOProvider(v OrganizationSSOProvider) OptOrganizationSSOProvider { + return OptOrganizationSSOProvider{ + Value: v, + Set: true, + } +} + +// OptOrganizationSSOProvider is optional OrganizationSSOProvider. +type OptOrganizationSSOProvider struct { + Value OrganizationSSOProvider + Set bool +} + +// IsSet returns true if OptOrganizationSSOProvider was set. +func (o OptOrganizationSSOProvider) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptOrganizationSSOProvider) Reset() { + var v OrganizationSSOProvider + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptOrganizationSSOProvider) SetTo(v OrganizationSSOProvider) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptOrganizationSSOProvider) Get() (v OrganizationSSOProvider, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptOrganizationSSOProvider) Or(d OrganizationSSOProvider) OrganizationSSOProvider { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptRefreshTokenReq returns new OptRefreshTokenReq with value set to v. +func NewOptRefreshTokenReq(v RefreshTokenReq) OptRefreshTokenReq { + return OptRefreshTokenReq{ + Value: v, + Set: true, + } +} + +// OptRefreshTokenReq is optional RefreshTokenReq. +type OptRefreshTokenReq struct { + Value RefreshTokenReq + Set bool +} + +// IsSet returns true if OptRefreshTokenReq was set. +func (o OptRefreshTokenReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptRefreshTokenReq) Reset() { + var v RefreshTokenReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptRefreshTokenReq) SetTo(v RefreshTokenReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptRefreshTokenReq) Get() (v RefreshTokenReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptRefreshTokenReq) Or(d RefreshTokenReq) RefreshTokenReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptStartPreviewsMultipartUploadReq returns new OptStartPreviewsMultipartUploadReq with value set to v. +func NewOptStartPreviewsMultipartUploadReq(v StartPreviewsMultipartUploadReq) OptStartPreviewsMultipartUploadReq { + return OptStartPreviewsMultipartUploadReq{ + Value: v, + Set: true, + } +} + +// OptStartPreviewsMultipartUploadReq is optional StartPreviewsMultipartUploadReq. +type OptStartPreviewsMultipartUploadReq struct { + Value StartPreviewsMultipartUploadReq + Set bool +} + +// IsSet returns true if OptStartPreviewsMultipartUploadReq was set. +func (o OptStartPreviewsMultipartUploadReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptStartPreviewsMultipartUploadReq) Reset() { + var v StartPreviewsMultipartUploadReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptStartPreviewsMultipartUploadReq) SetTo(v StartPreviewsMultipartUploadReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptStartPreviewsMultipartUploadReq) Get() (v StartPreviewsMultipartUploadReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptStartPreviewsMultipartUploadReq) Or(d StartPreviewsMultipartUploadReq) StartPreviewsMultipartUploadReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptString returns new OptString with value set to v. +func NewOptString(v string) OptString { + return OptString{ + Value: v, + Set: true, + } +} + +// OptString is optional string. +type OptString struct { + Value string + Set bool +} + +// IsSet returns true if OptString was set. +func (o OptString) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptString) Reset() { + var v string + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptString) SetTo(v string) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptString) Get() (v string, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptString) Or(d string) string { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptUpdateOrganization2Req returns new OptUpdateOrganization2Req with value set to v. +func NewOptUpdateOrganization2Req(v UpdateOrganization2Req) OptUpdateOrganization2Req { + return OptUpdateOrganization2Req{ + Value: v, + Set: true, + } +} + +// OptUpdateOrganization2Req is optional UpdateOrganization2Req. +type OptUpdateOrganization2Req struct { + Value UpdateOrganization2Req + Set bool +} + +// IsSet returns true if OptUpdateOrganization2Req was set. +func (o OptUpdateOrganization2Req) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptUpdateOrganization2Req) Reset() { + var v UpdateOrganization2Req + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptUpdateOrganization2Req) SetTo(v UpdateOrganization2Req) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptUpdateOrganization2Req) Get() (v UpdateOrganization2Req, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptUpdateOrganization2Req) Or(d UpdateOrganization2Req) UpdateOrganization2Req { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptUpdateOrganization2ReqSSOProvider returns new OptUpdateOrganization2ReqSSOProvider with value set to v. +func NewOptUpdateOrganization2ReqSSOProvider(v UpdateOrganization2ReqSSOProvider) OptUpdateOrganization2ReqSSOProvider { + return OptUpdateOrganization2ReqSSOProvider{ + Value: v, + Set: true, + } +} + +// OptUpdateOrganization2ReqSSOProvider is optional UpdateOrganization2ReqSSOProvider. +type OptUpdateOrganization2ReqSSOProvider struct { + Value UpdateOrganization2ReqSSOProvider + Set bool +} + +// IsSet returns true if OptUpdateOrganization2ReqSSOProvider was set. +func (o OptUpdateOrganization2ReqSSOProvider) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptUpdateOrganization2ReqSSOProvider) Reset() { + var v UpdateOrganization2ReqSSOProvider + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptUpdateOrganization2ReqSSOProvider) SetTo(v UpdateOrganization2ReqSSOProvider) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptUpdateOrganization2ReqSSOProvider) Get() (v UpdateOrganization2ReqSSOProvider, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptUpdateOrganization2ReqSSOProvider) Or(d UpdateOrganization2ReqSSOProvider) UpdateOrganization2ReqSSOProvider { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptUpdateOrganizationMemberReq returns new OptUpdateOrganizationMemberReq with value set to v. +func NewOptUpdateOrganizationMemberReq(v UpdateOrganizationMemberReq) OptUpdateOrganizationMemberReq { + return OptUpdateOrganizationMemberReq{ + Value: v, + Set: true, + } +} + +// OptUpdateOrganizationMemberReq is optional UpdateOrganizationMemberReq. +type OptUpdateOrganizationMemberReq struct { + Value UpdateOrganizationMemberReq + Set bool +} + +// IsSet returns true if OptUpdateOrganizationMemberReq was set. +func (o OptUpdateOrganizationMemberReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptUpdateOrganizationMemberReq) Reset() { + var v UpdateOrganizationMemberReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptUpdateOrganizationMemberReq) SetTo(v UpdateOrganizationMemberReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptUpdateOrganizationMemberReq) Get() (v UpdateOrganizationMemberReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptUpdateOrganizationMemberReq) Or(d UpdateOrganizationMemberReq) UpdateOrganizationMemberReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptUpdateOrganizationReq returns new OptUpdateOrganizationReq with value set to v. +func NewOptUpdateOrganizationReq(v UpdateOrganizationReq) OptUpdateOrganizationReq { + return OptUpdateOrganizationReq{ + Value: v, + Set: true, + } +} + +// OptUpdateOrganizationReq is optional UpdateOrganizationReq. +type OptUpdateOrganizationReq struct { + Value UpdateOrganizationReq + Set bool +} + +// IsSet returns true if OptUpdateOrganizationReq was set. +func (o OptUpdateOrganizationReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptUpdateOrganizationReq) Reset() { + var v UpdateOrganizationReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptUpdateOrganizationReq) SetTo(v UpdateOrganizationReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptUpdateOrganizationReq) Get() (v UpdateOrganizationReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptUpdateOrganizationReq) Or(d UpdateOrganizationReq) UpdateOrganizationReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptUpdateOrganizationReqSSOProvider returns new OptUpdateOrganizationReqSSOProvider with value set to v. +func NewOptUpdateOrganizationReqSSOProvider(v UpdateOrganizationReqSSOProvider) OptUpdateOrganizationReqSSOProvider { + return OptUpdateOrganizationReqSSOProvider{ + Value: v, + Set: true, + } +} + +// OptUpdateOrganizationReqSSOProvider is optional UpdateOrganizationReqSSOProvider. +type OptUpdateOrganizationReqSSOProvider struct { + Value UpdateOrganizationReqSSOProvider + Set bool +} + +// IsSet returns true if OptUpdateOrganizationReqSSOProvider was set. +func (o OptUpdateOrganizationReqSSOProvider) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptUpdateOrganizationReqSSOProvider) Reset() { + var v UpdateOrganizationReqSSOProvider + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptUpdateOrganizationReqSSOProvider) SetTo(v UpdateOrganizationReqSSOProvider) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptUpdateOrganizationReqSSOProvider) Get() (v UpdateOrganizationReqSSOProvider, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptUpdateOrganizationReqSSOProvider) Or(d UpdateOrganizationReqSSOProvider) UpdateOrganizationReqSSOProvider { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptUpdateProjectReq returns new OptUpdateProjectReq with value set to v. +func NewOptUpdateProjectReq(v UpdateProjectReq) OptUpdateProjectReq { + return OptUpdateProjectReq{ + Value: v, + Set: true, + } +} + +// OptUpdateProjectReq is optional UpdateProjectReq. +type OptUpdateProjectReq struct { + Value UpdateProjectReq + Set bool +} + +// IsSet returns true if OptUpdateProjectReq was set. +func (o OptUpdateProjectReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptUpdateProjectReq) Reset() { + var v UpdateProjectReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptUpdateProjectReq) SetTo(v UpdateProjectReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptUpdateProjectReq) Get() (v UpdateProjectReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptUpdateProjectReq) Or(d UpdateProjectReq) UpdateProjectReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptUploadCacheActionItemReq returns new OptUploadCacheActionItemReq with value set to v. +func NewOptUploadCacheActionItemReq(v UploadCacheActionItemReq) OptUploadCacheActionItemReq { + return OptUploadCacheActionItemReq{ + Value: v, + Set: true, + } +} + +// OptUploadCacheActionItemReq is optional UploadCacheActionItemReq. +type OptUploadCacheActionItemReq struct { + Value UploadCacheActionItemReq + Set bool +} + +// IsSet returns true if OptUploadCacheActionItemReq was set. +func (o OptUploadCacheActionItemReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptUploadCacheActionItemReq) Reset() { + var v UploadCacheActionItemReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptUploadCacheActionItemReq) SetTo(v UploadCacheActionItemReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptUploadCacheActionItemReq) Get() (v UploadCacheActionItemReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptUploadCacheActionItemReq) Or(d UploadCacheActionItemReq) UploadCacheActionItemReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// An organization. +// Ref: #/components/schemas/Organization +type Organization struct { + // The organization's unique identifier. + ID float64 `json:"id"` + // A list of organization invitations. + Invitations []Invitation `json:"invitations"` + // A list of organization members. + Members []OrganizationMember `json:"members"` + // The organization's name. + Name string `json:"name"` + // The plan associated with the organization. + Plan OrganizationPlan `json:"plan"` + // The organization ID associated with the SSO provider. + SSOOrganizationID OptString `json:"sso_organization_id"` + // The SSO provider set up for the organization. + SSOProvider OptOrganizationSSOProvider `json:"sso_provider"` +} + +// GetID returns the value of ID. +func (s *Organization) GetID() float64 { + return s.ID +} + +// GetInvitations returns the value of Invitations. +func (s *Organization) GetInvitations() []Invitation { + return s.Invitations +} + +// GetMembers returns the value of Members. +func (s *Organization) GetMembers() []OrganizationMember { + return s.Members +} + +// GetName returns the value of Name. +func (s *Organization) GetName() string { + return s.Name +} + +// GetPlan returns the value of Plan. +func (s *Organization) GetPlan() OrganizationPlan { + return s.Plan +} + +// GetSSOOrganizationID returns the value of SSOOrganizationID. +func (s *Organization) GetSSOOrganizationID() OptString { + return s.SSOOrganizationID +} + +// GetSSOProvider returns the value of SSOProvider. +func (s *Organization) GetSSOProvider() OptOrganizationSSOProvider { + return s.SSOProvider +} + +// SetID sets the value of ID. +func (s *Organization) SetID(val float64) { + s.ID = val +} + +// SetInvitations sets the value of Invitations. +func (s *Organization) SetInvitations(val []Invitation) { + s.Invitations = val +} + +// SetMembers sets the value of Members. +func (s *Organization) SetMembers(val []OrganizationMember) { + s.Members = val +} + +// SetName sets the value of Name. +func (s *Organization) SetName(val string) { + s.Name = val +} + +// SetPlan sets the value of Plan. +func (s *Organization) SetPlan(val OrganizationPlan) { + s.Plan = val +} + +// SetSSOOrganizationID sets the value of SSOOrganizationID. +func (s *Organization) SetSSOOrganizationID(val OptString) { + s.SSOOrganizationID = val +} + +// SetSSOProvider sets the value of SSOProvider. +func (s *Organization) SetSSOProvider(val OptOrganizationSSOProvider) { + s.SSOProvider = val +} + +func (*Organization) createOrganizationRes() {} +func (*Organization) showOrganizationRes() {} +func (*Organization) updateOrganization2Res() {} +func (*Organization) updateOrganizationRes() {} + +// An organization member. +// Ref: #/components/schemas/OrganizationMember +type OrganizationMember struct { + // The organization member's email. + Email string `json:"email"` + // The organization member's unique identifier. + ID float64 `json:"id"` + // The organization member's name. + Name string `json:"name"` + // The organization member's role. + Role OrganizationMemberRole `json:"role"` +} + +// GetEmail returns the value of Email. +func (s *OrganizationMember) GetEmail() string { + return s.Email +} + +// GetID returns the value of ID. +func (s *OrganizationMember) GetID() float64 { + return s.ID +} + +// GetName returns the value of Name. +func (s *OrganizationMember) GetName() string { + return s.Name +} + +// GetRole returns the value of Role. +func (s *OrganizationMember) GetRole() OrganizationMemberRole { + return s.Role +} + +// SetEmail sets the value of Email. +func (s *OrganizationMember) SetEmail(val string) { + s.Email = val +} + +// SetID sets the value of ID. +func (s *OrganizationMember) SetID(val float64) { + s.ID = val +} + +// SetName sets the value of Name. +func (s *OrganizationMember) SetName(val string) { + s.Name = val +} + +// SetRole sets the value of Role. +func (s *OrganizationMember) SetRole(val OrganizationMemberRole) { + s.Role = val +} + +func (*OrganizationMember) updateOrganizationMemberRes() {} + +// The organization member's role. +type OrganizationMemberRole string + +const ( + OrganizationMemberRoleAdmin OrganizationMemberRole = "admin" + OrganizationMemberRoleUser OrganizationMemberRole = "user" +) + +// AllValues returns all OrganizationMemberRole values. +func (OrganizationMemberRole) AllValues() []OrganizationMemberRole { + return []OrganizationMemberRole{ + OrganizationMemberRoleAdmin, + OrganizationMemberRoleUser, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s OrganizationMemberRole) MarshalText() ([]byte, error) { + switch s { + case OrganizationMemberRoleAdmin: + return []byte(s), nil + case OrganizationMemberRoleUser: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *OrganizationMemberRole) UnmarshalText(data []byte) error { + switch OrganizationMemberRole(data) { + case OrganizationMemberRoleAdmin: + *s = OrganizationMemberRoleAdmin + return nil + case OrganizationMemberRoleUser: + *s = OrganizationMemberRoleUser + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +// The plan associated with the organization. +type OrganizationPlan string + +const ( + OrganizationPlanAir OrganizationPlan = "air" + OrganizationPlanPro OrganizationPlan = "pro" + OrganizationPlanEnterprise OrganizationPlan = "enterprise" + OrganizationPlanNone OrganizationPlan = "none" +) + +// AllValues returns all OrganizationPlan values. +func (OrganizationPlan) AllValues() []OrganizationPlan { + return []OrganizationPlan{ + OrganizationPlanAir, + OrganizationPlanPro, + OrganizationPlanEnterprise, + OrganizationPlanNone, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s OrganizationPlan) MarshalText() ([]byte, error) { + switch s { + case OrganizationPlanAir: + return []byte(s), nil + case OrganizationPlanPro: + return []byte(s), nil + case OrganizationPlanEnterprise: + return []byte(s), nil + case OrganizationPlanNone: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *OrganizationPlan) UnmarshalText(data []byte) error { + switch OrganizationPlan(data) { + case OrganizationPlanAir: + *s = OrganizationPlanAir + return nil + case OrganizationPlanPro: + *s = OrganizationPlanPro + return nil + case OrganizationPlanEnterprise: + *s = OrganizationPlanEnterprise + return nil + case OrganizationPlanNone: + *s = OrganizationPlanNone + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +// The SSO provider set up for the organization. +type OrganizationSSOProvider string + +const ( + OrganizationSSOProviderGoogle OrganizationSSOProvider = "google" +) + +// AllValues returns all OrganizationSSOProvider values. +func (OrganizationSSOProvider) AllValues() []OrganizationSSOProvider { + return []OrganizationSSOProvider{ + OrganizationSSOProviderGoogle, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s OrganizationSSOProvider) MarshalText() ([]byte, error) { + switch s { + case OrganizationSSOProviderGoogle: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *OrganizationSSOProvider) UnmarshalText(data []byte) error { + switch OrganizationSSOProvider(data) { + case OrganizationSSOProviderGoogle: + *s = OrganizationSSOProviderGoogle + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +// The usage of an organization. +// Ref: #/components/schemas/OrganizationUsage +type OrganizationUsage struct { + // The number of remote cache hits in the current month. + CurrentMonthRemoteCacheHits float64 `json:"current_month_remote_cache_hits"` +} + +// GetCurrentMonthRemoteCacheHits returns the value of CurrentMonthRemoteCacheHits. +func (s *OrganizationUsage) GetCurrentMonthRemoteCacheHits() float64 { + return s.CurrentMonthRemoteCacheHits +} + +// SetCurrentMonthRemoteCacheHits sets the value of CurrentMonthRemoteCacheHits. +func (s *OrganizationUsage) SetCurrentMonthRemoteCacheHits(val float64) { + s.CurrentMonthRemoteCacheHits = val +} + +func (*OrganizationUsage) showOrganizationUsageRes() {} + +// Ref: #/components/schemas/Project +type Project struct { + // The default branch of the project. + DefaultBranch string `json:"default_branch"` + // The full name of the project (e.g. tuist/tuist). + FullName string `json:"full_name"` + // ID of the project. + ID float64 `json:"id"` + // The URL of the connected git repository, such as https://github.com/tuist/tuist or https://github. + // com/tuist/tuist.git. + RepositoryURL OptString `json:"repository_url"` + // The token that should be used to authenticate the project. For CI only. + // + // Deprecated: schema marks this property as deprecated. + Token string `json:"token"` +} + +// GetDefaultBranch returns the value of DefaultBranch. +func (s *Project) GetDefaultBranch() string { + return s.DefaultBranch +} + +// GetFullName returns the value of FullName. +func (s *Project) GetFullName() string { + return s.FullName +} + +// GetID returns the value of ID. +func (s *Project) GetID() float64 { + return s.ID +} + +// GetRepositoryURL returns the value of RepositoryURL. +func (s *Project) GetRepositoryURL() OptString { + return s.RepositoryURL +} + +// GetToken returns the value of Token. +func (s *Project) GetToken() string { + return s.Token +} + +// SetDefaultBranch sets the value of DefaultBranch. +func (s *Project) SetDefaultBranch(val string) { + s.DefaultBranch = val +} + +// SetFullName sets the value of FullName. +func (s *Project) SetFullName(val string) { + s.FullName = val +} + +// SetID sets the value of ID. +func (s *Project) SetID(val float64) { + s.ID = val +} + +// SetRepositoryURL sets the value of RepositoryURL. +func (s *Project) SetRepositoryURL(val OptString) { + s.RepositoryURL = val +} + +// SetToken sets the value of Token. +func (s *Project) SetToken(val string) { + s.Token = val +} + +func (*Project) createProjectRes() {} +func (*Project) showProjectRes() {} +func (*Project) updateProjectRes() {} + +// A token to authenticate API requests as a project. +// Ref: #/components/schemas/ProjectToken +type ProjectToken struct { + // The token unique identifier. + ID string `json:"id"` + // The timestamp of when the token was created. + InsertedAt time.Time `json:"inserted_at"` +} + +// GetID returns the value of ID. +func (s *ProjectToken) GetID() string { + return s.ID +} + +// GetInsertedAt returns the value of InsertedAt. +func (s *ProjectToken) GetInsertedAt() time.Time { + return s.InsertedAt +} + +// SetID sets the value of ID. +func (s *ProjectToken) SetID(val string) { + s.ID = val +} + +// SetInsertedAt sets the value of InsertedAt. +func (s *ProjectToken) SetInsertedAt(val time.Time) { + s.InsertedAt = val +} + +type RefreshTokenReq struct { + // User refresh token. + RefreshToken string `json:"refresh_token"` +} + +// GetRefreshToken returns the value of RefreshToken. +func (s *RefreshTokenReq) GetRefreshToken() string { + return s.RefreshToken +} + +// SetRefreshToken sets the value of RefreshToken. +func (s *RefreshTokenReq) SetRefreshToken(val string) { + s.RefreshToken = val +} + +type RevokeProjectTokenBadRequest Error + +func (*RevokeProjectTokenBadRequest) revokeProjectTokenRes() {} + +type RevokeProjectTokenForbidden Error + +func (*RevokeProjectTokenForbidden) revokeProjectTokenRes() {} + +// RevokeProjectTokenNoContent is response for RevokeProjectToken operation. +type RevokeProjectTokenNoContent struct{} + +func (*RevokeProjectTokenNoContent) revokeProjectTokenRes() {} + +type RevokeProjectTokenNotFound Error + +func (*RevokeProjectTokenNotFound) revokeProjectTokenRes() {} + +type RevokeProjectTokenUnauthorized Error + +func (*RevokeProjectTokenUnauthorized) revokeProjectTokenRes() {} + +type ShowOrganizationForbidden Error + +func (*ShowOrganizationForbidden) showOrganizationRes() {} + +type ShowOrganizationNotFound Error + +func (*ShowOrganizationNotFound) showOrganizationRes() {} + +type ShowOrganizationUnauthorized Error + +func (*ShowOrganizationUnauthorized) showOrganizationRes() {} + +type ShowOrganizationUsageForbidden Error + +func (*ShowOrganizationUsageForbidden) showOrganizationUsageRes() {} + +type ShowOrganizationUsageNotFound Error + +func (*ShowOrganizationUsageNotFound) showOrganizationUsageRes() {} + +type ShowOrganizationUsageUnauthorized Error + +func (*ShowOrganizationUsageUnauthorized) showOrganizationUsageRes() {} + +type ShowProjectForbidden Error + +func (*ShowProjectForbidden) showProjectRes() {} + +type ShowProjectNotFound Error + +func (*ShowProjectNotFound) showProjectRes() {} + +type ShowProjectUnauthorized Error + +func (*ShowProjectUnauthorized) showProjectRes() {} + +type StartAnalyticsArtifactMultipartUploadForbidden Error + +func (*StartAnalyticsArtifactMultipartUploadForbidden) startAnalyticsArtifactMultipartUploadRes() {} + +type StartAnalyticsArtifactMultipartUploadNotFound Error + +func (*StartAnalyticsArtifactMultipartUploadNotFound) startAnalyticsArtifactMultipartUploadRes() {} + +type StartAnalyticsArtifactMultipartUploadUnauthorized Error + +func (*StartAnalyticsArtifactMultipartUploadUnauthorized) startAnalyticsArtifactMultipartUploadRes() { +} + +type StartCacheArtifactMultipartUploadForbidden Error + +func (*StartCacheArtifactMultipartUploadForbidden) startCacheArtifactMultipartUploadRes() {} + +type StartCacheArtifactMultipartUploadNotFound Error + +func (*StartCacheArtifactMultipartUploadNotFound) startCacheArtifactMultipartUploadRes() {} + +type StartCacheArtifactMultipartUploadPaymentRequired Error + +func (*StartCacheArtifactMultipartUploadPaymentRequired) startCacheArtifactMultipartUploadRes() {} + +type StartCacheArtifactMultipartUploadUnauthorized Error + +func (*StartCacheArtifactMultipartUploadUnauthorized) startCacheArtifactMultipartUploadRes() {} + +type StartPreviewsMultipartUploadForbidden Error + +func (*StartPreviewsMultipartUploadForbidden) startPreviewsMultipartUploadRes() {} + +type StartPreviewsMultipartUploadNotFound Error + +func (*StartPreviewsMultipartUploadNotFound) startPreviewsMultipartUploadRes() {} + +// The upload has been initiated and preview and upload unique identifier are returned to upload the +// various parts using multi-part uploads. +type StartPreviewsMultipartUploadOK struct { + // Data that contains preview and upload unique identifier associated with the multipart upload to + // use when uploading parts. + Data StartPreviewsMultipartUploadOKData `json:"data"` + Status StartPreviewsMultipartUploadOKStatus `json:"status"` +} + +// GetData returns the value of Data. +func (s *StartPreviewsMultipartUploadOK) GetData() StartPreviewsMultipartUploadOKData { + return s.Data +} + +// GetStatus returns the value of Status. +func (s *StartPreviewsMultipartUploadOK) GetStatus() StartPreviewsMultipartUploadOKStatus { + return s.Status +} + +// SetData sets the value of Data. +func (s *StartPreviewsMultipartUploadOK) SetData(val StartPreviewsMultipartUploadOKData) { + s.Data = val +} + +// SetStatus sets the value of Status. +func (s *StartPreviewsMultipartUploadOK) SetStatus(val StartPreviewsMultipartUploadOKStatus) { + s.Status = val +} + +func (*StartPreviewsMultipartUploadOK) startPreviewsMultipartUploadRes() {} + +// Data that contains preview and upload unique identifier associated with the multipart upload to +// use when uploading parts. +type StartPreviewsMultipartUploadOKData struct { + // The id of the preview. + PreviewID string `json:"preview_id"` + // The upload ID. + UploadID string `json:"upload_id"` +} + +// GetPreviewID returns the value of PreviewID. +func (s *StartPreviewsMultipartUploadOKData) GetPreviewID() string { + return s.PreviewID +} + +// GetUploadID returns the value of UploadID. +func (s *StartPreviewsMultipartUploadOKData) GetUploadID() string { + return s.UploadID +} + +// SetPreviewID sets the value of PreviewID. +func (s *StartPreviewsMultipartUploadOKData) SetPreviewID(val string) { + s.PreviewID = val +} + +// SetUploadID sets the value of UploadID. +func (s *StartPreviewsMultipartUploadOKData) SetUploadID(val string) { + s.UploadID = val +} + +type StartPreviewsMultipartUploadOKStatus string + +const ( + StartPreviewsMultipartUploadOKStatusSuccess StartPreviewsMultipartUploadOKStatus = "success" +) + +// AllValues returns all StartPreviewsMultipartUploadOKStatus values. +func (StartPreviewsMultipartUploadOKStatus) AllValues() []StartPreviewsMultipartUploadOKStatus { + return []StartPreviewsMultipartUploadOKStatus{ + StartPreviewsMultipartUploadOKStatusSuccess, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s StartPreviewsMultipartUploadOKStatus) MarshalText() ([]byte, error) { + switch s { + case StartPreviewsMultipartUploadOKStatusSuccess: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *StartPreviewsMultipartUploadOKStatus) UnmarshalText(data []byte) error { + switch StartPreviewsMultipartUploadOKStatus(data) { + case StartPreviewsMultipartUploadOKStatusSuccess: + *s = StartPreviewsMultipartUploadOKStatusSuccess + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type StartPreviewsMultipartUploadReq struct { + // The display name of the preview. + DisplayName OptString `json:"display_name"` +} + +// GetDisplayName returns the value of DisplayName. +func (s *StartPreviewsMultipartUploadReq) GetDisplayName() OptString { + return s.DisplayName +} + +// SetDisplayName sets the value of DisplayName. +func (s *StartPreviewsMultipartUploadReq) SetDisplayName(val OptString) { + s.DisplayName = val +} + +type StartPreviewsMultipartUploadUnauthorized Error + +func (*StartPreviewsMultipartUploadUnauthorized) startPreviewsMultipartUploadRes() {} + +type UpdateOrganization2BadRequest Error + +func (*UpdateOrganization2BadRequest) updateOrganization2Res() {} + +type UpdateOrganization2Forbidden Error + +func (*UpdateOrganization2Forbidden) updateOrganization2Res() {} + +type UpdateOrganization2NotFound Error + +func (*UpdateOrganization2NotFound) updateOrganization2Res() {} + +type UpdateOrganization2Req struct { + // The SSO organization ID to be associated with the SSO provider. + SSOOrganizationID OptNilString `json:"sso_organization_id"` + // The SSO provider to set up for the organization. + SSOProvider OptUpdateOrganization2ReqSSOProvider `json:"sso_provider"` +} + +// GetSSOOrganizationID returns the value of SSOOrganizationID. +func (s *UpdateOrganization2Req) GetSSOOrganizationID() OptNilString { + return s.SSOOrganizationID +} + +// GetSSOProvider returns the value of SSOProvider. +func (s *UpdateOrganization2Req) GetSSOProvider() OptUpdateOrganization2ReqSSOProvider { + return s.SSOProvider +} + +// SetSSOOrganizationID sets the value of SSOOrganizationID. +func (s *UpdateOrganization2Req) SetSSOOrganizationID(val OptNilString) { + s.SSOOrganizationID = val +} + +// SetSSOProvider sets the value of SSOProvider. +func (s *UpdateOrganization2Req) SetSSOProvider(val OptUpdateOrganization2ReqSSOProvider) { + s.SSOProvider = val +} + +// The SSO provider to set up for the organization. +type UpdateOrganization2ReqSSOProvider string + +const ( + UpdateOrganization2ReqSSOProviderGoogle UpdateOrganization2ReqSSOProvider = "google" + UpdateOrganization2ReqSSOProviderNone UpdateOrganization2ReqSSOProvider = "none" +) + +// AllValues returns all UpdateOrganization2ReqSSOProvider values. +func (UpdateOrganization2ReqSSOProvider) AllValues() []UpdateOrganization2ReqSSOProvider { + return []UpdateOrganization2ReqSSOProvider{ + UpdateOrganization2ReqSSOProviderGoogle, + UpdateOrganization2ReqSSOProviderNone, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s UpdateOrganization2ReqSSOProvider) MarshalText() ([]byte, error) { + switch s { + case UpdateOrganization2ReqSSOProviderGoogle: + return []byte(s), nil + case UpdateOrganization2ReqSSOProviderNone: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *UpdateOrganization2ReqSSOProvider) UnmarshalText(data []byte) error { + switch UpdateOrganization2ReqSSOProvider(data) { + case UpdateOrganization2ReqSSOProviderGoogle: + *s = UpdateOrganization2ReqSSOProviderGoogle + return nil + case UpdateOrganization2ReqSSOProviderNone: + *s = UpdateOrganization2ReqSSOProviderNone + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type UpdateOrganization2Unauthorized Error + +func (*UpdateOrganization2Unauthorized) updateOrganization2Res() {} + +type UpdateOrganizationBadRequest Error + +func (*UpdateOrganizationBadRequest) updateOrganizationRes() {} + +type UpdateOrganizationForbidden Error + +func (*UpdateOrganizationForbidden) updateOrganizationRes() {} + +type UpdateOrganizationMemberBadRequest Error + +func (*UpdateOrganizationMemberBadRequest) updateOrganizationMemberRes() {} + +type UpdateOrganizationMemberForbidden Error + +func (*UpdateOrganizationMemberForbidden) updateOrganizationMemberRes() {} + +type UpdateOrganizationMemberNotFound Error + +func (*UpdateOrganizationMemberNotFound) updateOrganizationMemberRes() {} + +type UpdateOrganizationMemberReq struct { + // The role to update the member to. + Role UpdateOrganizationMemberReqRole `json:"role"` +} + +// GetRole returns the value of Role. +func (s *UpdateOrganizationMemberReq) GetRole() UpdateOrganizationMemberReqRole { + return s.Role +} + +// SetRole sets the value of Role. +func (s *UpdateOrganizationMemberReq) SetRole(val UpdateOrganizationMemberReqRole) { + s.Role = val +} + +// The role to update the member to. +type UpdateOrganizationMemberReqRole string + +const ( + UpdateOrganizationMemberReqRoleAdmin UpdateOrganizationMemberReqRole = "admin" + UpdateOrganizationMemberReqRoleUser UpdateOrganizationMemberReqRole = "user" +) + +// AllValues returns all UpdateOrganizationMemberReqRole values. +func (UpdateOrganizationMemberReqRole) AllValues() []UpdateOrganizationMemberReqRole { + return []UpdateOrganizationMemberReqRole{ + UpdateOrganizationMemberReqRoleAdmin, + UpdateOrganizationMemberReqRoleUser, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s UpdateOrganizationMemberReqRole) MarshalText() ([]byte, error) { + switch s { + case UpdateOrganizationMemberReqRoleAdmin: + return []byte(s), nil + case UpdateOrganizationMemberReqRoleUser: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *UpdateOrganizationMemberReqRole) UnmarshalText(data []byte) error { + switch UpdateOrganizationMemberReqRole(data) { + case UpdateOrganizationMemberReqRoleAdmin: + *s = UpdateOrganizationMemberReqRoleAdmin + return nil + case UpdateOrganizationMemberReqRoleUser: + *s = UpdateOrganizationMemberReqRoleUser + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type UpdateOrganizationMemberUnauthorized Error + +func (*UpdateOrganizationMemberUnauthorized) updateOrganizationMemberRes() {} + +type UpdateOrganizationNotFound Error + +func (*UpdateOrganizationNotFound) updateOrganizationRes() {} + +type UpdateOrganizationReq struct { + // The SSO organization ID to be associated with the SSO provider. + SSOOrganizationID OptNilString `json:"sso_organization_id"` + // The SSO provider to set up for the organization. + SSOProvider OptUpdateOrganizationReqSSOProvider `json:"sso_provider"` +} + +// GetSSOOrganizationID returns the value of SSOOrganizationID. +func (s *UpdateOrganizationReq) GetSSOOrganizationID() OptNilString { + return s.SSOOrganizationID +} + +// GetSSOProvider returns the value of SSOProvider. +func (s *UpdateOrganizationReq) GetSSOProvider() OptUpdateOrganizationReqSSOProvider { + return s.SSOProvider +} + +// SetSSOOrganizationID sets the value of SSOOrganizationID. +func (s *UpdateOrganizationReq) SetSSOOrganizationID(val OptNilString) { + s.SSOOrganizationID = val +} + +// SetSSOProvider sets the value of SSOProvider. +func (s *UpdateOrganizationReq) SetSSOProvider(val OptUpdateOrganizationReqSSOProvider) { + s.SSOProvider = val +} + +// The SSO provider to set up for the organization. +type UpdateOrganizationReqSSOProvider string + +const ( + UpdateOrganizationReqSSOProviderGoogle UpdateOrganizationReqSSOProvider = "google" + UpdateOrganizationReqSSOProviderNone UpdateOrganizationReqSSOProvider = "none" +) + +// AllValues returns all UpdateOrganizationReqSSOProvider values. +func (UpdateOrganizationReqSSOProvider) AllValues() []UpdateOrganizationReqSSOProvider { + return []UpdateOrganizationReqSSOProvider{ + UpdateOrganizationReqSSOProviderGoogle, + UpdateOrganizationReqSSOProviderNone, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s UpdateOrganizationReqSSOProvider) MarshalText() ([]byte, error) { + switch s { + case UpdateOrganizationReqSSOProviderGoogle: + return []byte(s), nil + case UpdateOrganizationReqSSOProviderNone: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *UpdateOrganizationReqSSOProvider) UnmarshalText(data []byte) error { + switch UpdateOrganizationReqSSOProvider(data) { + case UpdateOrganizationReqSSOProviderGoogle: + *s = UpdateOrganizationReqSSOProviderGoogle + return nil + case UpdateOrganizationReqSSOProviderNone: + *s = UpdateOrganizationReqSSOProviderNone + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type UpdateOrganizationUnauthorized Error + +func (*UpdateOrganizationUnauthorized) updateOrganizationRes() {} + +type UpdateProjectBadRequest Error + +func (*UpdateProjectBadRequest) updateProjectRes() {} + +type UpdateProjectForbidden Error + +func (*UpdateProjectForbidden) updateProjectRes() {} + +type UpdateProjectNotFound Error + +func (*UpdateProjectNotFound) updateProjectRes() {} + +type UpdateProjectReq struct { + // The default branch for the project. + DefaultBranch OptString `json:"default_branch"` + // The repository URL for the project. + RepositoryURL OptString `json:"repository_url"` +} + +// GetDefaultBranch returns the value of DefaultBranch. +func (s *UpdateProjectReq) GetDefaultBranch() OptString { + return s.DefaultBranch +} + +// GetRepositoryURL returns the value of RepositoryURL. +func (s *UpdateProjectReq) GetRepositoryURL() OptString { + return s.RepositoryURL +} + +// SetDefaultBranch sets the value of DefaultBranch. +func (s *UpdateProjectReq) SetDefaultBranch(val OptString) { + s.DefaultBranch = val +} + +// SetRepositoryURL sets the value of RepositoryURL. +func (s *UpdateProjectReq) SetRepositoryURL(val OptString) { + s.RepositoryURL = val +} + +type UpdateProjectUnauthorized Error + +func (*UpdateProjectUnauthorized) updateProjectRes() {} + +type UploadCacheActionItemBadRequest Error + +func (*UploadCacheActionItemBadRequest) uploadCacheActionItemRes() {} + +type UploadCacheActionItemCreated CacheActionItem + +func (*UploadCacheActionItemCreated) uploadCacheActionItemRes() {} + +type UploadCacheActionItemForbidden Error + +func (*UploadCacheActionItemForbidden) uploadCacheActionItemRes() {} + +type UploadCacheActionItemNotFound Error + +func (*UploadCacheActionItemNotFound) uploadCacheActionItemRes() {} + +type UploadCacheActionItemOK CacheActionItem + +func (*UploadCacheActionItemOK) uploadCacheActionItemRes() {} + +type UploadCacheActionItemPaymentRequired Error + +func (*UploadCacheActionItemPaymentRequired) uploadCacheActionItemRes() {} + +type UploadCacheActionItemReq struct { + // The hash of the cache action item. + Hash OptString `json:"hash"` +} + +// GetHash returns the value of Hash. +func (s *UploadCacheActionItemReq) GetHash() OptString { + return s.Hash +} + +// SetHash sets the value of Hash. +func (s *UploadCacheActionItemReq) SetHash(val OptString) { + s.Hash = val +} + +type UploadCacheActionItemUnauthorized Error + +func (*UploadCacheActionItemUnauthorized) uploadCacheActionItemRes() {} + +// A user. +// Ref: #/components/schemas/User +type User struct { + // The user's email. + Email string `json:"email"` + // The user's unique identifier. + ID float64 `json:"id"` + // The user's name. + Name string `json:"name"` +} + +// GetEmail returns the value of Email. +func (s *User) GetEmail() string { + return s.Email +} + +// GetID returns the value of ID. +func (s *User) GetID() float64 { + return s.ID +} + +// GetName returns the value of Name. +func (s *User) GetName() string { + return s.Name +} + +// SetEmail sets the value of Email. +func (s *User) SetEmail(val string) { + s.Email = val +} + +// SetID sets the value of ID. +func (s *User) SetID(val float64) { + s.ID = val +} + +// SetName sets the value of Name. +func (s *User) SetName(val string) { + s.Name = val +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_security_gen.go b/internal/agent/http_cache/tuistcache/api/oas_security_gen.go new file mode 100644 index 00000000..5c9d76eb --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_security_gen.go @@ -0,0 +1,101 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + "net/http" + "strings" + + "github.com/go-faster/errors" + + "github.com/ogen-go/ogen/ogenerrors" +) + +// SecurityHandler is handler for security parameters. +type SecurityHandler interface { + // HandleAuthorization handles authorization security. + HandleAuthorization(ctx context.Context, operationName string, t Authorization) (context.Context, error) + // HandleCookie handles cookie security. + HandleCookie(ctx context.Context, operationName string, t Cookie) (context.Context, error) +} + +func findAuthorization(h http.Header, prefix string) (string, bool) { + v, ok := h["Authorization"] + if !ok { + return "", false + } + for _, vv := range v { + scheme, value, ok := strings.Cut(vv, " ") + if !ok || !strings.EqualFold(scheme, prefix) { + continue + } + return value, true + } + return "", false +} + +func (s *Server) securityAuthorization(ctx context.Context, operationName string, req *http.Request) (context.Context, bool, error) { + var t Authorization + token, ok := findAuthorization(req.Header, "Bearer") + if !ok { + return ctx, false, nil + } + t.Token = token + rctx, err := s.sec.HandleAuthorization(ctx, operationName, t) + if errors.Is(err, ogenerrors.ErrSkipServerSecurity) { + return nil, false, nil + } else if err != nil { + return nil, false, err + } + return rctx, true, err +} +func (s *Server) securityCookie(ctx context.Context, operationName string, req *http.Request) (context.Context, bool, error) { + var t Cookie + const parameterName = "_tuist_cloud_key" + var value string + switch cookie, err := req.Cookie(parameterName); { + case err == nil: // if NO error + value = cookie.Value + case errors.Is(err, http.ErrNoCookie): + return ctx, false, nil + default: + return nil, false, errors.Wrap(err, "get cookie value") + } + t.APIKey = value + rctx, err := s.sec.HandleCookie(ctx, operationName, t) + if errors.Is(err, ogenerrors.ErrSkipServerSecurity) { + return nil, false, nil + } else if err != nil { + return nil, false, err + } + return rctx, true, err +} + +// SecuritySource is provider of security values (tokens, passwords, etc.). +type SecuritySource interface { + // Authorization provides authorization security value. + Authorization(ctx context.Context, operationName string) (Authorization, error) + // Cookie provides cookie security value. + Cookie(ctx context.Context, operationName string) (Cookie, error) +} + +func (s *Client) securityAuthorization(ctx context.Context, operationName string, req *http.Request) error { + t, err := s.sec.Authorization(ctx, operationName) + if err != nil { + return errors.Wrap(err, "security source \"Authorization\"") + } + req.Header.Set("Authorization", "Bearer "+t.Token) + return nil +} +func (s *Client) securityCookie(ctx context.Context, operationName string, req *http.Request) error { + t, err := s.sec.Cookie(ctx, operationName) + if err != nil { + return errors.Wrap(err, "security source \"Cookie\"") + } + req.AddCookie(&http.Cookie{ + Name: "_tuist_cloud_key", + Value: t.APIKey, + }) + return nil +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_server_gen.go b/internal/agent/http_cache/tuistcache/api/oas_server_gen.go new file mode 100644 index 00000000..26701097 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_server_gen.go @@ -0,0 +1,268 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" +) + +// Handler handles operations described by OpenAPI v3 specification. +type Handler interface { + // Authenticate implements authenticate operation. + // + // This endpoint returns API tokens for a given email and password. + // + // POST /api/auth + Authenticate(ctx context.Context, req OptAuthenticateReq) (AuthenticateRes, error) + // CacheArtifactExists implements cacheArtifactExists operation. + // + // This endpoint checks if an artifact exists in the cache. It returns a 404 status code if the + // artifact does not exist. + // + // Deprecated: schema marks this operation as deprecated. + // + // GET /api/cache/exists + CacheArtifactExists(ctx context.Context, params CacheArtifactExistsParams) (CacheArtifactExistsRes, error) + // CleanCache implements cleanCache operation. + // + // Cleans cache for a given project. + // + // PUT /api/projects/{account_handle}/{project_handle}/cache/clean + CleanCache(ctx context.Context, params CleanCacheParams) (CleanCacheRes, error) + // CompleteAnalyticsArtifactMultipartUpload implements completeAnalyticsArtifactMultipartUpload operation. + // + // Given the upload ID and all the parts with their ETags, this endpoint completes the multipart + // upload. + // + // POST /api/runs/{run_id}/complete + CompleteAnalyticsArtifactMultipartUpload(ctx context.Context, req OptCompleteAnalyticsArtifactMultipartUploadReq, params CompleteAnalyticsArtifactMultipartUploadParams) (CompleteAnalyticsArtifactMultipartUploadRes, error) + // CompleteAnalyticsArtifactsUploads implements completeAnalyticsArtifactsUploads operation. + // + // Given a command event, it marks all artifact uploads as finished and does extra processing of a + // given command run, such as test flakiness detection. + // + // PUT /api/runs/{run_id}/complete_artifacts_uploads + CompleteAnalyticsArtifactsUploads(ctx context.Context, req OptCompleteAnalyticsArtifactsUploadsReq, params CompleteAnalyticsArtifactsUploadsParams) (CompleteAnalyticsArtifactsUploadsRes, error) + // CompleteCacheArtifactMultipartUpload implements completeCacheArtifactMultipartUpload operation. + // + // Given the upload ID and all the parts with their ETags, this endpoint completes the multipart + // upload. The cache will then be able to serve the artifact. + // + // POST /api/cache/multipart/complete + CompleteCacheArtifactMultipartUpload(ctx context.Context, req OptCompleteCacheArtifactMultipartUploadReq, params CompleteCacheArtifactMultipartUploadParams) (CompleteCacheArtifactMultipartUploadRes, error) + // CompletePreviewsMultipartUpload implements completePreviewsMultipartUpload operation. + // + // Given the upload ID and all the parts with their ETags, this endpoint completes the multipart + // upload. + // + // POST /api/projects/{account_handle}/{project_handle}/previews/complete + CompletePreviewsMultipartUpload(ctx context.Context, req OptCompletePreviewsMultipartUploadReq, params CompletePreviewsMultipartUploadParams) (CompletePreviewsMultipartUploadRes, error) + // CreateCommandEvent implements createCommandEvent operation. + // + // Create a a new command analytics event. + // + // POST /api/analytics + CreateCommandEvent(ctx context.Context, req OptCreateCommandEventReq, params CreateCommandEventParams) (CreateCommandEventRes, error) + // CreateInvitation implements createInvitation operation. + // + // Invites a user with a given email to a given organization. + // + // POST /api/organizations/{organization_name}/invitations + CreateInvitation(ctx context.Context, req OptCreateInvitationReq, params CreateInvitationParams) (CreateInvitationRes, error) + // CreateOrganization implements createOrganization operation. + // + // Creates an organization with the given name. + // + // POST /api/organizations + CreateOrganization(ctx context.Context, req OptCreateOrganizationReq) (CreateOrganizationRes, error) + // CreateProject implements createProject operation. + // + // Create a new project. + // + // POST /api/projects + CreateProject(ctx context.Context, req OptCreateProjectReq) (CreateProjectRes, error) + // CreateProjectToken implements createProjectToken operation. + // + // This endpoint returns a new project token. + // + // POST /api/projects/{account_handle}/{project_handle}/tokens + CreateProjectToken(ctx context.Context, params CreateProjectTokenParams) (CreateProjectTokenRes, error) + // DeleteOrganization implements deleteOrganization operation. + // + // Deletes the organization with the given name. + // + // DELETE /api/organizations/{organization_name} + DeleteOrganization(ctx context.Context, params DeleteOrganizationParams) (DeleteOrganizationRes, error) + // DeleteProject implements deleteProject operation. + // + // Deletes a project with a given id. + // + // DELETE /api/projects/{id} + DeleteProject(ctx context.Context, params DeleteProjectParams) (DeleteProjectRes, error) + // DownloadCacheArtifact implements downloadCacheArtifact operation. + // + // This endpoint returns a signed URL that can be used to download an artifact from the cache. + // + // GET /api/cache + DownloadCacheArtifact(ctx context.Context, params DownloadCacheArtifactParams) (DownloadCacheArtifactRes, error) + // DownloadPreview implements downloadPreview operation. + // + // This endpoint returns a signed URL that can be used to download a preview. + // + // GET /api/projects/{account_handle}/{project_handle}/previews/{preview_id} + DownloadPreview(ctx context.Context, params DownloadPreviewParams) (DownloadPreviewRes, error) + // GenerateAnalyticsArtifactMultipartUploadURL implements generateAnalyticsArtifactMultipartUploadURL operation. + // + // Given an upload ID and a part number, this endpoint returns a signed URL that can be used to + // upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. + // + // POST /api/runs/{run_id}/generate-url + GenerateAnalyticsArtifactMultipartUploadURL(ctx context.Context, req OptGenerateAnalyticsArtifactMultipartUploadURLReq, params GenerateAnalyticsArtifactMultipartUploadURLParams) (GenerateAnalyticsArtifactMultipartUploadURLRes, error) + // GenerateCacheArtifactMultipartUploadURL implements generateCacheArtifactMultipartUploadURL operation. + // + // Given an upload ID and a part number, this endpoint returns a signed URL that can be used to + // upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. + // + // POST /api/cache/multipart/generate-url + GenerateCacheArtifactMultipartUploadURL(ctx context.Context, params GenerateCacheArtifactMultipartUploadURLParams) (GenerateCacheArtifactMultipartUploadURLRes, error) + // GeneratePreviewsMultipartUploadURL implements generatePreviewsMultipartUploadURL operation. + // + // Given an upload ID and a part number, this endpoint returns a signed URL that can be used to + // upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. + // + // POST /api/projects/{account_handle}/{project_handle}/previews/generate-url + GeneratePreviewsMultipartUploadURL(ctx context.Context, req OptGeneratePreviewsMultipartUploadURLReq, params GeneratePreviewsMultipartUploadURLParams) (GeneratePreviewsMultipartUploadURLRes, error) + // GetCacheActionItem implements getCacheActionItem operation. + // + // This endpoint gets an item from the action cache. + // + // GET /api/projects/{account_handle}/{project_handle}/cache/ac/{hash} + GetCacheActionItem(ctx context.Context, params GetCacheActionItemParams) (GetCacheActionItemRes, error) + // GetDeviceCode implements getDeviceCode operation. + // + // This endpoint returns a token for a given device code if the device code is authenticated. + // + // GET /api/auth/device_code/{device_code} + GetDeviceCode(ctx context.Context, params GetDeviceCodeParams) (GetDeviceCodeRes, error) + // ListOrganizations implements listOrganizations operation. + // + // Returns all the organizations the authenticated subject is part of. + // + // GET /api/organizations + ListOrganizations(ctx context.Context) (ListOrganizationsRes, error) + // ListProjectTokens implements listProjectTokens operation. + // + // This endpoint returns all tokens for a given project. + // + // GET /api/projects/{account_handle}/{project_handle}/tokens + ListProjectTokens(ctx context.Context, params ListProjectTokensParams) (ListProjectTokensRes, error) + // ListProjects implements listProjects operation. + // + // List projects the authenticated user has access to. + // + // GET /api/projects + ListProjects(ctx context.Context) (ListProjectsRes, error) + // RefreshToken implements refreshToken operation. + // + // This endpoint returns new tokens for a given refresh token if the refresh token is valid. + // + // POST /api/auth/refresh_token + RefreshToken(ctx context.Context, req OptRefreshTokenReq) (RefreshTokenRes, error) + // RevokeProjectToken implements revokeProjectToken operation. + // + // Revokes a project token. + // + // DELETE /api/projects/{account_handle}/{project_handle}/tokens/{id} + RevokeProjectToken(ctx context.Context, params RevokeProjectTokenParams) (RevokeProjectTokenRes, error) + // ShowOrganization implements showOrganization operation. + // + // Returns the organization with the given identifier. + // + // GET /api/organizations/{organization_name} + ShowOrganization(ctx context.Context, params ShowOrganizationParams) (ShowOrganizationRes, error) + // ShowOrganizationUsage implements showOrganizationUsage operation. + // + // Returns the usage of the organization with the given identifier. (e.g. number of remote cache hits). + // + // GET /api/organizations/{organization_name}/usage + ShowOrganizationUsage(ctx context.Context, params ShowOrganizationUsageParams) (ShowOrganizationUsageRes, error) + // ShowProject implements showProject operation. + // + // Returns a project based on the handle. + // + // GET /api/projects/{account_handle}/{project_handle} + ShowProject(ctx context.Context, params ShowProjectParams) (ShowProjectRes, error) + // StartAnalyticsArtifactMultipartUpload implements startAnalyticsArtifactMultipartUpload operation. + // + // The endpoint returns an upload ID that can be used to generate URLs for the individual parts and + // complete the upload. + // + // POST /api/runs/{run_id}/start + StartAnalyticsArtifactMultipartUpload(ctx context.Context, req CommandEventArtifact, params StartAnalyticsArtifactMultipartUploadParams) (StartAnalyticsArtifactMultipartUploadRes, error) + // StartCacheArtifactMultipartUpload implements startCacheArtifactMultipartUpload operation. + // + // The endpoint returns an upload ID that can be used to generate URLs for the individual parts and + // complete the upload. + // + // POST /api/cache/multipart/start + StartCacheArtifactMultipartUpload(ctx context.Context, params StartCacheArtifactMultipartUploadParams) (StartCacheArtifactMultipartUploadRes, error) + // StartPreviewsMultipartUpload implements startPreviewsMultipartUpload operation. + // + // The endpoint returns an upload ID that can be used to generate URLs for the individual parts and + // complete the upload. + // + // POST /api/projects/{account_handle}/{project_handle}/previews/start + StartPreviewsMultipartUpload(ctx context.Context, req OptStartPreviewsMultipartUploadReq, params StartPreviewsMultipartUploadParams) (StartPreviewsMultipartUploadRes, error) + // UpdateOrganization implements updateOrganization operation. + // + // Updates an organization with given parameters. + // + // PUT /api/organizations/{organization_name} + UpdateOrganization(ctx context.Context, req OptUpdateOrganizationReq, params UpdateOrganizationParams) (UpdateOrganizationRes, error) + // UpdateOrganization2 implements updateOrganization (2) operation. + // + // Updates an organization with given parameters. + // + // PATCH /api/organizations/{organization_name} + UpdateOrganization2(ctx context.Context, req OptUpdateOrganization2Req, params UpdateOrganization2Params) (UpdateOrganization2Res, error) + // UpdateOrganizationMember implements updateOrganizationMember operation. + // + // Updates a member in a given organization. + // + // PUT /api/organizations/{organization_name}/members/{user_name} + UpdateOrganizationMember(ctx context.Context, req OptUpdateOrganizationMemberReq, params UpdateOrganizationMemberParams) (UpdateOrganizationMemberRes, error) + // UpdateProject implements updateProject operation. + // + // Updates a project with given parameters. + // + // PUT /api/projects/{account_handle}/{project_handle} + UpdateProject(ctx context.Context, req OptUpdateProjectReq, params UpdateProjectParams) (UpdateProjectRes, error) + // UploadCacheActionItem implements uploadCacheActionItem operation. + // + // The endpoint caches a given action item without uploading a file. To upload files, use the + // multipart upload instead. + // + // POST /api/projects/{account_handle}/{project_handle}/cache/ac + UploadCacheActionItem(ctx context.Context, req OptUploadCacheActionItemReq, params UploadCacheActionItemParams) (UploadCacheActionItemRes, error) +} + +// Server implements http server based on OpenAPI v3 specification and +// calls Handler to handle requests. +type Server struct { + h Handler + sec SecurityHandler + baseServer +} + +// NewServer creates new Server. +func NewServer(h Handler, sec SecurityHandler, opts ...ServerOption) (*Server, error) { + s, err := newServerConfig(opts...).baseServer() + if err != nil { + return nil, err + } + return &Server{ + h: h, + sec: sec, + baseServer: s, + }, nil +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_unimplemented_gen.go b/internal/agent/http_cache/tuistcache/api/oas_unimplemented_gen.go new file mode 100644 index 00000000..c54adf8d --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_unimplemented_gen.go @@ -0,0 +1,361 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + + ht "github.com/ogen-go/ogen/http" +) + +// UnimplementedHandler is no-op Handler which returns http.ErrNotImplemented. +type UnimplementedHandler struct{} + +var _ Handler = UnimplementedHandler{} + +// Authenticate implements authenticate operation. +// +// This endpoint returns API tokens for a given email and password. +// +// POST /api/auth +func (UnimplementedHandler) Authenticate(ctx context.Context, req OptAuthenticateReq) (r AuthenticateRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CacheArtifactExists implements cacheArtifactExists operation. +// +// This endpoint checks if an artifact exists in the cache. It returns a 404 status code if the +// artifact does not exist. +// +// Deprecated: schema marks this operation as deprecated. +// +// GET /api/cache/exists +func (UnimplementedHandler) CacheArtifactExists(ctx context.Context, params CacheArtifactExistsParams) (r CacheArtifactExistsRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CleanCache implements cleanCache operation. +// +// Cleans cache for a given project. +// +// PUT /api/projects/{account_handle}/{project_handle}/cache/clean +func (UnimplementedHandler) CleanCache(ctx context.Context, params CleanCacheParams) (r CleanCacheRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CompleteAnalyticsArtifactMultipartUpload implements completeAnalyticsArtifactMultipartUpload operation. +// +// Given the upload ID and all the parts with their ETags, this endpoint completes the multipart +// upload. +// +// POST /api/runs/{run_id}/complete +func (UnimplementedHandler) CompleteAnalyticsArtifactMultipartUpload(ctx context.Context, req OptCompleteAnalyticsArtifactMultipartUploadReq, params CompleteAnalyticsArtifactMultipartUploadParams) (r CompleteAnalyticsArtifactMultipartUploadRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CompleteAnalyticsArtifactsUploads implements completeAnalyticsArtifactsUploads operation. +// +// Given a command event, it marks all artifact uploads as finished and does extra processing of a +// given command run, such as test flakiness detection. +// +// PUT /api/runs/{run_id}/complete_artifacts_uploads +func (UnimplementedHandler) CompleteAnalyticsArtifactsUploads(ctx context.Context, req OptCompleteAnalyticsArtifactsUploadsReq, params CompleteAnalyticsArtifactsUploadsParams) (r CompleteAnalyticsArtifactsUploadsRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CompleteCacheArtifactMultipartUpload implements completeCacheArtifactMultipartUpload operation. +// +// Given the upload ID and all the parts with their ETags, this endpoint completes the multipart +// upload. The cache will then be able to serve the artifact. +// +// POST /api/cache/multipart/complete +func (UnimplementedHandler) CompleteCacheArtifactMultipartUpload(ctx context.Context, req OptCompleteCacheArtifactMultipartUploadReq, params CompleteCacheArtifactMultipartUploadParams) (r CompleteCacheArtifactMultipartUploadRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CompletePreviewsMultipartUpload implements completePreviewsMultipartUpload operation. +// +// Given the upload ID and all the parts with their ETags, this endpoint completes the multipart +// upload. +// +// POST /api/projects/{account_handle}/{project_handle}/previews/complete +func (UnimplementedHandler) CompletePreviewsMultipartUpload(ctx context.Context, req OptCompletePreviewsMultipartUploadReq, params CompletePreviewsMultipartUploadParams) (r CompletePreviewsMultipartUploadRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CreateCommandEvent implements createCommandEvent operation. +// +// Create a a new command analytics event. +// +// POST /api/analytics +func (UnimplementedHandler) CreateCommandEvent(ctx context.Context, req OptCreateCommandEventReq, params CreateCommandEventParams) (r CreateCommandEventRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CreateInvitation implements createInvitation operation. +// +// Invites a user with a given email to a given organization. +// +// POST /api/organizations/{organization_name}/invitations +func (UnimplementedHandler) CreateInvitation(ctx context.Context, req OptCreateInvitationReq, params CreateInvitationParams) (r CreateInvitationRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CreateOrganization implements createOrganization operation. +// +// Creates an organization with the given name. +// +// POST /api/organizations +func (UnimplementedHandler) CreateOrganization(ctx context.Context, req OptCreateOrganizationReq) (r CreateOrganizationRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CreateProject implements createProject operation. +// +// Create a new project. +// +// POST /api/projects +func (UnimplementedHandler) CreateProject(ctx context.Context, req OptCreateProjectReq) (r CreateProjectRes, _ error) { + return r, ht.ErrNotImplemented +} + +// CreateProjectToken implements createProjectToken operation. +// +// This endpoint returns a new project token. +// +// POST /api/projects/{account_handle}/{project_handle}/tokens +func (UnimplementedHandler) CreateProjectToken(ctx context.Context, params CreateProjectTokenParams) (r CreateProjectTokenRes, _ error) { + return r, ht.ErrNotImplemented +} + +// DeleteOrganization implements deleteOrganization operation. +// +// Deletes the organization with the given name. +// +// DELETE /api/organizations/{organization_name} +func (UnimplementedHandler) DeleteOrganization(ctx context.Context, params DeleteOrganizationParams) (r DeleteOrganizationRes, _ error) { + return r, ht.ErrNotImplemented +} + +// DeleteProject implements deleteProject operation. +// +// Deletes a project with a given id. +// +// DELETE /api/projects/{id} +func (UnimplementedHandler) DeleteProject(ctx context.Context, params DeleteProjectParams) (r DeleteProjectRes, _ error) { + return r, ht.ErrNotImplemented +} + +// DownloadCacheArtifact implements downloadCacheArtifact operation. +// +// This endpoint returns a signed URL that can be used to download an artifact from the cache. +// +// GET /api/cache +func (UnimplementedHandler) DownloadCacheArtifact(ctx context.Context, params DownloadCacheArtifactParams) (r DownloadCacheArtifactRes, _ error) { + return r, ht.ErrNotImplemented +} + +// DownloadPreview implements downloadPreview operation. +// +// This endpoint returns a signed URL that can be used to download a preview. +// +// GET /api/projects/{account_handle}/{project_handle}/previews/{preview_id} +func (UnimplementedHandler) DownloadPreview(ctx context.Context, params DownloadPreviewParams) (r DownloadPreviewRes, _ error) { + return r, ht.ErrNotImplemented +} + +// GenerateAnalyticsArtifactMultipartUploadURL implements generateAnalyticsArtifactMultipartUploadURL operation. +// +// Given an upload ID and a part number, this endpoint returns a signed URL that can be used to +// upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. +// +// POST /api/runs/{run_id}/generate-url +func (UnimplementedHandler) GenerateAnalyticsArtifactMultipartUploadURL(ctx context.Context, req OptGenerateAnalyticsArtifactMultipartUploadURLReq, params GenerateAnalyticsArtifactMultipartUploadURLParams) (r GenerateAnalyticsArtifactMultipartUploadURLRes, _ error) { + return r, ht.ErrNotImplemented +} + +// GenerateCacheArtifactMultipartUploadURL implements generateCacheArtifactMultipartUploadURL operation. +// +// Given an upload ID and a part number, this endpoint returns a signed URL that can be used to +// upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. +// +// POST /api/cache/multipart/generate-url +func (UnimplementedHandler) GenerateCacheArtifactMultipartUploadURL(ctx context.Context, params GenerateCacheArtifactMultipartUploadURLParams) (r GenerateCacheArtifactMultipartUploadURLRes, _ error) { + return r, ht.ErrNotImplemented +} + +// GeneratePreviewsMultipartUploadURL implements generatePreviewsMultipartUploadURL operation. +// +// Given an upload ID and a part number, this endpoint returns a signed URL that can be used to +// upload a part of a multipart upload. The URL is short-lived and expires in 120 seconds. +// +// POST /api/projects/{account_handle}/{project_handle}/previews/generate-url +func (UnimplementedHandler) GeneratePreviewsMultipartUploadURL(ctx context.Context, req OptGeneratePreviewsMultipartUploadURLReq, params GeneratePreviewsMultipartUploadURLParams) (r GeneratePreviewsMultipartUploadURLRes, _ error) { + return r, ht.ErrNotImplemented +} + +// GetCacheActionItem implements getCacheActionItem operation. +// +// This endpoint gets an item from the action cache. +// +// GET /api/projects/{account_handle}/{project_handle}/cache/ac/{hash} +func (UnimplementedHandler) GetCacheActionItem(ctx context.Context, params GetCacheActionItemParams) (r GetCacheActionItemRes, _ error) { + return r, ht.ErrNotImplemented +} + +// GetDeviceCode implements getDeviceCode operation. +// +// This endpoint returns a token for a given device code if the device code is authenticated. +// +// GET /api/auth/device_code/{device_code} +func (UnimplementedHandler) GetDeviceCode(ctx context.Context, params GetDeviceCodeParams) (r GetDeviceCodeRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ListOrganizations implements listOrganizations operation. +// +// Returns all the organizations the authenticated subject is part of. +// +// GET /api/organizations +func (UnimplementedHandler) ListOrganizations(ctx context.Context) (r ListOrganizationsRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ListProjectTokens implements listProjectTokens operation. +// +// This endpoint returns all tokens for a given project. +// +// GET /api/projects/{account_handle}/{project_handle}/tokens +func (UnimplementedHandler) ListProjectTokens(ctx context.Context, params ListProjectTokensParams) (r ListProjectTokensRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ListProjects implements listProjects operation. +// +// List projects the authenticated user has access to. +// +// GET /api/projects +func (UnimplementedHandler) ListProjects(ctx context.Context) (r ListProjectsRes, _ error) { + return r, ht.ErrNotImplemented +} + +// RefreshToken implements refreshToken operation. +// +// This endpoint returns new tokens for a given refresh token if the refresh token is valid. +// +// POST /api/auth/refresh_token +func (UnimplementedHandler) RefreshToken(ctx context.Context, req OptRefreshTokenReq) (r RefreshTokenRes, _ error) { + return r, ht.ErrNotImplemented +} + +// RevokeProjectToken implements revokeProjectToken operation. +// +// Revokes a project token. +// +// DELETE /api/projects/{account_handle}/{project_handle}/tokens/{id} +func (UnimplementedHandler) RevokeProjectToken(ctx context.Context, params RevokeProjectTokenParams) (r RevokeProjectTokenRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ShowOrganization implements showOrganization operation. +// +// Returns the organization with the given identifier. +// +// GET /api/organizations/{organization_name} +func (UnimplementedHandler) ShowOrganization(ctx context.Context, params ShowOrganizationParams) (r ShowOrganizationRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ShowOrganizationUsage implements showOrganizationUsage operation. +// +// Returns the usage of the organization with the given identifier. (e.g. number of remote cache hits). +// +// GET /api/organizations/{organization_name}/usage +func (UnimplementedHandler) ShowOrganizationUsage(ctx context.Context, params ShowOrganizationUsageParams) (r ShowOrganizationUsageRes, _ error) { + return r, ht.ErrNotImplemented +} + +// ShowProject implements showProject operation. +// +// Returns a project based on the handle. +// +// GET /api/projects/{account_handle}/{project_handle} +func (UnimplementedHandler) ShowProject(ctx context.Context, params ShowProjectParams) (r ShowProjectRes, _ error) { + return r, ht.ErrNotImplemented +} + +// StartAnalyticsArtifactMultipartUpload implements startAnalyticsArtifactMultipartUpload operation. +// +// The endpoint returns an upload ID that can be used to generate URLs for the individual parts and +// complete the upload. +// +// POST /api/runs/{run_id}/start +func (UnimplementedHandler) StartAnalyticsArtifactMultipartUpload(ctx context.Context, req CommandEventArtifact, params StartAnalyticsArtifactMultipartUploadParams) (r StartAnalyticsArtifactMultipartUploadRes, _ error) { + return r, ht.ErrNotImplemented +} + +// StartCacheArtifactMultipartUpload implements startCacheArtifactMultipartUpload operation. +// +// The endpoint returns an upload ID that can be used to generate URLs for the individual parts and +// complete the upload. +// +// POST /api/cache/multipart/start +func (UnimplementedHandler) StartCacheArtifactMultipartUpload(ctx context.Context, params StartCacheArtifactMultipartUploadParams) (r StartCacheArtifactMultipartUploadRes, _ error) { + return r, ht.ErrNotImplemented +} + +// StartPreviewsMultipartUpload implements startPreviewsMultipartUpload operation. +// +// The endpoint returns an upload ID that can be used to generate URLs for the individual parts and +// complete the upload. +// +// POST /api/projects/{account_handle}/{project_handle}/previews/start +func (UnimplementedHandler) StartPreviewsMultipartUpload(ctx context.Context, req OptStartPreviewsMultipartUploadReq, params StartPreviewsMultipartUploadParams) (r StartPreviewsMultipartUploadRes, _ error) { + return r, ht.ErrNotImplemented +} + +// UpdateOrganization implements updateOrganization operation. +// +// Updates an organization with given parameters. +// +// PUT /api/organizations/{organization_name} +func (UnimplementedHandler) UpdateOrganization(ctx context.Context, req OptUpdateOrganizationReq, params UpdateOrganizationParams) (r UpdateOrganizationRes, _ error) { + return r, ht.ErrNotImplemented +} + +// UpdateOrganization2 implements updateOrganization (2) operation. +// +// Updates an organization with given parameters. +// +// PATCH /api/organizations/{organization_name} +func (UnimplementedHandler) UpdateOrganization2(ctx context.Context, req OptUpdateOrganization2Req, params UpdateOrganization2Params) (r UpdateOrganization2Res, _ error) { + return r, ht.ErrNotImplemented +} + +// UpdateOrganizationMember implements updateOrganizationMember operation. +// +// Updates a member in a given organization. +// +// PUT /api/organizations/{organization_name}/members/{user_name} +func (UnimplementedHandler) UpdateOrganizationMember(ctx context.Context, req OptUpdateOrganizationMemberReq, params UpdateOrganizationMemberParams) (r UpdateOrganizationMemberRes, _ error) { + return r, ht.ErrNotImplemented +} + +// UpdateProject implements updateProject operation. +// +// Updates a project with given parameters. +// +// PUT /api/projects/{account_handle}/{project_handle} +func (UnimplementedHandler) UpdateProject(ctx context.Context, req OptUpdateProjectReq, params UpdateProjectParams) (r UpdateProjectRes, _ error) { + return r, ht.ErrNotImplemented +} + +// UploadCacheActionItem implements uploadCacheActionItem operation. +// +// The endpoint caches a given action item without uploading a file. To upload files, use the +// multipart upload instead. +// +// POST /api/projects/{account_handle}/{project_handle}/cache/ac +func (UnimplementedHandler) UploadCacheActionItem(ctx context.Context, req OptUploadCacheActionItemReq, params UploadCacheActionItemParams) (r UploadCacheActionItemRes, _ error) { + return r, ht.ErrNotImplemented +} diff --git a/internal/agent/http_cache/tuistcache/api/oas_validators_gen.go b/internal/agent/http_cache/tuistcache/api/oas_validators_gen.go new file mode 100644 index 00000000..59319d47 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/api/oas_validators_gen.go @@ -0,0 +1,905 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "fmt" + + "github.com/go-faster/errors" + + "github.com/ogen-go/ogen/validate" +) + +func (s *ArtifactMultipartUploadParts) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Parts == nil { + return errors.New("nil is invalid value") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "parts", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ArtifactMultipartUploadURL) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Status.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s ArtifactMultipartUploadURLStatus) Validate() error { + switch s { + case "success": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *ArtifactUploadID) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Status.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s ArtifactUploadIDStatus) Validate() error { + switch s { + case "success": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *CacheArtifactDownloadURL) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Status.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s CacheArtifactDownloadURLStatus) Validate() error { + switch s { + case "success": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *CacheArtifactExistsOK) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Status.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s CacheArtifactExistsOKStatus) Validate() error { + switch s { + case "success": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s CacheCategory) Validate() error { + switch s { + case "tests": + return nil + case "builds": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *CommandEvent) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.Float{}).Validate(float64(s.ID)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "id", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *CompleteAnalyticsArtifactMultipartUploadReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.MultipartUploadParts.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "multipart_upload_parts", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *CompleteAnalyticsArtifactsUploadsReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Modules == nil { + return errors.New("nil is invalid value") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "modules", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *CompleteCacheArtifactMultipartUploadOK) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.Status.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s CompleteCacheArtifactMultipartUploadOKStatus) Validate() error { + switch s { + case "success": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *CompletePreviewsMultipartUploadReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.MultipartUploadParts.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "multipart_upload_parts", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *CreateCommandEventReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.Float{}).Validate(float64(s.Duration)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "duration", + Error: err, + }) + } + if err := func() error { + if value, ok := s.Status.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s CreateCommandEventReqStatus) Validate() error { + switch s { + case "success": + return nil + case "failure": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *Invitation) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.Float{}).Validate(float64(s.ID)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "id", + Error: err, + }) + } + if err := func() error { + if err := s.Inviter.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "inviter", + Error: err, + }) + } + if err := func() error { + if err := (validate.Float{}).Validate(float64(s.OrganizationID)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "organization_id", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ListOrganizationsOK) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Organizations == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Organizations { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "organizations", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ListProjectTokensOK) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Tokens == nil { + return errors.New("nil is invalid value") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "tokens", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ListProjectsOK) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Projects == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Projects { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "projects", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *Organization) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.Float{}).Validate(float64(s.ID)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "id", + Error: err, + }) + } + if err := func() error { + if s.Invitations == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Invitations { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "invitations", + Error: err, + }) + } + if err := func() error { + if s.Members == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Members { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "members", + Error: err, + }) + } + if err := func() error { + if err := s.Plan.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "plan", + Error: err, + }) + } + if err := func() error { + if value, ok := s.SSOProvider.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "sso_provider", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *OrganizationMember) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.Float{}).Validate(float64(s.ID)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "id", + Error: err, + }) + } + if err := func() error { + if err := s.Role.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "role", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s OrganizationMemberRole) Validate() error { + switch s { + case "admin": + return nil + case "user": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s OrganizationPlan) Validate() error { + switch s { + case "air": + return nil + case "pro": + return nil + case "enterprise": + return nil + case "none": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s OrganizationSSOProvider) Validate() error { + switch s { + case "google": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *OrganizationUsage) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.Float{}).Validate(float64(s.CurrentMonthRemoteCacheHits)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "current_month_remote_cache_hits", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *Project) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.Float{}).Validate(float64(s.ID)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "id", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *StartPreviewsMultipartUploadOK) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Status.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s StartPreviewsMultipartUploadOKStatus) Validate() error { + switch s { + case "success": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *UpdateOrganization2Req) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.SSOProvider.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "sso_provider", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s UpdateOrganization2ReqSSOProvider) Validate() error { + switch s { + case "google": + return nil + case "none": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *UpdateOrganizationMemberReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Role.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "role", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s UpdateOrganizationMemberReqRole) Validate() error { + switch s { + case "admin": + return nil + case "user": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *UpdateOrganizationReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if value, ok := s.SSOProvider.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "sso_provider", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s UpdateOrganizationReqSSOProvider) Validate() error { + switch s { + case "google": + return nil + case "none": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *User) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := (validate.Float{}).Validate(float64(s.ID)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "id", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} diff --git a/internal/agent/http_cache/tuistcache/generate.go b/internal/agent/http_cache/tuistcache/generate.go new file mode 100644 index 00000000..901447d8 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/generate.go @@ -0,0 +1,5 @@ +package tuistcache + +import _ "github.com/ogen-go/ogen/gen" + +//go:generate go run github.com/ogen-go/ogen/cmd/ogen --clean https://cloud.tuist.io/api/spec diff --git a/internal/agent/http_cache/tuistcache/ogen.yaml b/internal/agent/http_cache/tuistcache/ogen.yaml new file mode 100644 index 00000000..e5b14056 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/ogen.yaml @@ -0,0 +1,2 @@ +generator: + ignore_not_implemented: ["empty schema"] diff --git a/internal/agent/http_cache/tuistcache/tuistcache.go b/internal/agent/http_cache/tuistcache/tuistcache.go new file mode 100644 index 00000000..b20ca12e --- /dev/null +++ b/internal/agent/http_cache/tuistcache/tuistcache.go @@ -0,0 +1,187 @@ +package tuistcache + +import ( + "context" + "fmt" + "github.com/cirruslabs/cirrus-cli/internal/agent/client" + tuistapi "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache/tuistcache/api" + "github.com/cirruslabs/cirrus-cli/pkg/api" + ogenhttp "github.com/ogen-go/ogen/http" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "net/http" + "net/url" + "time" +) + +const APIMountPoint = "/tuistcache" + +type NoSecurity struct{} + +func (NoSecurity) HandleAuthorization(ctx context.Context, _ string, _ tuistapi.Authorization) (context.Context, error) { + return ctx, nil +} + +func (NoSecurity) HandleCookie(ctx context.Context, _ string, _ tuistapi.Cookie) (context.Context, error) { + return ctx, nil +} + +type TuistCache struct { + server *tuistapi.Server + + tuistapi.UnimplementedHandler +} + +func New() (*TuistCache, error) { + tc := &TuistCache{} + + server, err := tuistapi.NewServer(tc, NoSecurity{}) + if err != nil { + return nil, err + } + + return &TuistCache{ + server: server, + }, nil +} + +func (tc *TuistCache) ServeHTTP(writer http.ResponseWriter, request *http.Request) { + tc.server.ServeHTTP(writer, request) +} + +func (tc *TuistCache) DownloadCacheArtifact( + ctx context.Context, + params tuistapi.DownloadCacheArtifactParams, +) (tuistapi.DownloadCacheArtifactRes, error) { + cacheKey := getCacheKey(params.CacheCategory, params.ProjectID, params.Hash, params.Name) + + _, err := client.CirrusClient.CacheInfo(ctx, &api.CacheInfoRequest{ + TaskIdentification: client.CirrusTaskIdentification, + CacheKey: cacheKey, + }) + if err != nil { + if status, ok := status.FromError(err); ok && status.Code() == codes.NotFound { + return &tuistapi.DownloadCacheArtifactNotFound{}, nil + } + + return nil, err + } + + generateCacheUploadURLResponse, err := client.CirrusClient.GenerateCacheDownloadURLs(ctx, &api.CacheKey{ + TaskIdentification: client.CirrusTaskIdentification, + CacheKey: cacheKey, + }) + if err != nil { + if status, ok := status.FromError(err); ok && status.Code() == codes.NotFound { + return &tuistapi.DownloadCacheArtifactNotFound{}, nil + } + + return nil, err + } + + if len(generateCacheUploadURLResponse.Urls) != 1 { + return nil, ogenhttp.ErrInternalServerErrorResponse + } + + return &tuistapi.CacheArtifactDownloadURL{ + Status: tuistapi.CacheArtifactDownloadURLStatusSuccess, + Data: tuistapi.CacheArtifactDownloadURLData{ + URL: generateCacheUploadURLResponse.Urls[0], + ExpiresAt: int(time.Now().Add(time.Duration(10) * time.Minute).Unix()), + }, + }, nil +} + +func (tc *TuistCache) StartCacheArtifactMultipartUpload( + ctx context.Context, + params tuistapi.StartCacheArtifactMultipartUploadParams, +) (tuistapi.StartCacheArtifactMultipartUploadRes, error) { + cacheKey := getCacheKey(params.CacheCategory, params.ProjectID, params.Hash, params.Name) + + multipartCacheUploadCreateResponse, err := client.CirrusClient.MultipartCacheUploadCreate(ctx, &api.CacheKey{ + TaskIdentification: client.CirrusTaskIdentification, + CacheKey: cacheKey, + }) + if err != nil { + return nil, err + } + + return &tuistapi.ArtifactUploadID{ + Status: tuistapi.ArtifactUploadIDStatusSuccess, + Data: tuistapi.ArtifactUploadIDData{ + UploadID: multipartCacheUploadCreateResponse.UploadId, + }, + }, nil +} + +func (tc *TuistCache) GenerateCacheArtifactMultipartUploadURL( + ctx context.Context, + params tuistapi.GenerateCacheArtifactMultipartUploadURLParams, +) (tuistapi.GenerateCacheArtifactMultipartUploadURLRes, error) { + cacheKey := getCacheKey(params.CacheCategory, params.ProjectID, params.Hash, params.Name) + + multipartCacheUploadPartResponse, err := client.CirrusClient.MultipartCacheUploadPart(ctx, &api.MultipartCacheUploadPartRequest{ + CacheKey: &api.CacheKey{ + TaskIdentification: client.CirrusTaskIdentification, + CacheKey: cacheKey, + }, + UploadId: params.UploadID, + PartNumber: uint32(params.PartNumber), + }) + if err != nil { + return nil, err + } + + return &tuistapi.ArtifactMultipartUploadURL{ + Status: tuistapi.ArtifactMultipartUploadURLStatusSuccess, + Data: tuistapi.ArtifactMultipartUploadURLData{ + URL: multipartCacheUploadPartResponse.Url, + }, + }, nil +} + +func (tc *TuistCache) CompleteCacheArtifactMultipartUpload( + ctx context.Context, + req tuistapi.OptCompleteCacheArtifactMultipartUploadReq, + params tuistapi.CompleteCacheArtifactMultipartUploadParams, +) (tuistapi.CompleteCacheArtifactMultipartUploadRes, error) { + cacheKey := getCacheKey(params.CacheCategory, params.ProjectID, params.Hash, params.Name) + + var parts []*api.MultipartCacheUploadCommitRequest_Part + + for _, part := range req.Value.Parts { + parts = append(parts, &api.MultipartCacheUploadCommitRequest_Part{ + PartNumber: uint32(part.PartNumber.Value), + Etag: part.Etag.Value, + }) + } + + _, err := client.CirrusClient.MultipartCacheUploadCommit(ctx, &api.MultipartCacheUploadCommitRequest{ + CacheKey: &api.CacheKey{ + TaskIdentification: client.CirrusTaskIdentification, + CacheKey: cacheKey, + }, + UploadId: params.UploadID, + Parts: parts, + }) + if err != nil { + return nil, err + } + + return &tuistapi.CompleteCacheArtifactMultipartUploadOK{}, nil +} + +func URL(httpCacheHost string) string { + tuistCacheURL := url.URL{ + Scheme: "http", + Host: httpCacheHost, + Path: APIMountPoint, + } + + return tuistCacheURL.String() +} + +func getCacheKey(cacheCategory tuistapi.OptCacheCategory, projectID string, hash string, name string) string { + return fmt.Sprintf("%s-%s-%s-%s", string(cacheCategory.Or(tuistapi.CacheCategoryBuilds)), + projectID, hash, name) +} diff --git a/internal/agent/http_cache/tuistcache/tuistcache_test.go b/internal/agent/http_cache/tuistcache/tuistcache_test.go new file mode 100644 index 00000000..6a690c14 --- /dev/null +++ b/internal/agent/http_cache/tuistcache/tuistcache_test.go @@ -0,0 +1,123 @@ +package tuistcache_test + +import ( + "bytes" + "context" + "crypto/sha256" + "fmt" + "github.com/cirruslabs/cirrus-cli/internal/agent/client" + "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache" + "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache/ghacache/cirruscimock" + "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache/tuistcache" + tuistapi "github.com/cirruslabs/cirrus-cli/internal/agent/http_cache/tuistcache/api" + "github.com/cirruslabs/cirrus-cli/internal/testutil" + "github.com/stretchr/testify/require" + "net/http" + "testing" +) + +type NoSecurity struct{} + +func (NoSecurity) Authorization(_ context.Context, _ string) (tuistapi.Authorization, error) { + return tuistapi.Authorization{}, nil +} + +func (NoSecurity) Cookie(_ context.Context, _ string) (tuistapi.Cookie, error) { + return tuistapi.Cookie{}, nil +} + +func TestTuistCache(t *testing.T) { + testutil.NeedsContainerization(t) + + ctx := context.Background() + + client.InitClient(cirruscimock.ClientConn(t), "test", "test") + + tuistCache, err := tuistcache.New() + require.NoError(t, err) + + tuistCacheURL := tuistcache.URL(http_cache.Start(http_cache.WithTuistCache(tuistCache))) + + tuistCacheClient, err := tuistapi.NewClient(tuistCacheURL, NoSecurity{}) + require.NoError(t, err) + + projectID := "account-name/project-name" + hash := fmt.Sprintf("%x", sha256.Sum256([]byte("doesn't matter"))) + name := "test" + + // Ensure that cache entry does not exist + downloadCacheArtifactResp, err := tuistCacheClient.DownloadCacheArtifact(ctx, tuistapi.DownloadCacheArtifactParams{ + ProjectID: projectID, + Hash: hash, + Name: name, + }) + require.NoError(t, err) + require.IsType(t, &tuistapi.DownloadCacheArtifactNotFound{}, downloadCacheArtifactResp) + + // Create the cache entry + startCacheArtifactMultipartUploadResp, err := tuistCacheClient.StartCacheArtifactMultipartUpload( + ctx, + tuistapi.StartCacheArtifactMultipartUploadParams{ + ProjectID: projectID, + Hash: hash, + Name: name, + }, + ) + require.NoError(t, err) + require.IsType(t, &tuistapi.ArtifactUploadID{}, startCacheArtifactMultipartUploadResp) + + artifactUploadID := startCacheArtifactMultipartUploadResp.(*tuistapi.ArtifactUploadID) + + generateCacheArtifactMultipartUploadURLResp, err := tuistCacheClient.GenerateCacheArtifactMultipartUploadURL( + ctx, + tuistapi.GenerateCacheArtifactMultipartUploadURLParams{ + ProjectID: projectID, + Hash: hash, + Name: name, + + UploadID: artifactUploadID.Data.UploadID, + PartNumber: 1, + }, + ) + require.NoError(t, err) + require.IsType(t, &tuistapi.ArtifactMultipartUploadURL{}, generateCacheArtifactMultipartUploadURLResp) + + artifactMultipartUploadURL := generateCacheArtifactMultipartUploadURLResp.(*tuistapi.ArtifactMultipartUploadURL) + + req, err := http.NewRequest(http.MethodPut, artifactMultipartUploadURL.Data.URL, bytes.NewReader([]byte("Hello, World!"))) + require.NoError(t, err) + + resp, err := http.DefaultClient.Do(req) + require.NoError(t, err) + require.Equal(t, http.StatusOK, resp.StatusCode) + + completeCacheArtifactMultipartUploadResp, err := tuistCacheClient.CompleteCacheArtifactMultipartUpload( + ctx, + tuistapi.NewOptCompleteCacheArtifactMultipartUploadReq(tuistapi.CompleteCacheArtifactMultipartUploadReq{ + Parts: []tuistapi.CompleteCacheArtifactMultipartUploadReqPartsItem{ + { + PartNumber: tuistapi.NewOptInt(1), + Etag: tuistapi.NewOptString(resp.Header.Get("ETag")), + }, + }, + }), + tuistapi.CompleteCacheArtifactMultipartUploadParams{ + ProjectID: projectID, + Hash: hash, + Name: name, + + UploadID: artifactUploadID.Data.UploadID, + }, + ) + require.NoError(t, err) + require.IsType(t, &tuistapi.CompleteCacheArtifactMultipartUploadOK{}, completeCacheArtifactMultipartUploadResp) + + // Ensure that the cache entry now exists + downloadCacheArtifactResp, err = tuistCacheClient.DownloadCacheArtifact(ctx, tuistapi.DownloadCacheArtifactParams{ + ProjectID: projectID, + Hash: hash, + Name: name, + }) + require.NoError(t, err) + require.IsType(t, &tuistapi.CacheArtifactDownloadURL{}, downloadCacheArtifactResp) +} diff --git a/internal/opentelemetry/opentelemetry.go b/internal/opentelemetry/opentelemetry.go index 6682f6c7..89ae0471 100644 --- a/internal/opentelemetry/opentelemetry.go +++ b/internal/opentelemetry/opentelemetry.go @@ -9,7 +9,7 @@ import ( sdkmetric "go.opentelemetry.io/otel/sdk/metric" "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.25.0" + semconv "go.opentelemetry.io/otel/semconv/v1.26.0" "os" "runtime" ) diff --git a/internal/testutil/needscontainerization.go b/internal/testutil/needscontainerization.go new file mode 100644 index 00000000..a885e371 --- /dev/null +++ b/internal/testutil/needscontainerization.go @@ -0,0 +1,20 @@ +package testutil + +import ( + "os" + "testing" +) + +// NeedsContainerization skips the test when running on CI, but no container backend configured. +// +// This is needed to prevent failures on platforms without containerization support. +func NeedsContainerization(t *testing.T) { + t.Helper() + + _, ci := os.LookupEnv("CI") + _, cirrusContainerBackend := os.LookupEnv("CIRRUS_CONTAINER_BACKEND") + + if ci && !cirrusContainerBackend { + t.Skip("running in CI, but no container backend configured, skipping test...") + } +}