imagize 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.1.0
data/imagize.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{imagize}
8
- s.version = "0.0.1"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Raymond van Dongelen"]
data/lib/imagize.rb CHANGED
@@ -1,4 +1,9 @@
1
- module Imagize
1
+ require "net/http"
2
+ require "uri"
3
+
4
+ module Imagize
5
+
6
+
2
7
  URL_DEFINITIONS = {
3
8
  :twitpic => {
4
9
  :url => "http://twitpic.com/",
@@ -16,29 +21,72 @@ module Imagize
16
21
  :url => "http://tweetphoto.com/",
17
22
  :convert => "http://tweetphotoapi.com/api/TPAPI.svc/imagefromurl?size=big&url=http://tweetphoto.com/§ID§"
18
23
  }
19
- }
24
+ }
25
+ SHORTENERS = {
26
+ :bitly => {
27
+ :url=> "http://bit.ly/"
28
+ },
29
+ :jmp => {
30
+ :url=> "http://j.mp/"
31
+ },
32
+ :isgd =>{
33
+ :url=>"http://is.gd/"
34
+ }
35
+
36
+ }
37
+
38
+ IMAGE_URL = /http:\/\/[.\w]*\/[\/\w]*/
39
+ # IMAGE_URL = /http:\/\/[.\w]*\/[\/\w]*[\b.jpg\b|\b\.gif\b|\b\.jp\b|]+/
40
+ JPG_FINDER = /#{IMAGE_URL}.jpg/
41
+ GIF_FINDER = /#{IMAGE_URL}.gif/
42
+ PNG_FINDER = /#{IMAGE_URL}.png/
43
+
44
+ IMAGE_FINDERS = [JPG_FINDER, GIF_FINDER, PNG_FINDER]
20
45
 
21
46
  class Imagizer
22
47
 
23
48
  def imagize(message)
24
49
  tweet = message.clone
25
50
  images = Array.new
26
-
51
+
52
+ #find shortened content
53
+ SHORTENERS.each do |service, details|
54
+ currentService = details[:url]
55
+ tweet.scan /#{currentService}\w*/ do |current|
56
+ tweet = tweet.sub (current, extract_shortener(current))
57
+ end
58
+ end
59
+
60
+ #find image services
27
61
  URL_DEFINITIONS.each do |service, details|
28
62
  currentService = details[:url]
29
63
  tweet.scan /#{currentService}\w*/ do |current|
30
64
  code = current.sub(currentService, "")
31
- puts code
32
65
  images << make_url (service, code)
33
- end
34
-
66
+ end
67
+ end
68
+
69
+ IMAGE_FINDERS.each do |finder|
70
+ images += tweet.scan(finder)
35
71
  end
72
+
36
73
 
37
74
  images
38
- end
75
+ end
76
+
77
+ def extract_shortener (short_url)
78
+ uri = URI.parse(short_url)
79
+
80
+ http = Net::HTTP.new(uri.host, uri.port)
81
+ request = Net::HTTP::Get.new(uri.request_uri)
82
+
83
+ response = http.request(request)
84
+ response['location']
85
+ end
39
86
 
40
87
  def make_url (servicename, code)
41
88
  URL_DEFINITIONS[servicename][:convert].gsub "§ID§", code
42
89
  end
90
+
43
91
  end
44
92
  end
data/spec/imagize_spec.rb CHANGED
@@ -12,7 +12,7 @@ describe "Imagize" do
12
12
  urls[0].should == "http://twitpic.com/show/large/h5uhc"
13
13
 
14
14
  urls= @imagizer.imagize("YG family outing y'all!!! http://twitpic.com/h71ip")
15
- urls.size.should ==1
15
+ urls.size.should ==1
16
16
  urls[0].should == "http://twitpic.com/show/large/h71ip"
17
17
  end
18
18
 
@@ -31,37 +31,51 @@ describe "Imagize" do
31
31
  urls= @imagizer.imagize("Hallo bnfgjfdgbfd http://youtu.be/B5IgPI9Dc7A?a\n Fiets")
32
32
  urls.should include("http://img.youtube.com/vi/B5IgPI9Dc7A/0.jpg")
33
33
  end
34
-
34
+
35
35
  it "should recognize tweetphoto" do
36
36
  urls= @imagizer.imagize("Hallo bnfgjfdgbfd http://tweetphoto.com/16793555 Fiets")
37
37
  urls.should include("http://tweetphotoapi.com/api/TPAPI.svc/imagefromurl?size=big&url=http://tweetphoto.com/16793555")
38
38
  end
39
39
 
40
-
41
-
42
40
  it "should recognize multiple images" do
43
41
  urls= @imagizer.imagize("MitchBHavin @themdudez http://yfrog.com/16y0 @KarenWuvsYou http://twitpic.com/h5uhc - This is so cool:)! lol")
44
42
  urls.size.should ==2
45
43
  urls.should include("http://yfrog.com/16y0:iphone")
46
44
  urls.should include"http://twitpic.com/show/large/h5uhc"
47
45
  end
48
-
46
+
49
47
  it "should recognize shortened youtube urls" do
50
- urls= @imagizer.imagize "Long text... youtu.be/1acVM7_rWw4 and more text"
48
+ urls= @imagizer.imagize "Long text... http://youtu.be/1acVM7_rWw4 and more text"
51
49
  urls.size.should == 1
52
50
 
53
51
  urls[0].should == "http://img.youtube.com/vi/1acVM7_rWw4/0.jpg"
54
52
  end
55
53
 
56
- it "should create normale urls" do
54
+ it "should create normal urls" do
57
55
  @imagizer.make_url(:twitpic, "hi").should == "http://twitpic.com/show/large/hi"
58
56
  @imagizer.make_url(:yfrog, "hi").should == "http://yfrog.com/hi:iphone"
59
57
  end
60
58
 
61
-
62
- # it "should recognize jpg" do
63
- # @imagizer.imagize("x.jpg").size.should ==1
64
- # end
59
+ it "should extract urls of shorteners" do
60
+ @imagizer.extract_shortener("http://bit.ly/3EgFOY").should == "http://www.nu.nl"
61
+ @imagizer.extract_shortener("http://bit.ly/cxGTkx").should == "http://www.facebook.com/XL1067/posts/116716535027115"
62
+ @imagizer.extract_shortener("http://j.mp/3EgFOY").should == "http://www.nu.nl"
63
+ @imagizer.extract_shortener("http://is.gd/bSCVo").should == "http://www.nu.nl"
64
+ end
65
+
66
+ it "should extract find image in shortened url" do
67
+ @imagizer.imagize("http://bit.ly/92mRwT").should include("http://twitpic.com/show/large/h5uhc")
68
+ end
65
69
 
66
70
 
67
- end
71
+ it "should recognize jpg/gif" do
72
+ @imagizer.imagize("This is some message http://www.hi.com/x.jpg").size.should ==1
73
+ @imagizer.imagize("This is some message http://www.hi.com/1/2/3/x.jpg").size.should ==1
74
+ @imagizer.imagize("This is some message http://www.hi.com/1/2/3/x.gif").should include "http://www.hi.com/1/2/3/x.gif"
75
+ @imagizer.imagize("This is some message http://bit.ly/bxjNbr but shortened").should include "http://www.hi.com/1/2/3/x.gif"
76
+ @imagizer.imagize("This is some message http://bit.ly/bxjNbr but shortened").should include "http://www.hi.com/1/2/3/x.gif"
77
+ @imagizer.imagize("This is some message http://is.gd/bSD5l but shortened").should include "http://www.hi.com/1/2/3/x.gif"
78
+ end
79
+
80
+
81
+ end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 0
8
7
  - 1
9
- version: 0.0.1
8
+ - 0
9
+ version: 0.1.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Raymond van Dongelen