fakeimage 0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 251864b3a5211070db2db39486fc17a134e0c4219eede44d72a46b81f580ee94
4
+ data.tar.gz: ccd269b1f1df9e655ba34a312ba470bc7891d6a9750f7fcd175fc9defc81b9fd
5
+ SHA512:
6
+ metadata.gz: b27856e9ec5ceb835eda8dcfb02a7720f9fab4eadf4064006fe1e92542758687e8c13e76d23ea6f4796122097ad8b609661b439abead02a6e9b46e803153a8be
7
+ data.tar.gz: 2f772913b38f46d3a9591f22e7babfdc2ec8baaa5deb98416a8cf1ebcf0a70705ee00349a9329585750147c75b856c2ebfc8f66e2e3edb80c45fe1bf22db9ca6
data/.rubocop.yml ADDED
@@ -0,0 +1,30 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+
5
+ AllCops:
6
+ NewCops: enable
7
+
8
+ Layout/LineLength:
9
+ Max: 120
10
+
11
+ Metrics/AbcSize:
12
+ Enabled: false
13
+
14
+ Metrics/BlockLength:
15
+ Enabled: false
16
+
17
+ Metrics/ClassLength:
18
+ Enabled: false
19
+
20
+ Metrics/CyclomaticComplexity:
21
+ Enabled: false
22
+
23
+ Metrics/PerceivedComplexity:
24
+ Enabled: false
25
+
26
+ Metrics/MethodLength:
27
+ Enabled: false
28
+
29
+ Style/Documentation:
30
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.7.6
data/Dockerfile ADDED
@@ -0,0 +1,28 @@
1
+ FROM library/ruby:3.1.2-alpine
2
+ MAINTAINER Michael Dungan <mpd@jesters-court.net>
3
+
4
+ RUN gem update bundler && \
5
+ apk add --no-cache \
6
+ build-base \
7
+ dumb-init \
8
+ gcc \
9
+ git \
10
+ imagemagick \
11
+ imagemagick-dev \
12
+ wget && \
13
+ mkdir /srv/fakeimage
14
+
15
+ COPY Gemfile \
16
+ Gemfile.lock \
17
+ fakeimage.gemspec \
18
+ /srv/fakeimage/
19
+ WORKDIR /srv/fakeimage
20
+ RUN bundle config github.https true && \
21
+ bundle install && \
22
+ apk del build-base gcc wget
23
+
24
+ COPY . /srv/fakeimage
25
+
26
+ EXPOSE 4567
27
+
28
+ CMD ["dumb-init", "ruby", "fakeimage.rb", "-o", "0.0.0.0"]
data/DroidSans.ttf ADDED
Binary file
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,70 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fakeimage (0.9)
5
+ puma
6
+ rmagick
7
+ sinatra
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ ast (2.4.2)
13
+ coderay (1.1.3)
14
+ method_source (1.0.0)
15
+ mustermann (1.1.1)
16
+ ruby2_keywords (~> 0.0.1)
17
+ nio4r (2.5.8)
18
+ parallel (1.22.1)
19
+ parser (3.1.2.0)
20
+ ast (~> 2.4.1)
21
+ pry (0.14.1)
22
+ coderay (~> 1.1)
23
+ method_source (~> 1.0)
24
+ puma (5.6.4)
25
+ nio4r (~> 2.0)
26
+ rack (2.2.3.1)
27
+ rack-protection (2.2.0)
28
+ rack
29
+ rainbow (3.1.1)
30
+ regexp_parser (2.5.0)
31
+ rexml (3.2.5)
32
+ rmagick (4.2.5)
33
+ rubocop (1.30.0)
34
+ parallel (~> 1.10)
35
+ parser (>= 3.1.0.0)
36
+ rainbow (>= 2.2.2, < 4.0)
37
+ regexp_parser (>= 1.8, < 3.0)
38
+ rexml (>= 3.2.5, < 4.0)
39
+ rubocop-ast (>= 1.18.0, < 2.0)
40
+ ruby-progressbar (~> 1.7)
41
+ unicode-display_width (>= 1.4.0, < 3.0)
42
+ rubocop-ast (1.18.0)
43
+ parser (>= 3.1.1.0)
44
+ rubocop-performance (1.14.0)
45
+ rubocop (>= 1.7.0, < 2.0)
46
+ rubocop-ast (>= 0.4.0)
47
+ rubocop-rake (0.6.0)
48
+ rubocop (~> 1.0)
49
+ ruby-progressbar (1.11.0)
50
+ ruby2_keywords (0.0.5)
51
+ sinatra (2.2.0)
52
+ mustermann (~> 1.0)
53
+ rack (~> 2.2)
54
+ rack-protection (= 2.2.0)
55
+ tilt (~> 2.0)
56
+ tilt (2.0.10)
57
+ unicode-display_width (2.1.0)
58
+
59
+ PLATFORMS
60
+ ruby
61
+
62
+ DEPENDENCIES
63
+ fakeimage!
64
+ pry
65
+ rubocop
66
+ rubocop-performance
67
+ rubocop-rake
68
+
69
+ BUNDLED WITH
70
+ 2.3.15
data/Procfile ADDED
@@ -0,0 +1 @@
1
+ web: bundle exec rackup config.ru -p $PORT
data/README.md ADDED
@@ -0,0 +1,50 @@
1
+ # fakeimage
2
+
3
+ A small Sinatra app influenced by <http://dummyimage.com>.
4
+
5
+ Try it online at [http://fakeimage.herokuapp.com](http://fakeimage.herokuapp.com)
6
+
7
+ ## Installation
8
+
9
+ Requires ruby 2.7+. May work with older versions, but not tested or supported.
10
+
11
+ #### Via RubyGems
12
+ ```bash
13
+ gem install fakeimage
14
+ fakeimage --port 5000 # arguments are forwarded to `rackup`
15
+ ```
16
+
17
+ #### Directly from the Source Repo
18
+ ```bash
19
+ git clone git@github.com:xxx/fakeimage.git
20
+ cd fakeimage
21
+ bundle
22
+ ruby fakeimage.rb (or your rack-app-handler of choice)
23
+ ```
24
+
25
+ A `Dockerfile` and `docker-compose.yml` are included in the distribution if preferred. Getting up and running
26
+ locally should require nothing more than `docker compose up` in that case.
27
+
28
+ ## Use
29
+
30
+ In a browser, hit `http://localhost:4567/300x200` for example, or change bg and text colors by passing them as
31
+ GET params:
32
+
33
+ `http://localhost:4567/95x150?color=red&textcolor=orange`
34
+
35
+ Leave off the second dimension for a square.
36
+
37
+ `http://localhost:4567/200`
38
+
39
+ Multiple image formats are supported. Just add an extension to the size (e.g. `http://localhost:4567/300x200.gif`) to
40
+ get that format. png (default), gif, and jpg are supported currently.
41
+
42
+ See [the ImageMagick documentation](http://www.imagemagick.org/script/color.php#color_names) for the canonical list
43
+ of colors. Hex colors are also supported, but with the `#` replaced with a `!`,
44
+ like `http://localhost:4567/400x300?color=!849593`.
45
+
46
+ ## Copyright
47
+
48
+ Copyright (c) Michael Dungan <mpd@jesters-court.net>, released under the MIT license.
49
+
50
+ The included Droid Sans font is licensed under the Apache License, online at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0).
data/bin/fakeimage ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ exec "/usr/bin/env", "rackup", "#{__dir__}/../config.ru", *ARGV
data/config.ru ADDED
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('./fakeimage', File.dirname(__FILE__))
4
+ run Sinatra::Application
@@ -0,0 +1,8 @@
1
+ services:
2
+ fakeimage:
3
+ image: xxx/fakeimage
4
+ build:
5
+ context: .
6
+ ports:
7
+ - "4567:4567"
8
+ restart: unless-stopped
data/fakeimage.rb ADDED
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+ require 'rubygems'
5
+ require 'bundler/setup'
6
+
7
+ require 'sinatra'
8
+ require 'rmagick'
9
+ require 'rvg/rvg'
10
+
11
+ FORMATS = {
12
+ 'png' => 'png',
13
+ 'gif' => 'gif',
14
+ 'jpg' => 'jpeg'
15
+ }.freeze
16
+
17
+ LOGGER = Logger.new($stdout)
18
+
19
+ get '/' do
20
+ <<~HTML
21
+ <p>Welcome to fakeimage.</p>
22
+ <p>
23
+ Please see the README (specifically the 'Use' section) at
24
+ <a href='http://github.com/xxx/fakeimage'>http://github.com/xxx/fakeimage</a> for#{' '}
25
+ usage info so I don't have a chance to let one of the copies get out of date.
26
+ </p>
27
+ <p>Example: <img src='/243x350.gif?color=darkorchid2&textcolor=!B9AF55' /></p>
28
+ <p>
29
+ Code:#{' '}
30
+ <code>&lt;img src='http://fakeimage.heroku.com/243x350.gif?color=darkorchid2&textcolor=!B9AF55' /&gt;</code>
31
+ </p>
32
+ HTML
33
+ end
34
+
35
+ get '/:size' do
36
+ wh, format = params[:size].downcase.split('.')
37
+ format = FORMATS[format] || 'png'
38
+
39
+ width, height = wh.split('x').map(&:to_i)
40
+
41
+ height ||= width
42
+
43
+ color = color_convert(params[:color]) || 'grey69'
44
+ text_color = color_convert(params[:textcolor]) || 'black'
45
+
46
+ rvg = Magick::RVG.new(width, height).viewbox(0, 0, width, height) do |canvas|
47
+ canvas.background_fill = color
48
+ end
49
+
50
+ img = rvg.draw
51
+
52
+ img.format = format
53
+
54
+ drawable = Magick::Draw.new
55
+ drawable.pointsize = width / 10
56
+ drawable.font = './DroidSans.ttf'
57
+ drawable.fill = text_color
58
+ drawable.gravity = Magick::CenterGravity
59
+ drawable.annotate(img, 0, 0, 0, 0, "#{width} x #{height}")
60
+
61
+ content_type "image/#{format}"
62
+ img.to_blob
63
+ rescue Exception => e # rubocop:disable Lint/RescueException
64
+ LOGGER.error("#{e}: #{e.backtrace}")
65
+ <<~HTML
66
+ <p>
67
+ Something broke. You can try <a href='/200x200'>this simple test</a>.#{' '}
68
+ If this error occurs there as well, you are probably missing app dependencies. Make sure RMagick#{' '}
69
+ is installed correctly. If the test works, you are probably passing bad params in the url.
70
+ </p>
71
+ <p>Use this thing like http://host:port/200x300, or add color and textcolor params to decide color.</p>
72
+ <p>Error is: [<code>#{e}</code>]</p>
73
+ HTML
74
+ end
75
+
76
+ private
77
+
78
+ def color_convert(original)
79
+ original&.tr('!', '#')
80
+ end
Binary file
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fakeimage
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.9'
5
+ platform: ruby
6
+ authors:
7
+ - Michael Dungan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-06-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: puma
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rmagick
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
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: sinatra
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-performance
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: This gem providers a small server to allow linking to arbitrarily-sized
112
+ placeholder images.
113
+ email:
114
+ - mpd@jesters-court.net
115
+ executables:
116
+ - fakeimage
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - ".rubocop.yml"
121
+ - ".ruby-version"
122
+ - Dockerfile
123
+ - DroidSans.ttf
124
+ - Gemfile
125
+ - Gemfile.lock
126
+ - Procfile
127
+ - README.md
128
+ - bin/fakeimage
129
+ - config.ru
130
+ - docker-compose.yml
131
+ - fakeimage.rb
132
+ - public/favicon.ico
133
+ homepage: https://github.com/xxx/fakeimage
134
+ licenses:
135
+ - MIT
136
+ metadata:
137
+ homepage_uri: https://github.com/xxx/fakeimage
138
+ source_code_uri: https://github.com/xxx/fakeimage
139
+ rubygems_mfa_required: 'true'
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: 2.7.0
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubygems_version: 3.3.7
156
+ signing_key:
157
+ specification_version: 4
158
+ summary: A placeholder image generator
159
+ test_files: []