autoup 0.9.3 → 1.0.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: 541337e58e6ed6810efd1becb84c0e7c217050c4
4
- data.tar.gz: eaebb087b762611d769419ae1c5e602af3d9d9cb
3
+ metadata.gz: a1d42cb8fd41411c1ab387fb3d0651a0809bc854
4
+ data.tar.gz: fb6c975c9fd5d10ee68bbb2549848ed88d369bc3
5
5
  SHA512:
6
- metadata.gz: a030ebaf9fee2e05e2c166c6c3005aabc960276947ce739cc144ea78ef7fe810f9f09670a7eb6fadc4fd97e16b654a63d4ba35bf8417e39db61b67e7e2303497
7
- data.tar.gz: ef93ef9f4d747b652d130ec6867ae1aa1511c7a5ef6f7a8a18762f2bd9497d9f5b91dac487214c3594741932b95201b1f098dfd458a6ad3b93fc70ef708c8820
6
+ metadata.gz: a2d51ff6b73fad5e97faa3f363f4d8f2169d2894d4ff5897b6c8a9400461ed5996c203af4f53fc2a97d138c1487d112d33aec0db70c6812a8eb6df71f6ae930b
7
+ data.tar.gz: 5fa48c9d75ec5d86c3ba0b53c7880fd80947823ec5fcc208ae96cda8564fd115d0f82e10dbe16ec52fb0440031caf3af7c43ab55697c6829a0eedec78157a92e
data/NOTICE ADDED
@@ -0,0 +1,15 @@
1
+ autoup: https://github.com/chillum/autoup
2
+
3
+ Copyright 2014 Vasily Korytov
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this software except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
data/bin/autoup CHANGED
@@ -1,19 +1,5 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
- # Copyright 2014 Vasily Korytov
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
-
17
3
  require 'autoup'
18
4
 
19
5
  AutoUp.new
data/examples/autoup.yml CHANGED
@@ -1,24 +1,26 @@
1
1
  # autoup config: ~/.config/autoup.yml
2
- # include one or more `forum` items
2
+ # Public domain
3
3
 
4
- # minimal setup
5
- - forum: 'http://localhost/forum-en/'
6
- user: 'username'
7
- pass: 'password'
4
+ # Include one or more `forum` items.
8
5
 
9
- # defaults expanded
10
- - forum: 'http://localhost/forum-en/'
11
- user: 'username'
12
- pass: 'password'
13
- find: 'Find all threads started by'
14
- stats: 'Show All Statistics'
15
- up: 'Bump the thread!'
6
+ # Minimal setup:
7
+ - forum: http://localhost/forum-en/
8
+ user: username
9
+ pass: password
10
+
11
+ # Defaults expanded:
12
+ - forum: http://localhost/forum-en/
13
+ user: username
14
+ pass: password
15
+ find: Find all threads started by
16
+ stats: Show All Statistics
17
+ up: Bump the thread!
16
18
  timeout: 5
17
19
 
18
- # Russian board example
19
- - forum: 'http://localhost/forum-ru/'
20
- user: 'username'
21
- pass: 'password'
22
- find: 'Найти все темы, созданные'
23
- stats: 'Показать всю статистику'
24
- up: 'Поднять тему!'
20
+ # Russian board example:
21
+ - forum: http://localhost/forum-ru/
22
+ user: username
23
+ pass: password
24
+ find: Найти все темы, созданные
25
+ stats: Показать всю статистику
26
+ up: Поднять тему!
data/lib/autoup.rb CHANGED
@@ -1,17 +1,3 @@
1
- # Copyright 2014 Vasily Korytov
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
1
  require 'selenium-webdriver'
16
2
  require 'yaml'
17
3
 
@@ -23,78 +9,99 @@ require 'yaml'
23
9
  #
24
10
  # Offline copies of README and example config are also included in this gem.
25
11
  class AutoUp
26
- # Launches AutoUp (specify the config file to override the default)
12
+ # Read config file and launch AutoUp (specify the config file to override the default).
27
13
  def initialize(yml = File.expand_path('~/.config/autoup.yml'))
28
14
  begin
29
15
  config = YAML.load_file(yml)
30
16
  rescue Errno::ENOENT
31
- puts('ERROR: no configuration file at `~/.config/autoup.yml`. Example:')
32
- puts('https://github.com/chillum/autoup/blob/master/examples/autoup.yml')
17
+ puts("ERROR: no configuration file at #{yml}. Example:")
18
+ puts_url
33
19
  return
34
20
  end
35
21
  config.each { |cfg|
36
- # Required settings
37
- unless cfg['forum']
38
- puts('ERROR: `forum` attribute is required')
39
- next
40
- end
41
- unless cfg['user']
42
- puts('ERROR: `user` attribute is required')
43
- next
44
- end
45
- unless cfg['pass']
46
- puts('ERROR: `pass` attribute is required')
47
- next
48
- end
49
- # Optional settings
50
- cfg['timeout'] ||= 5
51
- cfg['find'] ||= 'Find all threads started by'
52
- cfg['stats'] ||= 'Show All Statistics'
53
- cfg['up'] ||= 'Bump the thread!'
22
+ launch(cfg)
23
+ }
24
+ end
54
25
 
55
- web = Selenium::WebDriver.for :firefox
56
- begin
57
- web.manage.timeouts.implicit_wait = cfg['timeout']
58
- web.get(cfg['forum'])
26
+ # Launch the AutoUp process.
27
+ def launch(cfg)
28
+ # Required settings
29
+ unless cfg['forum']
30
+ puts_required('forum')
31
+ return
32
+ end
33
+ unless cfg['user']
34
+ puts_required('user')
35
+ return
36
+ end
37
+ unless cfg['pass']
38
+ puts_required('pass')
39
+ return
40
+ end
41
+ # Optional settings
42
+ cfg['timeout'] ||= 5
43
+ cfg['find'] ||= 'Find all threads started by'
44
+ cfg['stats'] ||= 'Show All Statistics'
45
+ cfg['up'] ||= 'Bump the thread!'
46
+
47
+ web = Selenium::WebDriver.for :firefox
48
+ begin
49
+ browse(web, cfg)
50
+ ensure
51
+ web.quit
52
+ end
53
+ end
59
54
 
60
- begin
61
- web.find_element(:name, 'vb_login_username').send_keys(cfg['user'])
62
- rescue Selenium::WebDriver::Error::NoSuchElementError
63
- puts("ERROR: unable to load #{cfg['forum']} (does not load or does not contain vb_login_username)")
64
- next
65
- end
55
+ # Process a forum board.
56
+ def browse(web, cfg)
57
+ web.manage.timeouts.implicit_wait = cfg['timeout']
58
+ web.get(cfg['forum'])
66
59
 
67
- login = web.find_element(:name, 'vb_login_password')
68
- login.send_keys(cfg['pass'])
69
- login.submit
60
+ begin
61
+ web.find_element(:name, 'vb_login_username').send_keys(cfg['user'])
62
+ rescue Selenium::WebDriver::Error::NoSuchElementError
63
+ puts("ERROR: unable to load #{cfg['forum']} (does not load or does not contain vb_login_username)")
64
+ return
65
+ end
70
66
 
71
- begin
72
- web.find_element(:link, cfg['user']).click
73
- rescue Selenium::WebDriver::Error::NoSuchElementError
74
- puts("ERROR: unable to login as #{cfg['user']} on #{cfg['forum']}")
75
- next
76
- end
67
+ login = web.find_element(:name, 'vb_login_password')
68
+ login.send_keys(cfg['pass'])
69
+ login.submit
77
70
 
78
- web.find_element(:link, cfg['stats']).click
79
- web.find_element(:link, "#{cfg['find']} #{cfg['user']}").click
71
+ begin
72
+ web.find_element(:link, cfg['user']).click
73
+ rescue Selenium::WebDriver::Error::NoSuchElementError
74
+ puts("ERROR: unable to login as #{cfg['user']} on #{cfg['forum']}")
75
+ return
76
+ end
80
77
 
81
- links = []
82
- web.find_elements(:css, 'a[id ^= "thread_title_"]').each { |link|
83
- links.push link.attribute('href')
84
- }
78
+ web.find_element(:link, cfg['stats']).click
79
+ web.find_element(:link, "#{cfg['find']} #{cfg['user']}").click
85
80
 
86
- links.each { |link|
87
- web.get(link)
88
- begin
89
- web.find_element(:css, "input[value = '#{cfg['up']}']").click
90
- puts("UP: #{link}")
91
- rescue Selenium::WebDriver::Error::NoSuchElementError
92
- puts("SKIP: #{link}")
93
- end
94
- }
95
- ensure
96
- web.quit
81
+ links = []
82
+ web.find_elements(:css, 'a[id ^= "thread_title_"]').each { |link|
83
+ links.push link.attribute('href')
84
+ }
85
+
86
+ links.each { |link|
87
+ web.get(link)
88
+ begin
89
+ web.find_element(:css, "input[value = '#{cfg['up']}']").click
90
+ puts("UP: #{link}")
91
+ rescue Selenium::WebDriver::Error::NoSuchElementError
92
+ puts("SKIP: #{link}")
97
93
  end
98
94
  }
99
95
  end
96
+
97
+ private
98
+
99
+ def puts_required(arg)
100
+ puts("ERROR: #{arg} attribute is required. Example configuration:")
101
+ puts_url
102
+ end
103
+
104
+ def puts_url
105
+ puts('https://github.com/chillum/autoup/blob/master/examples/autoup.yml')
106
+ end
100
107
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vasily Korytov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-09 00:00:00.000000000 Z
11
+ date: 2015-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -32,9 +32,8 @@ executables:
32
32
  extensions: []
33
33
  extra_rdoc_files: []
34
34
  files:
35
- - LICENSE.txt
35
+ - NOTICE
36
36
  - README.md
37
- - autoup.gemspec
38
37
  - bin/autoup
39
38
  - examples/autoup.yml
40
39
  - lib/autoup.rb
@@ -58,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
57
  version: '0'
59
58
  requirements: []
60
59
  rubyforge_project:
61
- rubygems_version: 2.2.2
60
+ rubygems_version: 2.4.5
62
61
  signing_key:
63
62
  specification_version: 4
64
63
  summary: Selenium robot for auto-bumping vBulletin posts
data/LICENSE.txt DELETED
@@ -1,202 +0,0 @@
1
-
2
- Apache License
3
- Version 2.0, January 2004
4
- http://www.apache.org/licenses/
5
-
6
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
-
8
- 1. Definitions.
9
-
10
- "License" shall mean the terms and conditions for use, reproduction,
11
- and distribution as defined by Sections 1 through 9 of this document.
12
-
13
- "Licensor" shall mean the copyright owner or entity authorized by
14
- the copyright owner that is granting the License.
15
-
16
- "Legal Entity" shall mean the union of the acting entity and all
17
- other entities that control, are controlled by, or are under common
18
- control with that entity. For the purposes of this definition,
19
- "control" means (i) the power, direct or indirect, to cause the
20
- direction or management of such entity, whether by contract or
21
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
- outstanding shares, or (iii) beneficial ownership of such entity.
23
-
24
- "You" (or "Your") shall mean an individual or Legal Entity
25
- exercising permissions granted by this License.
26
-
27
- "Source" form shall mean the preferred form for making modifications,
28
- including but not limited to software source code, documentation
29
- source, and configuration files.
30
-
31
- "Object" form shall mean any form resulting from mechanical
32
- transformation or translation of a Source form, including but
33
- not limited to compiled object code, generated documentation,
34
- and conversions to other media types.
35
-
36
- "Work" shall mean the work of authorship, whether in Source or
37
- Object form, made available under the License, as indicated by a
38
- copyright notice that is included in or attached to the work
39
- (an example is provided in the Appendix below).
40
-
41
- "Derivative Works" shall mean any work, whether in Source or Object
42
- form, that is based on (or derived from) the Work and for which the
43
- editorial revisions, annotations, elaborations, or other modifications
44
- represent, as a whole, an original work of authorship. For the purposes
45
- of this License, Derivative Works shall not include works that remain
46
- separable from, or merely link (or bind by name) to the interfaces of,
47
- the Work and Derivative Works thereof.
48
-
49
- "Contribution" shall mean any work of authorship, including
50
- the original version of the Work and any modifications or additions
51
- to that Work or Derivative Works thereof, that is intentionally
52
- submitted to Licensor for inclusion in the Work by the copyright owner
53
- or by an individual or Legal Entity authorized to submit on behalf of
54
- the copyright owner. For the purposes of this definition, "submitted"
55
- means any form of electronic, verbal, or written communication sent
56
- to the Licensor or its representatives, including but not limited to
57
- communication on electronic mailing lists, source code control systems,
58
- and issue tracking systems that are managed by, or on behalf of, the
59
- Licensor for the purpose of discussing and improving the Work, but
60
- excluding communication that is conspicuously marked or otherwise
61
- designated in writing by the copyright owner as "Not a Contribution."
62
-
63
- "Contributor" shall mean Licensor and any individual or Legal Entity
64
- on behalf of whom a Contribution has been received by Licensor and
65
- subsequently incorporated within the Work.
66
-
67
- 2. Grant of Copyright License. Subject to the terms and conditions of
68
- this License, each Contributor hereby grants to You a perpetual,
69
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
- copyright license to reproduce, prepare Derivative Works of,
71
- publicly display, publicly perform, sublicense, and distribute the
72
- Work and such Derivative Works in Source or Object form.
73
-
74
- 3. Grant of Patent License. Subject to the terms and conditions of
75
- this License, each Contributor hereby grants to You a perpetual,
76
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
- (except as stated in this section) patent license to make, have made,
78
- use, offer to sell, sell, import, and otherwise transfer the Work,
79
- where such license applies only to those patent claims licensable
80
- by such Contributor that are necessarily infringed by their
81
- Contribution(s) alone or by combination of their Contribution(s)
82
- with the Work to which such Contribution(s) was submitted. If You
83
- institute patent litigation against any entity (including a
84
- cross-claim or counterclaim in a lawsuit) alleging that the Work
85
- or a Contribution incorporated within the Work constitutes direct
86
- or contributory patent infringement, then any patent licenses
87
- granted to You under this License for that Work shall terminate
88
- as of the date such litigation is filed.
89
-
90
- 4. Redistribution. You may reproduce and distribute copies of the
91
- Work or Derivative Works thereof in any medium, with or without
92
- modifications, and in Source or Object form, provided that You
93
- meet the following conditions:
94
-
95
- (a) You must give any other recipients of the Work or
96
- Derivative Works a copy of this License; and
97
-
98
- (b) You must cause any modified files to carry prominent notices
99
- stating that You changed the files; and
100
-
101
- (c) You must retain, in the Source form of any Derivative Works
102
- that You distribute, all copyright, patent, trademark, and
103
- attribution notices from the Source form of the Work,
104
- excluding those notices that do not pertain to any part of
105
- the Derivative Works; and
106
-
107
- (d) If the Work includes a "NOTICE" text file as part of its
108
- distribution, then any Derivative Works that You distribute must
109
- include a readable copy of the attribution notices contained
110
- within such NOTICE file, excluding those notices that do not
111
- pertain to any part of the Derivative Works, in at least one
112
- of the following places: within a NOTICE text file distributed
113
- as part of the Derivative Works; within the Source form or
114
- documentation, if provided along with the Derivative Works; or,
115
- within a display generated by the Derivative Works, if and
116
- wherever such third-party notices normally appear. The contents
117
- of the NOTICE file are for informational purposes only and
118
- do not modify the License. You may add Your own attribution
119
- notices within Derivative Works that You distribute, alongside
120
- or as an addendum to the NOTICE text from the Work, provided
121
- that such additional attribution notices cannot be construed
122
- as modifying the License.
123
-
124
- You may add Your own copyright statement to Your modifications and
125
- may provide additional or different license terms and conditions
126
- for use, reproduction, or distribution of Your modifications, or
127
- for any such Derivative Works as a whole, provided Your use,
128
- reproduction, and distribution of the Work otherwise complies with
129
- the conditions stated in this License.
130
-
131
- 5. Submission of Contributions. Unless You explicitly state otherwise,
132
- any Contribution intentionally submitted for inclusion in the Work
133
- by You to the Licensor shall be under the terms and conditions of
134
- this License, without any additional terms or conditions.
135
- Notwithstanding the above, nothing herein shall supersede or modify
136
- the terms of any separate license agreement you may have executed
137
- with Licensor regarding such Contributions.
138
-
139
- 6. Trademarks. This License does not grant permission to use the trade
140
- names, trademarks, service marks, or product names of the Licensor,
141
- except as required for reasonable and customary use in describing the
142
- origin of the Work and reproducing the content of the NOTICE file.
143
-
144
- 7. Disclaimer of Warranty. Unless required by applicable law or
145
- agreed to in writing, Licensor provides the Work (and each
146
- Contributor provides its Contributions) on an "AS IS" BASIS,
147
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
- implied, including, without limitation, any warranties or conditions
149
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
- PARTICULAR PURPOSE. You are solely responsible for determining the
151
- appropriateness of using or redistributing the Work and assume any
152
- risks associated with Your exercise of permissions under this License.
153
-
154
- 8. Limitation of Liability. In no event and under no legal theory,
155
- whether in tort (including negligence), contract, or otherwise,
156
- unless required by applicable law (such as deliberate and grossly
157
- negligent acts) or agreed to in writing, shall any Contributor be
158
- liable to You for damages, including any direct, indirect, special,
159
- incidental, or consequential damages of any character arising as a
160
- result of this License or out of the use or inability to use the
161
- Work (including but not limited to damages for loss of goodwill,
162
- work stoppage, computer failure or malfunction, or any and all
163
- other commercial damages or losses), even if such Contributor
164
- has been advised of the possibility of such damages.
165
-
166
- 9. Accepting Warranty or Additional Liability. While redistributing
167
- the Work or Derivative Works thereof, You may choose to offer,
168
- and charge a fee for, acceptance of support, warranty, indemnity,
169
- or other liability obligations and/or rights consistent with this
170
- License. However, in accepting such obligations, You may act only
171
- on Your own behalf and on Your sole responsibility, not on behalf
172
- of any other Contributor, and only if You agree to indemnify,
173
- defend, and hold each Contributor harmless for any liability
174
- incurred by, or claims asserted against, such Contributor by reason
175
- of your accepting any such warranty or additional liability.
176
-
177
- END OF TERMS AND CONDITIONS
178
-
179
- APPENDIX: How to apply the Apache License to your work.
180
-
181
- To apply the Apache License to your work, attach the following
182
- boilerplate notice, with the fields enclosed by brackets "[]"
183
- replaced with your own identifying information. (Don't include
184
- the brackets!) The text should be enclosed in the appropriate
185
- comment syntax for the file format. We also recommend that a
186
- file or class name and description of purpose be included on the
187
- same "printed page" as the copyright notice for easier
188
- identification within third-party archives.
189
-
190
- Copyright [yyyy] [name of copyright owner]
191
-
192
- Licensed under the Apache License, Version 2.0 (the "License");
193
- you may not use this file except in compliance with the License.
194
- You may obtain a copy of the License at
195
-
196
- http://www.apache.org/licenses/LICENSE-2.0
197
-
198
- Unless required by applicable law or agreed to in writing, software
199
- distributed under the License is distributed on an "AS IS" BASIS,
200
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
- See the License for the specific language governing permissions and
202
- limitations under the License.
data/autoup.gemspec DELETED
@@ -1,13 +0,0 @@
1
- Gem::Specification.new do |s|
2
- s.name = 'autoup'
3
- s.version = '0.9.3'
4
- s.summary = 'Selenium robot for auto-bumping vBulletin posts'
5
- s.description = "Logs in onto vBulletin forum boards, finds all user's threads and bumps all the posts"
6
- s.homepage = 'https://github.com/chillum/autoup'
7
- s.license = 'Apache-2.0'
8
- s.author = 'Vasily Korytov'
9
- s.email = 'vasily.korytov@yahoo.com'
10
- s.files = ['LICENSE.txt', 'README.md', 'examples/autoup.yml', 'autoup.gemspec', 'lib/autoup.rb']
11
- s.executables << 'autoup'
12
- s.add_dependency 'selenium-webdriver', '~> 2.43'
13
- end