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