awesome_bot 1.3.3 → 1.4.0
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 +4 -4
- data/.travis.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/README.md +16 -2
- data/bin/assets/test-parse +2 -0
- data/bin/assets/test-timeout +2 -0
- data/bin/assets/test-timeout-and-redirect +4 -0
- data/lib/awesome_bot/cli.rb +31 -8
- data/lib/awesome_bot/result.rb +21 -8
- data/lib/awesome_bot/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c2ad393dacd395f168e5dcec9d326cf721aa840
|
4
|
+
data.tar.gz: 4f91280d25a56aac470f1277e6871ee143a3e7fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7527e8cdef9febad7a1150d7661225ddf424564ca370170dd7979f0b647dcea372042c5e64d74cb26c698c5fe98a4f60b786d37ce59d9a2c12457ac0cc13872
|
7
|
+
data.tar.gz: 0ef28356259469480e62deb04ec970ca3fdb8904cf11d65da8c446acc8df5bc1e5b137238cac3c4f265a058bf0459ea91269b5c9079ee6b4f9e632b820090924
|
data/.travis.yml
CHANGED
@@ -7,5 +7,8 @@ script:
|
|
7
7
|
- awesome_bot
|
8
8
|
- awesome_bot bin/assets/test-no-issues
|
9
9
|
- awesome_bot bin/assets/test-no-links
|
10
|
+
- awesome_bot bin/assets/test-parse
|
10
11
|
- awesome_bot bin/assets/test-dupe --allow-dupe
|
12
|
+
- awesome_bot bin/assets/test-timeout --allow-timeout --set-timeout 1
|
13
|
+
- awesome_bot bin/assets/test-timeout-and-redirect --allow-timeout --set-timeout 1 --allow-redirect
|
11
14
|
- awesome_bot README.md --allow-dupe --white-list gph.is,bot.svg,codeload,badge,rubydoc
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -43,7 +43,13 @@ More information at [rubydoc](http://www.rubydoc.info/gems/awesome_bot).
|
|
43
43
|
|
44
44
|
### Command Line
|
45
45
|
|
46
|
-
awesome_bot <file> [--allow-dupe] [--allow-redirect] [--white-list item1,item2,..]
|
46
|
+
awesome_bot <file> [--allow-dupe] [--allow-redirect] [--allow-timeout] [--set-timeout d] [--white-list item1,item2,..]
|
47
|
+
file Path to file
|
48
|
+
--allow-dupe Duplicates URLs are allowed URLs
|
49
|
+
--allow-redirect Redirected URLs are allowed
|
50
|
+
--allow-timeout URLs that time out are allowed
|
51
|
+
--set-timeout Set connection timeout (seconds)
|
52
|
+
--white-list Comma separated URLs to white list
|
47
53
|
|
48
54
|
```shell
|
49
55
|
$ awesome_bot README.md
|
@@ -138,19 +144,27 @@ script:
|
|
138
144
|
- https://github.com/matteocrippa/awesome-swift
|
139
145
|
- https://github.com/iCHAIT/awesome-osx
|
140
146
|
- https://github.com/ellisonleao/magictools
|
147
|
+
- https://github.com/JStumpp/awesome-android
|
141
148
|
- https://github.com/chentsulin/awesome-graphql
|
149
|
+
- https://github.com/fasouto/awesome-dataviz
|
142
150
|
- https://github.com/RichardLitt/awesome-conferences
|
143
151
|
- https://github.com/stefanbuck/awesome-browser-extensions-for-github
|
144
152
|
- https://github.com/afonsopacifer/awesome-flexbox
|
145
153
|
- https://github.com/HQarroum/awesome-iot
|
154
|
+
- https://github.com/filipelinhares/awesome-slack
|
155
|
+
- https://github.com/notthetup/awesome-webaudio
|
146
156
|
- https://github.com/ipfs/awesome-ipfs
|
147
|
-
- https://github.com/
|
157
|
+
- https://github.com/brunopulis/awesome-a11y
|
148
158
|
- https://github.com/ramitsurana/awesome-kubernetes
|
159
|
+
- https://github.com/benoitjadinon/awesome-xamarin
|
160
|
+
- https://github.com/christian-bromann/awesome-selenium
|
149
161
|
- https://github.com/vinkla/awesome-fuse
|
150
162
|
- https://github.com/wfhio/awesome-job-boards
|
151
163
|
- https://github.com/sotayamashita/awesome-css
|
152
164
|
- https://github.com/MakinGiants/awesome-mobile-dev
|
153
165
|
- https://github.com/unixorn/awesome-zsh-plugins
|
166
|
+
- https://github.com/vredniy/awesome-newsletters
|
167
|
+
- https://github.com/unixorn/git-extra-commands
|
154
168
|
|
155
169
|
## Credits
|
156
170
|
|
data/lib/awesome_bot/cli.rb
CHANGED
@@ -7,11 +7,17 @@ require 'awesome_bot/version'
|
|
7
7
|
module AwesomeBot
|
8
8
|
OPTION_DUPE = 'allow-dupe'
|
9
9
|
OPTION_REDIRECT = 'allow-redirect'
|
10
|
+
OPTION_TIMEOUT_ALLOW = 'allow-timeout'
|
11
|
+
OPTION_TIMEOUT_SET = 'set-timeout'
|
10
12
|
OPTION_WHITE_LIST = 'white-list'
|
11
13
|
|
12
14
|
USAGE = "\t"
|
13
15
|
|
14
16
|
class << self
|
17
|
+
def make_option(o)
|
18
|
+
"--#{o}"
|
19
|
+
end
|
20
|
+
|
15
21
|
def output(x, k)
|
16
22
|
s = x['status']
|
17
23
|
print "#{k + 1}. "
|
@@ -22,16 +28,21 @@ module AwesomeBot
|
|
22
28
|
end
|
23
29
|
|
24
30
|
def cli
|
25
|
-
option_d =
|
26
|
-
option_r =
|
27
|
-
|
31
|
+
option_d = make_option OPTION_DUPE
|
32
|
+
option_r = make_option OPTION_REDIRECT
|
33
|
+
option_t = make_option OPTION_TIMEOUT_SET
|
34
|
+
option_t_a = make_option OPTION_TIMEOUT_ALLOW
|
35
|
+
option_w = make_option OPTION_WHITE_LIST
|
28
36
|
|
29
37
|
if ARGV.count == 0
|
30
38
|
puts "Usage: #{PROJECT} <file> [#{option_d}] [#{option_r}] "\
|
39
|
+
"[#{option_t_a}] [#{option_t} d] "\
|
31
40
|
"[#{option_w} item1,item2,..]\n"\
|
32
|
-
"#{USAGE} file \t\t
|
41
|
+
"#{USAGE} file \t\t Path to file \n"\
|
33
42
|
"#{USAGE} #{option_d} \t Duplicates URLs are allowed URLs \n"\
|
34
43
|
"#{USAGE} #{option_r} Redirected URLs are allowed \n"\
|
44
|
+
"#{USAGE} #{option_t_a} URLs that time out are allowed \n"\
|
45
|
+
"#{USAGE} #{option_t} \t Set connection timeout (seconds) \n"\
|
35
46
|
"#{USAGE} #{option_w} \t Comma separated URLs to white list \n"\
|
36
47
|
"\nVersion #{VERSION}, see #{PROJECT_URL} for more information"
|
37
48
|
exit
|
@@ -48,12 +59,22 @@ module AwesomeBot
|
|
48
59
|
allow_redirects = options.include? option_r
|
49
60
|
puts '> Will allow redirects' if allow_redirects == true
|
50
61
|
|
62
|
+
allow_timeouts = options.include? option_t_a
|
63
|
+
puts '> Will allow network timeouts' if allow_timeouts == true
|
64
|
+
|
51
65
|
if options.include? option_w
|
52
66
|
i = options.find_index(option_w) + 1
|
53
67
|
white_listed = options[i].split ','
|
54
68
|
end
|
69
|
+
|
70
|
+
if options.include? option_t
|
71
|
+
i = options.find_index(option_t) + 1
|
72
|
+
timeout = options[i].to_i
|
73
|
+
puts "> Connection timeout = #{timeout}s"
|
74
|
+
end
|
55
75
|
else
|
56
76
|
allow_redirects = false
|
77
|
+
allow_timeouts = false
|
57
78
|
end
|
58
79
|
|
59
80
|
begin
|
@@ -63,6 +84,7 @@ module AwesomeBot
|
|
63
84
|
exit 1
|
64
85
|
end
|
65
86
|
|
87
|
+
Faraday.options.timeout = timeout unless timeout.nil?
|
66
88
|
|
67
89
|
log = Log.new(true)
|
68
90
|
r = check(content, white_listed, skip_dupe, log)
|
@@ -74,18 +96,19 @@ module AwesomeBot
|
|
74
96
|
end
|
75
97
|
end
|
76
98
|
|
77
|
-
if r.success(allow_redirects) == true
|
99
|
+
if r.success(allow_redirects, allow_timeouts) == true
|
78
100
|
puts 'No issues :-)'
|
79
101
|
# exit ?
|
80
102
|
else
|
81
103
|
puts "\nIssues :-("
|
82
104
|
|
83
105
|
print "> Links \n"
|
84
|
-
if r.success_links(allow_redirects)
|
106
|
+
if r.success_links(allow_redirects, allow_timeouts)
|
85
107
|
puts " All OK #{STATUS_OK}"
|
86
108
|
else
|
87
|
-
r.statuses_issues(allow_redirects
|
88
|
-
|
109
|
+
r.statuses_issues(allow_redirects, allow_timeouts)
|
110
|
+
.each_with_index do |x, k|
|
111
|
+
output x, k
|
89
112
|
end
|
90
113
|
end
|
91
114
|
|
data/lib/awesome_bot/result.rb
CHANGED
@@ -20,15 +20,28 @@ module AwesomeBot
|
|
20
20
|
@rejected, @links = links.partition { |u| AwesomeBot.white_list @w, u }
|
21
21
|
end
|
22
22
|
|
23
|
-
def statuses_issues(allow_redirects = false)
|
23
|
+
def statuses_issues(allow_redirects = false, allow_timeouts = false)
|
24
24
|
s = status.select { |x| x['status'] != 200 }
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
r = s.reject { |x| (x['status'] > 299) && (x['status'] < 400) }
|
26
|
+
t = s.reject do |x|
|
27
|
+
(x['status'] == -1) && ((x['error'].message == 'Net::ReadTimeout') || (x['error'].message == 'execution expired'))
|
28
|
+
end
|
29
|
+
|
30
|
+
if (allow_redirects == false) && (allow_timeouts == false)
|
31
|
+
return s
|
32
|
+
elsif (allow_redirects == true) && (allow_timeouts == false)
|
33
|
+
return r
|
34
|
+
elsif (allow_redirects == false) && (allow_timeouts == true)
|
35
|
+
return t
|
36
|
+
else
|
37
|
+
return r.reject do |x|
|
38
|
+
(x['status'] == -1) && ((x['error'].message == 'Net::ReadTimeout') || (x['error'].message == 'execution expired'))
|
39
|
+
end
|
40
|
+
end
|
28
41
|
end
|
29
42
|
|
30
|
-
def success(allow_redirects = false)
|
31
|
-
success_dupe && success_links(allow_redirects)
|
43
|
+
def success(allow_redirects = false, allow_timeouts = false)
|
44
|
+
success_dupe && success_links(allow_redirects, allow_timeouts)
|
32
45
|
end
|
33
46
|
|
34
47
|
def success_dupe
|
@@ -36,8 +49,8 @@ module AwesomeBot
|
|
36
49
|
links.uniq.count == links.count
|
37
50
|
end
|
38
51
|
|
39
|
-
def success_links(allow_redirects = false)
|
40
|
-
statuses_issues(allow_redirects).count == 0
|
52
|
+
def success_links(allow_redirects = false, allow_timeouts = false)
|
53
|
+
statuses_issues(allow_redirects, allow_timeouts).count == 0
|
41
54
|
end
|
42
55
|
|
43
56
|
def white_listing
|
data/lib/awesome_bot/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awesome_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Khamsing
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -74,6 +74,9 @@ files:
|
|
74
74
|
- bin/assets/test-no-dupes
|
75
75
|
- bin/assets/test-no-issues
|
76
76
|
- bin/assets/test-no-links
|
77
|
+
- bin/assets/test-parse
|
78
|
+
- bin/assets/test-timeout
|
79
|
+
- bin/assets/test-timeout-and-redirect
|
77
80
|
- bin/awesome_bot
|
78
81
|
- bin/console
|
79
82
|
- bin/setup
|