diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 5aead9b2..39412a86 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -28,7 +28,7 @@ jobs: - name: Setup Golang uses: actions/setup-go@v3 with: - go-version: '^1.18' + go-version: '^1.19' - name: Build run: | @@ -61,7 +61,7 @@ jobs: - name: Setup Golang uses: actions/setup-go@v3 with: - go-version: '^1.18' + go-version: '^1.19' - name: Build run: | curl --disable --silent --show-error --location --max-time 30 "https://raw.githubusercontent.com/ViBiOh/scripts/main/bootstrap" | bash -s -- "-c" "release" diff --git a/.github/workflows/codeql-analysis.yaml b/.github/workflows/codeql-analysis.yaml index be07d562..03369a2e 100644 --- a/.github/workflows/codeql-analysis.yaml +++ b/.github/workflows/codeql-analysis.yaml @@ -42,7 +42,7 @@ jobs: - name: Setup Golang uses: actions/setup-go@v3 with: - go-version: '^1.18' + go-version: '^1.19' - name: Build run: make build - name: CodeQL diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e665fd7a..a2f56762 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -35,7 +35,7 @@ jobs: - name: Setup Golang uses: actions/setup-go@v3 with: - go-version: '^1.18' + go-version: '^1.19' - name: Build run: make init - name: Assets diff --git a/cmd/fibr/fibr.go b/cmd/fibr/fibr.go index 849b0b03..5ed31504 100644 --- a/cmd/fibr/fibr.go +++ b/cmd/fibr/fibr.go @@ -54,7 +54,7 @@ func newLoginApp(tracerApp tracer.App, basicConfig basicMemory.Config) provider. func generateIdentityName() string { raw := make([]byte, 4) if _, err := rand.Read(raw); err != nil { - logger.Error("unable to generate identity name: %s", err) + logger.Error("generate identity name: %s", err) return "error" } diff --git a/go.mod b/go.mod index 23df2c5d..cb4a6d91 100644 --- a/go.mod +++ b/go.mod @@ -1,17 +1,17 @@ module github.com/ViBiOh/fibr -go 1.18 +go 1.19 require ( - github.com/ViBiOh/ChatPotte v0.0.30 - github.com/ViBiOh/absto v0.5.17 - github.com/ViBiOh/auth/v2 v2.12.19 + github.com/ViBiOh/ChatPotte v0.1.0 + github.com/ViBiOh/absto v0.6.2 + github.com/ViBiOh/auth/v2 v2.13.0 github.com/ViBiOh/exas v0.4.2 - github.com/ViBiOh/flags v1.1.0 - github.com/ViBiOh/httputils/v4 v4.45.1 + github.com/ViBiOh/flags v1.2.0 + github.com/ViBiOh/httputils/v4 v4.46.1 github.com/ViBiOh/vith v0.5.0 github.com/golang/mock v1.6.0 - github.com/prometheus/client_golang v1.12.2 + github.com/prometheus/client_golang v1.13.0 github.com/streadway/amqp v1.0.0 go.opentelemetry.io/otel v1.9.0 go.opentelemetry.io/otel/trace v1.9.0 @@ -41,18 +41,18 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.37.0 // indirect - github.com/prometheus/procfs v0.7.3 // indirect + github.com/prometheus/procfs v0.8.0 // indirect github.com/rs/xid v1.4.0 // indirect github.com/sirupsen/logrus v1.9.0 // indirect github.com/tdewolff/minify/v2 v2.12.0 // indirect - github.com/tdewolff/parse/v2 v2.6.1 // indirect + github.com/tdewolff/parse/v2 v2.6.2 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.34.0 // indirect go.opentelemetry.io/otel/exporters/jaeger v1.9.0 // indirect go.opentelemetry.io/otel/metric v0.31.0 // indirect go.opentelemetry.io/otel/sdk v1.9.0 // indirect - golang.org/x/net v0.0.0-20220728030405-41545e8bf201 // indirect - golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // indirect + golang.org/x/net v0.0.0-20220805013720-a33c5aa5df48 // indirect + golang.org/x/sys v0.0.0-20220804214406-8e32c043e418 // indirect golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 // indirect - google.golang.org/protobuf v1.27.1 // indirect + google.golang.org/protobuf v1.28.1 // indirect gopkg.in/ini.v1 v1.66.6 // indirect ) diff --git a/go.sum b/go.sum index c7809af6..6bcc851c 100644 --- a/go.sum +++ b/go.sum @@ -33,18 +33,18 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ViBiOh/ChatPotte v0.0.30 h1:/0HHMRHKwSkNJcl4rxoAjMPW7/YJEYgbKi7PJEcVT7Q= -github.com/ViBiOh/ChatPotte v0.0.30/go.mod h1:UFs9QZ6M/BOxFBAmz8PcYqABCPmT4KtctKydMYrBgEc= -github.com/ViBiOh/absto v0.5.17 h1:CmQLSw0pvlLfETHuBMns/5OYKpmsOoORgrzG4/ZpRXA= -github.com/ViBiOh/absto v0.5.17/go.mod h1:jJppFrRSQaQhyYA7KD/LviD7WWMyyfwDO7uz75vvvXU= -github.com/ViBiOh/auth/v2 v2.12.19 h1:XAjTSf8BcoqhJn0rOwK8O1jIpc7k7VG8/Po9QKeYXac= -github.com/ViBiOh/auth/v2 v2.12.19/go.mod h1:Ot7BBPjye2ERGaJRcBsm0/PYVUAV3Gg3AfaRbmsZJho= +github.com/ViBiOh/ChatPotte v0.1.0 h1:HfTr5fMaaB+PNi3fzkJk3abKx6Kbv24v5fSyD/Yubgg= +github.com/ViBiOh/ChatPotte v0.1.0/go.mod h1:za3YZFVRpJ3x1zeXFj1wudQ5DGwnrC9qZ9CNr25TYxA= +github.com/ViBiOh/absto v0.6.2 h1:KRNEufp/jT5Onvn//wR3OiOQnGRQ8TztCztAskJBk1E= +github.com/ViBiOh/absto v0.6.2/go.mod h1:ZoXcCx5C+xU9R6SBP4HPXSjf3WZcaVIfFCciiViZfCs= +github.com/ViBiOh/auth/v2 v2.13.0 h1:AGPU5WFefkZHvLJkWA8bpMb0a2hu9zJNoYOiz7NLKpQ= +github.com/ViBiOh/auth/v2 v2.13.0/go.mod h1:eGqz0ln1SdfuOG8N2XsruKh8NCU7Plx0P5mQPHsNWxQ= github.com/ViBiOh/exas v0.4.2 h1:W84et5rOaeG0n0kl60QJHoa6RmP4614vD8DTPL3BvyU= github.com/ViBiOh/exas v0.4.2/go.mod h1:gYLOTipAUoE7mTrUd3Albe2zKFJKkX135+ALSc9QmGM= -github.com/ViBiOh/flags v1.1.0 h1:2iCnAy2GeIjqdhZ8gE0Z1JhXLg73WNbFSxkJWfkPhW0= -github.com/ViBiOh/flags v1.1.0/go.mod h1:W0YgB4Nqou2j/2vevgO3kyrcS2f+ci/+w+jDGzVZilk= -github.com/ViBiOh/httputils/v4 v4.45.1 h1:fzTSWQQN/DiXjKvN2/YoCy4DzAF3rFt876mnCXZ8tsI= -github.com/ViBiOh/httputils/v4 v4.45.1/go.mod h1:l06QLAxcSJxG//jaKKbdVujKQ9mR7nBzgQf+YjX8gfw= +github.com/ViBiOh/flags v1.2.0 h1:DaujjNXzD29KxKyp4eZdn7c9+uBN5DokWgDAe7DcUmc= +github.com/ViBiOh/flags v1.2.0/go.mod h1:UyMB5zeD/aId7Xw3x7577ZNU298JmukzOcV8p/H2W1s= +github.com/ViBiOh/httputils/v4 v4.46.1 h1:TWSfDGZe8biy5LOSDmyvKdoEfMNS/LZ2y3Ksh7lvbGk= +github.com/ViBiOh/httputils/v4 v4.46.1/go.mod h1:WADqXz2lb3av9YkDlF+ZJCSh1EaXCstj8AFn2snDarY= github.com/ViBiOh/vith v0.5.0 h1:BpmjwWxd4NGmUJF12XpFOngK32539Lw3mvbMOaeOmhE= github.com/ViBiOh/vith v0.5.0/go.mod h1:Wf40eedOBEcxeLzGzGpuO+2G8qe5Ov1WIIBPXohyKco= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -163,13 +163,13 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= -github.com/jackc/pgconn v1.12.1 h1:rsDFzIpRk7xT4B8FufgpCCeyjdNpKyghZeSefViE5W8= +github.com/jackc/pgconn v1.13.0 h1:3L1XMNV2Zvca/8BYhzcRFS70Lr0WlDg16Di6SFGAbys= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= -github.com/jackc/pgproto3/v2 v2.3.0 h1:brH0pCGBDkBW07HWlN/oSBXrmo3WB0UvZd1pIuDcL8Y= +github.com/jackc/pgproto3/v2 v2.3.1 h1:nwj7qwf0S+Q7ISFfBndqeLwSwxs+4DPsbRFjECT1Y4Y= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= -github.com/jackc/pgtype v1.11.0 h1:u4uiGPz/1hryuXzyaBhSk6dnIyyG2683olG2OV+UUgs= -github.com/jackc/pgx/v4 v4.16.1 h1:JzTglcal01DrghUqt+PmzWsZx/Yh7SC/CTQmSBMTd0Y= +github.com/jackc/pgtype v1.12.0 h1:Dlq8Qvcch7kiehm8wPGIW0W3KsCCHJnRacKW0UM8n5w= +github.com/jackc/pgx/v4 v4.17.0 h1:Hsx+baY8/zU2WtPLQyZi8WbecgcsWEeyoK1jvg/WgIo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -224,8 +224,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= -github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.13.0 h1:b71QUfeo5M8gq2+evJdTPfZhYMAU0uKPkyPJ7TPsloU= +github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -241,8 +241,9 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY= github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= @@ -264,8 +265,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/tdewolff/minify/v2 v2.12.0 h1:ZyvMKeciyR3vzJrK/oHyBcSmpttQ/V+ah7qOqTZclaU= github.com/tdewolff/minify/v2 v2.12.0/go.mod h1:8mvf+KglD7XurfvvFZDUYvVURy6bA/r0oTvmakXMnyg= -github.com/tdewolff/parse/v2 v2.6.1 h1:RIfy1erADkO90ynJWvty8VIkqqKYRzf2iLp8ObG174I= github.com/tdewolff/parse/v2 v2.6.1/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho= +github.com/tdewolff/parse/v2 v2.6.2 h1:RDExtQ7ThRGSucatK0nri3p+HD/tSreYh1IDtDDAS/I= +github.com/tdewolff/parse/v2 v2.6.2/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs= github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= github.com/tdewolff/test v1.0.7 h1:8Vs0142DmPFW/bQeHRP3MV19m1gvndjUb1sn8yy74LM= github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= @@ -361,8 +363,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220728030405-41545e8bf201 h1:bvOltf3SADAfG05iRml8lAB3qjoEX5RCyN4K6G5v3N0= -golang.org/x/net v0.0.0-20220728030405-41545e8bf201/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20220805013720-a33c5aa5df48 h1:N9Vc/rorQUDes6B9CNdIxAn5jODGj2wzfrei2x4wNj4= +golang.org/x/net v0.0.0-20220805013720-a33c5aa5df48/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= 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= @@ -423,8 +425,8 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/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-20220728004956-3c1f35247d10 h1:WIoqL4EROvwiPdUtaip4VcDdpZ4kha7wBWZrbVKCIZg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220804214406-8e32c043e418 h1:9vYwv7OjYaky/tlAeD7C4oC9EsPTlaFl1H2jS++V+ME= +golang.org/x/sys v0.0.0-20220804214406-8e32c043e418/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 h1:Q5284mrmYTpACcm+eAKjKJH48BBwSyfJqmmGDTtT8Vc= @@ -560,8 +562,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/crud/bcrypt.go b/pkg/crud/bcrypt.go index 9a3329a0..f74787dd 100644 --- a/pkg/crud/bcrypt.go +++ b/pkg/crud/bcrypt.go @@ -13,7 +13,7 @@ func findBcryptBestCost(maxDuration time.Duration) (int, error) { for i := bcrypt.MinCost + 1; i <= bcrypt.MaxCost; i++ { hashedPassword, err := bcrypt.GenerateFromPassword(password, i) if err != nil { - return i, fmt.Errorf("unable to generate password: %s", err) + return i, fmt.Errorf("generate password: %s", err) } start := time.Now() diff --git a/pkg/crud/browse.go b/pkg/crud/browse.go index d1af98a3..adf635ab 100644 --- a/pkg/crud/browse.go +++ b/pkg/crud/browse.go @@ -36,7 +36,7 @@ func (a App) browse(ctx context.Context, w http.ResponseWriter, request provider var err error exif, err = a.exifApp.GetExifFor(ctx, item) if err != nil { - logger.WithField("item", item.Pathname).Error("unable to load exif: %s", err) + logger.WithField("item", item.Pathname).Error("load exif: %s", err) } }) @@ -66,7 +66,7 @@ func (a App) getFilesPreviousAndNext(ctx context.Context, item absto.Item, reque var err error items, err = a.storageApp.List(ctx, item.Dir()) if err != nil { - logger.WithField("item", item.Pathname).Error("unable to list neighbors files: %s", err) + logger.WithField("item", item.Pathname).Error("list neighbors files: %s", err) return } diff --git a/pkg/crud/crud.go b/pkg/crud/crud.go index 32d67a12..9750334e 100644 --- a/pkg/crud/crud.go +++ b/pkg/crud/crud.go @@ -106,7 +106,7 @@ func New(config Config, storage absto.Storage, rendererApp renderer.App, shareAp if amqpClient != nil { if err := amqpClient.SetupExclusive(app.amqpExclusiveRoutingKey); err != nil { - return app, fmt.Errorf("unable to setup amqp exclusive: %s", err) + return app, fmt.Errorf("setup amqp exclusive: %s", err) } } @@ -136,12 +136,12 @@ func New(config Config, storage absto.Storage, rendererApp renderer.App, shareAp bcryptDuration, err := time.ParseDuration(strings.TrimSpace(*config.bcryptDuration)) if err != nil { - return app, fmt.Errorf("unable to parse bcrypt duration: %s", err) + return app, fmt.Errorf("parse bcrypt duration: %s", err) } bcryptCost, err := findBcryptBestCost(bcryptDuration) if err != nil { - logger.Error("unable to find best bcrypt cost: %s", err) + logger.Error("find best bcrypt cost: %s", err) bcryptCost = bcrypt.DefaultCost } logger.Info("Best bcrypt cost is %d", bcryptCost) @@ -162,7 +162,7 @@ func (a App) Start(done <-chan struct{}) { a.start(ctx, done) return nil }); err != nil { - logger.Error("unable to get exclusive semaphore: %s", err) + logger.Error("get exclusive semaphore: %s", err) } } @@ -190,7 +190,7 @@ func (a App) start(ctx context.Context, done <-chan struct{}) { func (a App) sanitizeName(ctx context.Context, item absto.Item) absto.Item { name, err := provider.SanitizeName(item.Pathname, false) if err != nil { - logger.WithField("item", item.Pathname).Error("unable to sanitize name: %s", err) + logger.WithField("item", item.Pathname).Error("sanitize name: %s", err) return item } diff --git a/pkg/crud/get.go b/pkg/crud/get.go index 81dbdc6d..8eaefce9 100644 --- a/pkg/crud/get.go +++ b/pkg/crud/get.go @@ -87,7 +87,7 @@ func (a App) serveFile(w http.ResponseWriter, r *http.Request, item absto.Item) file, err := a.storageApp.ReadFrom(r.Context(), item.Pathname) if err != nil { - return fmt.Errorf("unable to get reader for `%s`: %w", item.Pathname, err) + return fmt.Errorf("get reader for `%s`: %w", item.Pathname, err) } defer provider.LogClose(file, "crud.serveFile", item.Pathname) @@ -151,7 +151,7 @@ func (a App) listFiles(r *http.Request, request provider.Request, item absto.Ite if request.IsStory() { thumbnails, err := a.thumbnailApp.ListDirLarge(ctx, item) if err != nil { - logger.WithField("item", item.Pathname).Error("unable to list large thumbnails: %s", err) + logger.WithField("item", item.Pathname).Error("list large thumbnails: %s", err) } storyItems := items[:0] @@ -181,7 +181,7 @@ func (a App) serveGeoJSON(w http.ResponseWriter, r *http.Request, request provid if query.GetBool(r, "search") { hash = a.exifHash(ctx, items) } else if exifs, err := a.exifApp.ListDir(ctx, item); err != nil { - logger.WithField("item", item.Pathname).Error("unable to list exifs: %s", err) + logger.WithField("item", item.Pathname).Error("list exifs: %s", err) } else { hash = sha.New(exifs) } @@ -221,7 +221,7 @@ func (a App) serveGeoJSON(w http.ResponseWriter, r *http.Request, request provid exif, err := a.exifApp.GetExifFor(ctx, item) if err != nil { - logger.WithField("item", item.Pathname).Error("unable to get exif: %s", err) + logger.WithField("item", item.Pathname).Error("get exif: %s", err) continue } @@ -242,7 +242,7 @@ func (a App) serveGeoJSON(w http.ResponseWriter, r *http.Request, request provid feature.Properties["date"] = exif.Date.Format(time.RFC850) if err := encoder.Encode(feature); err != nil { - logger.WithField("item", item.Pathname).Error("unable to encode feature: %s", err) + logger.WithField("item", item.Pathname).Error("encode feature: %s", err) } } diff --git a/pkg/crud/list.go b/pkg/crud/list.go index 9e303630..49931c40 100644 --- a/pkg/crud/list.go +++ b/pkg/crud/list.go @@ -28,7 +28,7 @@ func (a App) list(ctx context.Context, request provider.Request, message rendere directoryAggregate, err := a.exifApp.GetAggregateFor(ctx, item) if err != nil && !absto.IsNotExist(err) { - logger.WithField("fn", "crud.List").WithField("item", request.Path).Error("unable to get aggregate: %s", err) + logger.WithField("fn", "crud.List").WithField("item", request.Path).Error("get aggregate: %s", err) } items := make([]provider.RenderItem, len(files)) @@ -39,7 +39,7 @@ func (a App) list(ctx context.Context, request provider.Request, message rendere var err error thumbnails, err = a.thumbnailApp.ListDir(ctx, item) if err != nil { - logger.WithField("item", item.Pathname).Error("unable to list thumbnail: %s", err) + logger.WithField("item", item.Pathname).Error("list thumbnail: %s", err) return } }) @@ -51,7 +51,7 @@ func (a App) list(ctx context.Context, request provider.Request, message rendere wg.Go(func() { aggregate, err := a.exifApp.GetAggregateFor(ctx, item) if err != nil { - logger.WithField("fn", "crud.List").WithField("item", item.Pathname).Error("unable to read: %s", err) + logger.WithField("fn", "crud.List").WithField("item", item.Pathname).Error("read: %s", err) } renderItem := provider.StorageToRender(item, request) @@ -116,7 +116,7 @@ func (a App) Download(w http.ResponseWriter, r *http.Request, request provider.R zipWriter := zip.NewWriter(w) defer func() { if closeErr := zipWriter.Close(); closeErr != nil { - logger.Error("unable to close zip: %s", closeErr) + logger.Error("close zip: %s", closeErr) } }() @@ -153,7 +153,7 @@ func (a App) zipItems(ctx context.Context, done <-chan struct{}, request provide var nestedItems []absto.Item nestedItems, err = a.storageApp.List(ctx, request.SubPath(relativeURL)) if err != nil { - err = fmt.Errorf("unable to zip nested folder `%s`: %s", relativeURL, err) + err = fmt.Errorf("zip nested folder `%s`: %s", relativeURL, err) return } @@ -185,13 +185,13 @@ func (a App) addFileToZip(ctx context.Context, zipWriter *zip.Writer, item absto var writer io.Writer writer, err = zipWriter.CreateHeader(header) if err != nil { - return fmt.Errorf("unable to create zip header: %s", err) + return fmt.Errorf("create zip header: %s", err) } var reader io.ReadCloser reader, err = a.storageApp.ReadFrom(ctx, item.Pathname) if err != nil { - return fmt.Errorf("unable to read: %w", err) + return fmt.Errorf("read: %w", err) } defer func() { diff --git a/pkg/crud/post.go b/pkg/crud/post.go index 85c1cbde..024fcdda 100644 --- a/pkg/crud/post.go +++ b/pkg/crud/post.go @@ -41,7 +41,7 @@ func parseMultipart(r *http.Request) (map[string]string, *multipart.Part, error) default: value, err := io.ReadAll(part) if err != nil { - return nil, nil, fmt.Errorf("unable to read form value `%s`: %s", formName, err) + return nil, nil, fmt.Errorf("read form value `%s`: %s", formName, err) } values[formName] = string(value) @@ -89,7 +89,7 @@ func (a App) handleMultipart(w http.ResponseWriter, r *http.Request, request pro values, file, err := parseMultipart(r) if err != nil { - a.error(w, r, request, model.WrapInternal(fmt.Errorf("unable to parse multipart request: %s", err))) + a.error(w, r, request, model.WrapInternal(fmt.Errorf("parse multipart request: %s", err))) return } @@ -102,7 +102,7 @@ func (a App) handleMultipart(w http.ResponseWriter, r *http.Request, request pro if chunkNumber := r.Header.Get("X-Chunk-Number"); len(chunkNumber) != 0 { chunkNumberValue, err := strconv.ParseUint(chunkNumber, 10, 64) if err != nil { - a.error(w, r, request, model.WrapInvalid(fmt.Errorf("unable to parse chunk number: %s", err))) + a.error(w, r, request, model.WrapInvalid(fmt.Errorf("parse chunk number: %s", err))) } chunkNumber = fmt.Sprintf("%10d", chunkNumberValue) diff --git a/pkg/crud/push.go b/pkg/crud/push.go index 47a65daa..0db49e46 100644 --- a/pkg/crud/push.go +++ b/pkg/crud/push.go @@ -11,6 +11,6 @@ func (a App) notify(event provider.Event) { } if err := a.pushEvent(event); err != nil { - logger.Error("unable to push event %+v: %s", event, err) + logger.Error("push event %+v: %s", event, err) } } diff --git a/pkg/crud/rename.go b/pkg/crud/rename.go index 54e377f1..2aa71ddf 100644 --- a/pkg/crud/rename.go +++ b/pkg/crud/rename.go @@ -15,12 +15,12 @@ import ( func (a App) doRename(ctx context.Context, oldPath, newPath string, oldItem absto.Item) (absto.Item, error) { if err := a.storageApp.Rename(ctx, oldPath, newPath); err != nil { - return absto.Item{}, fmt.Errorf("unable to rename: %w", err) + return absto.Item{}, fmt.Errorf("rename: %w", err) } newItem, err := a.storageApp.Info(ctx, newPath) if err != nil { - return absto.Item{}, fmt.Errorf("unable to get info of new item: %w", err) + return absto.Item{}, fmt.Errorf("get info of new item: %w", err) } go a.notify(provider.NewRenameEvent(oldItem, newItem, a.bestSharePath(newPath), a.rendererApp)) @@ -161,18 +161,18 @@ func (a App) checkFile(ctx context.Context, pathname string, shouldExist bool) ( func (a App) updateCover(ctx context.Context, item absto.Item) error { directory, err := a.storageApp.Info(ctx, item.Dir()) if err != nil { - return fmt.Errorf("unable to get directory: %s", err) + return fmt.Errorf("get directory: %s", err) } aggregate, err := a.exifApp.GetAggregateFor(ctx, directory) if err != nil && !absto.IsNotExist(err) { - return fmt.Errorf("unable to get aggregate: %s", err) + return fmt.Errorf("get aggregate: %s", err) } aggregate.Cover = item.Name if err := a.exifApp.SaveAggregateFor(ctx, directory, aggregate); err != nil { - return fmt.Errorf("unable to save aggregate: %s", err) + return fmt.Errorf("save aggregate: %s", err) } return nil diff --git a/pkg/crud/search.go b/pkg/crud/search.go index 3460eebd..a8dde5ce 100644 --- a/pkg/crud/search.go +++ b/pkg/crud/search.go @@ -233,7 +233,7 @@ func parseDate(raw string) (time.Time, error) { value, err := time.Parse(isoDateLayout, raw) if err != nil { - return time.Time{}, fmt.Errorf("unable to parse date: %s", err) + return time.Time{}, fmt.Errorf("parse date: %s", err) } return value, nil diff --git a/pkg/crud/stats.go b/pkg/crud/stats.go index bc63d6c0..9f5878ac 100644 --- a/pkg/crud/stats.go +++ b/pkg/crud/stats.go @@ -51,7 +51,7 @@ func (a App) computeStats(ctx context.Context, pathname string) (map[string]uint return nil }) if err != nil { - return nil, fmt.Errorf("unable to browse files: %s", err) + return nil, fmt.Errorf("browse files: %s", err) } err = a.rawStorageApp.Walk(ctx, provider.MetadataDirectoryName+pathname, func(item absto.Item) error { @@ -63,7 +63,7 @@ func (a App) computeStats(ctx context.Context, pathname string) (map[string]uint }) if err != nil { - return nil, fmt.Errorf("unable to browse metadatas: %s", err) + return nil, fmt.Errorf("browse metadatas: %s", err) } return map[string]uint64{ diff --git a/pkg/crud/story.go b/pkg/crud/story.go index 6fdce2c0..3297e8b2 100644 --- a/pkg/crud/story.go +++ b/pkg/crud/story.go @@ -21,7 +21,7 @@ func (a App) story(r *http.Request, request provider.Request, item absto.Item, f directoryAggregate, err := a.exifApp.GetAggregateFor(ctx, item) if err != nil && !absto.IsNotExist(err) { - logger.WithField("fn", "crud.story").WithField("item", request.Path).Error("unable to get aggregate: %s", err) + logger.WithField("fn", "crud.story").WithField("item", request.Path).Error("get aggregate: %s", err) } for _, file := range files { @@ -31,7 +31,7 @@ func (a App) story(r *http.Request, request provider.Request, item absto.Item, f exif, err := a.exifApp.GetExifFor(ctx, file) if err != nil { - logger.WithField("item", file.Pathname).Error("unable to get exif: %s", err) + logger.WithField("item", file.Pathname).Error("get exif: %s", err) } if !request.Share.Story && !hasMap && exif.Geocode.HasCoordinates() { diff --git a/pkg/crud/upload.go b/pkg/crud/upload.go index d8ff01dd..e6a787a6 100644 --- a/pkg/crud/upload.go +++ b/pkg/crud/upload.go @@ -21,13 +21,13 @@ func (a App) saveUploadedFile(ctx context.Context, request provider.Request, inp fileName, filePath, err = getUploadNameAndPath(request, inputName, file) if err != nil { - return "", fmt.Errorf("unable to get upload name: %s", err) + return "", fmt.Errorf("get upload name: %s", err) } var size int64 size, err = getUploadSize(rawSize) if err != nil { - return "", fmt.Errorf("unable to get upload size: %s", err) + return "", fmt.Errorf("get upload size: %s", err) } err = provider.WriteToStorage(ctx, a.storageApp, filePath, size, file) @@ -35,7 +35,7 @@ func (a App) saveUploadedFile(ctx context.Context, request provider.Request, inp if err == nil { go func() { if info, infoErr := a.storageApp.Info(context.Background(), filePath); infoErr != nil { - logger.Error("unable to get info for upload event: %s", infoErr) + logger.Error("get info for upload event: %s", infoErr) } else { a.notify(provider.NewUploadEvent(request, info, a.bestSharePath(filePath), a.rendererApp)) } @@ -70,7 +70,7 @@ func getUploadSize(rawSize string) (int64, error) { if len(rawSize) > 0 { if size, err := strconv.ParseInt(rawSize, 10, 64); err != nil { - return size, fmt.Errorf("unable to parse filesize: %s", err) + return size, fmt.Errorf("parse filesize: %s", err) } } diff --git a/pkg/crud/upload_chunk.go b/pkg/crud/upload_chunk.go index b217ebfc..17b4e64b 100644 --- a/pkg/crud/upload_chunk.go +++ b/pkg/crud/upload_chunk.go @@ -41,7 +41,7 @@ func (a App) uploadChunk(w http.ResponseWriter, r *http.Request, request provide defer func() { if closeErr := writer.Close(); closeErr != nil { - logger.Error("unable to close chunk writer: %s", closeErr) + logger.Error("close chunk writer: %s", closeErr) } if err == nil { @@ -49,7 +49,7 @@ func (a App) uploadChunk(w http.ResponseWriter, r *http.Request, request provide } if removeErr := os.Remove(tempFile); removeErr != nil { - logger.Error("unable to remove chunk file `%s`: %s", tempFile, removeErr) + logger.Error("remove chunk file `%s`: %s", tempFile, removeErr) } }() @@ -100,7 +100,7 @@ func (a App) mergeChunk(w http.ResponseWriter, r *http.Request, request provider if err == nil { go func() { if info, infoErr := a.storageApp.Info(context.Background(), filePath); infoErr != nil { - logger.Error("unable to get info for upload event: %s", infoErr) + logger.Error("get info for upload event: %s", infoErr) } else { a.notify(provider.NewUploadEvent(request, info, a.bestSharePath(filePath), a.rendererApp)) } @@ -108,7 +108,7 @@ func (a App) mergeChunk(w http.ResponseWriter, r *http.Request, request provider } if err = os.RemoveAll(tempFolder); err != nil { - logger.Error("unable to delete chunk folder `%s`: %s", tempFolder, err) + logger.Error("delete chunk folder `%s`: %s", tempFolder, err) } a.postUpload(ctx, w, r, request, fileName, values) @@ -117,12 +117,12 @@ func (a App) mergeChunk(w http.ResponseWriter, r *http.Request, request provider func (a App) mergeChunkFiles(directory, destination string) error { writer, err := os.OpenFile(destination, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o600) if err != nil { - return fmt.Errorf("unable to open destination file `%s`: %s", destination, err) + return fmt.Errorf("open destination file `%s`: %s", destination, err) } defer func() { if closeErr := writer.Close(); closeErr != nil { - logger.Error("unable to close chunk's destination: %s", closeErr) + logger.Error("close chunk's destination: %s", closeErr) } if err == nil { @@ -130,12 +130,12 @@ func (a App) mergeChunkFiles(directory, destination string) error { } if removeErr := os.Remove(destination); removeErr != nil { - logger.Error("unable to remove chunk's destination `%s`: %s", destination, removeErr) + logger.Error("remove chunk's destination `%s`: %s", destination, removeErr) } }() if err = browseChunkFiles(directory, destination, writer); err != nil { - return fmt.Errorf("unable to walk chunks in `%s`: %s", directory, err) + return fmt.Errorf("walk chunks in `%s`: %s", directory, err) } return nil @@ -153,17 +153,17 @@ func browseChunkFiles(directory, destination string, writer io.Writer) error { reader, err := os.Open(path) if err != nil { - return fmt.Errorf("unable to open chunk `%s`: %s", path, err) + return fmt.Errorf("open chunk `%s`: %s", path, err) } defer func() { if closeErr := reader.Close(); closeErr != nil { - logger.Error("unable to close chunk `%s`: %s", path, err) + logger.Error("close chunk `%s`: %s", path, err) } }() if _, err = io.Copy(writer, reader); err != nil { - return fmt.Errorf("unable to copy chunk `%s`: %s", path, err) + return fmt.Errorf("copy chunk `%s`: %s", path, err) } return nil diff --git a/pkg/crud/webhook.go b/pkg/crud/webhook.go index f5c8ba8d..cc6ae364 100644 --- a/pkg/crud/webhook.go +++ b/pkg/crud/webhook.go @@ -20,7 +20,7 @@ func (a App) createWebhook(w http.ResponseWriter, r *http.Request, request provi var err error err = r.ParseForm() if err != nil { - a.error(w, r, request, model.WrapInvalid(fmt.Errorf("unable to parse form: %s", err))) + a.error(w, r, request, model.WrapInvalid(fmt.Errorf("parse form: %s", err))) return } @@ -72,7 +72,7 @@ func checkWebhookForm(r *http.Request) (recursive bool, kind provider.WebhookKin kind, err = provider.ParseWebhookKind(r.Form.Get("kind")) if err != nil { - err = model.WrapInvalid(fmt.Errorf("unable to parse kind: %s", err)) + err = model.WrapInvalid(fmt.Errorf("parse kind: %s", err)) return } @@ -92,7 +92,7 @@ func checkWebhookForm(r *http.Request) (recursive bool, kind provider.WebhookKin webhookURL = generateTelegramURL(webhookURL, chatID) } else { if _, err = url.Parse(webhookURL); err != nil { - err = model.WrapInvalid(fmt.Errorf("unable to parse url: %s", err)) + err = model.WrapInvalid(fmt.Errorf("parse url: %s", err)) return } } diff --git a/pkg/exif/aggregate.go b/pkg/exif/aggregate.go index d111189e..8a9ce409 100644 --- a/pkg/exif/aggregate.go +++ b/pkg/exif/aggregate.go @@ -35,7 +35,7 @@ func (a App) GetExifFor(ctx context.Context, item absto.Item) (exas.Exif, error) return cache.Retrieve(ctx, a.redisClient, redisKey(item.ID), func(ctx context.Context) (exas.Exif, error) { exif, err := a.loadExif(ctx, item) if err != nil && !absto.IsNotExist(err) { - return exif, fmt.Errorf("unable to load exif: %w", err) + return exif, fmt.Errorf("load exif: %w", err) } return exif, nil @@ -54,7 +54,7 @@ func (a App) GetAggregateFor(ctx context.Context, item absto.Item) (provider.Agg return cache.Retrieve(ctx, a.redisClient, redisKey(item.ID), func(ctx context.Context) (provider.Aggregate, error) { aggregate, err := a.loadAggregate(ctx, item) if err != nil && !absto.IsNotExist(err) { - return aggregate, fmt.Errorf("unable to load aggregate: %w", err) + return aggregate, fmt.Errorf("load aggregate: %w", err) } return aggregate, nil @@ -75,14 +75,14 @@ func (a App) aggregate(ctx context.Context, item absto.Item) error { if !item.IsDir { file, err := a.getDirOf(ctx, item) if err != nil { - return fmt.Errorf("unable to get directory: %w", err) + return fmt.Errorf("get directory: %w", err) } item = file } if err := a.computeAndSaveAggregate(ctx, item); err != nil { - return fmt.Errorf("unable to compute aggregate: %w", err) + return fmt.Errorf("compute aggregate: %w", err) } return nil @@ -116,7 +116,7 @@ func (a App) computeAndSaveAggregate(ctx context.Context, dir absto.Item) error return nil }) if err != nil { - return fmt.Errorf("unable to aggregate: %w", err) + return fmt.Errorf("aggregate: %w", err) } if len(directoryAggregate) == 0 { diff --git a/pkg/exif/amqp.go b/pkg/exif/amqp.go index 394a7440..b7a2f988 100644 --- a/pkg/exif/amqp.go +++ b/pkg/exif/amqp.go @@ -16,7 +16,7 @@ func (a App) AmqpHandler(message amqp.Delivery) error { var resp provider.ExifResponse if err := json.Unmarshal(message.Body, &resp); err != nil { - return fmt.Errorf("unable to decode: %s", err) + return fmt.Errorf("decode: %s", err) } if resp.Exif.IsZero() { @@ -27,13 +27,13 @@ func (a App) AmqpHandler(message amqp.Delivery) error { exif, err := a.loadExif(ctx, resp.Item) if err != nil && !absto.IsNotExist(err) { - logger.WithField("item", resp.Item.Pathname).Error("unable to load exif: %s", err) + logger.WithField("item", resp.Item.Pathname).Error("load exif: %s", err) } resp.Exif.Description = exif.Description if err := a.saveMetadata(ctx, resp.Item, resp.Exif); err != nil { - return fmt.Errorf("unable to save: %s", err) + return fmt.Errorf("save: %s", err) } return a.processExif(ctx, resp.Item, resp.Exif, true) diff --git a/pkg/exif/date.go b/pkg/exif/date.go index 0f859b1c..53b7812f 100644 --- a/pkg/exif/date.go +++ b/pkg/exif/date.go @@ -14,7 +14,7 @@ func (a App) updateDate(ctx context.Context, item absto.Item, data exas.Exif) er } if err := a.storageApp.UpdateDate(ctx, item.Pathname, data.Date); err != nil { - return fmt.Errorf("unable to update date: %s", err) + return fmt.Errorf("update date: %s", err) } return nil diff --git a/pkg/exif/event.go b/pkg/exif/event.go index 0e052e17..16a548c0 100644 --- a/pkg/exif/event.go +++ b/pkg/exif/event.go @@ -21,11 +21,11 @@ func (a App) EventConsumer(ctx context.Context, e provider.Event) { switch e.Type { case provider.StartEvent: if err = a.handleStartEvent(ctx, e); err != nil { - getEventLogger(e.Item).Error("unable to start: %s", err) + getEventLogger(e.Item).Error("start: %s", err) } case provider.UploadEvent: if err = a.handleUploadEvent(ctx, e.Item, true); err != nil { - getEventLogger(e.Item).Error("unable to upload: %s", err) + getEventLogger(e.Item).Error("upload: %s", err) } case provider.RenameEvent: if !e.Item.IsDir { @@ -36,11 +36,11 @@ func (a App) EventConsumer(ctx context.Context, e provider.Event) { } if err != nil { - getEventLogger(e.Item).Error("unable to rename: %s", err) + getEventLogger(e.Item).Error("rename: %s", err) } case provider.DeleteEvent: if err := a.delete(ctx, e.Item); err != nil { - getEventLogger(e.Item).Error("unable to delete: %s", err) + getEventLogger(e.Item).Error("delete: %s", err) } } } @@ -48,7 +48,7 @@ func (a App) EventConsumer(ctx context.Context, e provider.Event) { // Rename exif of an item func (a App) Rename(ctx context.Context, old, new absto.Item) error { if err := a.storageApp.Rename(ctx, Path(old), Path(new)); err != nil && !absto.IsNotExist(err) { - return fmt.Errorf("unable to rename exif: %s", err) + return fmt.Errorf("rename exif: %s", err) } return nil @@ -88,7 +88,7 @@ func (a App) handleUploadEvent(ctx context.Context, item absto.Item, aggregate b exif, err := a.extractAndSaveExif(ctx, item) if err != nil { - return fmt.Errorf("unable to extract and save exif: %s", err) + return fmt.Errorf("extract and save exif: %s", err) } if exif.IsZero() { @@ -100,7 +100,7 @@ func (a App) handleUploadEvent(ctx context.Context, item absto.Item, aggregate b func (a App) processExif(ctx context.Context, item absto.Item, exif exas.Exif, aggregate bool) error { if err := a.updateDate(ctx, item, exif); err != nil { - return fmt.Errorf("unable to update date: %s", err) + return fmt.Errorf("update date: %s", err) } if !aggregate { @@ -108,7 +108,7 @@ func (a App) processExif(ctx context.Context, item absto.Item, exif exas.Exif, a } if err := a.aggregate(ctx, item); err != nil { - return fmt.Errorf("unable to aggregate folder: %s", err) + return fmt.Errorf("aggregate folder: %s", err) } return nil @@ -117,12 +117,12 @@ func (a App) processExif(ctx context.Context, item absto.Item, exif exas.Exif, a func (a App) aggregateOnRename(ctx context.Context, old, new absto.Item) error { oldDir, err := a.getDirOf(ctx, old) if err != nil { - return fmt.Errorf("unable to get old directory: %s", err) + return fmt.Errorf("get old directory: %s", err) } newDir, err := a.getDirOf(ctx, new) if err != nil { - return fmt.Errorf("unable to get new directory: %s", err) + return fmt.Errorf("get new directory: %s", err) } if oldDir.Pathname == newDir.Pathname { @@ -130,11 +130,11 @@ func (a App) aggregateOnRename(ctx context.Context, old, new absto.Item) error { } if err = a.aggregate(ctx, oldDir); err != nil { - return fmt.Errorf("unable to aggregate old directory: %s", err) + return fmt.Errorf("aggregate old directory: %s", err) } if err = a.aggregate(ctx, newDir); err != nil { - return fmt.Errorf("unable to aggregate new directory: %s", err) + return fmt.Errorf("aggregate new directory: %s", err) } return nil @@ -142,12 +142,12 @@ func (a App) aggregateOnRename(ctx context.Context, old, new absto.Item) error { func (a App) delete(ctx context.Context, item absto.Item) error { if err := a.storageApp.Remove(ctx, Path(item)); err != nil { - return fmt.Errorf("unable to delete: %s", err) + return fmt.Errorf("delete: %s", err) } if !item.IsDir { if err := a.aggregate(ctx, item); err != nil { - return fmt.Errorf("unable to aggregate directory: %s", err) + return fmt.Errorf("aggregate directory: %s", err) } } diff --git a/pkg/exif/exif.go b/pkg/exif/exif.go index ffcb82bc..70801c3e 100644 --- a/pkg/exif/exif.go +++ b/pkg/exif/exif.go @@ -77,7 +77,7 @@ func New(config Config, storageApp absto.Storage, prometheusRegisterer prometheu amqpExchange = strings.TrimSpace(*config.amqpExchange) if err := amqpClient.Publisher(amqpExchange, "direct", nil); err != nil { - return App{}, fmt.Errorf("unable to configure amqp: %s", err) + return App{}, fmt.Errorf("configure amqp: %s", err) } } @@ -123,13 +123,13 @@ func (a App) enabled() bool { func (a App) extractAndSaveExif(ctx context.Context, item absto.Item) (exif exas.Exif, err error) { exif, err = a.extractExif(ctx, item) if err != nil { - err = fmt.Errorf("unable to extract exif: %s", err) + err = fmt.Errorf("extract exif: %s", err) return } previousExif, err := a.loadExif(ctx, item) if err != nil && !absto.IsNotExist(err) { - logger.WithField("item", item.Pathname).Error("unable to load exif: %s", err) + logger.WithField("item", item.Pathname).Error("load exif: %s", err) } exif.Description = previousExif.Description @@ -139,7 +139,7 @@ func (a App) extractAndSaveExif(ctx context.Context, item absto.Item) (exif exas } if err = a.saveMetadata(ctx, item, exif); err != nil { - err = fmt.Errorf("unable to save exif: %s", err) + err = fmt.Errorf("save exif: %s", err) } return @@ -158,12 +158,12 @@ func (a App) extractExif(ctx context.Context, item absto.Item) (exif exas.Exif, if err != nil { a.increaseExif("error") - err = fmt.Errorf("unable to fetch exif: %s", err) + err = fmt.Errorf("fetch exif: %s", err) return } if err = httpjson.Read(resp, &exif); err != nil { - err = fmt.Errorf("unable to read exif: %s", err) + err = fmt.Errorf("read exif: %s", err) } return diff --git a/pkg/exif/util.go b/pkg/exif/util.go index e0eb20e6..a45dd308 100644 --- a/pkg/exif/util.go +++ b/pkg/exif/util.go @@ -49,16 +49,16 @@ func (a App) saveMetadata(ctx context.Context, item absto.Item, data any) error if _, err := a.storageApp.Info(ctx, dirname); err != nil { if !absto.IsNotExist(err) { - return fmt.Errorf("unable to check directory existence: %s", err) + return fmt.Errorf("check directory existence: %s", err) } if err = a.storageApp.CreateDir(ctx, dirname); err != nil { - return fmt.Errorf("unable to create directory: %s", err) + return fmt.Errorf("create directory: %s", err) } } if err := provider.SaveJSON(ctx, a.storageApp, filename, data); err != nil { - return fmt.Errorf("unable to save: %s", err) + return fmt.Errorf("save: %s", err) } if item.IsDir { diff --git a/pkg/provider/event.go b/pkg/provider/event.go index 0f44d4b6..817fd4a1 100644 --- a/pkg/provider/event.go +++ b/pkg/provider/event.go @@ -80,12 +80,12 @@ func (et *EventType) UnmarshalJSON(b []byte) error { var strValue string err := json.Unmarshal(b, &strValue) if err != nil { - return fmt.Errorf("unable to unmarshal event type: %s", err) + return fmt.Errorf("unmarshal event type: %s", err) } value, err := ParseEventType(strValue) if err != nil { - return fmt.Errorf("unable to parse event type: %s", err) + return fmt.Errorf("parse event type: %s", err) } *et = value @@ -289,7 +289,7 @@ func NewEventBus(size uint, prometheusRegisterer prometheus.Registerer, tracerAp }, []string{"type", "state"}) if err := prometheusRegisterer.Register(counter); err != nil { - return EventBus{}, fmt.Errorf("unable to register event metric: %s", err) + return EventBus{}, fmt.Errorf("register event metric: %s", err) } } @@ -349,7 +349,7 @@ func (e EventBus) Start(done <-chan struct{}, storageApp absto.Storage, renamers // RenameDirectory for metadata func RenameDirectory(ctx context.Context, storageApp absto.Storage, renamers []Renamer, old, new absto.Item) { if err := storageApp.CreateDir(ctx, MetadataDirectory(new)); err != nil { - logger.Error("unable to create new metadata directory: %s", err) + logger.Error("create new metadata directory: %s", err) return } @@ -365,17 +365,17 @@ func RenameDirectory(ctx context.Context, storageApp absto.Storage, renamers []R for _, renamer := range renamers { if err := renamer(ctx, oldItem, item); err != nil { - logger.Error("unable to rename metadata from `%s` to `%s`: %s", oldItem.Pathname, item.Pathname, err) + logger.Error("rename metadata from `%s` to `%s`: %s", oldItem.Pathname, item.Pathname, err) } } return nil }); err != nil { - logger.Error("unable to walk new metadata directory: %s", err) + logger.Error("walk new metadata directory: %s", err) } if err := storageApp.Remove(ctx, MetadataDirectory(old)); err != nil { - logger.Error("unable to delete old metadata directory: %s", err) + logger.Error("delete old metadata directory: %s", err) return } } diff --git a/pkg/provider/interfaces.go b/pkg/provider/interfaces.go index 067a1c38..ada9d4aa 100644 --- a/pkg/provider/interfaces.go +++ b/pkg/provider/interfaces.go @@ -15,6 +15,7 @@ import ( //go:generate mockgen -destination ../mocks/storage.go -mock_names Storage=Storage -package mocks github.com/ViBiOh/absto/pkg/model Storage // Crud for user to interfact with filesystem +// //go:generate mockgen -destination ../mocks/crud.go -mock_names Crud=Crud -package mocks github.com/ViBiOh/fibr/pkg/provider Crud type Crud interface { Get(http.ResponseWriter, *http.Request, Request) (renderer.Page, error) @@ -25,6 +26,7 @@ type Crud interface { } // Auth manager user authentication/authorization +// //go:generate mockgen -destination ../mocks/auth.go -mock_names Auth=Auth -package mocks github.com/ViBiOh/fibr/pkg/provider Auth type Auth interface { IsAuthenticated(*http.Request) (ident.Provider, model.User, error) @@ -32,6 +34,7 @@ type Auth interface { } // ShareManager description +// //go:generate mockgen -destination ../mocks/share.go -mock_names ShareManager=Share -package mocks github.com/ViBiOh/fibr/pkg/provider ShareManager type ShareManager interface { Get(string) Share @@ -41,6 +44,7 @@ type ShareManager interface { } // WebhookManager description +// //go:generate mockgen -destination ../mocks/webhook.go -mock_names WebhookManager=Webhook -package mocks github.com/ViBiOh/fibr/pkg/provider WebhookManager type WebhookManager interface { Create(context.Context, string, bool, WebhookKind, string, []EventType) (string, error) @@ -49,6 +53,7 @@ type WebhookManager interface { } // ExifManager description +// //go:generate mockgen -destination ../mocks/exif.go -mock_names ExifManager=Exif -package mocks github.com/ViBiOh/fibr/pkg/provider ExifManager type ExifManager interface { ListDir(ctx context.Context, item absto.Item) ([]absto.Item, error) diff --git a/pkg/provider/share_test.go b/pkg/provider/share_test.go index 97edf402..69e534f8 100644 --- a/pkg/provider/share_test.go +++ b/pkg/provider/share_test.go @@ -12,7 +12,7 @@ import ( func TestCheckPassword(t *testing.T) { password, err := bcrypt.GenerateFromPassword([]byte("test"), bcrypt.DefaultCost) if err != nil { - t.Errorf("unable to create bcrypted password: %s", err) + t.Errorf("create bcrypted password: %s", err) } cases := map[string]struct { diff --git a/pkg/provider/utils.go b/pkg/provider/utils.go index 88cdbb1a..60f75705 100644 --- a/pkg/provider/utils.go +++ b/pkg/provider/utils.go @@ -123,7 +123,7 @@ func SanitizeName(name string, removeSlash bool) (string, error) { // SafeWrite writes content to writer with error handling func SafeWrite(w io.Writer, content string) { if _, err := io.WriteString(w, content); err != nil { - logger.Error("unable to write content: %s", err) + logger.Error("write content: %s", err) } } @@ -161,7 +161,7 @@ func LoadJSON(ctx context.Context, storageApp absto.Storage, filename string, co var reader io.ReadCloser reader, err = storageApp.ReadFrom(ctx, filename) if err != nil { - return fmt.Errorf("unable to read: %w", err) + return fmt.Errorf("read: %w", err) } defer func() { @@ -169,7 +169,7 @@ func LoadJSON(ctx context.Context, storageApp absto.Storage, filename string, co }() if err = json.NewDecoder(reader).Decode(content); err != nil { - err = fmt.Errorf("unable to decode: %w", storageApp.ConvertError(err)) + err = fmt.Errorf("decode: %w", storageApp.ConvertError(err)) } return @@ -185,11 +185,11 @@ func SaveJSON(ctx context.Context, storageApp absto.Storage, filename string, co var err error if jsonErr := json.NewEncoder(writer).Encode(content); jsonErr != nil { - err = fmt.Errorf("unable to encode: %w", jsonErr) + err = fmt.Errorf("encode: %w", jsonErr) } if closeErr := writer.Close(); closeErr != nil { - err = model.WrapError(err, fmt.Errorf("unable to close encoder: %w", closeErr)) + err = model.WrapError(err, fmt.Errorf("close encoder: %w", closeErr)) } done <- err @@ -208,7 +208,7 @@ func SaveJSON(ctx context.Context, storageApp absto.Storage, filename string, co func SendLargeFile(ctx context.Context, storageApp absto.Storage, item absto.Item, req request.Request) (*http.Response, error) { file, err := storageApp.ReadFrom(ctx, item.Pathname) // will be closed by `PipeWriter` if err != nil { - return nil, fmt.Errorf("unable to get reader: %w", err) + return nil, fmt.Errorf("get reader: %w", err) } reader, writer := io.Pipe() @@ -220,7 +220,7 @@ func SendLargeFile(ctx context.Context, storageApp absto.Storage, item absto.Ite var err error if _, err = io.CopyBuffer(writer, file, buffer.Bytes()); err != nil { - err = fmt.Errorf("unable to copy: %w", err) + err = fmt.Errorf("copy: %w", err) } _ = writer.CloseWithError(err) @@ -228,7 +228,7 @@ func SendLargeFile(ctx context.Context, storageApp absto.Storage, item absto.Ite r, err := req.Build(ctx, reader) if err != nil { - return nil, fmt.Errorf("unable to create request: %s", err) + return nil, fmt.Errorf("create request: %s", err) } r.ContentLength = item.Size @@ -239,7 +239,7 @@ func SendLargeFile(ctx context.Context, storageApp absto.Storage, item absto.Ite // HandleClose closes given closer respecting given err func HandleClose(closer io.Closer, err error) error { if closeErr := closer.Close(); closeErr != nil { - return model.WrapError(err, fmt.Errorf("unable to close: %s", closeErr)) + return model.WrapError(err, fmt.Errorf("close: %s", closeErr)) } return err @@ -248,7 +248,7 @@ func HandleClose(closer io.Closer, err error) error { // LogClose closes given closer and logging in case of error func LogClose(closer io.Closer, fn, item string) { if err := closer.Close(); err != nil { - logger.WithField("fn", "fn").WithField("item", item).Error("unable to close: %s", err) + logger.WithField("fn", "fn").WithField("item", item).Error("close: %s", err) } } @@ -258,7 +258,7 @@ func WriteToStorage(ctx context.Context, storageApp absto.Storage, output string directory := path.Dir(output) if err = storageApp.CreateDir(ctx, directory); err != nil { - return fmt.Errorf("unable to create directory: %s", err) + return fmt.Errorf("create directory: %s", err) } if size == -1 { @@ -269,7 +269,7 @@ func WriteToStorage(ctx context.Context, storageApp absto.Storage, output string if err != nil { if removeErr := storageApp.Remove(ctx, output); removeErr != nil { - err = model.WrapError(err, fmt.Errorf("unable to remove: %s", removeErr)) + err = model.WrapError(err, fmt.Errorf("remove: %s", removeErr)) } } diff --git a/pkg/provider/webhook.go b/pkg/provider/webhook.go index cbd84700..a640a808 100644 --- a/pkg/provider/webhook.go +++ b/pkg/provider/webhook.go @@ -54,12 +54,12 @@ func (r *WebhookKind) UnmarshalJSON(b []byte) error { var strValue string err := json.Unmarshal(b, &strValue) if err != nil { - return fmt.Errorf("unable to unmarshal event type: %s", err) + return fmt.Errorf("unmarshal event type: %s", err) } value, err := ParseWebhookKind(strValue) if err != nil { - return fmt.Errorf("unable to parse event type: %s", err) + return fmt.Errorf("parse event type: %s", err) } *r = value diff --git a/pkg/share/amqp.go b/pkg/share/amqp.go index 5f05154d..254d937c 100644 --- a/pkg/share/amqp.go +++ b/pkg/share/amqp.go @@ -13,7 +13,7 @@ func (a *App) AmqpHandler(message amqp.Delivery) error { var share provider.Share if err := json.Unmarshal(message.Body, &share); err != nil { - return fmt.Errorf("unable to decode: %s", err) + return fmt.Errorf("decode: %s", err) } a.Lock() diff --git a/pkg/share/crud.go b/pkg/share/crud.go index 07cf08f1..b00a1144 100644 --- a/pkg/share/crud.go +++ b/pkg/share/crud.go @@ -52,7 +52,7 @@ func (a *App) Create(ctx context.Context, filepath string, edit, story bool, pas var err error id, err = a.generateID() if err != nil { - return fmt.Errorf("unable to generate id: %s", err) + return fmt.Errorf("generate id: %s", err) } share := provider.Share{ @@ -70,12 +70,12 @@ func (a *App) Create(ctx context.Context, filepath string, edit, story bool, pas a.shares[id] = share if err = provider.SaveJSON(ctx, a.storageApp, shareFilename, a.shares); err != nil { - return fmt.Errorf("unable to save shares: %s", err) + return fmt.Errorf("save shares: %s", err) } if a.amqpClient != nil { if err = a.amqpClient.PublishJSON(share, a.amqpExchange, a.amqpRoutingKey); err != nil { - return fmt.Errorf("unable to publish share creation: %s", err) + return fmt.Errorf("publish share creation: %s", err) } } @@ -98,12 +98,12 @@ func (a *App) delete(ctx context.Context, id string) error { delete(a.shares, id) if err := provider.SaveJSON(ctx, a.storageApp, shareFilename, a.shares); err != nil { - return fmt.Errorf("unable to save shares: %s", err) + return fmt.Errorf("save shares: %s", err) } if a.amqpClient != nil { if err := a.amqpClient.PublishJSON(provider.Share{ID: id}, a.amqpExchange, a.amqpRoutingKey); err != nil { - return fmt.Errorf("unable to publish share deletion: %s", err) + return fmt.Errorf("publish share deletion: %s", err) } } diff --git a/pkg/share/event.go b/pkg/share/event.go index 50e3a82e..4883e0c6 100644 --- a/pkg/share/event.go +++ b/pkg/share/event.go @@ -15,11 +15,11 @@ func (a *App) EventConsumer(ctx context.Context, e provider.Event) { switch e.Type { case provider.RenameEvent: if err := a.renameItem(ctx, e.Item, *e.New); err != nil { - logger.Error("unable to rename share: %s", err) + logger.Error("rename share: %s", err) } case provider.DeleteEvent: if err := a.deleteItem(ctx, e.Item); err != nil { - logger.Error("unable to rename share: %s", err) + logger.Error("rename share: %s", err) } } } @@ -33,7 +33,7 @@ func (a *App) renameItem(ctx context.Context, old, new absto.Item) error { if a.amqpClient != nil { if err := a.amqpClient.PublishJSON(share, a.amqpExchange, a.amqpRoutingKey); err != nil { - return fmt.Errorf("unable to publish share rename: %s", err) + return fmt.Errorf("publish share rename: %s", err) } } } @@ -50,7 +50,7 @@ func (a *App) deleteItem(ctx context.Context, item absto.Item) error { for id, share := range a.shares { if strings.HasPrefix(share.Path, item.Pathname) { if err := a.delete(ctx, id); err != nil { - return fmt.Errorf("unable to delete share `%s`: %s", id, err) + return fmt.Errorf("delete share `%s`: %s", id, err) } } } diff --git a/pkg/share/share.go b/pkg/share/share.go index 8e7ce8a7..9ff232b1 100644 --- a/pkg/share/share.go +++ b/pkg/share/share.go @@ -63,12 +63,12 @@ func New(config Config, storageApp absto.Storage, amqpClient *amqp.Client) (*App amqpExclusiveRoutingKey = strings.TrimSpace(*config.amqpExclusiveRoutingKey) if err := amqpClient.Publisher(amqpExchange, "fanout", nil); err != nil { - return &App{}, fmt.Errorf("unable to configure amqp: %s", err) + return &App{}, fmt.Errorf("configure amqp: %s", err) } amqpExchange = strings.TrimSpace(*config.amqpExchange) if err := amqpClient.SetupExclusive(amqpExclusiveRoutingKey); err != nil { - return &App{}, fmt.Errorf("unable to setup amqp exclusive: %s", err) + return &App{}, fmt.Errorf("setup amqp exclusive: %s", err) } } @@ -90,7 +90,7 @@ func (a *App) Exclusive(ctx context.Context, name string, duration time.Duration defer a.Unlock() if err := a.refresh(ctx); err != nil { - return fmt.Errorf("unable to refresh shares: %s", err) + return fmt.Errorf("refresh shares: %s", err) } return action(ctx) @@ -134,12 +134,12 @@ func (a *App) Get(requestPath string) provider.Share { // Start worker func (a *App) Start(done <-chan struct{}) { if err := a.loadShares(context.Background()); err != nil { - logger.Error("unable to refresh shares: %s", err) + logger.Error("refresh shares: %s", err) return } cron := cron.New().Each(time.Hour).OnError(func(err error) { - logger.Error("unable to purge shares: %s", err) + logger.Error("purge shares: %s", err) }).OnSignal(syscall.SIGUSR1) if a.amqpClient != nil { @@ -163,7 +163,7 @@ func (a *App) refresh(ctx context.Context) error { } if err := a.storageApp.CreateDir(ctx, provider.MetadataDirectoryName); err != nil { - return fmt.Errorf("unable to create dir: %s", err) + return fmt.Errorf("create dir: %s", err) } return provider.SaveJSON(ctx, a.storageApp, shareFilename, &a.shares) @@ -182,7 +182,7 @@ func (a *App) purgeExpiredShares() bool { if a.amqpClient != nil { if err := a.amqpClient.PublishJSON(provider.Share{ID: id}, a.amqpExchange, a.amqpRoutingKey); err != nil { - logger.WithField("fn", "share.purgeExpiredShares").WithField("item", id).Error("unable to publish share purge: %s", err) + logger.WithField("fn", "share.purgeExpiredShares").WithField("item", id).Error("publish share purge: %s", err) } } diff --git a/pkg/thumbnail/event.go b/pkg/thumbnail/event.go index 67000f41..7c4d23b4 100644 --- a/pkg/thumbnail/event.go +++ b/pkg/thumbnail/event.go @@ -23,7 +23,7 @@ func (a App) EventConsumer(ctx context.Context, e provider.Event) { case provider.RenameEvent: if !e.Item.IsDir { if err := a.Rename(ctx, e.Item, *e.New); err != nil { - logger.Error("unable to rename item: %s", err) + logger.Error("rename item: %s", err) } } case provider.DeleteEvent: @@ -39,12 +39,12 @@ func (a App) Rename(ctx context.Context, old, new absto.Item) error { for _, size := range a.sizes { if err := a.storageApp.Rename(ctx, a.PathForScale(old, size), a.PathForScale(new, size)); err != nil && !absto.IsNotExist(err) { - return fmt.Errorf("unable to rename thumbnail: %s", err) + return fmt.Errorf("rename thumbnail: %s", err) } if provider.VideoExtensions[old.Extension] != "" && a.HasStream(ctx, old) { if err := a.renameStream(ctx, old, new); err != nil { - return fmt.Errorf("unable to rename stream: %s", err) + return fmt.Errorf("rename stream: %s", err) } } } @@ -65,7 +65,7 @@ func (a App) generateItem(ctx context.Context, event provider.Event) { } if err := a.generate(ctx, event.Item, size); err != nil { - logger.WithField("fn", "thumbnail.generate").WithField("item", event.Item.Pathname).Error("unable to generate for scale %d: %s", size, err) + logger.WithField("fn", "thumbnail.generate").WithField("item", event.Item.Pathname).Error("generate for scale %d: %s", size, err) } } @@ -76,10 +76,10 @@ func (a App) generateItem(ctx context.Context, event provider.Event) { func (a App) generateStreamIfNeeded(ctx context.Context, event provider.Event) { if needStream, err := a.shouldGenerateStream(ctx, event.Item); err != nil { - logger.Error("unable to determine if stream generation is possible: %s", err) + logger.Error("determine if stream generation is possible: %s", err) } else if needStream { if err = a.generateStream(ctx, event.Item); err != nil { - logger.Error("unable to generate stream: %s", err) + logger.Error("generate stream: %s", err) } } } @@ -87,19 +87,19 @@ func (a App) generateStreamIfNeeded(ctx context.Context, event provider.Event) { func (a App) delete(ctx context.Context, item absto.Item) { if item.IsDir { if err := a.storageApp.Remove(ctx, provider.MetadataDirectory(item)); err != nil { - logger.Error("unable to delete thumbnail folder: %s", err) + logger.Error("delete thumbnail folder: %s", err) } return } for _, size := range a.sizes { if err := a.storageApp.Remove(ctx, a.PathForScale(item, size)); err != nil { - logger.Error("unable to delete thumbnail: %s", err) + logger.Error("delete thumbnail: %s", err) } if provider.VideoExtensions[item.Extension] != "" && a.HasStream(ctx, item) { if err := a.deleteStream(ctx, item); err != nil { - logger.Error("unable to delete stream: %s", err) + logger.Error("delete stream: %s", err) } } } diff --git a/pkg/thumbnail/generate.go b/pkg/thumbnail/generate.go index 79d6bb4b..a8874454 100644 --- a/pkg/thumbnail/generate.go +++ b/pkg/thumbnail/generate.go @@ -27,7 +27,7 @@ func (a App) generate(ctx context.Context, item absto.Item, scale uint64) (err e resp, err = a.requestVith(ctx, item, scale) if err != nil { a.increaseMetric(itemType.String(), "error") - return fmt.Errorf("unable to request thumbnailer: %s", err) + return fmt.Errorf("request thumbnailer: %s", err) } if resp == nil { @@ -36,7 +36,7 @@ func (a App) generate(ctx context.Context, item absto.Item, scale uint64) (err e defer func() { if closeErr := request.DiscardBody(resp.Body); closeErr != nil { - err = httpModel.WrapError(err, fmt.Errorf("unable to close: %s", closeErr)) + err = httpModel.WrapError(err, fmt.Errorf("close: %s", closeErr)) } }() diff --git a/pkg/thumbnail/stream.go b/pkg/thumbnail/stream.go index d9054f04..c72f8358 100644 --- a/pkg/thumbnail/stream.go +++ b/pkg/thumbnail/stream.go @@ -23,11 +23,11 @@ func (a App) HasStream(ctx context.Context, item absto.Item) bool { func (a App) handleVithResponse(err error, body io.ReadCloser) error { if err != nil { a.increaseMetric("stream", "error") - return fmt.Errorf("unable to send request: %s", err) + return fmt.Errorf("send request: %s", err) } if err := request.DiscardBody(body); err != nil { - return fmt.Errorf("unable to discard body: %s", err) + return fmt.Errorf("discard body: %s", err) } return nil @@ -43,7 +43,7 @@ func (a App) shouldGenerateStream(ctx context.Context, item absto.Item) (bool, e resp, err := a.vithRequest.Method(http.MethodHead).Path(fmt.Sprintf("%s?type=%s", item.Pathname, typeOfItem(item))).Send(ctx, nil) if err != nil { a.increaseMetric("stream", "error") - return false, fmt.Errorf("unable to retrieve metadata: %s", err) + return false, fmt.Errorf("retrieve metadata: %s", err) } rawBitrate := resp.Header.Get("X-Vith-Bitrate") @@ -54,11 +54,11 @@ func (a App) shouldGenerateStream(ctx context.Context, item absto.Item) (bool, e bitrate, err := strconv.ParseUint(rawBitrate, 10, 64) if err != nil { a.increaseMetric("stream", "error") - return false, fmt.Errorf("unable to parse bitrate: %s", err) + return false, fmt.Errorf("parse bitrate: %s", err) } if err := request.DiscardBody(resp.Body); err != nil { - return false, fmt.Errorf("unable to discard body: %s", err) + return false, fmt.Errorf("discard body: %s", err) } logger.WithField("item", item.Pathname).Debug("Bitrate is %s", bitrate) diff --git a/pkg/thumbnail/thumbnail.go b/pkg/thumbnail/thumbnail.go index d175fec9..760cd38e 100644 --- a/pkg/thumbnail/thumbnail.go +++ b/pkg/thumbnail/thumbnail.go @@ -96,7 +96,7 @@ func New(config Config, storage absto.Storage, prometheusRegisterer prometheus.R amqpExchange = strings.TrimSpace(*config.amqpExchange) if err := amqpClient.Publisher(amqpExchange, "direct", nil); err != nil { - return App{}, fmt.Errorf("unable to configure amqp: %s", err) + return App{}, fmt.Errorf("configure amqp: %s", err) } } @@ -208,7 +208,7 @@ func (a App) List(w http.ResponseWriter, r *http.Request, request provider.Reque if query.GetBool(r, "search") { hash = a.thumbnailHash(ctx, items) } else if thumbnails, err := a.ListDir(ctx, item); err != nil { - logger.WithField("item", item.Pathname).Error("unable to list thumbnails: %s", err) + logger.WithField("item", item.Pathname).Error("list thumbnails: %s", err) } else { hash = sha.New(thumbnails) } @@ -258,7 +258,7 @@ func (a App) encodeContent(ctx context.Context, w io.Writer, isDone func() bool, reader, err := a.storageApp.ReadFrom(ctx, a.PathForScale(item, SmallSize)) if err != nil { if !absto.IsNotExist(err) { - logEncodeContentError(item).Error("unable to open: %s", err) + logEncodeContentError(item).Error("open: %s", err) } return @@ -275,12 +275,12 @@ func (a App) encodeContent(ctx context.Context, w io.Writer, isDone func() bool, if _, err = io.CopyBuffer(encoder, reader, buffer.Bytes()); err != nil { if !absto.IsNotExist(a.storageApp.ConvertError(err)) { - logEncodeContentError(item).Error("unable to copy: %s", err) + logEncodeContentError(item).Error("copy: %s", err) } } if err := encoder.Close(); err != nil { - logger.Error("unable to close thumbnail encoder: %s", err) + logger.Error("close thumbnail encoder: %s", err) } provider.DoneWriter(isDone, w, "\n") diff --git a/pkg/webhook/amqp.go b/pkg/webhook/amqp.go index cdc5b47e..6272427b 100644 --- a/pkg/webhook/amqp.go +++ b/pkg/webhook/amqp.go @@ -13,7 +13,7 @@ func (a *App) AmqpHandler(message amqp.Delivery) error { var webhook provider.Webhook if err := json.Unmarshal(message.Body, &webhook); err != nil { - return fmt.Errorf("unable to decode: %s", err) + return fmt.Errorf("decode: %s", err) } a.Lock() diff --git a/pkg/webhook/crud.go b/pkg/webhook/crud.go index 2ac7ee40..16f083b9 100644 --- a/pkg/webhook/crud.go +++ b/pkg/webhook/crud.go @@ -49,7 +49,7 @@ func (a *App) Create(ctx context.Context, pathname string, recursive bool, kind return id, a.Exclusive(ctx, a.amqpExclusiveRoutingKey, semaphoreDuration, func(ctx context.Context) (err error) { id, err = a.generateID() if err != nil { - return fmt.Errorf("unable to generate id: %s", err) + return fmt.Errorf("generate id: %s", err) } webhook := provider.Webhook{ @@ -64,12 +64,12 @@ func (a *App) Create(ctx context.Context, pathname string, recursive bool, kind a.webhooks[id] = webhook if err = provider.SaveJSON(ctx, a.storageApp, webhookFilename, a.webhooks); err != nil { - return fmt.Errorf("unable to save webhooks: %s", err) + return fmt.Errorf("save webhooks: %s", err) } if a.amqpClient != nil { if err = a.amqpClient.PublishJSON(webhook, a.amqpExchange, a.amqpRoutingKey); err != nil { - return fmt.Errorf("unable to publish webhook creation: %s", err) + return fmt.Errorf("publish webhook creation: %s", err) } } @@ -88,12 +88,12 @@ func (a *App) delete(ctx context.Context, id string) error { delete(a.webhooks, id) if err := provider.SaveJSON(ctx, a.storageApp, webhookFilename, a.webhooks); err != nil { - return fmt.Errorf("unable to save webhooks: %s", err) + return fmt.Errorf("save webhooks: %s", err) } if a.amqpClient != nil { if err := a.amqpClient.PublishJSON(provider.Webhook{ID: id}, a.amqpExchange, a.amqpRoutingKey); err != nil { - return fmt.Errorf("unable to publish webhook deletion: %s", err) + return fmt.Errorf("publish webhook deletion: %s", err) } } diff --git a/pkg/webhook/event.go b/pkg/webhook/event.go index 86c2de1c..9c7f651a 100644 --- a/pkg/webhook/event.go +++ b/pkg/webhook/event.go @@ -55,7 +55,7 @@ func (a *App) EventConsumer(ctx context.Context, event provider.Event) { go func() { if event.Type == provider.DeleteEvent { if err := a.deleteItem(ctx, event.Item); err != nil { - logger.Error("unable to delete webhooks for item: %s", err) + logger.Error("delete webhooks for item: %s", err) } } }() @@ -64,11 +64,11 @@ func (a *App) EventConsumer(ctx context.Context, event provider.Event) { func send(ctx context.Context, id string, req request.Request, payload any) (int, error) { resp, err := req.JSON(ctx, payload) if err != nil { - return 0, fmt.Errorf("unable to send webhook with id `%s`: %s", id, err) + return 0, fmt.Errorf("send webhook with id `%s`: %s", id, err) } if err = request.DiscardBody(resp.Body); err != nil { - return resp.StatusCode, fmt.Errorf("unable to discard body for webhook with id `%s`: %s", id, err) + return resp.StatusCode, fmt.Errorf("discard body for webhook with id `%s`: %s", id, err) } return resp.StatusCode, nil @@ -217,7 +217,7 @@ func (a *App) deleteItem(ctx context.Context, item absto.Item) error { for id, webhook := range a.webhooks { if webhook.Pathname == item.Pathname { if err := a.delete(ctx, id); err != nil { - return fmt.Errorf("unable to delete webhook `%s`: %s", id, err) + return fmt.Errorf("delete webhook `%s`: %s", id, err) } } } diff --git a/pkg/webhook/webhook.go b/pkg/webhook/webhook.go index a193eefc..11e487e0 100644 --- a/pkg/webhook/webhook.go +++ b/pkg/webhook/webhook.go @@ -73,12 +73,12 @@ func New(config Config, storageApp absto.Storage, prometheusRegisterer prometheu amqpExclusiveRoutingKey = strings.TrimSpace(*config.amqpExclusiveRoutingKey) if err := amqpClient.Publisher(amqpExchange, "fanout", nil); err != nil { - return &App{}, fmt.Errorf("unable to configure amqp: %s", err) + return &App{}, fmt.Errorf("configure amqp: %s", err) } amqpExchange = strings.TrimSpace(*config.amqpExchange) if err := amqpClient.SetupExclusive(amqpExclusiveRoutingKey); err != nil { - return &App{}, fmt.Errorf("unable to setup amqp exclusive: %s", err) + return &App{}, fmt.Errorf("setup amqp exclusive: %s", err) } } @@ -104,7 +104,7 @@ func (a *App) Exclusive(ctx context.Context, name string, duration time.Duration defer a.Unlock() if err := a.loadWebhooks(ctx); err != nil { - return fmt.Errorf("unable to refresh webhooks: %s", err) + return fmt.Errorf("refresh webhooks: %s", err) } return action(ctx) @@ -135,7 +135,7 @@ func (a *App) Start(_ <-chan struct{}) { defer a.Unlock() if err := a.loadWebhooks(context.Background()); err != nil { - logger.Error("unable to refresh webhooks: %s", err) + logger.Error("refresh webhooks: %s", err) return } } @@ -147,7 +147,7 @@ func (a *App) loadWebhooks(ctx context.Context) error { } if err := a.storageApp.CreateDir(ctx, provider.MetadataDirectoryName); err != nil { - return fmt.Errorf("unable to create dir: %s", err) + return fmt.Errorf("create dir: %s", err) } return provider.SaveJSON(ctx, a.storageApp, webhookFilename, &a.webhooks)