pakyow-core 1.0.0.rc1 → 1.0.0.rc2

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: 6652c3a490f4119178a05144e2bb48e035748d5511453d30c645d8ef8ca2e648
4
- data.tar.gz: 6bcc4365fcb0dff053a82dfdd9284ed016c406a4106da652db8e878a57edbc17
3
+ metadata.gz: 80c64e0fbe8b4edcb3b10b4ac4cd640fbd4e4fb501108798f418cf0829289d50
4
+ data.tar.gz: ce5ebf0caebc91cbfd1c0c1463a9bcd9312fff947f1fef05aeec07df1833c486
5
5
  SHA512:
6
- metadata.gz: 89dfd288361faac6ccb96b94f48ba464208f609271b4e032279bb4450a42c45c4a6a946962627b0672b85fbd19f05bfba20cf3ec4d95eede722d2ffff40f871a
7
- data.tar.gz: bd861c99ce96392a1ed9f0870f53206f9a05e0842f8a6500746fac459dfb01ba18ee6690d6008ee633e0938ed3cac7e4a03d45c904591421f671ef9215ca08c1
6
+ metadata.gz: 9edb7dd91ee759baada1e3176644f9c7f409fce6f052f0dbe87dcdd7220ef946d22f90eb87add99a33ae5edfa0ed409e6104781fbf78fb8888b003a7c4fa27dc
7
+ data.tar.gz: bfe086b797fbf4501b7a549caffe0797949421e9a71eb04d243a7c44041ff05ef7f55c75db134ff9b25731f5fec174695db8dba4af8a56117b773d09c65c18d0
@@ -12,20 +12,28 @@ module Pakyow
12
12
 
13
13
  apply_extension do
14
14
  after "initialize" do
15
- session[:verifier_key] ||= Support::MessageVerifier.key
15
+ if app.config.session.enabled
16
+ session[:verifier_key] ||= Support::MessageVerifier.key
17
+ end
16
18
  end
17
19
  end
18
20
 
19
21
  def verifier
20
- unless instance_variable_defined?(:@verifier)
21
- @verifier = Support::MessageVerifier.new(verifier_key)
22
- end
22
+ if app.config.session.enabled
23
+ unless instance_variable_defined?(:@verifier)
24
+ @verifier = Support::MessageVerifier.new(verifier_key)
25
+ end
23
26
 
24
- @verifier
27
+ @verifier
28
+ else
29
+ nil
30
+ end
25
31
  end
26
32
 
27
33
  def verifier_key
28
- session[:verifier_key]
34
+ if app.config.session.enabled
35
+ session[:verifier_key]
36
+ end
29
37
  end
30
38
  end
31
39
  end
@@ -3,6 +3,7 @@
3
3
  require "base64"
4
4
 
5
5
  require "pakyow/support/indifferentize"
6
+ require "pakyow/support/message_verifier"
6
7
 
7
8
  require "pakyow/app/connection/session/abstract"
8
9
 
@@ -12,7 +13,7 @@ module Pakyow
12
13
  module Session
13
14
  class Cookie < Abstract
14
15
  def initialize(connection, options)
15
- if (cookie = connection.cookies[options.name]) && !cookie.is_a?(String)
16
+ if (cookie = connection.cookies[options.name]) && cookie.is_a?(Support::IndifferentHash)
16
17
  super(connection, options, Support::IndifferentHash.new(cookie[:value].to_h))
17
18
  connection.cookies[options.name][:value] = self
18
19
  else
@@ -35,14 +36,24 @@ module Pakyow
35
36
  end
36
37
 
37
38
  def to_s
38
- Base64.urlsafe_encode64(Marshal.dump(to_h))
39
+ Base64.urlsafe_encode64(
40
+ Pakyow.verifier.sign(
41
+ Marshal.dump(to_h)
42
+ )
43
+ )
39
44
  end
40
45
 
41
46
  private
42
47
 
43
48
  def deserialize(connection, options)
44
49
  if value = connection.cookies[options.name]
45
- Support::IndifferentHash.deep(Marshal.load(Base64.urlsafe_decode64(value)))
50
+ Support::IndifferentHash.deep(
51
+ Marshal.load(
52
+ Pakyow.verifier.verify(
53
+ Base64.urlsafe_decode64(value)
54
+ )
55
+ )
56
+ )
46
57
  else
47
58
  Support::IndifferentHash.new
48
59
  end
@@ -58,7 +58,7 @@ module Pakyow
58
58
  end
59
59
 
60
60
  setting :http_only do
61
- Pakyow.config.cookies.http_only
61
+ true
62
62
  end
63
63
 
64
64
  setting :same_site do
@@ -25,8 +25,10 @@ module Pakyow
25
25
  {}
26
26
  end
27
27
  end
28
- rescue LoadError #=> error
29
- # TODO: raise an unknown session object error...
28
+ rescue LoadError => error
29
+ # TODO: Improve this with a specific "session object missing" error.
30
+ #
31
+ raise error
30
32
  end
31
33
  end
32
34
  end
data/lib/pakyow/cli.rb CHANGED
@@ -92,7 +92,13 @@ module Pakyow
92
92
  end
93
93
  end
94
94
 
95
- @options[:env] ||= ENV["APP_ENV"] || ENV["RACK_ENV"] || "development"
95
+ case @command
96
+ when "prototype"
97
+ @options.delete(:env)
98
+ else
99
+ @options[:env] ||= ENV["APP_ENV"] || ENV["RACK_ENV"] || "development"
100
+ end
101
+
96
102
  ENV["APP_ENV"] = ENV["RACK_ENV"] = @options[:env]
97
103
  end
98
104
 
@@ -115,7 +121,16 @@ module Pakyow
115
121
  end
116
122
 
117
123
  def setup_environment
118
- Pakyow.setup(env: @options[:env])
124
+ Pakyow.setup(env: environment_to_setup)
125
+ end
126
+
127
+ def environment_to_setup
128
+ case @command
129
+ when "prototype"
130
+ :prototype
131
+ else
132
+ @options[:env]
133
+ end
119
134
  end
120
135
 
121
136
  def load_tasks
@@ -16,6 +16,8 @@ module Pakyow
16
16
  setting :freeze_on_boot, true
17
17
  setting :exit_on_boot_failure, true
18
18
  setting :timezone, :utc
19
+ setting :secrets, ["pakyow"]
20
+
19
21
  setting :connection_class do
20
22
  require "pakyow/connection"
21
23
  Connection
@@ -41,6 +43,10 @@ module Pakyow
41
43
  setting :exit_on_boot_failure, false
42
44
  end
43
45
 
46
+ defaults :production do
47
+ setting :secrets, [ENV["SECRET"].to_s.strip]
48
+ end
49
+
44
50
  configurable :server do
45
51
  setting :host, "localhost"
46
52
  setting :port, 3000
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pakyow/support/extension"
4
+ require "pakyow/support/message_verifier"
5
+
6
+ module Pakyow
7
+ module Environment
8
+ module Behavior
9
+ module Verifier
10
+ extend Support::Extension
11
+
12
+ class_methods do
13
+ attr_reader :verifier
14
+ end
15
+
16
+ apply_extension do
17
+ before :boot do
18
+ config.secrets.reject! { |secret|
19
+ secret.nil? || secret.empty?
20
+ }
21
+
22
+ if config.secrets.any?
23
+ @verifier = Support::MessageVerifier.new(config.secrets[0])
24
+ else
25
+ raise "Pakyow will not boot without a secret configured in `Pakyow.config.secrets`"
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -25,6 +25,7 @@ require "pakyow/environment/behavior/timezone"
25
25
  require "pakyow/environment/behavior/running"
26
26
  require "pakyow/environment/behavior/watching"
27
27
  require "pakyow/environment/behavior/restarting"
28
+ require "pakyow/environment/behavior/verifier"
28
29
 
29
30
  require "pakyow/environment/actions/dispatch"
30
31
  require "pakyow/environment/actions/input_parser"
@@ -112,6 +113,7 @@ module Pakyow
112
113
  include Environment::Behavior::Running
113
114
  include Environment::Behavior::Watching
114
115
  include Environment::Behavior::Restarting
116
+ include Environment::Behavior::Verifier
115
117
 
116
118
  include Support::Pipeline
117
119
  action Actions::Logger
@@ -9,15 +9,11 @@ gem "pakyow", github: "pakyow/pakyow", require: "pakyow/all"
9
9
  gem "pakyow", "~> <%= Pakyow::VERSION %>", require: "pakyow/all"
10
10
  <%- end -%>
11
11
 
12
- # Use the puma application server.
13
- #
14
- gem "puma"
15
-
16
12
  # Easily manage environment variables.
17
13
  #
18
14
  gem "dotenv"
19
15
 
20
- group :development do
16
+ group :development, :prototype do
21
17
  # Speed up project boot time.
22
18
  #
23
19
  gem "bootsnap", require: false
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html>
2
+ <html ui="navigable">
3
3
  <head>
4
4
  <title>
5
5
  <%= @human_project_name %>
@@ -26,7 +26,9 @@ module Pakyow
26
26
  prefix: @plugin.class.mount_path
27
27
  },
28
28
  processor: Presenter::ProcessorCaller.new(
29
- @plugin.parent.state(:processor)
29
+ @plugin.parent.state(:processor).map { |processor|
30
+ processor.new(@plugin.parent)
31
+ }
30
32
  )
31
33
  ).tap do |plugin_templates|
32
34
  if app_templates = @plugin.parent.state(:templates).find { |templates| templates.name == :default }
data/lib/pakyow/task.rb CHANGED
@@ -293,6 +293,8 @@ module Pakyow
293
293
  arguments: @__arguments,
294
294
  options: CLI::GLOBAL_OPTIONS.select { |key, _|
295
295
  key == :env || args[1].to_a.include?(key)
296
+ }.reject { |key, _|
297
+ key == :env && args[0] == :prototype
296
298
  }.merge(@__options),
297
299
  flags: @__flags,
298
300
  task_args: args,
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- desc "Boot the environment"
3
+ desc "Boot the project"
4
4
  option :host, "The host the server runs on (default: #{Pakyow.config.server.host})"
5
5
  option :port, "The port the server runs on (default: #{Pakyow.config.server.port})"
6
6
  flag :standalone, "Disable automatic reloading of changes"
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ desc "Boot the prototype"
4
+ option :host, "The host the server runs on (default: #{Pakyow.config.server.host})"
5
+ option :port, "The port the server runs on (default: #{Pakyow.config.server.port})"
6
+ task :prototype, [:host, :port] do |_, args|
7
+ if host = args[:host]
8
+ Pakyow.config.server.host = host
9
+ end
10
+
11
+ if port = args[:port]
12
+ Pakyow.config.server.port = port
13
+ end
14
+
15
+ if args[:standalone]
16
+ Pakyow.config.server.proxy = false
17
+ end
18
+
19
+ Pakyow.run
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pakyow-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
4
+ version: 1.0.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Powell
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: commands
11
11
  cert_chain: []
12
- date: 2019-07-03 00:00:00.000000000 Z
12
+ date: 2019-07-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pakyow-support
@@ -17,42 +17,42 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 1.0.0.rc1
20
+ version: 1.0.0.rc2
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 1.0.0.rc1
27
+ version: 1.0.0.rc2
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: async
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '1.17'
34
+ version: '1.19'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '1.17'
41
+ version: '1.19'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: async-http
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 0.43.1
48
+ version: 0.46.3
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 0.43.1
55
+ version: 0.46.3
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: async-io
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -87,28 +87,28 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '1.3'
90
+ version: '1.4'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '1.3'
97
+ version: '1.4'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: dry-types
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '1.0'
104
+ version: '1.1'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '1.0'
111
+ version: '1.1'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: filewatcher
114
114
  requirement: !ruby/object:Gem::Requirement
@@ -247,6 +247,7 @@ files:
247
247
  - lib/pakyow/environment/behavior/running.rb
248
248
  - lib/pakyow/environment/behavior/silencing.rb
249
249
  - lib/pakyow/environment/behavior/timezone.rb
250
+ - lib/pakyow/environment/behavior/verifier.rb
250
251
  - lib/pakyow/environment/behavior/watching.rb
251
252
  - lib/pakyow/error.rb
252
253
  - lib/pakyow/errors.rb
@@ -306,6 +307,7 @@ files:
306
307
  - lib/pakyow/tasks/info/endpoints.rake
307
308
  - lib/pakyow/tasks/irb.rake
308
309
  - lib/pakyow/tasks/prelaunch.rake
310
+ - lib/pakyow/tasks/prototype.rake
309
311
  - lib/pakyow/types.rb
310
312
  - lib/pakyow/validations.rb
311
313
  - lib/pakyow/validations/acceptance.rb
@@ -334,8 +336,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
334
336
  - !ruby/object:Gem::Version
335
337
  version: 1.3.1
336
338
  requirements: []
337
- rubyforge_project:
338
- rubygems_version: 2.7.6
339
+ rubygems_version: 3.0.3
339
340
  signing_key:
340
341
  specification_version: 4
341
342
  summary: Pakyow Core