sock 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +29 -0
- data/lib/sock.rb +90 -0
- data/sock.gemspec +19 -0
- metadata +67 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c143687471870f9078fabbcbf7d2564e5fe8a506
|
4
|
+
data.tar.gz: dc50e2824d0824afbdeaa96a396a5d865a25957a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 50a8ac9020500d24482847bba2d7de71c2411c01aecc3214d161d282980f3b0703b3c67373a52fe79ea653c94ee750012b806d55671e20b6796804db20eee44b
|
7
|
+
data.tar.gz: 445f68b0f355f7965b6db7d56e0692d64ea6ed46e2e5482661c7c3a802f29d9867b82c5a2cf19a254e63ee8366e4abde1b3160b573456db2425a89a99d6b7fdb
|
data/.gitignore
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
results.html
|
2
|
+
pkg
|
3
|
+
html
|
4
|
+
|
5
|
+
*.gem
|
6
|
+
*.rbc
|
7
|
+
.bundle
|
8
|
+
.config
|
9
|
+
coverage
|
10
|
+
InstalledFiles
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
|
19
|
+
# YARD artifacts
|
20
|
+
.yardoc
|
21
|
+
_yardoc
|
22
|
+
doc/
|
23
|
+
|
24
|
+
## generic files to ignore
|
25
|
+
*~
|
26
|
+
*.lock
|
27
|
+
*.DS_Store
|
28
|
+
*.swp
|
29
|
+
*.out
|
data/lib/sock.rb
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'socket'
|
2
|
+
require 'colorize'
|
3
|
+
|
4
|
+
##
|
5
|
+
# Sock is a helper class for using tcp sockets in an easily debuggable way.
|
6
|
+
#
|
7
|
+
class Sock
|
8
|
+
## Constructor
|
9
|
+
|
10
|
+
def initialize(host, port, debug = false)
|
11
|
+
@sock = TCPSocket.new host, port
|
12
|
+
@debug = debug
|
13
|
+
end
|
14
|
+
|
15
|
+
## Methods
|
16
|
+
|
17
|
+
def write(str)
|
18
|
+
print str.magenta if @debug
|
19
|
+
@sock.write(str)
|
20
|
+
end
|
21
|
+
|
22
|
+
def writeline(str)
|
23
|
+
send(str + "\n")
|
24
|
+
end
|
25
|
+
|
26
|
+
alias_method :send, :write
|
27
|
+
alias_method :sendline, :writeline
|
28
|
+
|
29
|
+
alias_method :put, :write
|
30
|
+
alias_method :putline, :writeline
|
31
|
+
|
32
|
+
def read(nbytes)
|
33
|
+
msg = @sock.recv nbytes
|
34
|
+
print msg.cyan if @debug
|
35
|
+
msg
|
36
|
+
end
|
37
|
+
|
38
|
+
def readline
|
39
|
+
msg = @sock.readline
|
40
|
+
print msg.cyan if @debug
|
41
|
+
msg
|
42
|
+
end
|
43
|
+
|
44
|
+
alias_method :recv, :read
|
45
|
+
alias_method :recvline, :readline
|
46
|
+
|
47
|
+
alias_method :get, :read
|
48
|
+
alias_method :getline, :readline
|
49
|
+
|
50
|
+
def go_interactive
|
51
|
+
loop do
|
52
|
+
return unless write_out
|
53
|
+
return unless read_in
|
54
|
+
IO.select([@sock, STDIN], [], [@sock, STDIN])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def write_out(data = nil)
|
59
|
+
STDOUT.write(data) while (data = @sock.read_nonblock(100)) != ''
|
60
|
+
return false
|
61
|
+
rescue Errno::EAGAIN
|
62
|
+
return true
|
63
|
+
rescue EOFError
|
64
|
+
@sock.close
|
65
|
+
return false
|
66
|
+
end
|
67
|
+
private :write_out
|
68
|
+
|
69
|
+
def read_in(data = nil)
|
70
|
+
@sock.write(data) while (data = STDIN.read_nonblock(100)) != ''
|
71
|
+
return true
|
72
|
+
rescue Errno::EAGAIN
|
73
|
+
return true
|
74
|
+
rescue EOFError
|
75
|
+
return false
|
76
|
+
end
|
77
|
+
private :read_in
|
78
|
+
|
79
|
+
def close
|
80
|
+
@sock.close
|
81
|
+
end
|
82
|
+
|
83
|
+
## Static
|
84
|
+
|
85
|
+
def self.connect(host, port, debug = false)
|
86
|
+
s = Sock.new(host, port, debug)
|
87
|
+
yield s
|
88
|
+
s.close
|
89
|
+
end
|
90
|
+
end
|
data/sock.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Gem::Specification.new do |gem|
|
2
|
+
gem.authors = ['Jake M']
|
3
|
+
gem.email = ['jakemaskiewicz@gmail.com']
|
4
|
+
gem.description = 'Sock is a socket utility library.'
|
5
|
+
gem.summary = 'a socket utility library'
|
6
|
+
gem.homepage = 'https://github.com/jakemask/sock'
|
7
|
+
|
8
|
+
gem.files = `git ls-files`.lines.map(&:strip)
|
9
|
+
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
10
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
11
|
+
|
12
|
+
gem.name = 'sock'
|
13
|
+
gem.require_paths = ['lib']
|
14
|
+
|
15
|
+
gem.version = '0.0.2'
|
16
|
+
gem.license = 'MIT'
|
17
|
+
|
18
|
+
gem.add_dependency('colorize', '~> 0.7', '>= 0.7.7')
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sock
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jake M
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: colorize
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.7'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.7.7
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.7'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.7.7
|
33
|
+
description: Sock is a socket utility library.
|
34
|
+
email:
|
35
|
+
- jakemaskiewicz@gmail.com
|
36
|
+
executables: []
|
37
|
+
extensions: []
|
38
|
+
extra_rdoc_files: []
|
39
|
+
files:
|
40
|
+
- ".gitignore"
|
41
|
+
- lib/sock.rb
|
42
|
+
- sock.gemspec
|
43
|
+
homepage: https://github.com/jakemask/sock
|
44
|
+
licenses:
|
45
|
+
- MIT
|
46
|
+
metadata: {}
|
47
|
+
post_install_message:
|
48
|
+
rdoc_options: []
|
49
|
+
require_paths:
|
50
|
+
- lib
|
51
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
requirements: []
|
62
|
+
rubyforge_project:
|
63
|
+
rubygems_version: 2.2.2
|
64
|
+
signing_key:
|
65
|
+
specification_version: 4
|
66
|
+
summary: a socket utility library
|
67
|
+
test_files: []
|