cinch-toolbox 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -3,9 +3,17 @@
3
3
  This is just a gem required fro many of my plugins, it facilitates a variety of mundane operations.
4
4
 
5
5
  * URL Shortening / Expansion.
6
+ * URL Title Scraping.
6
7
  * Webpage DOM element retrieval (via xpath or css selectors).
7
8
  * Output truncation for sanity proof channel output.
8
9
 
10
+ Note: There is a small monkey patch to OpenURI contained in this gem. It allows for redirection
11
+ on urls that require https. For example, normally if you link to an `http://github.com/...` url on
12
+ GitHub you will get redirected to the https version of that link, and OpenURI will lose it's shit.
13
+
14
+ Note that this *only* honors redirection requests from HTTP => HTTPS and *not* HTTPS => HTTP.
15
+
16
+
9
17
  ## Installation
10
18
 
11
19
  Add this line to your application's Gemfile:
@@ -1,5 +1,5 @@
1
1
  module Cinch
2
2
  module Toolbox
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end
5
5
  end
data/lib/cinch-toolbox.rb CHANGED
@@ -19,6 +19,26 @@ module Cinch
19
19
  end
20
20
  end
21
21
 
22
+ def Toolbox.get_page_title(url)
23
+ # Make sure the URL is legit
24
+ url = URI::extract(url, ["http", "https"]).first
25
+
26
+ # If the link is to an image, extract the filename.
27
+ if url.match(/\.jpg|jpeg|gif|png$/)
28
+ # unless it's from reddit, then change the url to the gallery to get the image's caption.
29
+ if imgur_id = url.match(/https?:\/\/i\.imgur\.com.*\/([A-Za-z0-9]+)\.(jpg|jpeg|png|gif)/)[1]
30
+ url = "http://imgur.com/#{imgur_id}"
31
+ else
32
+ site = url.match(/\.([^\.]+\.[^\/]+)/)
33
+ return site.nil? ? "Image [#{url}]!!!" : "Image from #{site[1]}"
34
+ end
35
+ end
36
+
37
+ # Grab the element, return nothing if the site doesn't have a title.
38
+ page = Nokogiri::HTML(open(url)).css('title')
39
+ return page.first.content.strip.gsub(/\s+/, ' ') unless page.empty?
40
+ end
41
+
22
42
  # Expand a previously shortened URL via the configured shortener
23
43
  def Toolbox.expand(url)
24
44
  shortener.get("forward.php?format=simple&shorturl=#{url}").body
@@ -73,26 +93,12 @@ module Cinch
73
93
  return short
74
94
  end
75
95
 
76
- def Toolbox.get_page_title(url)
77
- # Make sure the URL is legit
78
- url = URI::extract(url, ["http", "https"]).first
79
-
80
- # If the link is to an image, extract the filename.
81
- if url.match(/\.jpg|jpeg|gif|png$/)
82
- # unless it's from reddit, then change the url to the gallery to get the image's caption.
83
- if url.match(/https?:\/\/i\.imgur\.com.+\/([A-Za-z0-9]+)\.(jpg|jpeg|png|gif)/)
84
- imgur_id = url.match(/https?:\/\/i\.imgur\.com.+\/([A-Za-z0-9]+)\.(jpg|jpeg|png|gif)/)[1]
85
- url = "http://imgur.com/#{imgur_id}"
86
- else
87
- site = url.match(/\.([^\.]+\.[^\/]+)/)
88
- return site.nil? ? "Image [#{url}]!!!" : "Image from #{site[1]}"
89
- end
90
- end
96
+ end
97
+ end
91
98
 
92
- # Grab the element, return nothing if the site doesn't have a title.
93
- debug "URL: #{url}"
94
- page = Nokogiri::HTML(open(url)).css('title')
95
- return page.first.content.strip.gsub(/\s+/, ' ') unless page.empty?
96
- end
99
+ module OpenURI
100
+ def OpenURI.redirectable?(uri1, uri2) # :nodoc:
101
+ uri1.scheme.downcase == uri2.scheme.downcase ||
102
+ (/\A(?:http|ftp)\z/i =~ uri1.scheme && /\A(?:http|ftp|https)\z/i =~ uri2.scheme)
97
103
  end
98
104
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cinch-toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: