From fe293c2b8942866fcf0aa8bd27aa52805ab04189 Mon Sep 17 00:00:00 2001 From: DevMiner Date: Sat, 24 Aug 2024 01:26:56 +0200 Subject: [PATCH] refactor!: remove federation client --- go.mod | 22 +++-- go.sum | 45 +++------- .../svc_impls/federation_service_impl.go | 22 +++-- main.go | 25 +++--- pkg/versia/federation_client.go | 85 ------------------- 5 files changed, 48 insertions(+), 151 deletions(-) delete mode 100644 pkg/versia/federation_client.go diff --git a/go.mod b/go.mod index 54a9ab1..196b21f 100644 --- a/go.mod +++ b/go.mod @@ -4,18 +4,22 @@ go 1.22.5 require ( entgo.io/ent v0.13.1 - git.devminer.xyz/devminer/unitel v0.0.0-20240811005427-261161b9118d - github.com/Masterminds/semver v1.5.0 + git.devminer.xyz/devminer/unitel v0.0.0-20240822223836-a49c03bfb436 github.com/go-logr/logr v1.4.2 github.com/go-logr/zerologr v1.2.3 + github.com/go-playground/locales v0.14.1 + github.com/go-playground/universal-translator v0.18.1 + github.com/go-playground/validator/v10 v10.22.0 github.com/gofiber/fiber/v2 v2.52.5 github.com/google/uuid v1.6.0 github.com/jackc/pgx/v5 v5.6.0 + github.com/joho/godotenv v1.5.1 + github.com/nats-io/nats.go v1.36.0 github.com/pkg/errors v0.9.1 github.com/rs/zerolog v1.33.0 github.com/stretchr/testify v1.9.0 - github.com/ucarion/urlpath v0.0.0-20200424170820-7ccc79b76bbb github.com/valyala/fasthttp v1.55.0 + golang.org/x/crypto v0.26.0 modernc.org/sqlite v1.31.1 ) @@ -31,24 +35,19 @@ require ( github.com/getsentry/sentry-go v0.28.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/inflect v0.19.0 // indirect - github.com/go-playground/locales v0.14.1 // indirect - github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.22.0 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl/v2 v2.13.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/puddle/v2 v2.2.1 // indirect - github.com/joho/godotenv v1.5.1 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/nats-io/nats.go v1.36.0 // indirect github.com/nats-io/nkeys v0.4.7 // indirect github.com/nats-io/nuid v1.0.1 // indirect github.com/ncruces/go-strftime v0.1.9 // indirect @@ -70,15 +69,14 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.28.0 // indirect go.opentelemetry.io/otel/trace v1.28.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect - golang.org/x/crypto v0.26.0 // indirect golang.org/x/mod v0.19.0 // indirect golang.org/x/net v0.28.0 // indirect golang.org/x/sync v0.8.0 // indirect golang.org/x/sys v0.24.0 // indirect golang.org/x/text v0.17.0 // indirect golang.org/x/tools v0.23.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240808171019-573a1156607a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240808171019-573a1156607a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240822170219-fc7c04adadcd // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd // indirect google.golang.org/grpc v1.65.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index fe1c232..28ab6f0 100644 --- a/go.sum +++ b/go.sum @@ -2,18 +2,10 @@ ariga.io/atlas v0.19.1-0.20240203083654-5948b60a8e43 h1:GwdJbXydHCYPedeeLt4x/lrl ariga.io/atlas v0.19.1-0.20240203083654-5948b60a8e43/go.mod h1:uj3pm+hUTVN/X5yfdBexHlZv+1Xu5u5ZbZx7+CDavNU= entgo.io/ent v0.13.1 h1:uD8QwN1h6SNphdCCzmkMN3feSUzNnVvV/WIkHKMbzOE= entgo.io/ent v0.13.1/go.mod h1:qCEmo+biw3ccBn9OyL4ZK5dfpwg++l1Gxwac5B1206A= -git.devminer.xyz/devminer/unitel v0.0.0-20240731151502-6155fc58527e h1:D/evc8i/qVOI4aFB36zIksWjYto5ZJKhzdHP0FFQn8o= -git.devminer.xyz/devminer/unitel v0.0.0-20240731151502-6155fc58527e/go.mod h1:+aDah0giu/eSjnr/pTNC+g6CTPyf4lttIIewNQ+1HaQ= -git.devminer.xyz/devminer/unitel v0.0.0-20240731195827-7274c9b9631b h1:ky/+3Zyhpe7KOPuSKfmHcl7CWZUrEIxKPPKdmo1mjOY= -git.devminer.xyz/devminer/unitel v0.0.0-20240731195827-7274c9b9631b/go.mod h1:+aDah0giu/eSjnr/pTNC+g6CTPyf4lttIIewNQ+1HaQ= -git.devminer.xyz/devminer/unitel v0.0.0-20240810000007-3c254e87680c h1:iV8aKmhDzDEJMpCmidGfJ9v4++yDMAooGyMoCzJII8c= -git.devminer.xyz/devminer/unitel v0.0.0-20240810000007-3c254e87680c/go.mod h1:+aDah0giu/eSjnr/pTNC+g6CTPyf4lttIIewNQ+1HaQ= -git.devminer.xyz/devminer/unitel v0.0.0-20240811005427-261161b9118d h1:J+dcb2+nok6Ps10buowDOM6kA1/PUu0Mmcp5VMhTrho= -git.devminer.xyz/devminer/unitel v0.0.0-20240811005427-261161b9118d/go.mod h1:+aDah0giu/eSjnr/pTNC+g6CTPyf4lttIIewNQ+1HaQ= +git.devminer.xyz/devminer/unitel v0.0.0-20240822223836-a49c03bfb436 h1:AF2X1pJzNrxfZPSPuX7K2iNGVwYNLlGeiTNtUAMFBMU= +git.devminer.xyz/devminer/unitel v0.0.0-20240822223836-a49c03bfb436/go.mod h1:RMbKTJgzMPNUCFCYEI36DntHnXrPYuItnVZZ8tMeLb0= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= @@ -43,6 +35,8 @@ github.com/go-logr/zerologr v1.2.3 h1:up5N9vcH9Xck3jJkXzgyOxozT14R47IyDODz8LM1KS github.com/go-logr/zerologr v1.2.3/go.mod h1:BxwGo7y5zgSHYR1BjbnHPyF/5ZjVKfKxAZANVu6E8Ho= github.com/go-openapi/inflect v0.19.0 h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNPXu/4= github.com/go-openapi/inflect v0.19.0/go.mod h1:lHpZVlpIQqLyKwJ4N+YSc9hchQy/i12fJykb83CRBH4= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= @@ -65,8 +59,8 @@ github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlG github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 h1:CWyXh/jylQWp2dtiV33mY4iSSp6yf4lmn+c7/tN+ObI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0/go.mod h1:nCLIt0w3Ept2NwF8ThLmrppXsfT07oC8k0XNDxd8sVU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl/v2 v2.13.0 h1:0Apadu1w6M11dyGFxWnmhhcMjkbAiKCv7G1r/2QgCNc= @@ -150,8 +144,6 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/ucarion/urlpath v0.0.0-20200424170820-7ccc79b76bbb h1:Ywfo8sUltxogBpFuMOFRrrSifO788kAFxmvVw31PtQQ= -github.com/ucarion/urlpath v0.0.0-20200424170820-7ccc79b76bbb/go.mod h1:ikPs9bRWicNw3S7XpJ8sK/smGwU9WcSVU3dy9qahYBM= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.55.0 h1:Zkefzgt6a7+bVKHnu/YaYSOPfNYNisSVBo/unVCf8k8= @@ -187,50 +179,37 @@ go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -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/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -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/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.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/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -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.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= -google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= -google.golang.org/genproto/googleapis/api v0.0.0-20240808171019-573a1156607a h1:KyUe15n7B1YCu+kMmPtlXxgkLQbp+Dw0tCRZf9Sd+CE= -google.golang.org/genproto/googleapis/api v0.0.0-20240808171019-573a1156607a/go.mod h1:4+X6GvPs+25wZKbQq9qyAXrwIRExv7w0Ea6MgZLZiDM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240808171019-573a1156607a h1:EKiZZXueP9/T68B8Nl0GAx9cjbQnCId0yP3qPMgaaHs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240808171019-573a1156607a/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto/googleapis/api v0.0.0-20240822170219-fc7c04adadcd h1:BBOTEWLuuEGQy9n1y9MhVJ9Qt0BDu21X8qZs71/uPZo= +google.golang.org/genproto/googleapis/api v0.0.0-20240822170219-fc7c04adadcd/go.mod h1:fO8wJzT2zbQbAjbIoos1285VfEIYKDDY+Dt+WpTkh6g= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd h1:6TEm2ZxXoQmFWFlt1vNxvVOa1Q0dXFQD1m/rYjXmS0E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= diff --git a/internal/service/svc_impls/federation_service_impl.go b/internal/service/svc_impls/federation_service_impl.go index 3d5412e..daf6af6 100644 --- a/internal/service/svc_impls/federation_service_impl.go +++ b/internal/service/svc_impls/federation_service_impl.go @@ -30,19 +30,16 @@ var ( type FederationServiceImpl struct { httpC *protoretry.Client - federationClient *versia.FederationClient - telemetry *unitel.Telemetry log logr.Logger } -func NewFederationServiceImpl(httpClient *http.Client, federationClient *versia.FederationClient, telemetry *unitel.Telemetry, log logr.Logger) *FederationServiceImpl { +func NewFederationServiceImpl(httpClient *http.Client, telemetry *unitel.Telemetry, log logr.Logger) *FederationServiceImpl { return &FederationServiceImpl{ - httpC: protoretry.New(httpClient), - federationClient: federationClient, - telemetry: telemetry, - log: log, + httpC: protoretry.New(httpClient), + telemetry: telemetry, + log: log, } } @@ -101,6 +98,15 @@ func (i *FederationServiceImpl) DiscoverUser(ctx context.Context, baseURL, usern return wf, nil } +type ResponseError struct { + StatusCode int + URL *url.URL +} + +func (e *ResponseError) Error() string { + return fmt.Sprintf("error from %s: %d", e.URL, e.StatusCode) +} + func (i *FederationServiceImpl) DiscoverInstance(ctx context.Context, baseURL string) (*versia.InstanceMetadata, error) { s := i.telemetry.StartSpan(ctx, "function", "svc_impls/FederationServiceImpl.DiscoverInstance"). AddAttribute("baseURL", baseURL) @@ -113,7 +119,7 @@ func (i *FederationServiceImpl) DiscoverInstance(ctx context.Context, baseURL st return nil, err } else if resp.StatusCode >= http.StatusBadRequest { s.SetSimpleStatus(unitel.Error, fmt.Sprintf("unexpected response code: %d", resp.StatusCode)) - return nil, &versia.ResponseError{StatusCode: resp.StatusCode, URL: resp.Request.URL} + return nil, &ResponseError{StatusCode: resp.StatusCode, URL: resp.Request.URL} } var metadata versia.InstanceMetadata diff --git a/main.go b/main.go index a4b6ceb..2e332b9 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,8 @@ import ( "database/sql" "database/sql/driver" "fmt" + "git.devminer.xyz/devminer/unitel/unitelhttp" + "git.devminer.xyz/devminer/unitel/unitelsql" "github.com/lysand-org/versia-go/ent/instancemetadata" "github.com/lysand-org/versia-go/internal/handlers/follow_handler" "github.com/lysand-org/versia-go/internal/handlers/meta_handler" @@ -16,7 +18,6 @@ import ( "github.com/lysand-org/versia-go/internal/repository/repo_impls" "github.com/lysand-org/versia-go/internal/service/svc_impls" "github.com/lysand-org/versia-go/internal/validators/val_impls" - "github.com/lysand-org/versia-go/pkg/versia" "net/http" "os" "os/signal" @@ -64,20 +65,17 @@ func main() { } httpClient := &http.Client{ - Transport: tel.NewTracedTransport( + Transport: unitelhttp.NewTracedTransport( + tel, &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: config.C.Telemetry.Environment == "development"}}, // TODO: Only forward traces to configured hosts true, []string{"origin", "x-nonce", "x-signature", "x-signed-by", "sentry-trace", "sentry-baggage"}, []string{"host", "x-nonce", "x-signature", "x-signed-by"}, + unitelhttp.WithLogger(zerologr.New(&log.Logger).WithName("http-client")), ), } - federationClient := versia.NewClient( - versia.WithHTTPClient(httpClient), - versia.WithLogger(zerologr.New(&log.Logger).WithName("federation-client")), - ) - log.Debug().Msg("Opening database connection") var db *ent.Client if strings.HasPrefix(config.C.DatabaseURI, "postgres://") { @@ -110,7 +108,7 @@ func main() { // Stateless services requestSigner := svc_impls.NewRequestSignerImpl(tel, zerologr.New(&log.Logger).WithName("request-signer")) - federationService := svc_impls.NewFederationServiceImpl(httpClient, federationClient, tel, zerologr.New(&log.Logger).WithName("federation-service")) + federationService := svc_impls.NewFederationServiceImpl(httpClient, tel, zerologr.New(&log.Logger).WithName("federation-service")) taskService := svc_impls.NewTaskServiceImpl(tq, tel, zerologr.New(&log.Logger).WithName("task-service")) // Manager @@ -172,7 +170,7 @@ func main() { MaxAge: 0, })) - web.Use(tel.FiberMiddleware(unitel.FiberMiddlewareConfig{ + web.Use(unitelhttp.FiberMiddleware(tel, unitelhttp.FiberMiddlewareConfig{ Repanic: false, WaitForDelivery: false, Timeout: 5 * time.Second, @@ -181,8 +179,9 @@ func main() { // origin for outgoing requests TraceResponseHeaders: []string{"host", "x-nonce", "x-signature", "x-signed-by"}, // IgnoredRoutes: nil, + Logger: zerologr.New(&log.Logger).WithName("http-server"), })) - web.Use(unitel.RequestLogger(log.Logger, true, true)) + web.Use(unitelhttp.RequestLogger(zerologr.New(&log.Logger).WithName("http-server"), true, true)) log.Debug().Msg("Registering handlers") @@ -231,8 +230,8 @@ func main() { wg.Wait() } -func openDB(t *unitel.Telemetry, isSqlite bool, uri string) (*ent.Client, error) { - s := t.StartSpan(context.Background(), "function", "main.openDB") +func openDB(tel *unitel.Telemetry, isSqlite bool, uri string) (*ent.Client, error) { + s := tel.StartSpan(context.Background(), "function", "main.openDB") defer s.End() var drv driver.Driver @@ -251,7 +250,7 @@ func openDB(t *unitel.Telemetry, isSqlite bool, uri string) (*ent.Client, error) dbType = "postgres" } - sql.Register(dialectType+"-traced", t.TraceSQL(drv, dbType, false)) + sql.Register(dialectType+"-traced", unitelsql.NewTracedSQL(tel, drv, dbType)) db, err := sql.Open(dialectType+"-traced", uri) if err != nil { diff --git a/pkg/versia/federation_client.go b/pkg/versia/federation_client.go deleted file mode 100644 index e2664bd..0000000 --- a/pkg/versia/federation_client.go +++ /dev/null @@ -1,85 +0,0 @@ -package versia - -import ( - "fmt" - "github.com/go-logr/logr" - "github.com/lysand-org/versia-go/pkg/protoretry" - "net/http" - "net/url" - "time" -) - -type ResponseError struct { - StatusCode int - URL *url.URL -} - -func (e *ResponseError) Error() string { - return fmt.Sprintf("error from %s: %d", e.URL, e.StatusCode) -} - -type FederationClient struct { - log logr.Logger - httpC *http.Client - hc *protoretry.Client -} - -type Opt func(c *FederationClient) - -func WithHTTPClient(h *http.Client) Opt { - return func(c *FederationClient) { - c.httpC = h - } -} - -func WithLogger(l logr.Logger) Opt { - return func(c *FederationClient) { - c.log = l - } -} - -func NewClient(opts ...Opt) *FederationClient { - c := &FederationClient{ - httpC: http.DefaultClient, - log: logr.Discard(), - } - - for _, opt := range opts { - opt(c) - } - - c.httpC.Transport = &federationClientHTTPTransport{ - inner: c.httpC.Transport, - useragent: "github.com/lysand-org/versia-go/pkg/lysand#0.0.1", - } - - c.hc = protoretry.New(c.httpC) - - return c -} - -type federationClientHTTPTransport struct { - inner http.RoundTripper - useragent string - l logr.Logger -} - -func (t *federationClientHTTPTransport) RoundTrip(req *http.Request) (*http.Response, error) { - req.Header.Set("Accept", "application/json") - req.Header.Set("User-Agent", t.useragent) - - if req.Body != nil { - req.Header.Set("Content-Type", "application/json") - } - - start := time.Now() - res, err := t.inner.RoundTrip(req) - elapsed := time.Since(start) - if err == nil { - t.l.V(1).Info("fetch succeeded", "url", req.URL.String(), "status", res.StatusCode, "duration", elapsed) - } else { - t.l.V(1).Error(err, "fetch failed", "url", req.URL.String(), "duration", elapsed) - } - - return res, err -}