diff --git a/.env b/.env index a3145fa..9b47987 100644 --- a/.env +++ b/.env @@ -51,3 +51,9 @@ FACEBOOK_CLIENT_SECRET=ad95f2f3547f7ac77fbd8bab51807b65 FACEBOOK_SCOPES=public_profile,email FACEBOOK_REDIRECT_URL=http://localhost:8581/auth/facebook/callback #FACEBOOK_REDIRECT_URL=https://0x7rrkfz-8581.euw.devtunnels.ms/auth/facebook/callback + +# OPTIONS +OPTION_RTB_SERVER_DOMAIN=rtb.domain +OPTION_AD_TEMPLATE_CODE="" +OPTION_AD_DIRECT_TEMPLATE_URL="https://sspserver.dev/direct/{{adunit-code}}" +OPTION_AD_DIRECT_TEMPLATE_CODE="" diff --git a/cmd/api/appcontext/config.go b/cmd/api/appcontext/config.go index 2f473d6..6b84579 100644 --- a/cmd/api/appcontext/config.go +++ b/cmd/api/appcontext/config.go @@ -191,6 +191,13 @@ type messangerConfig struct { } `json:"email_defaults" yaml:"email_defaults"` } +type optionsConfig struct { + RTBServerDomain string `json:"rtb_server_domain" yaml:"rtb_server_domain" env:"OPTION_RTB_SERVER_DOMAIN"` + AdTemplateCode string `json:"ad_template_code" yaml:"ad_template_code" env:"OPTION_AD_TEMPLATE_CODE"` + AdDirectTemplateURL string `json:"ad_direct_template_url" yaml:"ad_direct_template_url" env:"OPTION_AD_DIRECT_TEMPLATE_URL"` + AdDirectTemplateCode string `json:"ad_direct_template_code" yaml:"ad_direct_template_code" env:"OPTION_AD_DIRECT_TEMPLATE_CODE"` +} + // ConfigType contains all application options type ConfigType struct { ServiceName string `json:"service_name" yaml:"service_name" env:"SERVICE_NAME" default:"adnet.api"` @@ -209,6 +216,7 @@ type ConfigType struct { OAuth2 oauth2Config `json:"oauth2" yaml:"oauth2"` Messanger messangerConfig `json:"messanger" yaml:"messanger"` Permissions permissionConfig `json:"permissions" yaml:"permissions"` + Options optionsConfig `json:"options" yaml:"options"` } // String implementation of Stringer interface diff --git a/cmd/api/main.go b/cmd/api/main.go index f5e380b..06b0edd 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -32,6 +32,8 @@ import ( "github.com/geniusrabbit/blaze-api/pkg/profiler" "github.com/geniusrabbit/blaze-api/pkg/zlogger" "github.com/geniusrabbit/blaze-api/repository/historylog/middleware/gormlog" + optionrp "github.com/geniusrabbit/blaze-api/repository/option/repository" + optionuc "github.com/geniusrabbit/blaze-api/repository/option/usecase" "github.com/geniusrabbit/blaze-api/repository/socialauth/delivery/rest" "github.com/sspserver/api/cmd/api/appcontext" @@ -180,11 +182,21 @@ func main() { statDatabase, err := database.Connect(ctx, conf.System.Statistic.Connect, conf.IsDebug()) fatalError(err, "connect to statistic") - rtbSourceUsecase := rtbsourceuc.New() - + // Init statistic usecase statisticUsecase := statisticuc.NewUsecase( statisticrc.NewRepository(statDatabase)) + // Init RTB Source usecase + rtbSourceUsecase := rtbsourceuc.New() + + // Init Options usecase + optionsUsecase := optionuc.NewUsecase(optionrp.New(map[string]any{ + "ad.rtb.domain": conf.Options.RTBServerDomain, + "ad.template.code": conf.Options.AdTemplateCode, + "ad.direct.url": conf.Options.AdDirectTemplateURL, + "ad.direct.code": conf.Options.AdDirectTemplateCode, + })) + // Prepare context ctx = ctxlogger.WithLogger(ctx, loggerObj) ctx = database.WithDatabase(ctx, masterDatabase, slaveDatabase) @@ -218,6 +230,7 @@ func main() { mux.Handle("/graphql", graphql.GraphQL(&resolvers.Usecases{ Stats: statisticUsecase, RTBSource: rtbSourceUsecase, + Options: optionsUsecase, }, jwtProvider)) // Register OAuth2 providers diff --git a/go.mod b/go.mod index 6fec91d..ab6bbd2 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/demdxx/sendmsg v0.0.0-20240126132054-834dad9e9d6e github.com/demdxx/xtypes v0.2.0 github.com/geniusrabbit/adcorelib v0.0.0-20250227190303-76b52502bd73 - github.com/geniusrabbit/blaze-api v0.2.0 + github.com/geniusrabbit/blaze-api v0.2.1 github.com/geniusrabbit/gogeo v0.0.0-20190430153311-59b5dca35b92 github.com/geniusrabbit/gosql/v2 v2.3.1 github.com/go-chi/chi/v5 v5.2.1 @@ -22,7 +22,7 @@ require ( github.com/ory/fosite v0.49.0 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.21.0 - github.com/vektah/gqlparser/v2 v2.5.22 + github.com/vektah/gqlparser/v2 v2.5.23 github.com/yuin/goldmark v1.7.8 go.abhg.dev/goldmark/frontmatter v0.2.0 go.uber.org/zap v1.27.0 @@ -175,8 +175,8 @@ require ( golang.org/x/sys v0.30.0 // indirect golang.org/x/text v0.22.0 // indirect golang.org/x/tools v0.30.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250224174004-546df14abb99 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250224174004-546df14abb99 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250227231956-55c901821b1e // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e // indirect google.golang.org/grpc v1.70.0 // indirect google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 // indirect google.golang.org/protobuf v1.36.5 // indirect diff --git a/go.sum b/go.sum index 9ec8681..8cd9d93 100644 --- a/go.sum +++ b/go.sum @@ -166,8 +166,8 @@ github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/ github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/geniusrabbit/adcorelib v0.0.0-20250227190303-76b52502bd73 h1:f/cPGyVn9YbfhnqNaH2NdTiN7GStmlAEXedGv77CMJw= github.com/geniusrabbit/adcorelib v0.0.0-20250227190303-76b52502bd73/go.mod h1:mNrzYAiisbJ9E6wuqVl7eWcfFh7GFZKX8DEMqZ0ccv8= -github.com/geniusrabbit/blaze-api v0.2.0 h1:wM0yXVwT7hZcr2vNhrfscbhoMLLfjXhI/ukTvNIDwa0= -github.com/geniusrabbit/blaze-api v0.2.0/go.mod h1:PJFP0mD5UfN2E2EqftB7UGqT//I3WfEA102FbArp5g8= +github.com/geniusrabbit/blaze-api v0.2.1 h1:+n1kXmUiRcjtMldip4Zap75ASBWJzbSpcGi+96gBXGk= +github.com/geniusrabbit/blaze-api v0.2.1/go.mod h1:foSPk9aFjk6jbcA4BrQiC32+7OVncp0fvIhDPXkcuT8= github.com/geniusrabbit/gogeo v0.0.0-20190430153311-59b5dca35b92 h1:4zzWLdGtzQxDg6WcFpSzcfEBct6xBmGk7T26I1IlNt8= github.com/geniusrabbit/gogeo v0.0.0-20190430153311-59b5dca35b92/go.mod h1:z4vtbN4gpN4C/6fEN0gtAc9RBkqU94Y5SrVdk3xMplM= github.com/geniusrabbit/gosql/v2 v2.3.1 h1:pXipcITnQlOtpNmGL9gvbrAcNw/PXmcq2Z4hTQv8aEE= @@ -601,8 +601,8 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.59.0 h1:Qu0qYHfXvPk1mSLNqcFtEk6DpxgA26hy6bmydotDpRI= github.com/valyala/fasthttp v1.59.0/go.mod h1:GTxNb9Bc6r2a9D0TWNSPwDz78UxnTGBViY3xZNEqyYU= -github.com/vektah/gqlparser/v2 v2.5.22 h1:yaaeJ0fu+nv1vUMW0Hl+aS1eiv1vMfapBNjpffAda1I= -github.com/vektah/gqlparser/v2 v2.5.22/go.mod h1:xMl+ta8a5M1Yo1A1Iwt/k7gSpscwSnHZdw7tfhEGfTM= +github.com/vektah/gqlparser/v2 v2.5.23 h1:PurJ9wpgEVB7tty1seRUwkIDa/QH5RzkzraiKIjKLfA= +github.com/vektah/gqlparser/v2 v2.5.23/go.mod h1:D1/VCZtV3LPnQrcPBeR/q5jkSQIPti0uYCP/RI0gIeo= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= @@ -854,10 +854,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20250224174004-546df14abb99 h1:ilJhrCga0AptpJZXmUYG4MCrx/zf3l1okuYz7YK9PPw= -google.golang.org/genproto/googleapis/api v0.0.0-20250224174004-546df14abb99/go.mod h1:Xsh8gBVxGCcbV8ZeTB9wI5XPyZ5RvC6V3CTeeplHbiA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250224174004-546df14abb99 h1:ZSlhAUqC4r8TPzqLXQ0m3upBNZeF+Y8jQ3c4CR3Ujms= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250224174004-546df14abb99/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/api v0.0.0-20250227231956-55c901821b1e h1:nsxey/MfoGzYNduN0NN/+hqP9iiCIYsrVbXb/8hjFM8= +google.golang.org/genproto/googleapis/api v0.0.0-20250227231956-55c901821b1e/go.mod h1:Xsh8gBVxGCcbV8ZeTB9wI5XPyZ5RvC6V3CTeeplHbiA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e h1:YA5lmSs3zc/5w+xsRcHqpETkaYyK63ivEPzNTcUUlSA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A= diff --git a/internal/server/graphql/resolvers/resolver.go b/internal/server/graphql/resolvers/resolver.go index 025904e..4c1cae3 100644 --- a/internal/server/graphql/resolvers/resolver.go +++ b/internal/server/graphql/resolvers/resolver.go @@ -6,6 +6,7 @@ import ( authclient_graphql "github.com/geniusrabbit/blaze-api/repository/authclient/delivery/graphql" directaccesstoken_graphql "github.com/geniusrabbit/blaze-api/repository/directaccesstoken/delivery/graphql" historylog_graphql "github.com/geniusrabbit/blaze-api/repository/historylog/delivery/graphql" + "github.com/geniusrabbit/blaze-api/repository/option" option_graphql "github.com/geniusrabbit/blaze-api/repository/option/delivery/graphql" rbac_graphql "github.com/geniusrabbit/blaze-api/repository/rbac/delivery/graphql" rbac "github.com/geniusrabbit/blaze-api/repository/rbac/repository" @@ -61,6 +62,7 @@ type Resolver struct { type Usecases struct { Stats statistic.Usecase RTBSource rtbsource.Usecase + Options option.Usecase } func NewResolver(usecases *Usecases, provider *jwt.Provider) *Resolver { @@ -73,7 +75,7 @@ func NewResolver(usecases *Usecases, provider *jwt.Provider) *Resolver { roles: rbac_graphql.NewQueryResolver(), authclients: authclient_graphql.NewQueryResolver(), historylogs: historylog_graphql.NewQueryResolver(), - options: option_graphql.NewQueryResolver(), + options: option_graphql.NewQueryResolver(usecases.Options), directaccesstoken: directaccesstoken_graphql.NewQueryResolver(), // Current API extensions rtbsource: rtbsource_graphql.NewQueryResolver(usecases.RTBSource), diff --git a/submodules/blaze-api b/submodules/blaze-api index 9243822..28ed68e 160000 --- a/submodules/blaze-api +++ b/submodules/blaze-api @@ -1 +1 @@ -Subproject commit 924382248c5cd235bb7336cf7e32bfb548381d47 +Subproject commit 28ed68ebc44ded44911ab7b311c2edc3cd6f594a