gmassbot 1.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 +7 -0
- data/lib/gmassbot.rb +130 -0
- metadata +164 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9198e6b7a6b479f22963e314f8810405fbf348a382b0001f55c73478aa309bdd
|
4
|
+
data.tar.gz: 7488a3d9f4343dd24f83f11357606bb4c5cabeba5875146b696c6d750f54d547
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5bf13844eb8450b72155f3aacd7e6f993591cca87da87825a3e415730821995d0ecf7a0932bd6c268c664c74559222cad99bb9bf93d8a291e2352ca4493b57f7
|
7
|
+
data.tar.gz: dd94d8457b9151856ed32f903bf210c8b4da48fa3a05e357b80f9025cc5cc0d3d6fdd2ef6356865d8cc84f6f7f683e9d2a4a7371a6d876a1c9ac0d57c962a3d6
|
data/lib/gmassbot.rb
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'blackstack-core'
|
2
|
+
require 'blackstack-deployer'
|
3
|
+
require 'simple_command_line_parser'
|
4
|
+
require 'simple_cloud_logging'
|
5
|
+
require 'mechanize'
|
6
|
+
require 'colorize'
|
7
|
+
require 'pry'
|
8
|
+
|
9
|
+
module BlackStack
|
10
|
+
module Bots
|
11
|
+
class GMass
|
12
|
+
TEST_ADDRESSES = 'ajay.silicomm@gmail.com, ajaygoel999@gmail.com, ajay@parttimesnob.com, test@chromecompete.com, test@ajaygoel.org, me@dropboxslideshow.com, test@wordzen.com, rajgoel8477@gmail.com, briansmith8477@gmail.com, ajay@madsciencekidz.com, ajay2@ctopowered.com, ajay@arena.tec.br, ajay@smallbizdevgroup.com'.split(', ').map(&:strip)
|
13
|
+
|
14
|
+
@@permanent_driver = nil
|
15
|
+
|
16
|
+
def self.init(l=nil)
|
17
|
+
l = BlackStack::DummyLogger.new(nil) if l.nil?
|
18
|
+
|
19
|
+
raise 'Driver already exists' if @@permanent_driver != nil
|
20
|
+
|
21
|
+
l.logs 'Starting chrome... '
|
22
|
+
@@permanent_driver = Selenium::WebDriver.for :chrome
|
23
|
+
l.done
|
24
|
+
|
25
|
+
@@permanent_driver
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.finalize(l=nil)
|
29
|
+
l = BlackStack::DummyLogger.new(nil) if l.nil?
|
30
|
+
|
31
|
+
raise 'Driver not exists' if @@permanent_driver.nil?
|
32
|
+
|
33
|
+
l.logs 'Finalizing chrome... '
|
34
|
+
@@permanent_driver.quit
|
35
|
+
l.done
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.check(keyword, l=nil)
|
39
|
+
l = BlackStack::DummyLogger.new(nil) if l.nil?
|
40
|
+
res = []
|
41
|
+
using_permanent_driver = (@@permanent_driver != nil)
|
42
|
+
|
43
|
+
l.logs 'Checking driver... '
|
44
|
+
driver = @@permanent_driver if using_permanent_driver
|
45
|
+
driver = self.init(l) unless using_permanent_driver
|
46
|
+
l.done
|
47
|
+
|
48
|
+
driver.navigate.to "https://www.gmass.co/inbox?q=#{keyword}"
|
49
|
+
|
50
|
+
l.logs 'Starting chrome... '
|
51
|
+
driver.navigate.to "https://www.gmass.co/inbox?q=#{keyword}"
|
52
|
+
l.done
|
53
|
+
|
54
|
+
l.logs "Creating wait object... "
|
55
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
56
|
+
l.done
|
57
|
+
|
58
|
+
l.logs 'Getting results... '
|
59
|
+
divs = driver.find_elements(:class, "table-wrap")
|
60
|
+
l.logf divs.size.to_s.green
|
61
|
+
|
62
|
+
i = 0
|
63
|
+
divs.each { |div|
|
64
|
+
i += 1
|
65
|
+
l.log ''
|
66
|
+
l.logs "#{i}... "
|
67
|
+
table = div.find_element(:class, "result-table")
|
68
|
+
tr = table.find_elements(:tag_name, "tr").first
|
69
|
+
td = tr.find_elements(:tag_name=>"td", :class=>'card-address').first
|
70
|
+
test_name = td.text.gsub("\n", ' - ').gsub("\r", ' - ').strip
|
71
|
+
l.logf test_name.blue
|
72
|
+
|
73
|
+
# wait until a second td appears
|
74
|
+
l.logs 'Loading result... '
|
75
|
+
lis = tr.find_elements(:tag_name=>"li")
|
76
|
+
begin
|
77
|
+
wait.until { lis.size > 0 }
|
78
|
+
l.logf lis.size.to_s.green
|
79
|
+
|
80
|
+
# get the first li
|
81
|
+
l.logs 'Getting first li... '
|
82
|
+
li = lis.first
|
83
|
+
l.done
|
84
|
+
|
85
|
+
# get the .from span
|
86
|
+
l.logs 'Getting from span... '
|
87
|
+
from = li.find_element(:class, "from").text
|
88
|
+
l.logf from.blue
|
89
|
+
|
90
|
+
# get the time and result
|
91
|
+
l.logs 'Getting time and result... '
|
92
|
+
time = li.find_element(:class, "time").text
|
93
|
+
l.logf time.blue
|
94
|
+
|
95
|
+
l.logs 'Getting result... '
|
96
|
+
result = li.find_element(:class=>'result-label').text
|
97
|
+
l.logf result.to_s.upcase == 'Spam'.upcase ? result.red : result.green
|
98
|
+
|
99
|
+
res << {
|
100
|
+
:test_name => test_name,
|
101
|
+
:from => from,
|
102
|
+
:time => time,
|
103
|
+
:result => result
|
104
|
+
}
|
105
|
+
|
106
|
+
rescue Selenium::WebDriver::Error::TimeoutError => e
|
107
|
+
l.logf '0'.red
|
108
|
+
res << {
|
109
|
+
:test_name => test_name,
|
110
|
+
:from => nil,
|
111
|
+
:time => nil,
|
112
|
+
:result => nil
|
113
|
+
}
|
114
|
+
end
|
115
|
+
}
|
116
|
+
|
117
|
+
l.logs 'Closing chrome... '
|
118
|
+
unless using_permanent_driver
|
119
|
+
driver.quit
|
120
|
+
l.done
|
121
|
+
else
|
122
|
+
l.no
|
123
|
+
end
|
124
|
+
|
125
|
+
res
|
126
|
+
end # def self.check
|
127
|
+
|
128
|
+
end # class GMass
|
129
|
+
end # module Bots
|
130
|
+
end
|
metadata
ADDED
@@ -0,0 +1,164 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gmassbot
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Leandro Daniel Sardi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-06-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: blackstack-core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.2.3
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.2.3
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.2.3
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.2.3
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: simple_cloud_logging
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 1.2.2
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 1.2.2
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 1.2.2
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 1.2.2
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: colorize
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 0.8.1
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.8.1
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.8.1
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 0.8.1
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: selenium-webdriver
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 4.10.0
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 4.10.0
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 4.10.0
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 4.10.0
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: test-unit
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 3.5.3
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 3.5.3
|
103
|
+
type: :runtime
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 3.5.3
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 3.5.3
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: pry
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 0.14.2
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 0.14.2
|
123
|
+
type: :runtime
|
124
|
+
prerelease: false
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: 0.14.2
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 0.14.2
|
133
|
+
description: 'Find documentation here: https://github.com/leandrosardi/gmassbot'
|
134
|
+
email: leandro.sardi@expandedventure.com
|
135
|
+
executables: []
|
136
|
+
extensions: []
|
137
|
+
extra_rdoc_files: []
|
138
|
+
files:
|
139
|
+
- lib/gmassbot.rb
|
140
|
+
homepage: https://rubygems.org/gems/gmassbot
|
141
|
+
licenses:
|
142
|
+
- MIT
|
143
|
+
metadata: {}
|
144
|
+
post_install_message:
|
145
|
+
rdoc_options: []
|
146
|
+
require_paths:
|
147
|
+
- lib
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
requirements: []
|
159
|
+
rubygems_version: 3.3.7
|
160
|
+
signing_key:
|
161
|
+
specification_version: 4
|
162
|
+
summary: Ruby library for automation operation on the GMass Deliverability Test and
|
163
|
+
Spam Checker.
|
164
|
+
test_files: []
|