moss_ruby 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/moss_ruby.rb +27 -8
  3. metadata +68 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ede898a27039418a249e377bbefcb25b31dfc8c5
4
- data.tar.gz: ff6da3353d78254d07b39bdb28a1cc3f976e7f49
2
+ SHA256:
3
+ metadata.gz: 78627675df04c3b8c8a178e690f2c64f3f8588f451541dfd348b9fc0d4377ab5
4
+ data.tar.gz: 6f6c14edc678829dcf1a8b28ed1494ae64bfc0f5be0902ac9976b84ddc201e92
5
5
  SHA512:
6
- metadata.gz: 2e44f5f1cefa7a02abf4935da2101ee1ca2d3e53875b4f8cfdb902cfbc6d8994f43562b47b2ff856ad23561e9134536030c87d3f5aa3785a64b92f26f021a9df
7
- data.tar.gz: d1d3173ace55411467830c4b9f0bd560e96e0d6928b0ab8efc8cb67c5b18a750fdd5018e29defccd3ac39f067793ba4e2d3a6610f632d948490acd741ccae9a1
6
+ metadata.gz: 9e46b7f5ca7d20c833a6e3d8729a53611392f86379ac71c1de9c9695088f870ba7a651169ac9d5bb5a85a71500382404c0467babad16be7da32292c2a99d78d9
7
+ data.tar.gz: cb30039ddb1641f4b2c860021402497846e1e2dcd713417794a3987c9cf495a6079d45f442c33662770ca5de4d7638b95cf2015778ec56124bc19a6f21543e2b
data/lib/moss_ruby.rb CHANGED
@@ -20,7 +20,7 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
- require 'socket'
23
+ require 'tcp_timeout'
24
24
  require 'open-uri'
25
25
 
26
26
  #
@@ -92,7 +92,7 @@ class MossRuby
92
92
 
93
93
  # Connect to the server
94
94
  callback.call('Connecting to MOSS') unless callback.nil?
95
- moss_server = TCPSocket.new @server, @port
95
+ moss_server = TCPTimeout::TCPSocket.new @server, @port, connect_timeout: 10, write_timeout: 9, read_timeout: 300
96
96
  begin
97
97
  # Send header details
98
98
  callback.call(' - Sending configuration details') unless callback.nil?
@@ -106,7 +106,7 @@ class MossRuby
106
106
  moss_server.write "language #{@options[:language]}\n"
107
107
 
108
108
  callback.call(' - Checking language') unless callback.nil?
109
- line = moss_server.gets
109
+ line = gets(moss_server)
110
110
  if line.strip() != "yes"
111
111
  moss_server.write "end\n"
112
112
  raise "Invalid language option."
@@ -144,7 +144,7 @@ class MossRuby
144
144
  callback.call(" - Waiting for server response") unless callback.nil?
145
145
  moss_server.write "query 0 #{@options[:comment]}\n"
146
146
 
147
- result = moss_server.gets
147
+ result = gets(moss_server)
148
148
 
149
149
  moss_server.write "end\n"
150
150
  return result.strip()
@@ -166,7 +166,7 @@ class MossRuby
166
166
 
167
167
  # read the two match files
168
168
  match_url = "#{uri}/match#{id}-top.html"
169
- match_top = open(match_url).read().encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '?')
169
+ match_top = URI.open(match_url).read().encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '?')
170
170
 
171
171
  callback.call(" - checking match #{match} percents") unless callback.nil?
172
172
  top = read_pcts match_top
@@ -175,8 +175,8 @@ class MossRuby
175
175
 
176
176
  callback.call(" - fetching #{match} html") unless callback.nil?
177
177
 
178
- match_file[0] = open("#{uri}/match#{id}-0.html").read().encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '?')
179
- match_file[1] = open("#{uri}/match#{id}-1.html").read().encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '?')
178
+ match_file[0] = URI.open("#{uri}/match#{id}-0.html").read().encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '?')
179
+ match_file[1] = URI.open("#{uri}/match#{id}-1.html").read().encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '?')
180
180
 
181
181
  # puts match_top
182
182
  # puts "---FILE0\n\n"
@@ -220,7 +220,7 @@ class MossRuby
220
220
  result = Array.new
221
221
  begin
222
222
  callback.call(" - Reading match data") unless callback.nil?
223
- page = open("#{uri}").read().encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '?')
223
+ page = URI.open("#{uri}").read().encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '?')
224
224
  regex = /<TR><TD><A HREF=".*?match(?<match_id>\d+).html">.*\((?<pct0>\d+)%\)<\/A>\n.*?<TD><A.*?((?<pct0>\d+)%\))/i
225
225
  # puts "scanning page"
226
226
  page.scan(regex).each do | match |
@@ -249,4 +249,23 @@ class MossRuby
249
249
  regex = /<TH>(?<filename0>\S+)\s\((?<pct0>\d+)%\).*<TH>(?<filename1>\S+)\s\((?<pct1>\d+)%\)/xm
250
250
  top_file.match(regex)
251
251
  end
252
+
253
+ ##
254
+ # Reads a line from the server.
255
+ def gets moss_server
256
+ buffer = ""
257
+
258
+ loop do
259
+ tmp = moss_server.read(1)
260
+
261
+ if !tmp.nil?
262
+ buffer += tmp
263
+ end
264
+
265
+ break if tmp.nil? || tmp.include?("\n")
266
+ tmp = ''
267
+ end
268
+
269
+ return buffer.gsub(/\n/, '')
270
+ end
252
271
  end
metadata CHANGED
@@ -1,45 +1,101 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moss_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Cain
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-07 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2022-05-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: tcp_timeout
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '13.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.11'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.11'
13
69
  description: Moss-ruby is an unofficial ruby gem for the Moss system for Detecting
14
70
  Software Plagiarism (http://theory.stanford.edu/~aiken/moss/)
15
- email: acain@swin.edu.au
71
+ email:
72
+ - macite@gmail.com
16
73
  executables: []
17
74
  extensions: []
18
75
  extra_rdoc_files: []
19
76
  files:
20
77
  - lib/moss_ruby.rb
21
- homepage: https://bitbucket.org/macite/moss-ruby
78
+ homepage: https://github.com/doubtfire-lms/moss-ruby
22
79
  licenses:
23
80
  - MIT
24
81
  metadata: {}
25
- post_install_message:
82
+ post_install_message:
26
83
  rdoc_options: []
27
84
  require_paths:
28
85
  - lib
29
86
  required_ruby_version: !ruby/object:Gem::Requirement
30
87
  requirements:
31
- - - '>='
88
+ - - ">="
32
89
  - !ruby/object:Gem::Version
33
90
  version: '0'
34
91
  required_rubygems_version: !ruby/object:Gem::Requirement
35
92
  requirements:
36
- - - '>='
93
+ - - ">="
37
94
  - !ruby/object:Gem::Version
38
95
  version: '0'
39
96
  requirements: []
40
- rubyforge_project:
41
- rubygems_version: 2.0.14
42
- signing_key:
97
+ rubygems_version: 3.3.7
98
+ signing_key:
43
99
  specification_version: 4
44
100
  summary: Moss gem to access system for Detecting Software Plagiarism
45
101
  test_files: []