tzispa 0.4.5 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aeeebb53345493217e8618fff6441a3c210b2f75
4
- data.tar.gz: 958177f65207aac9c74e28fcfbdff7fe83609c61
3
+ metadata.gz: 5c89e8ec7f20be6d2513d85e5951f8040efdfb1e
4
+ data.tar.gz: aadaaee55360b82fd09d644c0e48eb3ef76d03bb
5
5
  SHA512:
6
- metadata.gz: 7c7f074552fd252f829f163e9ef49572a7f99340c31a344c05fe60c4e27ae51f725e91d8c6b3d4f267bc9ce631a393051a964a2195463e56757241f94d4f490c
7
- data.tar.gz: 1fff97eec6fae0213afc1768baa7e9d0df5c21b4a24ac67c227191d9f614854e8fafc382a36bfc5870371311caf58bd46f60045af6a277fe674c544575d3e18a
6
+ metadata.gz: ee05ed3e7c10f7eda755d9564838cf8024c830a44e29381307674ff11e595c437cac4a1fbb1b527efce8ad30ae0cb8de780260a4a27c520c3c8e193928094e0e
7
+ data.tar.gz: 89dbc1f7e155605d2194b9302711040663186fdf738cd1463b8f1226a1c92c51198353ce734aa29872b27e6db85eb7dae6b9ebfd8e165a1f7b0ecc0d24030aa1
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@ Tzispa
2
2
 
3
3
  General purpose web framework
4
4
 
5
+ ## v0.4.6
6
+ - add browser detection support
7
+ - allow specify a url fragment to redirect to the referer page section
8
+ - middleware management fixes
9
+
5
10
  ## v0.4.5
6
11
  - remove _load_assets_middleware
7
12
  - add browser detection capability
data/lib/tzispa/app.rb CHANGED
@@ -16,7 +16,7 @@ module Tzispa
16
16
 
17
17
  ENV_TZISPA_APP = :tzispa__app
18
18
  ENV_TZISPA_CONTEXT = :tzispa__context
19
-
19
+
20
20
 
21
21
  class Application
22
22
  extend Forwardable
@@ -81,13 +81,14 @@ module Tzispa
81
81
  unless @loaded
82
82
  Mutex.new.synchronize {
83
83
  load_locales
84
- @middleware.load!
85
84
  @repository = Data::Repository.new(@config.repository.to_h).load! if @config.respond_to? :repository
86
85
  @engine = Rig::Engine.new(self, @config.template_cache.enabled, @config.template_cache.size)
87
86
  @logger = Logger.new("logs/#{@domain.name}.log", 'weekly')
88
87
  @logger.level = @config.respond_to?(:developing) && @config.developing ? Logger::DEBUG : Logger::INFO
89
88
  @domain.require_dir 'helpers'
90
89
  @domain.require_dir 'api'
90
+ @domain.require_dir 'middleware'
91
+ @middleware.load!
91
92
  @loaded = true
92
93
  }
93
94
  end
@@ -30,7 +30,11 @@ module Tzispa
30
30
 
31
31
  def redirect
32
32
  context.flash << hnd.message
33
- url = hnd.data || request.referer
33
+ url = if hnd.data
34
+ hnd.data.start_with?('#') ? "#{request.referer}#{hnd.data}" : hnd.data
35
+ else
36
+ request.referer
37
+ end
34
38
  context.redirect url, response
35
39
  end
36
40
 
@@ -42,10 +46,14 @@ module Tzispa
42
46
  end
43
47
 
44
48
  def json
45
- data = hnd.data.is_a?(::Hash) ? hnd.data : JSON.parse(hnd.data)
46
- data[:__result_status] = hnd.status
47
- data[:__result_message] = hnd.message
48
- response.body << data.to_json.to_s
49
+ if hnd.data.is_a?(::Hash)
50
+ data = hnd.data
51
+ data[:__result_status] = hnd.status
52
+ data[:__result_message] = hnd.message
53
+ else
54
+ data = JSON.parse(hnd.data)
55
+ end
56
+ response.body << data.to_json
49
57
  content_type :json
50
58
  set_action_headers
51
59
  end
@@ -16,7 +16,7 @@ module Tzispa
16
16
  include Tzispa::Helpers::Security
17
17
 
18
18
  attr_reader :request, :response
19
- def_delegators :@request, :session
19
+ def_delegators :@request, :session, :browser
20
20
 
21
21
  SESSION_LAST_ACCESS = :__last_access
22
22
  SESSION_AUTH_USER = :__auth__user
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rack'
4
+ require 'browser'
4
5
 
5
6
  module Tzispa
6
7
  module Http
@@ -8,6 +9,13 @@ module Tzispa
8
9
 
9
10
  alias secure? ssl?
10
11
 
12
+ attr_reader :browser
13
+
14
+ def initialize(env)
15
+ super(env)
16
+ @browser = Browser.new user_agent, accept_language: env["HTTP_ACCEPT_LANGUAGE"]
17
+ end
18
+
11
19
  def forwarded?
12
20
  @env.include? "HTTP_X_FORWARDED_HOST"
13
21
  end
@@ -40,7 +40,7 @@ module Tzispa
40
40
  def load_middleware(middleware)
41
41
  case middleware
42
42
  when String
43
- @application.domain.const_get(middleware)
43
+ Object.const_get(middleware)
44
44
  else
45
45
  middleware
46
46
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tzispa
4
- VERSION = '0.4.5'
4
+ VERSION = '0.4.6'
5
5
  FRAMEWORK_NAME = 'Tzispa'
6
6
  GEM_NAME = 'tzispa'
7
7
  end
data/tzispa.gemspec CHANGED
@@ -20,9 +20,10 @@ Gem::Specification.new do |s|
20
20
  s.add_dependency 'i18n', '~> 0.7.0'
21
21
  s.add_dependency 'http_router', '~> 0.11.2'
22
22
  s.add_dependency 'moneta', '~> 0.8.0'
23
- s.add_dependency 'tzispa_helpers', '~> 0.1.0'
24
- s.add_dependency 'tzispa_utils', '~> 0.2.1'
25
- s.add_dependency 'tzispa_rig', '~> 0.2.7'
23
+ s.add_dependency 'browser', '~> 2.1'
24
+ s.add_dependency 'tzispa_helpers', '~> 0.1'
25
+ s.add_dependency 'tzispa_utils', '~> 0.2'
26
+ s.add_dependency 'tzispa_rig', '~> 0.3'
26
27
  s.add_dependency 'tzispa_data', '~> 0.1.1'
27
28
 
28
29
  s.files = Dir.glob("{lib,bin}/**/*") + %w(README.md CHANGELOG.md LICENSE tzispa.gemspec)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tzispa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Antonio Piñero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-04 00:00:00.000000000 Z
11
+ date: 2016-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -80,48 +80,62 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.8.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: browser
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.1'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.1'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: tzispa_helpers
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 0.1.0
103
+ version: '0.1'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 0.1.0
110
+ version: '0.1'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: tzispa_utils
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.2.1
117
+ version: '0.2'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.2.1
124
+ version: '0.2'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: tzispa_rig
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: 0.2.7
131
+ version: '0.3'
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: 0.2.7
138
+ version: '0.3'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: tzispa_data
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -151,7 +165,6 @@ files:
151
165
  - lib/tzispa.rb
152
166
  - lib/tzispa/api/handler.rb
153
167
  - lib/tzispa/app.rb
154
- - lib/tzispa/autoreload.rb
155
168
  - lib/tzispa/bin/tzispa
156
169
  - lib/tzispa/cli.rb
157
170
  - lib/tzispa/command/api.rb
@@ -1,110 +0,0 @@
1
- # This file extends the Kernel's require function and adds the
2
- # AutoReload module which allows to reload files once they have changed
3
- # on the disk.
4
- #
5
- # Basically, you just require your files as usual, and if you want to update
6
- # the files, either call AutoReload.reload(file) or AutoReload.reload_all.
7
- #
8
- # Usage:
9
- # irb -rautoload
10
- #
11
- # Then type 'reload' on the prompt to reload require'd files which have
12
- # changed in the meantime.
13
- #
14
- # Written by Mikio L. Braun, March 16, 2008, edited Jan 15, 2010
15
-
16
- require 'pp'
17
- require 'set'
18
-
19
- # This module tracks loaded files and their timestamps and allows to reload
20
- # files which have changed automatically by calling reload.
21
- module AutoReload
22
- # stores the normalized filenames and their File.mtime timestamps
23
- @timestamps = Hash.new
24
- @notfound = Set.new
25
- @verbose = false
26
-
27
- def self.verbose=(flag)
28
- @verbose = flag
29
- end
30
-
31
- # find the full path to a file
32
- def self.locate(file)
33
- return nil if @notfound.include? file
34
- $:.each do |dir|
35
- fullpath = File.join(dir, file)
36
- if File.exists? fullpath
37
- return fullpath
38
- elsif File.exists?(fullpath + '.rb')
39
- return fullpath + '.rb'
40
- elsif File.exists?(fullpath + '.so')
41
- return fullpath + '.so'
42
- end
43
- end
44
- # puts "[AutoReload] File #{file} not found!"
45
- @notfound.add file
46
- return nil
47
- end
48
-
49
- # store the time stamp of a file
50
- def self.timestamp(file)
51
- path = locate(file)
52
- if path
53
- file = normalize(path, file)
54
- @timestamps[file] = File.mtime(path)
55
- end
56
- end
57
-
58
- # put the extension on a filename
59
- def self.normalize(path, file)
60
- if File.extname(file) == ""
61
- return file + File.extname(path)
62
- else
63
- return file
64
- end
65
- end
66
-
67
- # show all stored files and their timestamp
68
- def self.dump
69
- pp @timestamps
70
- end
71
-
72
- # reload a file
73
- def self.reload(file, force=false)
74
- path = locate(file)
75
- file = normalize(path, file)
76
-
77
- if force or (path and File.mtime(path) > @timestamps[file])
78
- puts "[AutoReload] reloading #{file}" if @verbose
79
-
80
- # delete file from list of loaded modules, and reload
81
- $".delete file
82
- require file
83
- return true
84
- else
85
- return false
86
- end
87
- end
88
-
89
- # reload all files which were required
90
- def self.reload_all(force=false)
91
- @timestamps.each_key do |file|
92
- self.reload(file, force)
93
- end
94
- end
95
- end
96
-
97
- # Overwrite 'require' to register the time stamps instead.
98
- module Kernel # :nodoc:
99
- alias old_require require
100
-
101
- def require(file)
102
- AutoReload.timestamp(file)
103
- old_require(file)
104
- end
105
-
106
- def reload
107
- AutoReload.reload_all
108
- return
109
- end
110
- end