sock 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: []