flickrcaptionr 0.0.1 → 1.0.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.
@@ -13,37 +13,41 @@ class Flickrcaptionr::App < Sinatra::Base
13
13
  get '/' do
14
14
  haml :index
15
15
  end
16
+ get '/get/:image_url' do
17
+ handle_image_generation(params)
18
+ haml :index
19
+ end
20
+ get '/get/:image_url/:caption_text' do
21
+ handle_image_generation(params)
22
+ haml :index
23
+ end
24
+ get '/get/:image_url/:image_width/:image_height' do
25
+ handle_image_generation(params)
26
+ haml :index
27
+ end
16
28
  get '/get/:image_url/:image_width/:image_height/:caption_text' do
17
- @f ||= Flickrcaptionr::Fetcher.new
18
- @p ||= Flickrcaptionr::Processor.new
19
- # {"image_url"=>"https://secure.flickr.com/photos/must_love_cartoons/7474524298/",
20
- # "image_width"=>"300", "image_height"=>"400",
21
- # "caption_text"=>"You have angered the developer", "caption_font_size"=>"36", "caption_font_stroke"=>"2"}
22
-
23
- if params['image_url'] and params['image_url'].size > 0
24
- caption_opts = {}
25
- if params['caption_text'] and params['caption_text'] != ''
26
- caption_opts[:font_size] = params['caption_font_size'].to_i if params['caption_font_size'] and params['caption_font_size'].size > 0
27
- caption_opts[:font_stroke] = params['caption_font_stroke'].to_i if params['caption_font_stroke'] and params['caption_font_stroke'].size > 0
28
- end
29
- begin
30
- file = @f.fetch(params['image_url'])
31
- w = params['image_width'].to_i
32
- h = params['image_height'].to_i
33
- if w > 0 and h > 0
34
- file = @p.resize!(file, w, h)
35
- end
36
- file = @p.add_text!(file, params['caption_text'], caption_opts) if params['caption_text'] and params['caption_text'] != ''
37
- send_file file
38
- rescue Exception => e
39
- params['error'] = e.message
40
- end
41
- else
42
- params['error'] = "You didn't supply a URL. Not sure what you expect me to do without that."
43
- end
29
+ handle_image_generation(params)
44
30
  haml :index
45
31
  end
46
32
  post '/' do
33
+ params['redirect'] = 'true'
34
+ handle_image_generation(params)
35
+ haml :index
36
+ end
37
+ get '/image/:filename' do
38
+ send_file File.join(Flickrcaptionr::Config.output_path, params['filename'])
39
+ end
40
+ get '/favicon.ico' do
41
+ ""
42
+ end
43
+ @@public_files.each do |public_file, public_file_type|
44
+ get "/#{public_file}" do
45
+ content_type(public_file_type)
46
+ ::File.open(::File.expand_path("../../../pub/#{public_file}", __FILE__)).read
47
+ end
48
+ end
49
+
50
+ def handle_image_generation(params)
47
51
  @f ||= Flickrcaptionr::Fetcher.new
48
52
  @p ||= Flickrcaptionr::Processor.new
49
53
  # {"image_url"=>"https://secure.flickr.com/photos/must_love_cartoons/7474524298/",
@@ -51,7 +55,6 @@ class Flickrcaptionr::App < Sinatra::Base
51
55
  # "caption_text"=>"You have angered the developer", "caption_font_size"=>"36", "caption_font_stroke"=>"2"}
52
56
 
53
57
  if params['image_url'] and params['image_url'].size > 0
54
-
55
58
  caption_opts = {}
56
59
  if params['caption_text'] and params['caption_text'] != ''
57
60
  caption_opts[:font_size] = params['caption_font_size'].to_i if params['caption_font_size'] and params['caption_font_size'].size > 0
@@ -65,26 +68,16 @@ class Flickrcaptionr::App < Sinatra::Base
65
68
  file = @p.resize!(file, w, h)
66
69
  end
67
70
  file = @p.add_text!(file, params['caption_text'], caption_opts) if params['caption_text'] and params['caption_text'] != ''
68
- redirect "/image/#{File.basename(file)}"
71
+ if params['redirect'] and params['redirect'] == 'true'
72
+ redirect "/image/#{File.basename(file)}"
73
+ else
74
+ send_file file
75
+ end
69
76
  rescue Exception => e
70
77
  params['error'] = e.message
71
78
  end
72
-
73
79
  else
74
80
  params['error'] = "You didn't supply a URL. Not sure what you expect me to do without that."
75
81
  end
76
- haml :index
77
- end
78
- get '/image/:filename' do
79
- send_file File.join(Flickrcaptionr::Config.output_path, params['filename'])
80
- end
81
- get '/favicon.ico' do
82
- ""
83
- end
84
- @@public_files.each do |public_file, public_file_type|
85
- get "/#{public_file}" do
86
- content_type(public_file_type)
87
- ::File.open(::File.expand_path("../../../pub/#{public_file}", __FILE__)).read
88
- end
89
82
  end
90
83
  end
@@ -3,7 +3,6 @@ require 'dimensions'
3
3
  class Flickrcaptionr::Processor
4
4
  def initialize
5
5
  Flickrcaptionr::Processor.has_dependencies?
6
-
7
6
  end
8
7
  # Resize an image, fitting the space provided as best as possible with a centre-weighted crop
9
8
  def resize!(path, width, height)
@@ -29,7 +28,7 @@ class Flickrcaptionr::Processor
29
28
  puts "Already added text to this image, not doing it again"
30
29
  else
31
30
  puts "Adding text '#{text}' to #{path}"
32
- `convert -background none -fill white -font "#{opts[:font_path] ? opts[:font_path] : (File.join(File.dirname(__FILE__), '..', '..', 'fonts', 'Coda-Heavy.ttf' ))}" -stroke black -strokewidth #{opts[:font_stroke] ? opts[:font_stroke].to_s : 2.to_s} -pointsize #{opts[:font_size] ? opts[:font_size].to_s : 36.to_s} -size #{((Dimensions.width(path)-10).to_s)} -gravity Center caption:'#{text.gsub(/[^A-Za-z0-9 \-"\.,]/,"")}' caption-tmp.png`
31
+ `convert -background none -fill white -font "#{opts[:font_path] ? opts[:font_path] : (File.join(File.dirname(__FILE__), '..', '..', 'fonts', 'Coda-Heavy.ttf' ))}" -stroke black -strokewidth #{opts[:font_stroke] ? opts[:font_stroke].to_s : 2.to_s} -pointsize #{opts[:font_size] ? opts[:font_size].to_s : 36.to_s} -size #{((Dimensions.width(path)-10).to_s)} -gravity Center caption:'#{text.gsub(/[^A-Za-z0-9 \-"\.,\?\!]/,"")}' caption-tmp.png`
33
32
  `composite caption-tmp.png #{path} -compose atop -gravity South #{out_filename}`
34
33
  `rm -rf caption-tmp.png`
35
34
  end
@@ -1,3 +1,3 @@
1
1
  module Flickrcaptionr
2
- VERSION = "0.0.1"
2
+ VERSION = "1.0.0"
3
3
  end
data/views/index.haml CHANGED
@@ -32,11 +32,11 @@
32
32
  .control-group
33
33
  %label.control-label Image Width
34
34
  .controls
35
- %input{type: 'text', name: 'image_width', value: params[:image_width] ? params[:image_width] : 300}
35
+ %input{type: 'text', name: 'image_width', value: params[:image_width] ? params[:image_width] : 400}
36
36
  .control-group
37
37
  %label.control-label Image Height
38
38
  .controls
39
- %input{type: 'text', name: 'image_height', value: params[:image_height] ? params[:image_height] : 400}
39
+ %input{type: 'text', name: 'image_height', value: params[:image_height] ? params[:image_height] : 300}
40
40
  %p.help-block
41
41
  We can resize your image to whichever size you desire. The image will be cropped to fit these dimensions if required.
42
42
  %fieldset
@@ -60,8 +60,19 @@
60
60
 
61
61
  %p
62
62
  You can also use the GET API as follows:
63
- %code
64
- \/get/flickr-photo-id-or-encoded-url/width/height/caption-text
63
+ %pre /get/flickr-photo-id-or-encoded-url/width/height/caption-text
65
64
  %p
66
65
  For instance,
67
- %a{href: "/get/6792442709/300/400/I%20has%20a%20LED"} something like this.
66
+ %a{href: "/get/6792442709/400/300/I%20has%20a%20LED"} something like this.
67
+ %p
68
+ You can omit values to disable functionality, for instance
69
+ %code /get/flickr-photo-id-or-encoded-url/width/height
70
+ will not add a caption,
71
+ %code /get/flickr-photo-id-or-encoded-url/caption
72
+ will not resize the image and
73
+ %code /get/flickr-photo-id-or-encoded-url
74
+ will just provide the unresized image.
75
+ %p
76
+ You can add a
77
+ %code ?redirect=true
78
+ flag if you prefer to be redirected to the image path rather than be served the image directly.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flickrcaptionr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: