image-resizer-rails 0.1.1 → 0.2.0

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