mobile_workflow 0.6.30 → 0.7.2

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: d031a1ce30dbdd14233f828a7cb3d8a6c651230bccd2d18de76f9a7277dc494b
4
- data.tar.gz: ef7c6fc5b5f030862460275073754f2643e83968222e3a34c29afa3c3cf3a204
3
+ metadata.gz: 4a72db383d64200fbddcb0c8f342efd48aa8ddb78ef6508d80fe5a0b15f76ac8
4
+ data.tar.gz: d012d60e72823b8b44522d18fa714015fcdcc8ad4d177a6876f535af98a63788
5
5
  SHA512:
6
- metadata.gz: 8ca94e68e33f15522bcefd2d4d74cd648ac489894eae679cf886085208caf31e5d99c9923ed6d8404500246a89d05f3ec9f648e0cf2f43bdf8d60e09d6083930
7
- data.tar.gz: f28e43e1ebc48dfb63f2b52efba43a91e391c2da5a40ec115e5016b7b250081e10bea92737ffa5df579949b1ad772c4ecfd70f598b064229e3b2e45c5bac0bb9
6
+ metadata.gz: '099e9983d4bcf1c6d3d1597ea2a100f37bed39479e9310db5ae3522004af62ee9632bf68696ed7719212c136da5ad5f6618c855ff7317fd501608c7e972e567e'
7
+ data.tar.gz: fdc5298cb5bdee746c241a3fd5b114b34d2fb17a8234f7810d3cf0fc1c302ab9070817ff34814afc897994a4e9e700cec84e60decc0f5148c286ba7b43c9a986
data/README.md CHANGED
@@ -4,6 +4,11 @@ Short description and motivation.
4
4
  ## Usage
5
5
  How to use my plugin.
6
6
 
7
+ ## Uploads Design
8
+ This gem includes an engine to add and process S3 attachments. The design is as follows:
9
+
10
+ ![Uploads Design](https://github.com/FutureWorkshops/mobile_workflow/blob/master/uploads_design.png?raw=true)
11
+
7
12
  ## Installation
8
13
  Add this line to your application's Gemfile:
9
14
 
@@ -12,13 +12,17 @@ module MobileWorkflow
12
12
 
13
13
  {
14
14
  "identifier" => binary["identifier"],
15
- "url" => presigned_url("#{object.class.name.underscore}/#{object.id}/#{object_attribute}.#{extension}"),
15
+ "url" => presigned_url("#{object.class.name.underscore}/#{object.id}/#{object_attribute}/#{s3_object_uuid}.#{extension}"),
16
16
  "method" => "PUT"
17
17
  }
18
18
  end
19
19
  end
20
20
 
21
21
  private
22
+ def s3_object_uuid
23
+ SecureRandom.uuid
24
+ end
25
+
22
26
  def presigned_url(key)
23
27
  presigner.presigned_url(:put_object, bucket: ENV['AWS_BUCKET_NAME'], key: key, metadata: {})
24
28
  end
@@ -56,10 +56,6 @@ module MobileWorkflow
56
56
  end
57
57
 
58
58
  def attribute_name
59
- file_name.split(".")[0] # remove the extension
60
- end
61
-
62
- def file_name
63
59
  key_identifiers[2]
64
60
  end
65
61
 
@@ -67,13 +63,10 @@ module MobileWorkflow
67
63
  object_class_name, object_id, attribute_name = object_key.split("/")
68
64
  return object_class_name, object_id, attribute_name
69
65
  end
70
-
66
+
71
67
  def object_key
72
- @object_key ||= message['Records'][0]['s3']['object']['key']
73
- end
74
-
75
- def message
76
68
  message = JSON.parse(message_body['Message'])
69
+ message['Records'][0]['s3']['object']['key']
77
70
  end
78
71
 
79
72
  def message_body
@@ -110,12 +110,12 @@ module MobileWorkflow
110
110
  { id: id, text: text, type: :smallSection }
111
111
  end
112
112
 
113
- def mw_grid_item(id: self.id, text:, image_attachment: nil)
113
+ def mw_grid_item(id: self.id, text:, image_attachment: nil, options: { resize_to_fill: [1560, 877.5] })
114
114
  raise 'Missing id' if id.nil?
115
115
  raise 'Missing text' if text.nil?
116
116
 
117
117
  item = { id: id, text: text, type: :item }
118
- item[:imageURL] = preview_url(image_attachment, options: { resize_to_fill: [1224, 760] }) if image_attachment
118
+ item[:imageURL] = preview_url(image_attachment, options: options) if image_attachment
119
119
  item
120
120
  end
121
121
 
@@ -24,10 +24,6 @@ module MobileWorkflow
24
24
  route "mount MobileWorkflow::Engine => '/'"
25
25
  end
26
26
 
27
- def copy_rake_tasks
28
- copy_file("lib/tasks/mobile_workflow_doorkeeper.rake") if options[:doorkeeper_oauth]
29
- end
30
-
31
27
  def generate_doorkeeper
32
28
  return unless options[:doorkeeper_oauth]
33
29
  say "Generating Doorkeeper OAuth"
@@ -35,7 +31,7 @@ module MobileWorkflow
35
31
  migration_template "create_users.rb", "db/migrate/create_users.rb"
36
32
 
37
33
  generate 'doorkeeper:install'
38
- gsub_file 'config/initializers/doorkeeper.rb', 'raise "Please configure doorkeeper resource_owner_authenticator block located in #{__FILE__}"', 'User.find_by_id(session[:user_id]) || redirect_to(new_session_url(return_to: request.fullpath))'
34
+ gsub_file 'config/initializers/doorkeeper.rb', 'raise "Please configure doorkeeper resource_owner_authenticator block located in #{__FILE__}"', 'User.find_by_id(session.delete(:user_id)) || redirect_to(new_session_url(return_to: request.fullpath))'
39
35
  generate 'doorkeeper:migration'
40
36
  generate 'doorkeeper:pkce'
41
37
  template("user.rb.erb", "app/models/user.rb")
@@ -1 +1 @@
1
- web: bundle exec rackup config.ru -p $PORT
1
+ web: bin/rails s -p $PORT
@@ -6,15 +6,10 @@ class SessionsController < ApplicationController
6
6
  @user = User.find_by("LOWER(email)= ?", params[:email].downcase)
7
7
  if @user && @user.authenticate(params[:password])
8
8
  session[:user_id] = @user.id
9
- redirect_to params[:return_to] || root_url, notice: "Logged in!"
9
+ redirect_to params[:return_to] || root_url
10
10
  else
11
11
  flash[:warning] = "You have entered incorrect email and/or password."
12
12
  render :new
13
13
  end
14
14
  end
15
-
16
- def destroy
17
- session.delete(:user_id)
18
- redirect_to root_path
19
- end
20
15
  end
@@ -0,0 +1,12 @@
1
+ desc "Add S3 storage to a Heroku app"
2
+ namespace :mw do
3
+ task add_heroku_s3_storage: :environment do
4
+ require 'mobile_workflow/cli'
5
+ app_name = ENV['APP_NAME']
6
+ aws_region = ENV['AWS_REGION'] || 'us-east-1'
7
+ aws = MobileWorkflow::Cli::AwsBackend.new(app_name: app_name, region: aws_region)
8
+ heroku = MobileWorkflow::Cli::HerokuBackend.new(app_name: app_name)
9
+ aws.create
10
+ aws.create_topic_subscription(heroku.notifications_endpoint)
11
+ end
12
+ end
@@ -44,15 +44,18 @@ def env_set(path)
44
44
  File.write(app_json_path, app_json.to_json)
45
45
  end
46
46
 
47
- namespace :env_set do
48
- desc 'Update Android app.json to use new env'
49
- task :android do
50
- env_set(File.join('app', 'src', 'main', 'res', 'raw', 'app.json'))
51
- end
47
+ namespace :mw do
48
+ namespace :set_env do
49
+ desc 'Update Android app.json to use new env'
50
+ task :android do
51
+ env_set(File.join('app', 'src', 'main', 'res', 'raw', 'app.json'))
52
+ end
52
53
 
53
- desc 'Update iOS app.json to use new env'
54
- task :ios do
55
- project_name = ENV["PROJECT_NAME"]
56
- env_set(File.join(project_name, project_name, "Resources", "app.json"))
57
- end
54
+ desc 'Update iOS app.json to use new env'
55
+ task :ios do
56
+ project_name = ENV["PROJECT_NAME"]
57
+ env_set(File.join(project_name, project_name, "Resources", "app.json"))
58
+ end
59
+ end
58
60
  end
61
+
@@ -1,5 +1,5 @@
1
1
  module MobileWorkflow
2
- VERSION = '0.6.30'
2
+ VERSION = '0.7.2'
3
3
  RUBY_VERSION = '2.7.3'
4
4
  RAILS_VERSION = '6.1.3.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobile_workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.30
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brooke-Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-19 00:00:00.000000000 Z
11
+ date: 2021-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -116,8 +116,6 @@ files:
116
116
  - lib/generators/mobile_workflow/install/templates/app/views/layouts/application.html.erb
117
117
  - lib/generators/mobile_workflow/install/templates/app/views/sessions/new.html.erb
118
118
  - lib/generators/mobile_workflow/install/templates/create_users.rb
119
- - lib/generators/mobile_workflow/install/templates/lib/tasks/mobile_workflow_doorkeeper.rake
120
- - lib/generators/mobile_workflow/install/templates/lib/tasks/mobile_workflow_s3.rake
121
119
  - lib/generators/mobile_workflow/install/templates/seeds.rb.erb
122
120
  - lib/generators/mobile_workflow/install/templates/sessions_controller.rb.erb
123
121
  - lib/generators/mobile_workflow/install/templates/spec/factories/users.rb
@@ -138,7 +136,8 @@ files:
138
136
  - lib/mobile_workflow/engine.rb
139
137
  - lib/mobile_workflow/open_api_spec/parser.rb
140
138
  - lib/mobile_workflow/railtie.rb
141
- - lib/mobile_workflow/tasks/env_set.rake
139
+ - lib/mobile_workflow/tasks/s3.rake
140
+ - lib/mobile_workflow/tasks/set_env.rake
142
141
  - lib/mobile_workflow/version.rb
143
142
  homepage: https://github.com/futureworkshops/mobile_workflow
144
143
  licenses:
@@ -1,5 +0,0 @@
1
- desc "Log the first Doorkeeper App details"
2
- task print_oauth_app: :environment do
3
- puts Doorkeeper::Application.first.uid
4
- puts Doorkeeper::Application.first.secret
5
- end
@@ -1,10 +0,0 @@
1
- desc "Add S3 storage to a Heroku app"
2
- task add_heroku_s3_storage: :environment do
3
- require 'mobile_workflow/cli'
4
- app_name = ENV['APP_NAME']
5
- aws_region = ENV['AWS_REGION'] || 'us-east-1'
6
- aws = MobileWorkflow::Cli::AwsBackend.new(app_name: app_name, region: aws_region)
7
- heroku = MobileWorkflow::Cli::HerokuBackend.new(app_name: app_name)
8
- aws.create
9
- aws.create_topic_subscription(heroku.notifications_endpoint)
10
- end