rack-time-zone-middleware 0.1.2 → 0.1.3

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: 099d747f1c77445c92b0d447489488ccefa0b555
4
- data.tar.gz: cf95cf6124acee7e7b0477ade1aa68e2027c36cb
3
+ metadata.gz: 6030c8f5342aa87d294dfef6a8144a3d17997d44
4
+ data.tar.gz: 7a9e56ab384b56eda9bb02508ff05c8a107eca85
5
5
  SHA512:
6
- metadata.gz: d9561629fac0db9087ac8a462371d78b8ffe8f40a536c16de5fdf6a0e5d5d1f9444d0020d97e5896e3a05cf38ad82073f057ed055780775fc852f4deaa8dad7b
7
- data.tar.gz: b4ac0366e88457377c5ceb450423ceb61a69655c76570aa350c5857bcd62aa55b88f557089d96302f3dd04f117d7b1969d9bcb66471692a35e125540906ae3eb
6
+ metadata.gz: 895a59efa778fda557e4a23cf84436dd674099109ffdbe6ea96bb3ec67f32b32f935e13d95772ee47eb72e00f6449dfce0905ff2e957656151a572586e4fa039
7
+ data.tar.gz: d18904e4c9b8b2e623626e8822bd236bba3413ad13f06d9451420b03aef30bd71a7a44f00a9fa77db97a556d6f286f145daece52a876cd2d2239fe5722795cc6
data/README.md CHANGED
@@ -7,9 +7,10 @@
7
7
 
8
8
  Adding ability to detect timezone at UI side and get it within Rack/Rails via cookies with/o custom handler.
9
9
 
10
- This gem created for usecase of loading predefined TimeZone into Rails environment.
10
+ This gem created for usecase of loading detected TimeZone into Rails environment.
11
11
  You can set cookie with TimeZone name at UI side(from Angular, React, Ember, Backbone or vanilla JS).
12
- After that all XHR requests to your Rails/Rack backend will be fetched with this Middleware.
12
+ After that all XHR requests to your Rails/Rack backend can be identified by this Middleware.
13
+ In case when TimeZone name(s) is unsupported or key not found in cookies, middleware will fallback to defaults.
13
14
 
14
15
  ## Installation
15
16
 
@@ -38,7 +39,10 @@ require 'rack/time-zone-middleware'
38
39
  use Rack::TimeZoneMiddleware
39
40
 
40
41
  # Configured TimeZone handler.
41
- use Rack::TimeZoneMiddleware default_tz: 'Europe/Moscow', default_as_tz: 'Moscow', default_key: 'dummy.time_zone'
42
+ use Rack::TimeZoneMiddleware, default_tz: 'Europe/Moscow',
43
+ default_as_tz: 'Moscow',
44
+ time_zone_key: 'dummy.time_zone'
45
+ cookie_key: 'dummy.time_zone'
42
46
 
43
47
  # Your own TimeZone handler. All options & instance methods is available through middleware parameter.
44
48
  use Rack::TimeZoneMiddleware do |middleware, env|
@@ -58,7 +62,10 @@ end
58
62
  config.middleware.use Rack::TimeZoneMiddleware
59
63
 
60
64
  # Configured TimeZone handler.
61
- config.middleware.use Rack::TimeZoneMiddleware default_tz: 'Europe/Moscow', default_as_tz: 'Moscow', default_key: 'dummy.time_zone'
65
+ config.middleware.use Rack::TimeZoneMiddleware, default_tz: 'Europe/Moscow',
66
+ default_as_tz: 'Moscow',
67
+ time_zone_key: 'dummy.time_zone'
68
+ cookie_key: 'dummy.time_zone'
62
69
 
63
70
  # Your own TimeZone handler. All options & instance methods is available through middleware parameter.
64
71
  config.middleware.use Rack::TimeZoneMiddleware do |middleware, env|
@@ -75,9 +82,25 @@ end
75
82
 
76
83
  | name | description |
77
84
  |---|---|
78
- | default_tz | Default TimeZone for fallback(default: 'Europe/Moscow') |
79
- | default_as_tz | Default `ActiveSupport::TimeZone` fallback key(default: 'Moscow') |
80
- | default_key | Default cookie and environment keys(default: 'dummy.time_zone') |
85
+ | default_tz | TimeZone name fallback value (default: 'Europe/Moscow') |
86
+ | default_as_tz | `ActiveSupport::TimeZone` key name fallback value (default: 'Moscow') |
87
+ | cookie_key | Cookie key name (default: 'dummy.time_zone') |
88
+ | time_zone_key | Environment key name (default: 'dummy.time_zone') |
89
+
90
+ ## AngularJS TimeZone updater factory example via [JsTz](http://pellepim.bitbucket.org/jstz/)
91
+
92
+ ```javascript
93
+ web.services.factory('JsTz', ['ipCookie', function(ipCookie) {
94
+ return {
95
+ updateCookie: function() {
96
+ tz = jstz.determine();
97
+ name = tz.name();
98
+ ipCookie('dummy.time_zone', name, { path: '/', expires: 21 });
99
+ return name;
100
+ }
101
+ };
102
+ }]);
103
+ ```
81
104
 
82
105
  ## Dependencies:
83
106
 
@@ -6,6 +6,7 @@ module Rack
6
6
  DEFAULT_TIME_ZONE = 'Europe/Moscow'
7
7
  DEFAULT_AS_TIME_ZONE = 'Moscow'
8
8
  DEFAULT_KEY = 'dummy.time_zone'
9
+ DEFAULT_COOKIE_KEY = DEFAULT_KEY
9
10
 
10
11
  attr_reader :app, :runner, :options
11
12
 
@@ -15,7 +16,8 @@ module Rack
15
16
  @options = {}
16
17
  options[:default_tz] = opts.fetch(:default_tz, DEFAULT_TIME_ZONE)
17
18
  options[:default_as_tz] = opts.fetch(:default_as_tz, DEFAULT_AS_TIME_ZONE)
18
- options[:default_key] = opts.fetch(:default_key, DEFAULT_KEY)
19
+ options[:time_zone_key] = opts.fetch(:time_zone_key, DEFAULT_KEY)
20
+ options[:cookie_key] = opts.fetch(:cookie_key, DEFAULT_COOKIE_KEY)
19
21
 
20
22
  if block_given?
21
23
  @runner = block
@@ -38,8 +40,8 @@ module Rack
38
40
  def _call(mw, env)
39
41
  request = ::Rack::Request.new(env)
40
42
 
41
- time_zone = request.cookies[mw.options[:default_key]] || mw.options[:default_tz]
42
- env[mw.options[:default_key]] = mw.find_as_time_zone(time_zone)
43
+ time_zone = request.cookies[mw.options[:cookie_key]] || mw.options[:default_tz]
44
+ env[mw.options[:time_zone_key]] = mw.find_as_time_zone(time_zone)
43
45
 
44
46
  mw.app.call(env)
45
47
  end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  class TimeZoneMiddleware
3
- VERSION = '0.1.2'
3
+ VERSION = '0.1.3'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-time-zone-middleware
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Merkulov