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 +2 -0
- data/bin/minep-request +42 -14
- data/lib/minep-request/minep.rb +6 -1
- data/lib/minep-request/requests.rb +64 -46
- data/lib/minep-request/version.rb +1 -1
- data/minep-request.gemspec +1 -1
- metadata +6 -6
data/.gitignore
CHANGED
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
|
-
|
90
|
-
|
91
|
-
if $
|
92
|
-
|
93
|
-
|
94
|
-
|
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
|
data/lib/minep-request/minep.rb
CHANGED
@@ -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
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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"]
|
data/minep-request.gemspec
CHANGED
@@ -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
|
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.
|
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-
|
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
|
21
|
+
version: 0.1.0
|
22
22
|
- - ! '>='
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 0.0
|
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
|
32
|
+
version: 0.1.0
|
33
33
|
- - ! '>='
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0.0
|
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
|
|