camo 0.1.0 → 0.2.1

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
- SHA1:
3
- metadata.gz: 6748e15c3864091c501178e7c4293463b9072e72
4
- data.tar.gz: 0aa6c60538f5f6901749262aa5aeb63f694f7dda
2
+ SHA256:
3
+ metadata.gz: 7f9d615b8d94009e7ec746874527a8a56529d2c27d7d24af586e01adf0a8cab0
4
+ data.tar.gz: ba444423761f620a91d0a86821310ce7377e5b46fd376f5dd7629989462b88cf
5
5
  SHA512:
6
- metadata.gz: 30d86c057d8d69ef6d61846ec461b0c8f99f30a68eb65d438fc7138b454101fc0ae623c21899913473a4bac6046ceb0e40c9ff1dc24687ae41a3f799fabf8fcd
7
- data.tar.gz: 0784c479193ec3c074eda3eff0755e7cb56efc5101e2b097c1c98cee984ea4d581db8027fc6ec954feb47878788452af2f8f43920f2c4049c252a4d4f9a0ef93
6
+ metadata.gz: 0440adf94048d1b3ec14c5b0b6f6546ac9adb0d97fd5e6b88458dc4a02c394f793931054f3c2a54e5b14f6b4c8c31194b973daae13a0fe4060378c9bf49ec443
7
+ data.tar.gz: e194661a571e4ca51871ebcd2229bb28dc26d982076f4eff07b565eba520d16d8cd1b1e83f65b588f6a65a4a76c3af8e99be0f41f2da36a3b888ed56e7ddf874
data/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
1
+ ## 0.2.1 (2022-10-09)
2
+
3
+ - Added `key` option to `camo` method
4
+
5
+ ## 0.2.0 (2022-09-05)
6
+
7
+ - Dropped support for Ruby < 2.7
8
+
9
+ ## 0.1.0 (2016-10-17)
10
+
11
+ - Improved performance
12
+ - Fixed deprecation warning
13
+
14
+ ## 0.0.2 (2013-11-25)
15
+
16
+ - Added support for Sinatra
17
+
18
+ ## 0.0.1 (2013-11-25)
19
+
20
+ - First release
data/LICENSE.txt CHANGED
@@ -1,4 +1,5 @@
1
- Copyright (c) 2013 Andrew Kane
1
+ Copyright (c) 2010 Corey Donohoe, Rick Olson
2
+ Copyright (c) 2013-2022 Andrew Kane
2
3
 
3
4
  MIT License
4
5
 
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # Camo
1
+ # Camo Ruby
2
2
 
3
- Ruby client for [Camo](https://github.com/atmos/camo) - the SSL image proxy :lock:
3
+ Ruby client for [Camo](https://github.com/atmos/camo) and [Go-Camo](https://github.com/cactus/go-camo) - the SSL image proxy :lock:
4
4
 
5
- ## Get Started
5
+ [![Build Status](https://github.com/ankane/camo-ruby/workflows/build/badge.svg?branch=master)](https://github.com/ankane/camo-ruby/actions)
6
6
 
7
- **Note:** If you have not set up the Camo server, start with [Deploying the Server](#deploying-the-server).
7
+ ## Installation
8
8
 
9
9
  Add this line to your application’s Gemfile:
10
10
 
@@ -12,6 +12,8 @@ Add this line to your application’s Gemfile:
12
12
  gem "camo"
13
13
  ```
14
14
 
15
+ ## Getting Started
16
+
15
17
  Add your Camo host and key to your environment or create an initializer `config/initializers/camo.rb`.
16
18
 
17
19
  ```ruby
@@ -22,47 +24,32 @@ ENV["CAMO_KEY"] = "rzsJbU5YxDfdP3FXHjshtgEN"
22
24
  You can now use the `camo` method in your views and controllers.
23
25
 
24
26
  ```erb
25
- <%= image_tag camo("http://placekitten.com/g/200/300") %>
26
- ```
27
-
28
- It’s that easy!
29
-
30
- ## Deploying the Server
31
-
32
- Clone the camo repository.
33
-
34
- ```sh
35
- git clone https://github.com/atmos/camo.git
36
- cd camo
37
- ```
38
-
39
- Create a new project on [Heroku](https://www.heroku.com/).
40
-
41
- ```sh
42
- heroku create camo
43
- ```
44
-
45
- Choose a [random secret key](https://www.random.org/passwords/?num=20&len=24&format=html&rnd=new) and add it to your app.
46
-
47
- ```sh
48
- heroku config:set CAMO_KEY=rzsJbU5YxDfdP3FXHjshtgEN
49
- ```
50
-
51
- Open your app to make sure it’s working. You should see the text “hwhat”.
52
-
53
- ```sh
54
- heroku open
27
+ <%= image_tag camo("https://placekitten.com/g/200/300") %>
55
28
  ```
56
29
 
57
30
  ## Credit
58
31
 
59
32
  Thanks to [Corey Donohoe](https://github.com/atmos) for creating Camo and providing most of the Ruby code for this gem.
60
33
 
34
+ ## History
35
+
36
+ View the [changelog](CHANGELOG.md)
37
+
61
38
  ## Contributing
62
39
 
63
40
  Everyone is encouraged to help improve this project. Here are a few ways you can help:
64
41
 
65
- - [Report bugs](https://github.com/ankane/camo/issues)
66
- - Fix bugs and [submit pull requests](https://github.com/ankane/camo/pulls)
42
+ - [Report bugs](https://github.com/ankane/camo-ruby/issues)
43
+ - Fix bugs and [submit pull requests](https://github.com/ankane/camo-ruby/pulls)
67
44
  - Write, clarify, or fix documentation
68
45
  - Suggest or add new features
46
+
47
+ To get started with development:
48
+
49
+ ```sh
50
+ git clone https://github.com/ankane/camo-ruby.git
51
+ cd camo-ruby
52
+ bundle install
53
+ go-camo -k 461fbf74af826c3a1020
54
+ bundle exec rake test
55
+ ```
@@ -0,0 +1,16 @@
1
+ module Camo
2
+ module Helper
3
+ def camo(image_url, key: nil)
4
+ key ||= Camo.key
5
+ host = Camo.host
6
+
7
+ raise "No CAMO_KEY" unless key
8
+ raise "No CAMO_HOST" unless host
9
+
10
+ # TODO support base64 encoding
11
+ hexdigest = OpenSSL::HMAC.hexdigest("sha1", key, image_url)
12
+ encoded_image_url = image_url.unpack1("H*")
13
+ "#{host}/#{hexdigest}/#{encoded_image_url}"
14
+ end
15
+ end
16
+ end
data/lib/camo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Camo
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/lib/camo.rb CHANGED
@@ -1,21 +1,37 @@
1
- require "camo/version"
1
+ # stdlib
2
2
  require "openssl"
3
3
 
4
+ # modules
5
+ require "camo/helper"
6
+ require "camo/version"
7
+
4
8
  module Camo
9
+ class << self
10
+ attr_writer :host, :key
11
+
12
+ def host
13
+ @host ||= ENV["CAMO_HOST"]
14
+ end
5
15
 
6
- def camo(image_url)
7
- hexdigest = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha1"), ENV["CAMO_KEY"], image_url)
8
- encoded_image_url = image_url.unpack('H*').first
9
- "#{ENV["CAMO_HOST"]}/#{hexdigest}/#{encoded_image_url}"
16
+ def key
17
+ @key ||= ENV["CAMO_KEY"]
18
+ end
10
19
  end
11
20
 
21
+ # TODO remove in 0.3.0
22
+ include Helper
12
23
  end
13
24
 
14
- if defined?(Rails)
15
- ActionView::Base.send :include, Camo
16
- ActionController::Base.send :include, Camo
25
+ if defined?(ActiveSupport)
26
+ ActiveSupport.on_load(:action_view) do
27
+ include Camo::Helper
28
+ end
29
+
30
+ ActiveSupport.on_load(:action_controller) do
31
+ include Camo::Helper
32
+ end
17
33
  end
18
34
 
19
35
  if defined?(Sinatra)
20
- Sinatra::Base.helpers Camo
36
+ Sinatra::Base.helpers Camo::Helper
21
37
  end
metadata CHANGED
@@ -1,79 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: camo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-17 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.3'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: minitest
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- description: Ruby client for Camo - the SSL image proxy
56
- email:
57
- - andrew@chartkick.com
11
+ date: 2022-10-10 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: andrew@ankane.org
58
15
  executables: []
59
16
  extensions: []
60
17
  extra_rdoc_files: []
61
18
  files:
62
- - ".gitignore"
63
- - Gemfile
19
+ - CHANGELOG.md
64
20
  - LICENSE.txt
65
21
  - README.md
66
- - Rakefile
67
- - camo.gemspec
68
22
  - lib/camo.rb
23
+ - lib/camo/helper.rb
69
24
  - lib/camo/version.rb
70
- - test/camo_test.rb
71
- - test/test_helper.rb
72
- homepage: https://github.com/ankane/camo
25
+ homepage: https://github.com/ankane/camo-ruby
73
26
  licenses:
74
27
  - MIT
75
28
  metadata: {}
76
- post_install_message:
29
+ post_install_message:
77
30
  rdoc_options: []
78
31
  require_paths:
79
32
  - lib
@@ -81,18 +34,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
34
  requirements:
82
35
  - - ">="
83
36
  - !ruby/object:Gem::Version
84
- version: '0'
37
+ version: '2.7'
85
38
  required_rubygems_version: !ruby/object:Gem::Requirement
86
39
  requirements:
87
40
  - - ">="
88
41
  - !ruby/object:Gem::Version
89
42
  version: '0'
90
43
  requirements: []
91
- rubyforge_project:
92
- rubygems_version: 2.5.1
93
- signing_key:
44
+ rubygems_version: 3.3.7
45
+ signing_key:
94
46
  specification_version: 4
95
47
  summary: Ruby client for Camo - the SSL image proxy
96
- test_files:
97
- - test/camo_test.rb
98
- - test/test_helper.rb
48
+ test_files: []
data/.gitignore DELETED
@@ -1,17 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in camo.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require 'rake/testtask'
3
-
4
- Rake::TestTask.new do |t|
5
- t.libs << "test"
6
- t.test_files = FileList['test/**/*_test.rb']
7
- t.verbose = true
8
- end
9
-
10
- task :default => :test
data/camo.gemspec DELETED
@@ -1,24 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'camo/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "camo"
8
- spec.version = Camo::VERSION
9
- spec.authors = ["Andrew Kane"]
10
- spec.email = ["andrew@chartkick.com"]
11
- spec.description = %q{Ruby client for Camo - the SSL image proxy}
12
- spec.summary = %q{Ruby client for Camo - the SSL image proxy}
13
- spec.homepage = "https://github.com/ankane/camo"
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files`.split($/)
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "minitest"
24
- end
data/test/camo_test.rb DELETED
@@ -1,8 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CamoTest < Minitest::Test
4
- def test_view_helper
5
- expected = 'http://camo.example.com/b82e650cfe20239b66f7165e54c3b9036d722aef/68747470733a2f2f7777772e6578616d706c652e636f6d2f706174682f746f2f696d6167652e706e67'
6
- assert_equal expected, TestContainer.camo('https://www.example.com/path/to/image.png')
7
- end
8
- end
data/test/test_helper.rb DELETED
@@ -1,10 +0,0 @@
1
- require 'bundler/setup'
2
- require 'camo'
3
- require 'minitest/autorun'
4
-
5
- ENV['CAMO_HOST'] ||= 'http://camo.example.com'
6
- ENV['CAMO_KEY'] ||= '461fbf74af826c3a1020'
7
-
8
- class TestContainer
9
- extend Camo
10
- end