argh_ss 0.3.0 → 0.3.1

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.
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