stilts 0.0.2 → 0.0.3

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.
@@ -18,21 +18,9 @@ module Stilts
18
18
  # +true+ for https connections, +false+ for http connections.
19
19
  attr_accessor :secure
20
20
 
21
- # A list of parameters that should be filtered out of what is sent to Hoptoad.
22
- # By default, all "password" attributes will have their contents replaced.
23
- attr_reader :params_filters
24
-
25
- # A list of filters for cleaning and pruning the backtrace. See #filter_backtrace.
26
- attr_reader :backtrace_filters
27
-
28
- # A list of filters for ignoring exceptions. See #ignore_by_filter.
29
- attr_reader :ignore_by_filters
30
-
31
21
  # The path to the project in which the error occurred, such as the RAILS_ROOT
32
22
  attr_accessor :project_root
33
23
 
34
- # The url of the notifier library being used to send notifications
35
- attr_accessor :notifier_url
36
24
 
37
25
  # The logger used by
38
26
  attr_accessor :logger
@@ -46,6 +34,7 @@ module Stilts
46
34
  @secure = false
47
35
  @host = 'localhost'
48
36
  @framework = 'Standalone'
37
+ @protocol = protocol
49
38
  end
50
39
 
51
40
  # Allows config options to be read like a hash
@@ -0,0 +1,63 @@
1
+ module Stilts
2
+
3
+ # Intermediate utility class for image manipulation
4
+ class Image
5
+
6
+ SLUG_ABBREVIATIONS = {
7
+ :device_width_ratio => "dwr"
8
+ }
9
+
10
+ TRANSFORM_OPTIONS = [
11
+ "device_width_ratio"
12
+ ]
13
+
14
+ # The public location of the image
15
+ attr_accessor :url, :device_width_ratio
16
+
17
+ # :nodoc:
18
+ def initialize(args)
19
+ self.url = args[:url]
20
+ self.device_width_ratio = args[:device_width_ratio] || 1
21
+ end
22
+
23
+ # Generates a SHA1 represenation for a particular URL
24
+ def url_id
25
+ Digest::SHA1.hexdigest(self.url)
26
+ end
27
+
28
+ # Combines resizing parameters into a short, unique slug to be appended to the final image name
29
+ def params_slug
30
+ TRANSFORM_OPTIONS.map do |option|
31
+ param_slug(option)
32
+ end.join("")
33
+ end
34
+
35
+ # The full image name, a combination of +url_id+ and +params_slug+
36
+ def name
37
+ url_id + "_" + params_slug
38
+ end
39
+
40
+ # Location on server that will server this image
41
+ def transformed_url
42
+ Stilts.configuration.protocol + "://" +
43
+ Stilts.configuration.host +
44
+ "/transform/" +
45
+ Stilts.configuration.api_key +
46
+ "/" + self.name
47
+ end
48
+
49
+ # A hash representation of the image attributes
50
+ def to_hash
51
+ {
52
+ :url => self.url,
53
+ :name => self.name,
54
+ }
55
+ end
56
+
57
+ private
58
+ def param_slug(param_name)
59
+ SLUG_ABBREVIATIONS[param_name.to_sym] + self.send(param_name).to_s
60
+ end
61
+
62
+ end
63
+ end
@@ -1,23 +1,19 @@
1
1
  module Stilts
2
2
  module Helpers
3
+ include ActionView::Helpers
3
4
 
4
- def resize(image_source)
5
- b = Benchmark.measure do
6
- @response = Stilts.sender.send_to_resizer({:image_source => image_source}.to_json.to_s)
7
- end
8
- logger.debug { "RESIZER BENCHMARK :: #{b}" }
9
-
10
- image_url = url
11
- image_url.path = ""
12
- image_tag("#{image_url}#{@response['image_url']}")
5
+ def transform(image)
6
+ image = Stilts::Image.new(image)
7
+ # @response = Stilts.sender.send_to_resizer({:image_source => image_source}.to_json.to_s)
8
+ image_tag(image.transformed_url)
13
9
  end
14
10
 
15
11
  def stream_resize(image_source)
16
12
  b = Benchmark.measure do
17
- @params = Addressable::URI.parse(url.to_s)
13
+ @params = Addressable::URI.parse(url.to_s) # TODO get URI.parse out of Addressable to remove the dependency
18
14
  @params.query_values = {:image_source => image_source, :stream => "1"}
19
15
  end
20
- logger.debug { "STREAM BENCHMARK :: #{b}" }
16
+ # logger.debug { "STREAM BENCHMARK :: #{b}" }
21
17
 
22
18
  stream_url = url
23
19
  stream_url.path = "/resize"
@@ -0,0 +1,17 @@
1
+ module Stilts
2
+ module Hooks
3
+
4
+ def self.included(base)
5
+ base.before_filter :clear_resize_batch
6
+ base.after_filter :resize_batch
7
+ end
8
+
9
+ def clear_resize_batch
10
+ @resize_batch = []
11
+ end
12
+ def resize_batch
13
+ @resize_batch
14
+ end
15
+
16
+ end
17
+ end
@@ -15,11 +15,19 @@ module Stilts
15
15
  config.framework = "Rails: #{::Rails::VERSION::STRING}"
16
16
  end
17
17
 
18
- if defined?(ActionView::Base)
19
-
18
+ config.to_prepare do
19
+ require 'stilts/rails/hooks'
20
+ ActiveSupport.on_load(:action_controller) do
21
+ include Stilts::Hooks
22
+ end
23
+ end
24
+
25
+
26
+ if defined?(ActionView::Base)
27
+
20
28
  require 'stilts/rails/helpers'
21
29
  ActionView::Base.send :include, Stilts::Helpers
22
-
30
+
23
31
  end
24
32
  end
25
33
  end
@@ -0,0 +1,9 @@
1
+ module Stilts
2
+ class Receiver
3
+
4
+ def logger
5
+ Stilts.configuration.logger
6
+ end
7
+
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module Stilts
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/stilts.rb CHANGED
@@ -11,9 +11,8 @@ module Stilts
11
11
  require 'stilts/configuration'
12
12
  require 'stilts/sender'
13
13
  require 'stilts/rack'
14
- require 'stilts/railtie.rb' if defined?(Rails)
15
-
16
-
14
+ require 'stilts/image'
15
+ require 'stilts/railtie' if defined?(Rails)
17
16
 
18
17
  LOG_PREFIX = "[Stilts] "
19
18
 
@@ -0,0 +1,15 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/stilts/rails/helpers')
3
+
4
+ describe Stilts::Configuration do
5
+
6
+ it "should bla" do
7
+ pending
8
+ end
9
+
10
+ def assert_config_default(option, default_value, config = nil)
11
+ config ||= Stilts::Configuration.new
12
+ assert_equal default_value, config.send(option)
13
+ end
14
+
15
+ end
@@ -0,0 +1,21 @@
1
+ require "rails"
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/stilts/rails/helpers')
4
+ include Stilts::Helpers
5
+
6
+ describe Stilts::Helpers do
7
+
8
+ before(:each) do
9
+ @image = test_images[rand(3)]
10
+ end
11
+
12
+ describe "#transform" do
13
+ it "should respond with some image tag HTML" do
14
+
15
+ transform(@image).should =~ /^\<img/
16
+
17
+
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,19 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/stilts/rails/hooks')
3
+
4
+ describe Stilts::Hooks do
5
+ it "should gather up all the images on a page for resizing" do
6
+ pending "This should really be an integration test"
7
+ end
8
+ it "should check local cache to see if any of the images have already been processed" do
9
+ pending
10
+ end
11
+ it "should send a hash of unprocessed images to Stilts" do
12
+ pending
13
+ end
14
+ it "should skip sending of already processed images to Stilts" do
15
+ pending
16
+ # cache fake result, try to resend image
17
+ end
18
+
19
+ end
@@ -0,0 +1,55 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/stilts/image')
3
+
4
+ describe Stilts::Image do
5
+
6
+ before(:each) do
7
+ @image = Stilts::Image.new(test_images[rand(3)])
8
+ end
9
+
10
+ it "should have some default values assigned" do
11
+ assert_default_value :device_width_ratio, 1
12
+ end
13
+
14
+ describe "#url_id" do
15
+ it "should generate a unique id for an image based on it's URL" do
16
+ id = @image.url_id
17
+ id.should be_a_kind_of(String)
18
+ id.length.should be 40
19
+ end
20
+ end
21
+
22
+ describe "#params_slug" do
23
+ it "should respond with a string representation of the transform parameters " do
24
+ @image.params_slug.should be_a_kind_of(String)
25
+ end
26
+ end
27
+
28
+ describe "#name" do
29
+ it "should respond with the url_id and abbreviated transform params" do
30
+ @image.name.should =~ /^[\w\d]{40}_[\w\d]+$/
31
+ end
32
+ end
33
+
34
+ describe "#transformed_url" do
35
+ it "should respond with the full url of a post-transform image" do
36
+ @image.transformed_url.should =~ /^http:\/\//
37
+ end
38
+ end
39
+
40
+ describe "#to_hash" do
41
+ it "should respond to to_hash" do
42
+ @image.to_hash.should be_a_kind_of(Hash)
43
+ end
44
+ it "should have some specific keys" do
45
+ hash = @image.to_hash
46
+ hash[:url].should_not be nil
47
+ hash[:name].should_not be nil
48
+ end
49
+ end
50
+
51
+ def assert_default_value(option, default_value)
52
+ default_value.should be @image.send(option)
53
+ end
54
+
55
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/stilts/receiver')
3
+
4
+ describe Stilts::Receiver do
5
+
6
+ it "should log the round-trip time" do
7
+ pending
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/stilts')
2
+ require "rails/all"
3
+
4
+ RSpec.configure do |config|
5
+ # == Mock Framework
6
+ config.mock_with :rspec
7
+ end
8
+
9
+
10
+ def test_images
11
+ [
12
+ { :url => "http://www.crazy-frog.us/donthotlink-crazy-frog-1024x768-1.jpg" },
13
+ { :url => "https://totalfright.websitesource.net/mm5/pics/32901.jpg" },
14
+ { :url => "http://iamthatmommy.files.wordpress.com/2010/04/unicorn1.jpg"}
15
+ ]
16
+ end
17
+
18
+ Stilts.configure do |c|
19
+ c.api_key = "1234123412341234"
20
+ end
@@ -0,0 +1,12 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/stilts')
3
+
4
+ describe Stilts do
5
+
6
+ describe "#configure" do
7
+ it "should have with an API key or raise an error" do
8
+ pending
9
+ end
10
+ end
11
+
12
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Graham Powrie
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-17 00:00:00 -08:00
17
+ date: 2011-01-19 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -48,12 +48,22 @@ files:
48
48
  - Rakefile
49
49
  - lib/stilts.rb
50
50
  - lib/stilts/configuration.rb
51
+ - lib/stilts/image.rb
51
52
  - lib/stilts/rack.rb
52
53
  - lib/stilts/rails/.DS_Store
53
54
  - lib/stilts/rails/helpers.rb
55
+ - lib/stilts/rails/hooks.rb
54
56
  - lib/stilts/railtie.rb
57
+ - lib/stilts/receiver.rb
55
58
  - lib/stilts/sender.rb
56
59
  - lib/stilts/version.rb
60
+ - spec/configuration_spec.rb
61
+ - spec/helpers_spec.rb
62
+ - spec/hooks_spec.rb
63
+ - spec/image_spec.rb
64
+ - spec/receiver_spec.rb
65
+ - spec/spec_helper.rb
66
+ - spec/stilts_spec.rb
57
67
  - stilts.gemspec
58
68
  has_rdoc: true
59
69
  homepage: ""
@@ -87,5 +97,11 @@ rubygems_version: 1.3.7
87
97
  signing_key:
88
98
  specification_version: 3
89
99
  summary: On-the-fly image resizing and management for mobile devices
90
- test_files: []
91
-
100
+ test_files:
101
+ - spec/configuration_spec.rb
102
+ - spec/helpers_spec.rb
103
+ - spec/hooks_spec.rb
104
+ - spec/image_spec.rb
105
+ - spec/receiver_spec.rb
106
+ - spec/spec_helper.rb
107
+ - spec/stilts_spec.rb