argh_ss 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6c677377b4509e88a84daec6bd878144278d40c
4
- data.tar.gz: '0513209f985af376a7f075555bc00bd83d67f86b'
3
+ metadata.gz: 76e4dcbadc62cdfae8249c0fb4ee9acd62db4e04
4
+ data.tar.gz: 6707d2d47696dbfd3c314763afdc671ea881934e
5
5
  SHA512:
6
- metadata.gz: 381e350ee0d910ba36f1889a6c3c7ca335a49f44e15a0e370ffd868f6e2c8ff089c6e1087c1f8b6d4e63238d63ff52fbaa4e7d6175b0efce4d4c1a3044c7627d
7
- data.tar.gz: 9a3f9e48b09b06ab1d3433e2c06fcda28d226d6ce2a87e8e69244d306da07e6fcad5715d8e12fa1a8b13e463bb95b6b0141ef39023cc21f1641bfb26c5721555
6
+ metadata.gz: 9f0891786f1263c476f965ed153c99998e6a614990526ec8081fd58d7143b0c41bd23aac9f127af1c6f54ab622be694bc90641aaf5b81bef9c3c64c04641fb60
7
+ data.tar.gz: ddc429398bf15bea46032536a6d6e02ebf0575c7b82c57624efd2d8c99c0dfdd8605ae0639e1bd59bb0d44c7f86e6d92ea0d2d0a5a77d763d28786f8d2506699
@@ -1,19 +1,74 @@
1
1
  class ResolveURL
2
2
 
3
- def self.resolve(uri_str, limit = 10)
4
- raise ArgumentError, 'Too many redirects!' if limit == 0
3
+ def self.resolve(url)
4
+ if url_redirects(url).is_a?(String)
5
+ return url_redirects(url)
6
+ elsif rss_redirect(url).is_a?(String)
7
+ return rss_redirect(url)
8
+ else
9
+ return nil
10
+ end
11
+ end
5
12
 
6
- response = Net::HTTP.get_response(URI(uri_str))
13
+ def self.url_redirects(uri_str, limit = 10)
14
+ begin
15
+ raise ArgumentError, 'Too many redirects!' if limit == 0
7
16
 
8
- case response
9
- when Net::HTTPSuccess then
10
- uri_str
11
- when Net::HTTPRedirection then
12
- location = response['location']
13
- resolve(location, limit - 1)
14
- else
15
- uri_str
17
+ response = Net::HTTP.get_response(URI(uri_str))
18
+
19
+ case response
20
+ when Net::HTTPSuccess then
21
+ uri_str
22
+ when Net::HTTPRedirection then
23
+ location = response['location']
24
+ url_redirects(location, limit - 1)
25
+ else
26
+ uri_str
27
+ end
28
+ rescue
29
+ nil
16
30
  end
17
31
  end
18
32
 
33
+ def self.rss_redirect(url)
34
+ begin
35
+ rss = RSS::Parser.parse(url)
36
+ case rss.feed_type
37
+ when 'rss'
38
+ rss.channel.link
39
+ when 'atom'
40
+ rss.id.content
41
+ end
42
+ rescue
43
+ nil
44
+ end
45
+ end
46
+
47
+ # def self.resolve(uri_str, limit = 10)
48
+ # raise ArgumentError, 'Too many redirects!' if limit == 0
49
+
50
+ # response = Net::HTTP.get_response(URI(uri_str))
51
+
52
+ # case response
53
+ # when Net::HTTPSuccess then
54
+ # uri_str
55
+ # when Net::HTTPRedirection then
56
+ # location = response['location']
57
+ # resolve(location, limit - 1)
58
+ # else
59
+ # uri_str
60
+ # end
61
+ # end
62
+
63
+ # def self.rss_pluck(url)
64
+ # rss = RSS::Parser.parse(url, false)
65
+
66
+ # case rss.feed_type
67
+ # when 'rss'
68
+ # p rss.channel.link
69
+ # when 'atom'
70
+ # p rss.id.content
71
+ # end
72
+ # end
73
+
19
74
  end
@@ -1,3 +1,3 @@
1
1
  module ArghSs
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: argh_ss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Holmes