minep-request 0.0.6 → 0.0.7

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.
data/.gitignore CHANGED
@@ -14,6 +14,8 @@ test/version_tmp
14
14
  tmp
15
15
  archives
16
16
  *-debug.rb
17
+ .rvmrc
18
+ Gemfile.lock
17
19
 
18
20
  # YARD artifacts
19
21
  .yardoc
data/bin/minep-request CHANGED
@@ -5,6 +5,8 @@ require 'socket'
5
5
  require 'WEBSocket'
6
6
  require 'minep-request'
7
7
 
8
+ $buflist = {}
9
+
8
10
  $options = {
9
11
  :host => "localhost",
10
12
  :port => 8080,
@@ -15,17 +17,25 @@ $goon = true
15
17
  $commands = {
16
18
  "authenticate" => Proc.new { |s| Minep::Request.authenticate s},
17
19
  "signup" => Proc.new { |s| Minep::Request.signup s},
18
- "exec" => Proc.new { |s| Minep::Request.exec s},
19
- "insert" => Proc.new { |s| Minep::Request.insert s},
20
- "move" => Proc.new { |s| Minep::Request.move s},
21
- "backspace" => Proc.new { |s| Minep::Request.backspace s},
22
- "delete" => Proc.new { |s| Minep::Request.delete s},
23
- "load" => Proc.new { |s| Minep::Request.load s, $options[:type]},
20
+ "exec" => Proc.new { |s| Minep::Request.exec s, $buflist},
21
+ "insert" => Proc.new { |s| Minep::Request.insert s, $buflist},
22
+ "move" => Proc.new { |s| Minep::Request.move s, $buflist},
23
+ "backspace" => Proc.new { |s| Minep::Request.backspace s, $buflist},
24
+ "delete" => Proc.new { |s| Minep::Request.delete s, $buflist},
25
+ "load" => Proc.new { |s| Minep::Request.load s, $options[:type], $buflist},
26
+ "list" => Proc.new { |s| list s},
24
27
  "help" => Proc.new { |s| help s},
25
28
  "exit" => Proc.new { |s| quit s},
26
29
  "quit" => Proc.new { |s| quit s}
27
30
  }
28
31
 
32
+ def list socket = nil
33
+ puts "Buffers are :"
34
+ $buflist.each_key do |buf|
35
+ puts buf
36
+ end
37
+ end
38
+
29
39
  def quit socket = nil
30
40
  $goon = false
31
41
  puts "Exiting"
@@ -86,14 +96,32 @@ end
86
96
 
87
97
  while $goon do
88
98
  printf ">> "
89
- begin
90
- cmd = Minep.read
91
- if $commands.key? cmd
92
- $commands[cmd].call socket
93
- else
94
- $stderr.puts "Error : unknown command"
99
+ rs = select [$stdin, socket]
100
+ rs.each do |r, w, e|
101
+ if r == $stdin
102
+ begin
103
+ cmd = Minep.read
104
+ if $commands.key? cmd
105
+ $commands[cmd].call socket
106
+ else
107
+ $stderr.puts "Error : unknown command"
108
+ end
109
+ rescue EOFError
110
+ quit
111
+ end
112
+ elsif r == socket
113
+ begin
114
+ str = socket.readpartial 4096
115
+ rescue EOFError
116
+ puts ""
117
+ quit
118
+ end
119
+ if str.nil?
120
+ quit
121
+ else
122
+ tab = str.strip.split
123
+ puts "/!\\ Received a message from server :\n\t#{str.strip}"
124
+ end
95
125
  end
96
- rescue EOFError
97
- quit
98
126
  end
99
127
  end
@@ -4,7 +4,7 @@ module Minep
4
4
  input = input.strip
5
5
  end
6
6
 
7
- def self.makeMsg request, args
7
+ def self.makeMsg request, args, buflist = nil
8
8
  args.each_key do |k|
9
9
  if k == :args
10
10
  printf "#{k} as a space-separated list : "
@@ -21,6 +21,11 @@ module Minep
21
21
  args[k] = read
22
22
  end
23
23
  end
24
+ if buflist and args[:buffer]
25
+ bufferName = args[:buffer]
26
+ args[:buffer] = buflist[bufferName]
27
+ return $stderr.puts "Error : This buffer doesn't exists" if args[:buffer].nil?
28
+ end
24
29
  args["id"] = SecureRandom.uuid
25
30
  "#{request.upcase}=#{JSON.dump args}"
26
31
  end
@@ -31,6 +31,23 @@ module Minep
31
31
  CommandsInfo
32
32
  end
33
33
 
34
+ def self.sendFile port, path, type
35
+ file = File.new path
36
+ content = file.read
37
+ file.close
38
+ server = nil
39
+ if type == :tcp
40
+ server = TCPServer.new "0.0.0.0", port
41
+ elsif type == :websocket
42
+ server = WEBSocket::Server.new "0.0.0.0", port
43
+ end
44
+ socket = server.accept
45
+ socket.write content
46
+ socket.shutdown :RDWR
47
+ socket.close
48
+ server.close
49
+ end
50
+
34
51
  def self.readAndParseResponse request, socket
35
52
  responsetab = socket.readpartial(4096).split '='
36
53
  return $stderr.puts "Error while parsing response"if responsetab[0] != "RESPONSE"
@@ -50,7 +67,7 @@ module Minep
50
67
  response
51
68
  end
52
69
 
53
- def self.load socket, type
70
+ def self.load socket, type, buflist
54
71
  args = {
55
72
  :path => "",
56
73
  :size => 0,
@@ -64,40 +81,27 @@ module Minep
64
81
  printf "port : "
65
82
  args[:port] = Minep.read.to_i
66
83
  args[:id] = SecureRandom.uuid
67
- if File.exist? args[:path]
68
- f = File.new args[:path]
69
- args[:size] = f.size
70
- f.close
71
- Thread.start args[:port], args[:path] do |port, path|
72
- file = File.new args[:path]
73
- content = file.read
74
- file.close
75
- server = nil
76
- if type == :tcp
77
- server = TCPServer.new "0.0.0.0", port
78
- elsif type == :websocket
79
- server = WEBSocket::Server.new "0.0.0.0", port
80
- end
81
- socket = server.accept
82
- socket.write content
83
- socket.shutdown :RDWR
84
- socket.close
85
- server.close
86
- Thread.stop
87
- end
88
- sleep 2
89
- socket.write "LOAD=#{JSON.dump args}"
90
- response = readAndParseResponse "LOAD", socket
91
- return if response.nil?
92
- if response["info"]["uuid"]
93
- puts "Buffer id : #{response["info"]["uuid"]}"
94
- return response["status"]
95
- else
96
- return $stderr.puts "Error while parsing response"
97
- end
98
- else
99
- $stderr.puts "File #{args[:path]} doesn't exists"
84
+ unless File.exist? args[:path]
85
+ return $stderr.puts "File #{args[:path]} doesn't exists"
86
+ end
87
+ f = File.new args[:path]
88
+ args[:size] = f.size
89
+ f.close
90
+ Thread.start args[:port], args[:path], type do |port, path, type|
91
+ sendFile port, path, type
92
+ Thread.stop
100
93
  end
94
+ sleep 2
95
+ socket.write "LOAD=#{JSON.dump args}"
96
+ response = readAndParseResponse "LOAD", socket
97
+ return if response.nil?
98
+ unless response["info"]["uuid"]
99
+ return $stderr.puts "Error while parsing response"
100
+ end
101
+ puts "Buffer id : #{response["info"]["uuid"]}"
102
+ buflist[response["info"]["uuid"]] = response["info"]["uuid"]
103
+ buflist[args[:path]] = response["info"]["uuid"]
104
+ response["status"]
101
105
  end
102
106
 
103
107
  def self.authenticate socket
@@ -105,7 +109,9 @@ module Minep
105
109
  :name => "",
106
110
  :pass => ""
107
111
  }
108
- socket.write Minep.makeMsg("AUTHENTICATE", args)
112
+ ret = Minep.makeMsg("AUTHENTICATE", args)
113
+ return if ret.nil?
114
+ socket.write ret
109
115
  response = readAndParseResponse "AUTHENTICATE", socket
110
116
  return if response.nil?
111
117
  response["status"]
@@ -118,64 +124,76 @@ module Minep
118
124
  :email => "",
119
125
  :website => ""
120
126
  }
121
- socket.write Minep.makeMsg("SIGNUP", args)
127
+ ret = Minep.makeMsg("SIGNUP", args)
128
+ return if ret.nil?
129
+ socket.write ret
122
130
  response = readAndParseResponse "SIGNUP", socket
123
131
  return if response.nil?
124
132
  response["status"]
125
133
  end
126
134
 
127
- def self.exec socket
135
+ def self.exec socket, buflist
128
136
  args = {
129
137
  :buffer => "",
130
138
  :command => "",
131
139
  :args => []
132
140
  }
133
- socket.write Minep.makeMsg("EXEC", args)
141
+ ret = Minep.makeMsg("EXEC", args, buflist)
142
+ return if ret.nil?
143
+ socket.write ret
134
144
  response = readAndParseResponse "EXEC", socket
135
145
  return if response.nil?
136
146
  response["status"]
137
147
  end
138
148
 
139
- def self.insert socket
149
+ def self.insert socket, buflist
140
150
  args = {
141
151
  :buffer => "",
142
152
  :text => ""
143
153
  }
144
- socket.write Minep.makeMsg("INSERT", args)
154
+ ret = Minep.makeMsg("INSERT", args, buflist)
155
+ return if ret.nil?
156
+ socket.write ret
145
157
  response = readAndParseResponse "INSERT", socket
146
158
  return if response.nil?
147
159
  response["status"]
148
160
  end
149
161
 
150
- def self.move socket
162
+ def self.move socket, buflist
151
163
  args = {
152
164
  :buffer => "",
153
165
  :direction => "",
154
166
  :number => 0
155
167
  }
156
- socket.write Minep.makeMsg("MOVE", args)
168
+ ret = Minep.makeMsg("MOVE", args, buflist)
169
+ return if ret.nil?
170
+ socket.write ret
157
171
  response = readAndParseResponse "MOVE", socket
158
172
  return if response.nil?
159
173
  response["status"]
160
174
  end
161
175
 
162
- def self.backspace socket
176
+ def self.backspace socket, buflist
163
177
  args = {
164
178
  :buffer => "",
165
179
  :number => 0
166
180
  }
167
- socket.write Minep.makeMsg("BACKSPACE", args)
181
+ ret = Minep.makeMsg("BACKSPACE", args, buflist)
182
+ return if ret.nil?
183
+ socket.write ret
168
184
  response = readAndParseResponse "BACKSPACE", socket
169
185
  return if response.nil?
170
186
  response["status"]
171
187
  end
172
188
 
173
- def self.delete socket
189
+ def self.delete socket, buflist
174
190
  args = {
175
191
  :buffer => "",
176
192
  :number => 0
177
193
  }
178
- socket.write Minep.makeMsg("DELETE", args)
194
+ ret = Minep.makeMsg("DELETE", args, buflist)
195
+ return if ret.nil?
196
+ socket.write ret
179
197
  response = readAndParseResponse "DELETE", socket
180
198
  return if response.nil?
181
199
  response["status"]
@@ -1,6 +1,6 @@
1
1
  module Minep
2
2
  module Request
3
- VERSION = "0.0.6"
3
+ VERSION = "0.0.7"
4
4
  DATE = Time.now.to_s.split[0]
5
5
  end
6
6
  end
@@ -19,5 +19,5 @@ EOS
19
19
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
20
20
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
21
  gem.require_paths = ["lib"]
22
- gem.add_runtime_dependency 'WEBSocket', '~> 0.0.1', '>= 0.0.1'
22
+ gem.add_runtime_dependency 'WEBSocket', '~> 0.1.0', '>= 0.1.0'
23
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minep-request
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-13 00:00:00.000000000 Z
12
+ date: 2013-01-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: WEBSocket
@@ -18,10 +18,10 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.0.1
21
+ version: 0.1.0
22
22
  - - ! '>='
23
23
  - !ruby/object:Gem::Version
24
- version: 0.0.1
24
+ version: 0.1.0
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,10 +29,10 @@ dependencies:
29
29
  requirements:
30
30
  - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: 0.0.1
32
+ version: 0.1.0
33
33
  - - ! '>='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.0.1
35
+ version: 0.1.0
36
36
  description: ! 'Binary allowing the communication with a MINE server. It support both
37
37
  MINE Protocol over TCP and over WebSocket.
38
38