link_thumbnailer 1.0.0 → 1.0.2
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.
- data/CHANGELOG.md +17 -0
- data/README.md +8 -5
- data/lib/generators/link_thumbnailer/install_generator.rb +1 -1
- data/lib/link_thumbnailer/version.rb +1 -1
- data/lib/link_thumbnailer.rb +28 -14
- metadata +2 -2
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
# 1.0.2
|
2
|
+
|
3
|
+
- Feature: User can now set options at runtime by passing valid options to ```generate``` method
|
4
|
+
- Bug fix when doing ```rails g link_thumbnailer:install``` by explicitly specifying the scope of Rails
|
5
|
+
|
6
|
+
# 1.0.1
|
7
|
+
|
8
|
+
- Refactor LinkThumbnailer#generate method to have a cleaner code
|
9
|
+
|
10
|
+
# 1.0.0
|
11
|
+
|
12
|
+
- Update readme
|
13
|
+
- Add PreviewController for easy integration with user's app
|
14
|
+
- Add link_thumbnailer routes for easy integration with user's app
|
15
|
+
- Refactor some code
|
16
|
+
- Change 'to_a' method to 'to_hash' in object model
|
17
|
+
|
1
18
|
# 0.0.6
|
2
19
|
|
3
20
|
- Update readme
|
data/README.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# LinkThumbnailer
|
2
2
|
|
3
|
+
[](https://codeclimate.com/github/gottfrois/link_thumbnailer)
|
4
|
+
|
3
5
|
Ruby gem generating image thumbnails from a given URL. Rank them and give you back an object containing images and website informations. Works like Facebook link previewer.
|
4
6
|
|
5
|
-
Demo Application is [here](
|
7
|
+
Demo Application is [here](http://link-thumbnailer-demo.herokuapp.com/) !
|
6
8
|
|
7
9
|
## Installation
|
8
10
|
|
@@ -80,9 +82,9 @@ You can check whether this object is valid or not (set mandatory attributes in t
|
|
80
82
|
object.valid?
|
81
83
|
=> true
|
82
84
|
|
83
|
-
You also can set
|
85
|
+
You also can set options at runtime:
|
84
86
|
|
85
|
-
object = LinkThumbnailer.generate('http://foo.com', :
|
87
|
+
object = LinkThumbnailer.generate('http://foo.com', top: 10, limit: 20, redirect_limit: 5)
|
86
88
|
|
87
89
|
## Preview Controller
|
88
90
|
|
@@ -92,7 +94,7 @@ Take a look at the demo application [here](https://github.com/gottfrois/link_thu
|
|
92
94
|
|
93
95
|
Basically, all you have to do in your view is something like this:
|
94
96
|
|
95
|
-
<%= form_tag '/link/preview', :
|
97
|
+
<%= form_tag '/link/preview', method: :post, remote: true do %>
|
96
98
|
<%= text_field_tag :url %>
|
97
99
|
<%= submit_tag 'Preview' %>
|
98
100
|
<% end %>
|
@@ -101,7 +103,7 @@ Don't forget to add this anywhere in your `routes.rb` file:
|
|
101
103
|
|
102
104
|
use_link_thumbnailer
|
103
105
|
|
104
|
-
Note: You won't have to bother with this if you did
|
106
|
+
Note: You won't have to bother with this if you did run the installer using:
|
105
107
|
|
106
108
|
$ rails g link_thumbnailer:install
|
107
109
|
|
@@ -149,6 +151,7 @@ Implemented:
|
|
149
151
|
|
150
152
|
Coming soon:
|
151
153
|
|
154
|
+
- Use the gem [ruby-readability](https://github.com/iterationlabs/ruby-readability) to parse images and website information
|
152
155
|
- Cache results on filesystem
|
153
156
|
|
154
157
|
## Contributing
|
data/lib/link_thumbnailer.rb
CHANGED
@@ -44,35 +44,49 @@ module LinkThumbnailer
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def generate(url, options = {})
|
47
|
+
set_options(options)
|
48
|
+
instantiate_classes
|
49
|
+
|
50
|
+
doc = self.doc_parser.parse(self.fetcher.fetch(url), url)
|
51
|
+
|
52
|
+
self.object[:url] = doc.source_url
|
53
|
+
opengraph(doc) || custom(doc)
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def set_options(options)
|
47
59
|
LinkThumbnailer.configure {|config|
|
48
|
-
config.
|
49
|
-
config.
|
60
|
+
config.mandatory_attributes = options[:mandatory_attributes] if options[:mandatory_attributes]
|
61
|
+
config.strict = options[:strict] if options[:strict]
|
62
|
+
config.redirect_limit = options[:redirect_limit].to_i if options[:redirect_limit]
|
63
|
+
config.blacklist_urls = options[:blacklist_urls] if options[:blacklist_urls]
|
64
|
+
config.rmagick_attributes = options[:rmagick_attributes] if options[:rmagick_attributes]
|
65
|
+
config.limit = options[:limit].to_i if options[:limit]
|
66
|
+
config.top = options[:top].to_i if options[:top]
|
50
67
|
}
|
68
|
+
end
|
51
69
|
|
70
|
+
def instantiate_classes
|
52
71
|
self.object = LinkThumbnailer::Object.new
|
53
72
|
self.fetcher = LinkThumbnailer::Fetcher.new
|
54
73
|
self.doc_parser = LinkThumbnailer::DocParser.new
|
55
74
|
self.img_url_filters = [LinkThumbnailer::ImgUrlFilter.new]
|
56
75
|
self.img_parser = LinkThumbnailer::ImgParser.new(self.fetcher, self.img_url_filters)
|
76
|
+
end
|
57
77
|
|
58
|
-
|
59
|
-
doc = self.doc_parser.parse(doc_string, url)
|
60
|
-
|
61
|
-
self.object[:url] = doc.source_url
|
62
|
-
|
63
|
-
# Try Opengraph first
|
78
|
+
def opengraph(doc)
|
64
79
|
self.object = LinkThumbnailer::Opengraph.parse(self.object, doc)
|
65
|
-
|
66
80
|
return self.object if self.object.valid?
|
81
|
+
nil
|
82
|
+
end
|
67
83
|
|
68
|
-
|
69
|
-
|
84
|
+
def custom(doc)
|
70
85
|
self.object[:title] = doc.title
|
71
86
|
self.object[:description] = doc.description
|
72
87
|
self.object[:images] = self.img_parser.parse(doc.img_abs_urls.dup)
|
73
|
-
|
74
|
-
|
75
|
-
self.object
|
88
|
+
return self.object if self.object.valid?
|
89
|
+
nil
|
76
90
|
end
|
77
91
|
|
78
92
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: link_thumbnailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|