image-resizer-rails 0.1.1 → 0.2.0

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: 68d7c6328e28bae30b9189bfd0a5c60366bc77e7
4
- data.tar.gz: 07ff7f37be822656665e9502804929b7c33274c8
3
+ metadata.gz: acc2c0bea99f9a078dafeef5d1e11c6f550a5a3f
4
+ data.tar.gz: b7f9b743d92715f8e0986d46641a1c928b9247e0
5
5
  SHA512:
6
- metadata.gz: 6eb105bc11181e040c7a433429f07659da1e0a5aaf18f66a4c73dfd20cff1fff9e3ca4ac80798d578deb55e086ac6d6374b2d3e907d2a60e7e7688fa1e36beb0
7
- data.tar.gz: 0c69082b4e8cbe195b48dd4c276a42114c7e0281717df0286238fd84cff59eeb5fdf9ce67d56ea2759da0ca74b7144e35a050ed420fc6864298c04e5f970434e
6
+ metadata.gz: 8132850457c9943e4420d9f34a70563bd7cc9517c00ce8e61f0bf58b8ed3f80817942cc93079829e92c26ffbd5b3796d4cb80a1548f31615ba33fe734b0eef3c
7
+ data.tar.gz: f0c74218e8402ae6e2be6e38032746ab152957c71d466861d8556afaafd0b4b9d7643dca516a34b08a9d3d28992ec08924b00fcadfc93cb46293e9f98b3d9d91
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Image::Resizer::Rails
1
+ # IrHelper
2
2
 
3
3
  This gem includes helpers to build the appropriate URLs for images served via an [image-resizer](https://github.com/jimmynicol/image-resizer) instance.
4
4
 
@@ -19,7 +19,7 @@ Or install it yourself as:
19
19
  ## Configuration
20
20
  Configuring this gem is done via:
21
21
 
22
- Image::Resizer::Rails.configure do |config|
22
+ IrHelper.configure do |config|
23
23
  # add your configuration here...
24
24
  end
25
25
 
@@ -83,13 +83,13 @@ Or just return the url as needed
83
83
 
84
84
  The Javascript helper is generated from the config data as an `.erb` file on load. So all of the new modifiers or sources added will be reflected, as well as any aliases set.
85
85
 
86
- The JS helper (`image_resizer.js`) is either attached as a global, or can be loaded via AMD or CommonJS if you are using those techniques. It has the same helper methods as the ruby helper.
86
+ The JS helper (`image_resizer.js`) is either attached as a global, or can be loaded via AMD or CommonJS if you are using those techniques. It has the same helper methods as the ruby helper.
87
87
 
88
88
  <script>
89
89
  var imgUrl = 'https://s3.amazonaws.com/sample.bucket/path/to/image.jpg';
90
- $('#image-tag').append(ImageResizer.irImageTag(imgUrl, {s:200}));
91
- $('#image-bg').attr('style', ImageResizer.irBackground(imgUrl, {s:200}));
92
- $('#image-url').text(ImageResizer.irImageTag(imgUrl, {s:200}));
90
+ $('#image-tag').append(IR.irImageTag(imgUrl, {s:200}));
91
+ $('#image-bg').attr('style', IR.irBackground(imgUrl, {s:200}));
92
+ $('#image-url').text(IR.irImageTag(imgUrl, {s:200}));
93
93
  </script>
94
94
  <div id="image-tag"></div>
95
95
  <div id="image-bg"></div>
@@ -18,7 +18,7 @@ Javascript helper for building `image-resizer` url endpoints
18
18
 
19
19
  // Finally, as a browser global.
20
20
  } else {
21
- root.<%= Image::Resizer::Rails.js_class %> = factory(root);
21
+ root.<%= IrHelper.js_class %> = factory(root);
22
22
  }
23
23
 
24
24
  }(this, function(root){
@@ -180,21 +180,21 @@ Javascript helper for building `image-resizer` url endpoints
180
180
  };
181
181
 
182
182
  // Public constants
183
- IR.modifiers = <%= Image::Resizer::Rails.modifiers.to_json %>;
183
+ IR.modifiers = <%= IrHelper.modifiers.to_json %>;
184
184
 
185
- IR.CDN = <%= Image::Resizer::Rails.cdn.to_json %>;
185
+ IR.CDN = <%= IrHelper.cdn.to_json %>;
186
186
 
187
- IR.VERSION = <%= Image::Resizer::Rails::VERSION.to_json %>;
187
+ IR.VERSION = <%= IrHelper::VERSION.to_json %>;
188
188
 
189
189
  // Alias any methods that have been listed in the config
190
- <% unless Image::Resizer::Rails.js_image_tag.nil? %>
191
- IR.<%= Image::Resizer::Rails.js_image_tag %> = IR.irImageTag;
190
+ <% unless IrHelper.js_image_tag.nil? %>
191
+ IR.<%= IrHelper.js_image_tag %> = IR.irImageTag;
192
192
  <% end %>
193
- <% unless Image::Resizer::Rails.js_background.nil? %>
194
- IR.<%= Image::Resizer::Rails.js_background %> = IR.irBackground;
193
+ <% unless IrHelper.js_background.nil? %>
194
+ IR.<%= IrHelper.js_background %> = IR.irBackground;
195
195
  <% end %>
196
- <% unless Image::Resizer::Rails.js_url.nil? %>
197
- IR.<%= Image::Resizer::Rails.js_url %> = IR.irUrl;
196
+ <% unless IrHelper.js_url.nil? %>
197
+ IR.<%= IrHelper.js_url %> = IR.irUrl;
198
198
  <% end %>
199
199
 
200
200
  return IR;
@@ -0,0 +1,12 @@
1
+ require 'ir_helper/helper'
2
+
3
+ module IrHelper
4
+ # Series of view helpers building url strings for image-resizer endpoints
5
+ module IrHelper
6
+ def self.included(base)
7
+ base.class_eval do
8
+ include ::IrHelper::Helper
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,92 @@
1
+ require 'ir_helper/version'
2
+ require 'ir_helper/helper'
3
+ require 'ir_helper/engine' if defined?(Rails)
4
+
5
+ module IrHelper
6
+
7
+ class << self
8
+ attr_accessor :cdn
9
+ attr_reader :js_class, :js_image_tag, :js_background, :js_url
10
+
11
+ def configure(&block)
12
+ yield self
13
+ end
14
+
15
+ def reset_config
16
+ @cdn = nil
17
+ @ir_image_tag = nil
18
+ @ir_background = nil
19
+ @ir_url = nil
20
+ @js_class = 'ImageResizer'
21
+ @js_image_tag = nil
22
+ @js_background = nil
23
+ @js_url = nil
24
+ @modifiers = default_modifiers
25
+ end
26
+
27
+ def modifiers
28
+ @modifiers ||= default_modifiers
29
+ end
30
+
31
+ def add_modifier(key, img_tag = '', values = [])
32
+ @modifiers[key.to_sym] = { alias: img_tag, values: values }
33
+ end
34
+
35
+ def add_source(name, option)
36
+ @modifiers[:e][:values][name.to_sym] = option.to_sym
37
+ end
38
+
39
+ def js_class
40
+ @js_class ||= 'IR'
41
+ end
42
+
43
+ def add_alias(type, name)
44
+ Helper.class_eval do |base|
45
+ base.send(:alias_method, name.to_sym, type.to_sym)
46
+ end
47
+ end
48
+
49
+ def add_js_alias(type, name)
50
+ instance_variable_set "@#{type.to_s}", name
51
+ end
52
+
53
+ def to_hash
54
+ {
55
+ cdn: cdn,
56
+ ir_image_tag: ir_image_tag,
57
+ ir_background: ir_background,
58
+ ir_url: ir_url,
59
+ js_class: js_class,
60
+ js_image_tag: js_image_tag,
61
+ js_background: js_background,
62
+ js_url: js_url,
63
+ modifiers: modifiers
64
+ }
65
+ end
66
+
67
+ private
68
+
69
+ def default_modifiers
70
+ {
71
+ w: { alias: :width }, h: { alias: :height },
72
+ s: { alias: :square },
73
+ c: { alias: :crop, values: %w(fit fill cut scale) },
74
+ g: { alias: :gravity, values: %w(c n s e w ne nw se sw) },
75
+ y: { alias: :top }, x: { alias: :left },
76
+ e: { alias: :external, values: default_sources },
77
+ f: { alias: :filter }
78
+ }
79
+ end
80
+
81
+ def default_sources
82
+ {
83
+ facebook: :fb_uid,
84
+ twitter: :tw_uid,
85
+ youtube: :youtube_id,
86
+ vimeo: :vimeo_id
87
+ }
88
+ end
89
+
90
+ end
91
+
92
+ end
@@ -0,0 +1,7 @@
1
+ module IrHelper
2
+ class Engine < ::Rails::Engine
3
+ # initializer 'image-resizer-rails.assets.precompile' do |app|
4
+ # app.config.assets.precompile << 'image_resizer'
5
+ # end
6
+ end
7
+ end
@@ -0,0 +1,149 @@
1
+ require 'uri'
2
+
3
+ module IrHelper
4
+ # Series of view helpers building url strings for image-resizer endpoints
5
+ module Helper
6
+ def ir_image_tag(*args)
7
+ src = generate_ir_endpoint(args)
8
+ return nil if src.nil?
9
+ if respond_to?(:image_tag)
10
+ image_tag src
11
+ else
12
+ "<img src='#{src}' />"
13
+ end
14
+ end
15
+
16
+ def ir_background(*args)
17
+ url = generate_ir_endpoint(args)
18
+ url ? "background-image:url(#{url})" : nil
19
+ end
20
+
21
+ def ir_url(*args)
22
+ generate_ir_endpoint(args)
23
+ end
24
+
25
+ private
26
+
27
+ def parse_arguments(args)
28
+ if args[0].is_a?(String) || args[0].nil?
29
+ [args[0], args[1..-1]]
30
+ else
31
+ [nil, args]
32
+ end
33
+ end
34
+
35
+ def cdn
36
+ ::IrHelper.cdn
37
+ end
38
+
39
+ def self.img_tag_name
40
+ ::IrHelper.image_tag_name
41
+ end
42
+
43
+ def mods
44
+ ::IrHelper.modifiers
45
+ end
46
+
47
+ def mod_set(key)
48
+ mods.each do |k, v|
49
+ return v if key == k || v[:alias] == key
50
+ end
51
+ nil
52
+ end
53
+
54
+ def sources
55
+ mods[:e][:values]
56
+ end
57
+
58
+ def source_option(key)
59
+ sources.each do |k, v|
60
+ return [k, v] if key == v
61
+ end
62
+ nil
63
+ end
64
+
65
+ def generate_ir_endpoint(args)
66
+ fail NoCDNException if cdn.nil?
67
+
68
+ source, modifiers = parse_arguments(args)
69
+ uri = source ? URI(source) : nil
70
+ modifier_str = mod_str(uri, modifiers)
71
+ path = build_path(uri, modifiers)
72
+
73
+ if path
74
+ "#{cdn.gsub(/\/$/, '')}#{modifier_str}#{path}"
75
+ else
76
+ nil
77
+ end
78
+ end
79
+
80
+ def mod_str(uri, modifiers)
81
+ mod_arr = []
82
+ unless modifiers.nil? || modifiers[0].nil?
83
+ mod_arr = build_mod_arr(modifiers)
84
+ end
85
+ mod_arr << 'efacebook' if uri && url_domain(uri.host) == :facebook
86
+ mod_arr.compact
87
+ mod_arr.length > 0 ? "/#{mod_arr.join('-')}" : ''
88
+ end
89
+
90
+ def build_mod_arr(modifiers)
91
+ modifiers[0].map do |k, v|
92
+ mset = mod_set(k)
93
+ src = source_option(k)
94
+ if mset
95
+ if mset.include? :values
96
+ mset[:values].include?(v) ? "#{k}#{v}" : nil
97
+ else
98
+ "#{k}#{v}"
99
+ end
100
+ elsif src
101
+ "e#{src.first}"
102
+ else
103
+ nil
104
+ end
105
+ end
106
+ end
107
+
108
+ def build_path(uri, modifiers)
109
+ if uri
110
+ case url_domain(uri.host)
111
+ when :s3
112
+ s3_object uri
113
+ when :facebook
114
+ "/#{fb_uid(uri)}.jpg"
115
+ else
116
+ end
117
+ else
118
+ modifiers[0].each do |k, v|
119
+ return "/#{v}.jpg" if source_option(k)
120
+ end
121
+ nil
122
+ end
123
+ end
124
+
125
+ def url_domain(host)
126
+ return :s3 if /s3.amazonaws.com/i =~ host
127
+ return :facebook if /facebook.com/i =~ host
128
+ :other
129
+ end
130
+
131
+ def s3_object(uri)
132
+ # test to see which type of s3 url we have
133
+ if uri.host == 's3.amazonaws.com'
134
+ # this version has the bucket at the first part of the path
135
+ "/#{uri.path.split('/')[2..-1].join('/')}"
136
+ else
137
+ # this version has the bucket included in the host
138
+ uri.path
139
+ end
140
+ end
141
+
142
+ def fb_uid(uri)
143
+ uri.path.split('/')[1]
144
+ end
145
+ end
146
+
147
+ class NoCDNException < Exception; end
148
+ class NotS3SourceException < Exception; end
149
+ end
@@ -0,0 +1,3 @@
1
+ module IrHelper
2
+ VERSION = '0.2.0'
3
+ end
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image-resizer-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Nicol
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-01 00:00:00.000000000 Z
11
+ date: 2014-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: jasmine
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: awesome_print
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  description: Helpers for use with image-resizer service
@@ -115,14 +115,14 @@ executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
- - app/assets/javascripts/image_resizer.js.erb
119
- - app/helpers/image/resizer/rails/ir_helper.rb
120
- - lib/image/resizer/rails/engine.rb
121
- - lib/image/resizer/rails/helper.rb
122
- - lib/image/resizer/rails/version.rb
123
- - lib/image/resizer/rails.rb
124
118
  - LICENSE.txt
125
119
  - README.md
120
+ - app/assets/javascripts/image_resizer.js.erb
121
+ - app/helpers/ir_helper/ir_helper.rb
122
+ - lib/ir_helper.rb
123
+ - lib/ir_helper/engine.rb
124
+ - lib/ir_helper/helper.rb
125
+ - lib/ir_helper/version.rb
126
126
  homepage: https://github.com/jimmynicol/image-resizer-rails
127
127
  licenses:
128
128
  - MIT
@@ -133,17 +133,17 @@ require_paths:
133
133
  - lib
134
134
  required_ruby_version: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  requirements:
141
- - - '>='
141
+ - - ">="
142
142
  - !ruby/object:Gem::Version
143
143
  version: '0'
144
144
  requirements: []
145
145
  rubyforge_project:
146
- rubygems_version: 2.0.3
146
+ rubygems_version: 2.2.2
147
147
  signing_key:
148
148
  specification_version: 4
149
149
  summary: View helpers and JS file
@@ -1,16 +0,0 @@
1
- require 'image/resizer/rails/helper'
2
-
3
- module Image
4
- module Resizer
5
- module Rails
6
- # Series of view helpers building url strings for image-resizer endpoints
7
- module IrHelper
8
- def self.included(base)
9
- base.class_eval do
10
- include ::Image::Resizer::Rails::Helper
11
- end
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,94 +0,0 @@
1
- require 'image/resizer/rails/version'
2
- require 'image/resizer/rails/helper'
3
- require 'image/resizer/rails/engine' if defined?(Rails)
4
-
5
- module Image
6
- module Resizer
7
- # Top-level module for the image-resizer code
8
- module Rails
9
- class << self
10
- attr_accessor :cdn
11
- attr_reader :js_class, :js_image_tag, :js_background, :js_url
12
-
13
- def configure(&block)
14
- yield self
15
- end
16
-
17
- def reset_config
18
- @cdn = nil
19
- @ir_image_tag = nil
20
- @ir_background = nil
21
- @ir_url = nil
22
- @js_class = 'ImageResizer'
23
- @js_image_tag = nil
24
- @js_background = nil
25
- @js_url = nil
26
- @modifiers = default_modifiers
27
- end
28
-
29
- def modifiers
30
- @modifiers ||= default_modifiers
31
- end
32
-
33
- def add_modifier(key, img_tag = '', values = [])
34
- @modifiers[key.to_sym] = { alias: img_tag, values: values }
35
- end
36
-
37
- def add_source(name, option)
38
- @modifiers[:e][:values][name.to_sym] = option.to_sym
39
- end
40
-
41
- def js_class
42
- @js_class ||= 'ImageResizer'
43
- end
44
-
45
- def add_alias(type, name)
46
- Helper.class_eval do |base|
47
- base.send(:alias_method, name.to_sym, type.to_sym)
48
- end
49
- end
50
-
51
- def add_js_alias(type, name)
52
- instance_variable_set "@#{type.to_s}", name
53
- end
54
-
55
- def to_hash
56
- {
57
- cdn: cdn,
58
- ir_image_tag: ir_image_tag,
59
- ir_background: ir_background,
60
- ir_url: ir_url,
61
- js_class: js_class,
62
- js_image_tag: js_image_tag,
63
- js_background: js_background,
64
- js_url: js_url,
65
- modifiers: modifiers
66
- }
67
- end
68
-
69
- private
70
-
71
- def default_modifiers
72
- {
73
- w: { alias: :width }, h: { alias: :height },
74
- s: { alias: :square },
75
- c: { alias: :crop, values: %w(fit fill cut scale) },
76
- g: { alias: :gravity, values: %w(c n s e w ne nw se sw) },
77
- y: { alias: :top }, x: { alias: :left },
78
- e: { alias: :external, values: default_sources },
79
- f: { alias: :filter }
80
- }
81
- end
82
-
83
- def default_sources
84
- {
85
- facebook: :fb_uid,
86
- twitter: :tw_uid,
87
- youtube: :youtube_id,
88
- vimeo: :vimeo_id
89
- }
90
- end
91
- end
92
- end
93
- end
94
- end
@@ -1,11 +0,0 @@
1
- module Image
2
- module Resizer
3
- module Rails
4
- class Engine < ::Rails::Engine
5
- # initializer 'image-resizer-rails.assets.precompile' do |app|
6
- # app.config.assets.precompile << 'image_resizer'
7
- # end
8
- end
9
- end
10
- end
11
- end
@@ -1,153 +0,0 @@
1
- require 'uri'
2
-
3
- module Image
4
- module Resizer
5
- module Rails
6
- # Series of view helpers building url strings for image-resizer endpoints
7
- module Helper
8
- def ir_image_tag(*args)
9
- src = generate_ir_endpoint(args)
10
- return nil if src.nil?
11
- if respond_to?(:image_tag)
12
- image_tag src
13
- else
14
- "<img src='#{src}' />"
15
- end
16
- end
17
-
18
- def ir_background(*args)
19
- url = generate_ir_endpoint(args)
20
- url ? "background-image:url(#{url})" : nil
21
- end
22
-
23
- def ir_url(*args)
24
- generate_ir_endpoint(args)
25
- end
26
-
27
- private
28
-
29
- def parse_arguments(args)
30
- if args[0].is_a?(String) || args[0].nil?
31
- [args[0], args[1..-1]]
32
- else
33
- [nil, args]
34
- end
35
- end
36
-
37
- def cdn
38
- ::Image::Resizer::Rails.cdn
39
- end
40
-
41
- def self.img_tag_name
42
- ::Image::Resizer::Rails.image_tag_name
43
- end
44
-
45
- def mods
46
- ::Image::Resizer::Rails.modifiers
47
- end
48
-
49
- def mod_set(key)
50
- mods.each do |k, v|
51
- return v if key == k || v[:alias] == key
52
- end
53
- nil
54
- end
55
-
56
- def sources
57
- mods[:e][:values]
58
- end
59
-
60
- def source_option(key)
61
- sources.each do |k, v|
62
- return [k, v] if key == v
63
- end
64
- nil
65
- end
66
-
67
- def generate_ir_endpoint(args)
68
- fail NoCDNException if cdn.nil?
69
-
70
- source, modifiers = parse_arguments(args)
71
- uri = source ? URI(source) : nil
72
- modifier_str = mod_str(uri, modifiers)
73
- path = build_path(uri, modifiers)
74
-
75
- if path
76
- "#{cdn.gsub(/\/$/, '')}#{modifier_str}#{path}"
77
- else
78
- nil
79
- end
80
- end
81
-
82
- def mod_str(uri, modifiers)
83
- mod_arr = []
84
- unless modifiers.nil? || modifiers[0].nil?
85
- mod_arr = build_mod_arr(modifiers)
86
- end
87
- mod_arr << 'efacebook' if uri && url_domain(uri.host) == :facebook
88
- mod_arr.compact
89
- mod_arr.length > 0 ? "/#{mod_arr.join('-')}" : ''
90
- end
91
-
92
- def build_mod_arr(modifiers)
93
- modifiers[0].map do |k, v|
94
- mset = mod_set(k)
95
- src = source_option(k)
96
- if mset
97
- if mset.include? :values
98
- mset[:values].include?(v) ? "#{k}#{v}" : nil
99
- else
100
- "#{k}#{v}"
101
- end
102
- elsif src
103
- "e#{src.first}"
104
- else
105
- nil
106
- end
107
- end
108
- end
109
-
110
- def build_path(uri, modifiers)
111
- if uri
112
- case url_domain(uri.host)
113
- when :s3
114
- s3_object uri
115
- when :facebook
116
- "/#{fb_uid(uri)}.jpg"
117
- else
118
- end
119
- else
120
- modifiers[0].each do |k, v|
121
- return "/#{v}.jpg" if source_option(k)
122
- end
123
- nil
124
- end
125
- end
126
-
127
- def url_domain(host)
128
- return :s3 if /s3.amazonaws.com/i =~ host
129
- return :facebook if /facebook.com/i =~ host
130
- :other
131
- end
132
-
133
- def s3_object(uri)
134
- # test to see which type of s3 url we have
135
- if uri.host == 's3.amazonaws.com'
136
- # this version has the bucket at the first part of the path
137
- "/#{uri.path.split('/')[2..-1].join('/')}"
138
- else
139
- # this version has the bucket included in the host
140
- uri.path
141
- end
142
- end
143
-
144
- def fb_uid(uri)
145
- uri.path.split('/')[1]
146
- end
147
- end
148
-
149
- class NoCDNException < Exception; end
150
- class NotS3SourceException < Exception; end
151
- end
152
- end
153
- end
@@ -1,8 +0,0 @@
1
- module Image
2
- module Resizer
3
- # Set the version for the gem
4
- module Rails
5
- VERSION = '0.1.1'
6
- end
7
- end
8
- end