jpmobile 2.0.5 → 2.0.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.
data/Gemfile CHANGED
@@ -1,8 +1,9 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  group :development, :test do
4
+ gem 'mail', '~> 2.3.0'
4
5
  gem 'jeweler'
5
- gem 'rails', '>= 3.1.0'
6
+ gem 'rails', '~> 3.1.0'
6
7
  gem 'rspec'
7
8
  gem 'rspec-rails'
8
9
  gem 'webrat'
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 2
3
3
  :minor: 0
4
- :patch: 5
5
- :build: !!null
4
+ :patch: 6
5
+ :build:
data/jpmobile.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jpmobile}
8
- s.version = "1.0.0.pre"
8
+ s.version = "2.0.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Yoji Shidara", "Shin-ichiro OGAWA"]
data/lib/jpmobile/mail.rb CHANGED
@@ -67,7 +67,16 @@ module Mail
67
67
  self.body.charset = @charset
68
68
  self.body.mobile = @mobile
69
69
  self.header['Content-Transfer-Encoding'] = @mobile.content_transfer_encoding(self.header)
70
- self.header['Content-ID'] = nil if @mobile.decorated? and !self.content_type.match(/image\//)
70
+ if @mobile.decorated?
71
+ unless self.content_type.match(/image\//)
72
+ self.header['Content-ID'] = nil
73
+ end
74
+
75
+ unless self.header['Content-Type'].sub_type == 'mixed'
76
+ self.header['Date'] = nil
77
+ self.header['Mime-Version'] = nil
78
+ end
79
+ end
71
80
 
72
81
  buffer = header.encoded
73
82
  buffer << "\r\n"
@@ -173,7 +182,9 @@ module Mail
173
182
  attached_files = []
174
183
  attachments.each do |p|
175
184
  if p.content_type.match(/^image\//) and p.content_disposition.match(/^inline/)
176
- p.header['Content-Disposition'] = nil
185
+ if p.header['Content-Type'].parameters['filename']
186
+ p.header['Content-Type'].parameters['name'] = p.header['Content-Type'].parameters['filename'].to_s
187
+ end
177
188
  inline_images << p
178
189
  elsif p.content_disposition
179
190
  attached_files << p
@@ -101,7 +101,7 @@ module Jpmobile::Mobile
101
101
  @_variants = @_variants.reject{|v| v == "mobile"}.map{|v| v.gsub(/mobile/, "smart_phone")}
102
102
  end
103
103
 
104
- @_variants
104
+ @_variants || []
105
105
  end
106
106
 
107
107
  # メール送信用
@@ -1,36 +1,38 @@
1
1
  module Jpmobile
2
2
  class Resolver < ActionView::FileSystemResolver
3
- def find_templates(name, prefix, partial, details)
4
- path = build_path(name, prefix, partial, details)
5
- query(path, EXTENSIONS.map { |ext| details[ext] }, details[:formats], details[:mobile])
6
- end
3
+ EXTENSIONS = [:locale, :formats, :handlers, :mobile]
4
+ DEFAULT_PATTERN = ":prefix/:action{_:mobile,}{.:locale,}{.:formats,}{.:handlers,}"
7
5
 
8
- def build_path(name, prefix, partial, details)
9
- path = ""
10
- path << "#{prefix}/" unless prefix.empty?
11
- path << (partial ? "_#{name}" : name)
12
- path
6
+ def initialize(path, pattern=nil)
7
+ raise ArgumentError, "path already is a Resolver class" if path.is_a?(Resolver)
8
+ super(path, pattern || DEFAULT_PATTERN)
9
+ @path = File.expand_path(path)
13
10
  end
14
11
 
15
- def query(path, exts, formats, mobile)
16
- query = File.join(@path, path)
17
- query << '{' << mobile.map {|v| "_#{v}"}.join(',') << ',}' if mobile and mobile.respond_to?(:map)
18
- exts.each do |ext|
19
- query << '{' << ext.map {|e| e && ".#{e}" }.join(',') << ',}'
20
- end
12
+ private
21
13
 
22
- query.gsub!(/\{\.html,/, "{.html,.text.html,")
23
- query.gsub!(/\{\.text,/, "{.text,.text.plain,")
14
+ def query(path, details, formats)
15
+ query = build_query(path, details)
16
+ templates = []
17
+ sanitizer = Hash.new { |h,k| h[k] = Dir["#{File.dirname(k)}/*"] }
18
+
19
+ Dir[query].each do |p|
20
+ next if File.directory?(p) || !sanitizer[p].include?(p)
24
21
 
25
- Dir[query].reject { |p| File.directory?(p) }.map do |p|
26
22
  handler, format = extract_handler_and_format(p, formats)
23
+ contents = File.open(p, "rb") { |io| io.read }
27
24
 
28
- contents = File.open(p, "rb") {|io| io.read }
29
- variant = p.match(/.+#{path}(.+)\.#{format.to_sym.to_s}.*$/) ? $1 : ''
25
+ if format
26
+ variant = p.match(/.+#{path}(.+)\.#{format.to_sym.to_s}.*$/) ? $1 : ''
27
+ else
28
+ variant = ''
29
+ end
30
30
 
31
- ActionView::Template.new(contents, File.expand_path(p), handler,
32
- :virtual_path => path + variant, :format => format)
31
+ templates << ActionView::Template.new(contents, File.expand_path(p), handler,
32
+ :virtual_path => path.name + variant, :format => format, :updated_at => mtime(p))
33
33
  end
34
+
35
+ templates
34
36
  end
35
37
  end
36
38
  end
@@ -39,6 +39,7 @@ namespace :test do
39
39
 
40
40
  unless skip
41
41
  # generate rails app
42
+ FileUtils.rm_rf("Gemfile.lock")
42
43
  FileUtils.rm_rf(rails_root)
43
44
  FileUtils.mkdir_p(rails_root)
44
45
  `bundle exec rails new #{rails_root}`
@@ -1,6 +1,7 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- gem 'rails', '>= 3.0.3'
3
+ gem 'rails', '~> 3.1.0'
4
+ gem 'mail', '2.3.0'
4
5
 
5
6
  # Bundle edge Rails instead:
6
7
  # gem 'rails', :git => 'git://github.com/rails/rails.git'
@@ -3,4 +3,8 @@ class MobileSpecController < ApplicationController
3
3
 
4
4
  def index
5
5
  end
6
+
7
+ def file_render
8
+ render :file => File.join(Rails.public_path, '422')
9
+ end
6
10
  end
@@ -25,4 +25,28 @@ describe MobileSpecController do
25
25
  end
26
26
  end
27
27
  end
28
+
29
+ describe "GET 'file_render'" do
30
+ context 'PC access' do
31
+ it "should be successful" do
32
+ request.user_agent = 'Mozilla'
33
+ get 'file_render'
34
+
35
+ response.should be_success
36
+ response.should render_template('422')
37
+ request.mobile?.should be_false
38
+ end
39
+ end
40
+
41
+ context 'mobile access' do
42
+ it "should be successful" do
43
+ request.user_agent = "DoCoMo/2.0 SH902i(c100;TB;W24H12)"
44
+ get 'file_render'
45
+ response.should be_success
46
+ response.should render_template('422')
47
+ request.mobile?.should be_true
48
+ request.mobile.should be_a(Jpmobile::Mobile::Docomo)
49
+ end
50
+ end
51
+ end
28
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jpmobile
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-11-17 00:00:00.000000000Z
13
+ date: 2012-01-24 00:00:00.000000000 Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: mail
17
+ requirement: &21551080 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.0
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *21551080
15
26
  - !ruby/object:Gem::Dependency
16
27
  name: jeweler
17
- requirement: &27410000 !ruby/object:Gem::Requirement
28
+ requirement: &21548260 !ruby/object:Gem::Requirement
18
29
  none: false
19
30
  requirements:
20
31
  - - ! '>='
@@ -22,21 +33,21 @@ dependencies:
22
33
  version: '0'
23
34
  type: :development
24
35
  prerelease: false
25
- version_requirements: *27410000
36
+ version_requirements: *21548260
26
37
  - !ruby/object:Gem::Dependency
27
38
  name: rails
28
- requirement: &27409440 !ruby/object:Gem::Requirement
39
+ requirement: &21546540 !ruby/object:Gem::Requirement
29
40
  none: false
30
41
  requirements:
31
- - - ! '>='
42
+ - - ~>
32
43
  - !ruby/object:Gem::Version
33
44
  version: 3.1.0
34
45
  type: :development
35
46
  prerelease: false
36
- version_requirements: *27409440
47
+ version_requirements: *21546540
37
48
  - !ruby/object:Gem::Dependency
38
49
  name: rspec
39
- requirement: &27408960 !ruby/object:Gem::Requirement
50
+ requirement: &21560960 !ruby/object:Gem::Requirement
40
51
  none: false
41
52
  requirements:
42
53
  - - ! '>='
@@ -44,10 +55,10 @@ dependencies:
44
55
  version: '0'
45
56
  type: :development
46
57
  prerelease: false
47
- version_requirements: *27408960
58
+ version_requirements: *21560960
48
59
  - !ruby/object:Gem::Dependency
49
60
  name: rspec-rails
50
- requirement: &27408480 !ruby/object:Gem::Requirement
61
+ requirement: &21559180 !ruby/object:Gem::Requirement
51
62
  none: false
52
63
  requirements:
53
64
  - - ! '>='
@@ -55,10 +66,10 @@ dependencies:
55
66
  version: '0'
56
67
  type: :development
57
68
  prerelease: false
58
- version_requirements: *27408480
69
+ version_requirements: *21559180
59
70
  - !ruby/object:Gem::Dependency
60
71
  name: webrat
61
- requirement: &27404040 !ruby/object:Gem::Requirement
72
+ requirement: &21557180 !ruby/object:Gem::Requirement
62
73
  none: false
63
74
  requirements:
64
75
  - - ! '>='
@@ -66,10 +77,10 @@ dependencies:
66
77
  version: '0'
67
78
  type: :development
68
79
  prerelease: false
69
- version_requirements: *27404040
80
+ version_requirements: *21557180
70
81
  - !ruby/object:Gem::Dependency
71
82
  name: geokit
72
- requirement: &27403540 !ruby/object:Gem::Requirement
83
+ requirement: &21556340 !ruby/object:Gem::Requirement
73
84
  none: false
74
85
  requirements:
75
86
  - - ! '>='
@@ -77,10 +88,10 @@ dependencies:
77
88
  version: '0'
78
89
  type: :development
79
90
  prerelease: false
80
- version_requirements: *27403540
91
+ version_requirements: *21556340
81
92
  - !ruby/object:Gem::Dependency
82
93
  name: sqlite3-ruby
83
- requirement: &27402960 !ruby/object:Gem::Requirement
94
+ requirement: &21554780 !ruby/object:Gem::Requirement
84
95
  none: false
85
96
  requirements:
86
97
  - - ! '>='
@@ -88,10 +99,10 @@ dependencies:
88
99
  version: '0'
89
100
  type: :development
90
101
  prerelease: false
91
- version_requirements: *27402960
102
+ version_requirements: *21554780
92
103
  - !ruby/object:Gem::Dependency
93
104
  name: hpricot
94
- requirement: &27402440 !ruby/object:Gem::Requirement
105
+ requirement: &21569000 !ruby/object:Gem::Requirement
95
106
  none: false
96
107
  requirements:
97
108
  - - ! '>='
@@ -99,10 +110,10 @@ dependencies:
99
110
  version: '0'
100
111
  type: :development
101
112
  prerelease: false
102
- version_requirements: *27402440
113
+ version_requirements: *21569000
103
114
  - !ruby/object:Gem::Dependency
104
115
  name: rails
105
- requirement: &27401940 !ruby/object:Gem::Requirement
116
+ requirement: &21566580 !ruby/object:Gem::Requirement
106
117
  none: false
107
118
  requirements:
108
119
  - - ! '>='
@@ -110,10 +121,10 @@ dependencies:
110
121
  version: 3.1.0
111
122
  type: :development
112
123
  prerelease: false
113
- version_requirements: *27401940
124
+ version_requirements: *21566580
114
125
  - !ruby/object:Gem::Dependency
115
126
  name: jeweler
116
- requirement: &27401460 !ruby/object:Gem::Requirement
127
+ requirement: &21565660 !ruby/object:Gem::Requirement
117
128
  none: false
118
129
  requirements:
119
130
  - - ! '>='
@@ -121,10 +132,10 @@ dependencies:
121
132
  version: 1.5.1
122
133
  type: :development
123
134
  prerelease: false
124
- version_requirements: *27401460
135
+ version_requirements: *21565660
125
136
  - !ruby/object:Gem::Dependency
126
137
  name: rspec
127
- requirement: &27400940 !ruby/object:Gem::Requirement
138
+ requirement: &21564960 !ruby/object:Gem::Requirement
128
139
  none: false
129
140
  requirements:
130
141
  - - ! '>='
@@ -132,10 +143,10 @@ dependencies:
132
143
  version: 2.6.0
133
144
  type: :development
134
145
  prerelease: false
135
- version_requirements: *27400940
146
+ version_requirements: *21564960
136
147
  - !ruby/object:Gem::Dependency
137
148
  name: rspec-rails
138
- requirement: &27400460 !ruby/object:Gem::Requirement
149
+ requirement: &21564200 !ruby/object:Gem::Requirement
139
150
  none: false
140
151
  requirements:
141
152
  - - ! '>='
@@ -143,10 +154,10 @@ dependencies:
143
154
  version: 2.6.0
144
155
  type: :development
145
156
  prerelease: false
146
- version_requirements: *27400460
157
+ version_requirements: *21564200
147
158
  - !ruby/object:Gem::Dependency
148
159
  name: webrat
149
- requirement: &27399960 !ruby/object:Gem::Requirement
160
+ requirement: &21563460 !ruby/object:Gem::Requirement
150
161
  none: false
151
162
  requirements:
152
163
  - - ! '>='
@@ -154,10 +165,10 @@ dependencies:
154
165
  version: 0.7.2
155
166
  type: :development
156
167
  prerelease: false
157
- version_requirements: *27399960
168
+ version_requirements: *21563460
158
169
  - !ruby/object:Gem::Dependency
159
170
  name: geokit
160
- requirement: &27399460 !ruby/object:Gem::Requirement
171
+ requirement: &21562720 !ruby/object:Gem::Requirement
161
172
  none: false
162
173
  requirements:
163
174
  - - ! '>='
@@ -165,10 +176,10 @@ dependencies:
165
176
  version: 1.5.0
166
177
  type: :development
167
178
  prerelease: false
168
- version_requirements: *27399460
179
+ version_requirements: *21562720
169
180
  - !ruby/object:Gem::Dependency
170
181
  name: sqlite3-ruby
171
- requirement: &27398960 !ruby/object:Gem::Requirement
182
+ requirement: &21578260 !ruby/object:Gem::Requirement
172
183
  none: false
173
184
  requirements:
174
185
  - - ! '>='
@@ -176,10 +187,10 @@ dependencies:
176
187
  version: 1.3.2
177
188
  type: :development
178
189
  prerelease: false
179
- version_requirements: *27398960
190
+ version_requirements: *21578260
180
191
  - !ruby/object:Gem::Dependency
181
192
  name: hpricot
182
- requirement: &27398440 !ruby/object:Gem::Requirement
193
+ requirement: &21577620 !ruby/object:Gem::Requirement
183
194
  none: false
184
195
  requirements:
185
196
  - - ! '>='
@@ -187,10 +198,10 @@ dependencies:
187
198
  version: 0.8.3
188
199
  type: :development
189
200
  prerelease: false
190
- version_requirements: *27398440
201
+ version_requirements: *21577620
191
202
  - !ruby/object:Gem::Dependency
192
203
  name: git
193
- requirement: &27397940 !ruby/object:Gem::Requirement
204
+ requirement: &21576920 !ruby/object:Gem::Requirement
194
205
  none: false
195
206
  requirements:
196
207
  - - ! '>='
@@ -198,7 +209,7 @@ dependencies:
198
209
  version: 1.2.5
199
210
  type: :development
200
211
  prerelease: false
201
- version_requirements: *27397940
212
+ version_requirements: *21576920
202
213
  description: A Rails plugin for Japanese mobile-phones
203
214
  email: dara@shidara.net
204
215
  executables: []
@@ -441,7 +452,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
441
452
  version: '0'
442
453
  requirements: []
443
454
  rubyforge_project:
444
- rubygems_version: 1.8.6
455
+ rubygems_version: 1.8.15
445
456
  signing_key:
446
457
  specification_version: 3
447
458
  summary: A Rails plugin for Japanese mobile-phones