shimmer 0.0.13 → 0.0.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa623a504a48b7e6f3a1c0d4ccf748b2068b8934288094524a8039c52588c384
4
- data.tar.gz: 67ccb1224024c812aad171ddca3437c3d130fb1bbf71dc5c9326da143061be1c
3
+ metadata.gz: d82a8e015623e83b0381e182752ede22419e26c40b9a730536f6020793818b75
4
+ data.tar.gz: 00766a05189358517092bcbc6ef958d26acbfae14efb98b45f81c3b848cfaffa
5
5
  SHA512:
6
- metadata.gz: 9de1f128d5baafb0c5effb645c59ccecec08b7c7319761802cfb8ed7bbeb55cc01abb9f365f85e0397ceff692e835dc5131683bac01f514619bf1623be831c37
7
- data.tar.gz: 856718e8800d539c1c31c9b867768c9db4939fe979019f44e6eebf6203cb1d60f8daca6ce42d3b21cab1027d00106345a531cb28bd912bcdea31028885042803
6
+ metadata.gz: d9e72dcab3004ea3c720a1b7041ee0714e4beded68cfa8caa9f5a1213fbe3ece9cf82030437be32c1532c85c67e489b159fa39f13392664c9c5f3520f8ba67f6
7
+ data.tar.gz: e8e15ddcc1aedbad180f0b62dd11af6791d8ef35aa5139e7f0e7ffdead8551052f8ccbed36c143ae39868e44ca381ed27737e036d93dca8b9e5b8cffd125fae5
@@ -15,8 +15,8 @@ module Shimmer
15
15
  form = {
16
16
  grant_type: "authorization_code",
17
17
  code: params[:code],
18
- client_id: ENV.fetch("APPLE_BUNDLE_ID"),
19
- client_secret: ENV.fetch("APPLE_CLIENT_SECRET"),
18
+ client_id: Config.instance.apple_bundle_id!,
19
+ client_secret: Config.instance.apple_client_secret,
20
20
  scope: "name email"
21
21
  }
22
22
  response = HTTParty.post("https://appleid.apple.com/auth/token", body: URI.encode_www_form(form), headers: headers)
@@ -8,7 +8,7 @@ module Shimmer
8
8
  private
9
9
 
10
10
  def request_details(params)
11
- payload = GoogleIDToken::Validator.new.check(params[:credential], ENV.fetch("GOOGLE_CLIENT_ID"))
11
+ payload = GoogleIDToken::Validator.new.check(params[:credential], Config.instance.google_client_id!)
12
12
  UserDetails.new token: payload["sub"], email: payload["email"], first_name: payload["given_name"].presence, last_name: payload["family_name"].presence
13
13
  end
14
14
  end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Shimmer
4
+ module MetaHelper
5
+ def meta
6
+ @meta ||= Meta.new.tap do |meta|
7
+ meta.canonical = url_for(only_path: false)
8
+ end
9
+ end
10
+
11
+ def title(value)
12
+ meta.title = value
13
+ end
14
+
15
+ def description(value)
16
+ meta.description = value
17
+ end
18
+
19
+ def image(value)
20
+ meta.image = image_file_url(value, width: 1200)
21
+ end
22
+
23
+ def render_meta
24
+ tags = meta.tags.map do |tag|
25
+ type = tag.delete(:type) || "meta"
26
+ value = tag.delete(:value)
27
+ content_tag(type, value, tag)
28
+ end
29
+ safe_join tags, "\n"
30
+ end
31
+ end
32
+ end
@@ -8,3 +8,11 @@ module Shimmer
8
8
  end
9
9
  end
10
10
  end
11
+
12
+ ActiveSupport.on_load(:action_view) do
13
+ Dir.glob("#{File.expand_path(__dir__)}/helpers/**/*.rb").each do |file|
14
+ load file
15
+ name = file.split("/").last.delete_suffix(".rb").classify
16
+ include "Shimmer::#{name}".constantize
17
+ end
18
+ end
@@ -43,4 +43,13 @@ namespace :db do
43
43
 
44
44
  desc "Download all app data, including assets"
45
45
  task pull: [:pull_data, :pull_assets]
46
+
47
+ desc "Migrates if the database has any tables."
48
+ task migrate_if_tables: :environment do
49
+ if ActiveRecord::Base.connection.tables.any?
50
+ Rake::Task["db:migrate"].invoke
51
+ else
52
+ puts "No tables in database yet, skipping migration"
53
+ end
54
+ end
46
55
  end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :s3 do
4
+ desc "Creates a new S3 bucket and outputs or uploads the credentials."
5
+ task :create_bucket do
6
+ puts "Please enter the name for your new bucket"
7
+ name = $stdin.gets.strip
8
+ region = "eu-central-1"
9
+ sh "aws s3 mb s3://#{name} --region #{region}"
10
+ sh "aws iam create-user --user-name #{name}"
11
+ policy = <<~JSON
12
+ {
13
+ "Version": "2012-10-17",
14
+ "Statement": [
15
+ {
16
+ "Effect": "Allow",
17
+ "Action": [
18
+ "s3:CreateBucket",
19
+ "s3:DeleteObject",
20
+ "s3:Put*",
21
+ "s3:Get*",
22
+ "s3:List*"
23
+ ],
24
+ "Resource": [
25
+ "arn:aws:s3:::#{name}",
26
+ "arn:aws:s3:::#{name}/*"
27
+ ]
28
+ }
29
+ ]
30
+ }
31
+ JSON
32
+ File.write("policy.json", policy)
33
+ sh "aws iam put-user-policy --user-name #{name} --policy-name #{name} --policy-document file://policy.json"
34
+ File.delete("policy.json")
35
+ content = JSON.parse `aws iam create-access-key --user-name #{name}`
36
+ id = content.dig("AccessKey", "AccessKeyId")
37
+ secret = content.dig("AccessKey", "SecretAccessKey")
38
+ puts "Credentials and bucket were generated. Automatically assign them to the associated Heroku project? This will override and delete all current keys on Heroku. (y/n)"
39
+ vars = {AWS_REGION: region, AWS_BUCKET: name, AWS_ACCESS_KEY_ID: id, AWS_SECRET_ACCESS_KEY: secret}
40
+ if $stdin.gets.strip == "y"
41
+ sh "heroku config:set #{vars.map { |k, v| "#{k}=#{v}" }.join(" ")}"
42
+ else
43
+ vars.each { |k, v| puts "#{k}=#{v}" }
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Shimmer
4
+ class Meta
5
+ class_attribute :app_name
6
+ attr_accessor :title, :description, :image, :canonical
7
+
8
+ def tags
9
+ tags = []
10
+ title = self.title.present? ? "#{self.title} | #{app_name}" : app_name
11
+ tags.push(type: :title, value: title)
12
+ tags.push(property: "og:title", content: title)
13
+ if description.present?
14
+ tags.push(name: :description, content: description)
15
+ tags.push(property: "og:description", content: description)
16
+ end
17
+ if image.present?
18
+ tags.push(property: "og:image", content: image)
19
+ end
20
+ if canonical.present?
21
+ tags.push(type: :link, rel: :canonical, href: canonical)
22
+ tags.push(property: "og:url", content: canonical)
23
+ end
24
+ tags.push(property: "og:type", content: :website)
25
+ tags.push(property: "og:locale", content: I18n.locale)
26
+ tags.push(name: "twitter:card", content: :summary_large_image)
27
+ tags
28
+ end
29
+ end
30
+ end
@@ -22,8 +22,12 @@ module Shimmer
22
22
  end
23
23
 
24
24
  helper_method :close_modal_path
25
- def close_modal_path(id: nil)
26
- "javascript:ui.modal.close(#{{id: id}.to_json})"
25
+ def close_modal_path(id = nil)
26
+ if id.present?
27
+ "javascript:ui.modal.close(#{{id: id}.to_json})"
28
+ else
29
+ "javascript:ui.modal.close()"
30
+ end
27
31
  end
28
32
 
29
33
  helper_method :popover_path
@@ -87,7 +91,7 @@ module Shimmer
87
91
 
88
92
  def close_modal(id = nil)
89
93
  if id.present?
90
- run_javascript "ui.modal.close('#{id}')"
94
+ run_javascript "ui.modal.close(#{{id: id}.to_json})"
91
95
  else
92
96
  run_javascript "ui.modal.close()"
93
97
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Shimmer
4
- VERSION = "0.0.13"
4
+ VERSION = "0.0.16"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Ravens
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-16 00:00:00.000000000 Z
11
+ date: 2022-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -145,16 +145,19 @@ files:
145
145
  - lib/shimmer/auth/user.rb
146
146
  - lib/shimmer/controllers/files_controller.rb
147
147
  - lib/shimmer/controllers/sitemaps_controller.rb
148
+ - lib/shimmer/helpers/meta_helper.rb
148
149
  - lib/shimmer/jobs/sitemap_job.rb
149
150
  - lib/shimmer/middlewares/cloudflare.rb
150
151
  - lib/shimmer/railtie.rb
151
152
  - lib/shimmer/tasks/auth.rake
152
153
  - lib/shimmer/tasks/db.rake
153
154
  - lib/shimmer/tasks/lint.rake
155
+ - lib/shimmer/tasks/s3.rake
154
156
  - lib/shimmer/utils/config.rb
155
157
  - lib/shimmer/utils/file_helper.rb
156
158
  - lib/shimmer/utils/file_proxy.rb
157
159
  - lib/shimmer/utils/localizable.rb
160
+ - lib/shimmer/utils/meta.rb
158
161
  - lib/shimmer/utils/remote_navigation.rb
159
162
  - lib/shimmer/utils/sitemap_adapter.rb
160
163
  - lib/shimmer/version.rb