sock 0.0.2
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/.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: []
|