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 +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/tzispa/app.rb +3 -2
- data/lib/tzispa/controller/api.rb +13 -5
- data/lib/tzispa/http/context.rb +1 -1
- data/lib/tzispa/http/request.rb +8 -0
- data/lib/tzispa/middleware.rb +1 -1
- data/lib/tzispa/version.rb +1 -1
- data/tzispa.gemspec +4 -3
- metadata +22 -9
- data/lib/tzispa/autoreload.rb +0 -110
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c89e8ec7f20be6d2513d85e5951f8040efdfb1e
|
4
|
+
data.tar.gz: aadaaee55360b82fd09d644c0e48eb3ef76d03bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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
|
data/lib/tzispa/http/context.rb
CHANGED
data/lib/tzispa/http/request.rb
CHANGED
@@ -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
|
data/lib/tzispa/middleware.rb
CHANGED
data/lib/tzispa/version.rb
CHANGED
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 '
|
24
|
-
s.add_dependency '
|
25
|
-
s.add_dependency '
|
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.
|
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-
|
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
|
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
|
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
|
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
|
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.
|
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.
|
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
|
data/lib/tzispa/autoreload.rb
DELETED
@@ -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
|