ad_space 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +22 -0
  3. data/Gemfile.lock +240 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.md +92 -0
  6. data/Rakefile +8 -0
  7. data/ad_space.gemspec +25 -0
  8. data/app/assets/builds/application.js +7397 -0
  9. data/app/assets/builds/application.js.map +7 -0
  10. data/app/assets/config/ad_space_manifest.js +2 -0
  11. data/app/assets/javascript/ad_space/application.js +0 -0
  12. data/app/assets/stylesheets/ad_space/application.css +15 -0
  13. data/app/controllers/ad_space/advertisements_controller.rb +121 -0
  14. data/app/controllers/ad_space/api/v1/advertisements_controller.rb +36 -0
  15. data/app/controllers/ad_space/application_controller.rb +30 -0
  16. data/app/controllers/ad_space/dashboard_controller.rb +6 -0
  17. data/app/controllers/ad_space/slots_controller.rb +70 -0
  18. data/app/helpers/ad_space/advertisements_helper.rb +4 -0
  19. data/app/helpers/ad_space/application_helper.rb +15 -0
  20. data/app/helpers/ad_space/dashboard_helper.rb +4 -0
  21. data/app/helpers/ad_space/slots_helper.rb +4 -0
  22. data/app/javascript/application.js +3 -0
  23. data/app/javascript/controllers/application.js +9 -0
  24. data/app/javascript/controllers/hello_controller.js +153 -0
  25. data/app/javascript/controllers/image_upload_controller.js +46 -0
  26. data/app/javascript/controllers/index.js +11 -0
  27. data/app/jobs/ad_space/application_job.rb +4 -0
  28. data/app/mailers/ad_space/application_mailer.rb +6 -0
  29. data/app/models/ad_space/advertisement.rb +67 -0
  30. data/app/models/ad_space/application_record.rb +5 -0
  31. data/app/models/ad_space/breadcrumb.rb +14 -0
  32. data/app/models/ad_space/slot.rb +27 -0
  33. data/app/serializers/v1/advertisement_serializer.rb +30 -0
  34. data/app/validators/url_or_custom_scheme_validator.rb +20 -0
  35. data/app/views/ad_space/advertisements/_advertisement.html.erb +102 -0
  36. data/app/views/ad_space/advertisements/_form.html.erb +143 -0
  37. data/app/views/ad_space/advertisements/edit.html.erb +10 -0
  38. data/app/views/ad_space/advertisements/index.html.erb +15 -0
  39. data/app/views/ad_space/advertisements/new.html.erb +9 -0
  40. data/app/views/ad_space/advertisements/show.html.erb +13 -0
  41. data/app/views/ad_space/dashboard/index.html.erb +7 -0
  42. data/app/views/ad_space/slots/_form.html.erb +44 -0
  43. data/app/views/ad_space/slots/_slot.html.erb +30 -0
  44. data/app/views/ad_space/slots/edit.html.erb +10 -0
  45. data/app/views/ad_space/slots/index.html.erb +14 -0
  46. data/app/views/ad_space/slots/new.html.erb +9 -0
  47. data/app/views/ad_space/slots/show.html.erb +10 -0
  48. data/app/views/layouts/ad_space/application.html.erb +43 -0
  49. data/config/routes.rb +22 -0
  50. data/db/migrate/20231026152912_create_ad_space_slots.rb +11 -0
  51. data/db/migrate/20231026160758_create_ad_space_advertisements.rb +25 -0
  52. data/db/migrate/20231027070536_add_scheme_url_to_ad_space_advertisements.rb +10 -0
  53. data/db/migrate/20231027083935_add_target_version_code_to_ad_space_advertisements.rb +6 -0
  54. data/db/migrate/20231027115707_add_is_splash_to_ad_space_slots.rb +5 -0
  55. data/lib/ad_space/app.rb +16 -0
  56. data/lib/ad_space/configuration.rb +32 -0
  57. data/lib/ad_space/engine.rb +12 -0
  58. data/lib/ad_space/version.rb +3 -0
  59. data/lib/ad_space.rb +17 -0
  60. data/lib/tasks/ad_space_tasks.rake +4 -0
  61. metadata +161 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a12f9c56d13a27770794f6a45cbcfeab74b967ac816f80c64c71dff93a2bca1e
4
+ data.tar.gz: 4c2a6883b683c9ea101b18761c441bbfa03840d42ed30b5503f5167463e1b3a4
5
+ SHA512:
6
+ metadata.gz: 6f50e5b0cac4b17d987d2bc5e44dd2a685628cadeec7e280be3605f21e4bafc2020b8ce8d1d47e8af8d8e9cbe144c09a8c657c0dd1a5ce047fdec7b8a8e0d745
7
+ data.tar.gz: 30e0cb33ac32f287f6b8607d81c627736705ea177cdb0af138403cc63db09a1662bf6e9f7b56f09d601e894d1847616442bc12c7f4cb26a1d750635e7c7abaf1
data/Gemfile ADDED
@@ -0,0 +1,22 @@
1
+ source "https://rubygems.org"
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+ # Specify your gem's dependencies in ad_space.gemspec.
5
+ gemspec
6
+
7
+ gem "puma"
8
+
9
+ gem "sqlite3"
10
+
11
+ gem "sprockets-rails"
12
+
13
+ # Start debugger with binding.b [https://github.com/ruby/debug]
14
+ gem "debug", ">= 1.0.0"
15
+
16
+ gem 'jsbundling-rails'
17
+ gem 'cssbundling-rails'
18
+ gem 'stimulus-rails'
19
+
20
+ group :development do
21
+ gem "pg"
22
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,240 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ad_space (0.1.0)
5
+ active_model_serializers
6
+ dotenv-rails
7
+ rails (>= 7.1.1)
8
+ turbo-rails
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ actioncable (7.1.1)
14
+ actionpack (= 7.1.1)
15
+ activesupport (= 7.1.1)
16
+ nio4r (~> 2.0)
17
+ websocket-driver (>= 0.6.1)
18
+ zeitwerk (~> 2.6)
19
+ actionmailbox (7.1.1)
20
+ actionpack (= 7.1.1)
21
+ activejob (= 7.1.1)
22
+ activerecord (= 7.1.1)
23
+ activestorage (= 7.1.1)
24
+ activesupport (= 7.1.1)
25
+ mail (>= 2.7.1)
26
+ net-imap
27
+ net-pop
28
+ net-smtp
29
+ actionmailer (7.1.1)
30
+ actionpack (= 7.1.1)
31
+ actionview (= 7.1.1)
32
+ activejob (= 7.1.1)
33
+ activesupport (= 7.1.1)
34
+ mail (~> 2.5, >= 2.5.4)
35
+ net-imap
36
+ net-pop
37
+ net-smtp
38
+ rails-dom-testing (~> 2.2)
39
+ actionpack (7.1.1)
40
+ actionview (= 7.1.1)
41
+ activesupport (= 7.1.1)
42
+ nokogiri (>= 1.8.5)
43
+ rack (>= 2.2.4)
44
+ rack-session (>= 1.0.1)
45
+ rack-test (>= 0.6.3)
46
+ rails-dom-testing (~> 2.2)
47
+ rails-html-sanitizer (~> 1.6)
48
+ actiontext (7.1.1)
49
+ actionpack (= 7.1.1)
50
+ activerecord (= 7.1.1)
51
+ activestorage (= 7.1.1)
52
+ activesupport (= 7.1.1)
53
+ globalid (>= 0.6.0)
54
+ nokogiri (>= 1.8.5)
55
+ actionview (7.1.1)
56
+ activesupport (= 7.1.1)
57
+ builder (~> 3.1)
58
+ erubi (~> 1.11)
59
+ rails-dom-testing (~> 2.2)
60
+ rails-html-sanitizer (~> 1.6)
61
+ active_model_serializers (0.10.14)
62
+ actionpack (>= 4.1)
63
+ activemodel (>= 4.1)
64
+ case_transform (>= 0.2)
65
+ jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
66
+ activejob (7.1.1)
67
+ activesupport (= 7.1.1)
68
+ globalid (>= 0.3.6)
69
+ activemodel (7.1.1)
70
+ activesupport (= 7.1.1)
71
+ activerecord (7.1.1)
72
+ activemodel (= 7.1.1)
73
+ activesupport (= 7.1.1)
74
+ timeout (>= 0.4.0)
75
+ activestorage (7.1.1)
76
+ actionpack (= 7.1.1)
77
+ activejob (= 7.1.1)
78
+ activerecord (= 7.1.1)
79
+ activesupport (= 7.1.1)
80
+ marcel (~> 1.0)
81
+ activesupport (7.1.1)
82
+ base64
83
+ bigdecimal
84
+ concurrent-ruby (~> 1.0, >= 1.0.2)
85
+ connection_pool (>= 2.2.5)
86
+ drb
87
+ i18n (>= 1.6, < 2)
88
+ minitest (>= 5.1)
89
+ mutex_m
90
+ tzinfo (~> 2.0)
91
+ base64 (0.1.1)
92
+ bigdecimal (3.1.4)
93
+ builder (3.2.4)
94
+ case_transform (0.2)
95
+ activesupport
96
+ concurrent-ruby (1.2.2)
97
+ connection_pool (2.4.1)
98
+ crass (1.0.6)
99
+ cssbundling-rails (1.3.3)
100
+ railties (>= 6.0.0)
101
+ date (3.3.3)
102
+ debug (1.8.0)
103
+ irb (>= 1.5.0)
104
+ reline (>= 0.3.1)
105
+ dotenv (2.8.1)
106
+ dotenv-rails (2.8.1)
107
+ dotenv (= 2.8.1)
108
+ railties (>= 3.2)
109
+ drb (2.1.1)
110
+ ruby2_keywords
111
+ erubi (1.12.0)
112
+ globalid (1.2.1)
113
+ activesupport (>= 6.1)
114
+ i18n (1.14.1)
115
+ concurrent-ruby (~> 1.0)
116
+ io-console (0.6.0)
117
+ irb (1.8.3)
118
+ rdoc
119
+ reline (>= 0.3.8)
120
+ jsbundling-rails (1.2.1)
121
+ railties (>= 6.0.0)
122
+ jsonapi-renderer (0.2.2)
123
+ loofah (2.21.4)
124
+ crass (~> 1.0.2)
125
+ nokogiri (>= 1.12.0)
126
+ mail (2.8.1)
127
+ mini_mime (>= 0.1.1)
128
+ net-imap
129
+ net-pop
130
+ net-smtp
131
+ marcel (1.0.2)
132
+ mini_mime (1.1.5)
133
+ minitest (5.20.0)
134
+ mutex_m (0.1.2)
135
+ net-imap (0.4.2)
136
+ date
137
+ net-protocol
138
+ net-pop (0.1.2)
139
+ net-protocol
140
+ net-protocol (0.2.1)
141
+ timeout
142
+ net-smtp (0.4.0)
143
+ net-protocol
144
+ nio4r (2.5.9)
145
+ nokogiri (1.15.4-x86_64-darwin)
146
+ racc (~> 1.4)
147
+ nokogiri (1.15.4-x86_64-linux)
148
+ racc (~> 1.4)
149
+ pg (1.5.4)
150
+ psych (5.1.1.1)
151
+ stringio
152
+ puma (6.4.0)
153
+ nio4r (~> 2.0)
154
+ racc (1.7.1)
155
+ rack (3.0.8)
156
+ rack-session (2.0.0)
157
+ rack (>= 3.0.0)
158
+ rack-test (2.1.0)
159
+ rack (>= 1.3)
160
+ rackup (2.1.0)
161
+ rack (>= 3)
162
+ webrick (~> 1.8)
163
+ rails (7.1.1)
164
+ actioncable (= 7.1.1)
165
+ actionmailbox (= 7.1.1)
166
+ actionmailer (= 7.1.1)
167
+ actionpack (= 7.1.1)
168
+ actiontext (= 7.1.1)
169
+ actionview (= 7.1.1)
170
+ activejob (= 7.1.1)
171
+ activemodel (= 7.1.1)
172
+ activerecord (= 7.1.1)
173
+ activestorage (= 7.1.1)
174
+ activesupport (= 7.1.1)
175
+ bundler (>= 1.15.0)
176
+ railties (= 7.1.1)
177
+ rails-dom-testing (2.2.0)
178
+ activesupport (>= 5.0.0)
179
+ minitest
180
+ nokogiri (>= 1.6)
181
+ rails-html-sanitizer (1.6.0)
182
+ loofah (~> 2.21)
183
+ nokogiri (~> 1.14)
184
+ railties (7.1.1)
185
+ actionpack (= 7.1.1)
186
+ activesupport (= 7.1.1)
187
+ irb
188
+ rackup (>= 1.0.0)
189
+ rake (>= 12.2)
190
+ thor (~> 1.0, >= 1.2.2)
191
+ zeitwerk (~> 2.6)
192
+ rake (13.0.6)
193
+ rdoc (6.5.0)
194
+ psych (>= 4.0.0)
195
+ reline (0.3.9)
196
+ io-console (~> 0.5)
197
+ ruby2_keywords (0.0.5)
198
+ sprockets (4.2.1)
199
+ concurrent-ruby (~> 1.0)
200
+ rack (>= 2.2.4, < 4)
201
+ sprockets-rails (3.4.2)
202
+ actionpack (>= 5.2)
203
+ activesupport (>= 5.2)
204
+ sprockets (>= 3.0.0)
205
+ sqlite3 (1.6.3-x86_64-darwin)
206
+ sqlite3 (1.6.3-x86_64-linux)
207
+ stimulus-rails (1.3.0)
208
+ railties (>= 6.0.0)
209
+ stringio (3.0.8)
210
+ thor (1.3.0)
211
+ timeout (0.4.0)
212
+ turbo-rails (1.5.0)
213
+ actionpack (>= 6.0.0)
214
+ activejob (>= 6.0.0)
215
+ railties (>= 6.0.0)
216
+ tzinfo (2.0.6)
217
+ concurrent-ruby (~> 1.0)
218
+ webrick (1.8.1)
219
+ websocket-driver (0.7.6)
220
+ websocket-extensions (>= 0.1.0)
221
+ websocket-extensions (0.1.5)
222
+ zeitwerk (2.6.12)
223
+
224
+ PLATFORMS
225
+ x86_64-darwin-20
226
+ x86_64-linux
227
+
228
+ DEPENDENCIES
229
+ ad_space!
230
+ cssbundling-rails
231
+ debug (>= 1.0.0)
232
+ jsbundling-rails
233
+ pg
234
+ puma
235
+ sprockets-rails
236
+ sqlite3
237
+ stimulus-rails
238
+
239
+ BUNDLED WITH
240
+ 2.4.13
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 42up
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,92 @@
1
+ # AdSpace
2
+
3
+ ## 使用前提
4
+ - 数据库类型 postgresql
5
+ - 开启了 active storage
6
+
7
+ ## 参数说明
8
+ ### weight
9
+ 排序按照权重值逆序排列,越大显示位置约考前
10
+
11
+ ### ad_type
12
+ ad_type 分为 custom(自定义), dsp(三方SDK广告)
13
+
14
+ #### custom
15
+ 自定义类型,当广告位custom,则下面字段可以生效:
16
+ - cover_base
17
+ - cover_sm
18
+ - cover_md
19
+ - cover_lg
20
+ - scheme_url, 跳转路径
21
+ - splash_ui_type, 开屏样式,half, full
22
+ - splash_countdown 开屏倒计时
23
+ - visibility 广告可见性 all, premium_member, regular_user
24
+
25
+ #### dsp
26
+ 第三方SDK广告,则dsp_type生效,其返回值为如下:
27
+ - gdt 广点通
28
+ - jrtt 今日头条 穿山甲
29
+ - google 谷歌 adsense
30
+
31
+ dsp也可以展示在开屏中,所以下面2个参数也应该有效,视情况而定。
32
+ - splash_ui_type, 开屏样式,half, full
33
+ - splash_countdown 开屏倒计时
34
+
35
+
36
+ ## 接口
37
+ #### 请求
38
+ ```sh
39
+ GET ad_space/api/v1/ads
40
+ ```
41
+
42
+ # TODO: 添加个header鉴权
43
+
44
+ #### 参数
45
+ - screen_width 屏幕宽度
46
+ - screen_height 屏幕高度
47
+ - platform 平台 ios、android
48
+ - slot_ids 位置id,逗号分隔字符串
49
+ - version_code 当前App版本号
50
+
51
+ #### 返回
52
+ ```json
53
+ []
54
+ ```
55
+
56
+ ## 开发
57
+ ```
58
+ yarn build:js --watch
59
+ ```
60
+
61
+ ## 发布
62
+ ```
63
+ yarn prod:build:js
64
+ rake release
65
+ ```
66
+
67
+ ## 安装
68
+
69
+ ```sh
70
+ # Gemfile
71
+ gem 'ad_space', path: '/path/to/ad_space'
72
+
73
+ bundle install
74
+ ./bin/rails ad_space:install:migrations
75
+ rails db:migrate
76
+
77
+ mount AdSpace::Engine => "/ad_space"
78
+
79
+ # - `User.admin?` 方法要存在
80
+ # - 用户登录状态要存在 `session[:user_id]` 变量中
81
+ # - 没有权限会直接返回到 main_app.root_path
82
+ ```
83
+
84
+ ## TODO
85
+ - i18n-task i18n中文化
86
+ - 预览广告功能,支持参数可以直接在手机端拉取自定广告,展示在特定的位置
87
+ - 效果指标统计功能
88
+ - 调整UI
89
+ - 接口支持 缓存
90
+ - toast 消息
91
+ - https://simplecss.org/
92
+ - tailwindcss
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require "bundler/setup"
2
+
3
+ APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
4
+ load "rails/tasks/engine.rake"
5
+
6
+ load "rails/tasks/statistics.rake"
7
+
8
+ require "bundler/gem_tasks"
data/ad_space.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ require_relative "lib/ad_space/version"
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "ad_space"
5
+ spec.version = AdSpace::VERSION
6
+ spec.authors = ["42up"]
7
+ spec.email = ["foobar@v2up.com"]
8
+ spec.homepage = "https://github.com/42up/ad_space.git"
9
+ spec.summary = "AdSpace"
10
+ spec.description = "AdSpace"
11
+ spec.license = "MIT"
12
+
13
+ spec.metadata["homepage_uri"] = spec.homepage
14
+ spec.metadata["source_code_uri"] = spec.homepage
15
+ spec.metadata["changelog_uri"] = spec.homepage
16
+
17
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
+ Dir["{app,config,db,lib, public}/**/*", "MIT-LICENSE", "Rakefile", "README.md", "Gemfile", "Gemfile.lock", "ad_space.gemspec"]
19
+ end
20
+
21
+ spec.add_dependency "rails", ">= 7.1.1"
22
+ spec.add_dependency "active_model_serializers"
23
+ spec.add_dependency "turbo-rails"
24
+ spec.add_dependency "dotenv-rails"
25
+ end