tzispa 0.4.5 → 0.4.6

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
  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