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.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +29 -0
  3. data/lib/sock.rb +90 -0
  4. data/sock.gemspec +19 -0
  5. metadata +67 -0
@@ -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
@@ -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
@@ -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
@@ -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: []