atome 0.5.6.2.1 → 0.5.6.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 695be1c2b746dd4a424e74ebb28ff18884fb207fb1de1bd8db9ea732b1fd7574
4
- data.tar.gz: 943340100b85b85ebb8c1d1af89801b89204c810452cb16a860ace32b3e47190
3
+ metadata.gz: 5a31a51c4b23141c27202a017b8eda058b7fc25fb7d9bc0b2efd13ddb7eaf252
4
+ data.tar.gz: 30b7d9e1d5fcfbd1bdfa358df8a1c122be32c7fb10825f7bfc470ab8742077cf
5
5
  SHA512:
6
- metadata.gz: 3cb8f32ad5373a51222e70c87261e5c8cc0d05a0038d2087a5e433aeacd08cdeacfb43fc692ac489d18d82a6471ce4bdced8e647cd1e10e97664bcf6c6bbdf4d
7
- data.tar.gz: bf36e8c816ebbd99fc36aee7d4dd94bbb324e1b5caf1017731e598e1423a0524ab55b0e13b060c8d6d67ab0c6cdaa0368b0d93e6d9e9479257bfec890788e6b0
6
+ metadata.gz: 7b85398a923c15fa0ee33f1e96eb56df3938d38c3c938631e9d97f34ff3c0c8628d185573817da9d25474ab3edddb51c76879a91865414d1b1eec31b506f60f9
7
+ data.tar.gz: d84a2f1c53c250e01c70b80b50fef4bcb0ab73687e924715b2d42b27bde2aa18c7d92f8434b5d5d7810fdacf9d5538d04c14f6d15137ab8aee64a29c8f43acd3
@@ -8,8 +8,8 @@ end
8
8
 
9
9
  new({ particle: :message, category: :communication, type: :hash }) do |params, bloc|
10
10
  params = { data: params } unless params.instance_of? Hash
11
- params[:user] = 'dfghg4df5gdfgh654'
12
- params[:pass] = 'gfhkzrhgzr4h98948'
11
+ # params[:user] = 'dfghg4df5gdfgh654'
12
+ # params[:pass] = 'gfhkzrhgzr4h98948'
13
13
  # instance_variable_set('@message_code', {}) unless instance_variable_get('@message_code')
14
14
  # store_proc= instance_variable_get('@message_code')
15
15
  message_id= "msg_#{Universe.messages.length}"
@@ -61,4 +61,6 @@ new(particle: :selected, category: :identity, type: :boolean) do |params|
61
61
  end
62
62
 
63
63
  new({ particle: :format, category: :identity, type: :string })
64
- new({ particle: :alien, category: :identity, type: :string }) #special particel that old alien object
64
+ new({ particle: :alien, category: :identity, type: :string }) #special particel that old alien object
65
+
66
+ new({ particle: :email, category: :identity, type: :string })
@@ -115,7 +115,14 @@ new({ particle: :web, category: :utility, type: :string })
115
115
  # new({ particle: :metrics, type: :hash })
116
116
  # do not change the line below initialise is a special method
117
117
  new({ initialize: :unit, value: {} })
118
-
118
+ new({ particle: :unit, store: false, type: :string, category: :utility }) do |params|
119
+ params.each do |k, v|
120
+ @unit[k] = v
121
+ # now we refresh the particle
122
+ send(k, send(k))
123
+ end
124
+ @unit
125
+ end
119
126
  new({ particle: :login, category: :utility, type: :string }) do |params|
120
127
  set_current_user(id) if params
121
128
  end
@@ -124,7 +131,7 @@ new({ particle: :hyperedit, category: :utility, type: :string })
124
131
  new({ particle: :terminal, category: :utility, type: :string })
125
132
  new({ particle: :read, category: :utility, type: :string })
126
133
  new({ particle: :browse, category: :utility, type: :string })
127
- new({ particle: :copies, category: :utility, type: :string})
134
+ new({ particle: :copies, category: :utility, type: :string })
128
135
  new({ particle: :temporary, category: :utility, type: :int })
129
136
  new({ particle: :atomes, category: :utility, type: :string })
130
137
 
@@ -147,24 +147,42 @@ def atome_genesis
147
147
  end
148
148
 
149
149
  def init_database # this method is call from JS (atome/communication)
150
+ # we init the db file eDen
151
+ A.message({ action: :init_db, data: { database: :eDen } }) do |db_state|
152
+ puts db_state
153
+ end
150
154
 
151
155
  particles = Universe.particle_list
152
156
  categories = Universe.categories
153
- atomes = Universe.atomes
154
- # puts "we are here!!"
155
- # particles.each do |particle, value|
156
- # value[:category] = :undefined if value[:category].nil?
157
- # A.message({ action: :init_db, particle: particle, type: value[:type], category: value[:category] })
158
- # end
157
+ categories.each do |category|
158
+ A.message({ action: :crate_db_table, data: { table: category } }) do |db_state|
159
+ puts db_state
160
+ end
161
+ end
162
+ particles_length=particles.length
163
+ particles.each_with_index do |(particle, infos), index|
164
+ type = infos[:type]
165
+ table = infos[:category]
166
+ @i=1
167
+ A.message({ action: :create_db_column, data: { table: table, column: particle, type: type } }) do |db_state|
168
+ @i+=1
169
+ if @i==particles_length
170
+ user_login
171
+ end
172
+ puts db_state
173
+ end
174
+
175
+ end
176
+
159
177
  end
160
178
 
161
179
  def user_login
162
- user = Universe.current_user
163
- pass = Black_matter.password
164
- message({ action: :login, value: user }) do |msg|
165
- puts "-2 #{msg}"
180
+ # user = Universe.current_user
181
+ password = Black_matter.password
182
+ message({ action: :authentication, data: { email: 'jeezs@atome.one' } }) do |email|
183
+ puts "email received : #{email}"
166
184
  end
167
- message({ action: :pass, value: pass }) do |msg|
168
- puts "-1 #{msg}"
185
+ message({ action: :authorization, data: { password: password } }) do |pass|
186
+ puts "password recieved : #{pass}"
169
187
  end
170
188
  end
data/lib/atome/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  # return atome version
4
4
  class Atome
5
- VERSION = '0.5.6.2.1'
5
+ VERSION = '0.5.6.2.4'
6
6
  end
7
7
 
@@ -51,11 +51,3 @@ new({ method: :sort, renderer: :html, type: :hash }) do |params|
51
51
  html.refresh_table(params)
52
52
  end
53
53
 
54
- new({ particle: :unit, store: false }) do |params|
55
- params.each do |k, v|
56
- @unit[k] = v
57
- # now we refresh the particle
58
- send(k, send(k))
59
- end
60
- @unit
61
- end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # The class Universe is used to retrieve some data needed for the atome framework
3
+ # The class Universe is used to retrieve some data needed for the atome framework
4
4
  # per example you can retrieve the list of all available particles
5
5
  puts Universe.particle_list
6
6
  # this give at the date 14/11/2023 :
@@ -1,39 +1,39 @@
1
- # frozen_string_literal: true
2
-
3
- A.message({ action: :insert, data: { table: :security, particle: :password, data: 'my_pass'} }) do |datas|
4
- puts "0 data received: #{datas}"
5
- end
6
-
7
- A.message({ action: :insert, data: { table: :identity, particle: :name, data: 'jeezs' } }) do |data_received_from_server|
8
- puts "1 my first insert #{data_received_from_server}"
9
- end
10
-
11
- A.message({ action: :insert, data: { table: :identity, particle: :name, data: 'jeezs2' } })
12
-
13
- A.message({ action: :query, data: { table: :identity } }) do |data_received_from_server|
14
- puts "2 another insert : #{data_received_from_server}"
15
- end
16
-
17
- A.message({ action: :query, data: { table: :identity } }) do |data_received|
18
- puts "3 received : #{data_received}"
19
- end
20
-
21
- A.message({ action: :insert, data: { table: :identity, particle: :name, data: 'jeezs3' } }) do |result|
22
- puts "4 insert done : #{result}"
23
- end
24
-
25
- A.message({ action: :insert, data: { table: :identity, particle: :name, data: 'jeezs4' } }) do |result|
26
- puts "5 last message received: #{result}"
27
- end
28
-
29
- A.message({ action: :insert, data: { table: :security, particle: :name, data: 'john doe' } }) do |data_received_from_server|
30
- puts "6 test 1 : #{data_received_from_server}"
31
- end
32
-
33
- A.message({ action: :insert, data: { table: :identity, particle: :tit, data: 'dummy' } }) do |data_received_from_server|
34
- puts "7 test 2 : #{data_received_from_server}"
35
- end
36
-
37
- A.message({ action: :insert, data: { table: :unknown, particle: :name, data: 'dummy2' } }) do |data_received_from_server|
38
- puts "test 3 : #{data_received_from_server}"
39
- end
1
+ # # frozen_string_literal: true
2
+ #
3
+ # A.message({ action: :insert, data: { table: :security, particle: :password, data: 'my_pass'} }) do |datas|
4
+ # puts "0 data received: #{datas}"
5
+ # end
6
+ #
7
+ # A.message({ action: :insert, data: { table: :identity, particle: :name, data: 'jeezs' } }) do |data_received_from_server|
8
+ # puts "1 my first insert #{data_received_from_server}"
9
+ # end
10
+ #
11
+ # A.message({ action: :insert, data: { table: :identity, particle: :name, data: 'jeezs2' } })
12
+ #
13
+ # A.message({ action: :query, data: { table: :identity } }) do |data_received_from_server|
14
+ # puts "2 another insert : #{data_received_from_server}"
15
+ # end
16
+ #
17
+ # A.message({ action: :query, data: { table: :identity } }) do |data_received|
18
+ # puts "3 received : #{data_received}"
19
+ # end
20
+ #
21
+ # A.message({ action: :insert, data: { table: :identity, particle: :name, data: 'jeezs3' } }) do |result|
22
+ # puts "4 insert done : #{result}"
23
+ # end
24
+ #
25
+ # A.message({ action: :insert, data: { table: :identity, particle: :name, data: 'jeezs4' } }) do |result|
26
+ # puts "5 last message received: #{result}"
27
+ # end
28
+ #
29
+ # A.message({ action: :insert, data: { table: :security, particle: :name, data: 'john doe' } }) do |data_received_from_server|
30
+ # puts "6 test 1 : #{data_received_from_server}"
31
+ # end
32
+ #
33
+ # A.message({ action: :insert, data: { table: :identity, particle: :tit, data: 'dummy' } }) do |data_received_from_server|
34
+ # puts "7 test 2 : #{data_received_from_server}"
35
+ # end
36
+ #
37
+ # A.message({ action: :insert, data: { table: :unknown, particle: :name, data: 'dummy2' } }) do |data_received_from_server|
38
+ # puts "test 3 : #{data_received_from_server}"
39
+ # end
@@ -4,18 +4,21 @@ user_password = {global: :all_star, read: { atome: :all_star }, write: { atome:
4
4
 
5
5
  human({ id: :jeezs, login: true, password: user_password, data: { birthday: '10/05/2016' },selection: [], tag: { system: true } , attach: :user_view })
6
6
 
7
-
8
-
9
-
10
-
11
-
12
7
  c = box({ color: :yellow, left: 333 })
13
-
14
8
  c.touch(true) do
15
- c.message({message: 'cd ..;cd server;ls; pwd', action: :terminal })
16
- c.message({message: 'capture.rb', action: :file, option: :read })
17
- c.message({message: 'tototo.rb', action: :file, option: :write, value: :hello })
18
- # b.message({message: 'cd ..;cd server;ls; pwd'})
19
- # c = box({ color: :red, left: 333 })
9
+ c.message({data: 'cd ..;cd server;ls; pwd', action: :terminal }) do |result|
10
+ puts "shell command return: #{result}"
11
+ end
12
+ c.message({data: {source: 'capture.rb',operation: :read }, action: :file}) do |result|
13
+
14
+ puts "file read encoded_content: #{result[:data].gsub('\x23', '#')}"
15
+ end
16
+ c.message({ action: :file,data: {source: 'user_created_file.rb', operation: :write, value: :hello }})do |result|
17
+ puts "file creation result : #{result}"
18
+ end
19
+
20
+ A.message({ action: :terminal , data: 'cd ..;cd server;ls; pwd'}) do |result|
21
+ puts "result : #{result}"
22
+ end
20
23
  end
21
-
24
+ #
@@ -1,27 +1,6 @@
1
- # frozen_string_literal: true
1
+ # frozen_string_literal: true
2
2
 
3
- # If you need to specify another address for the server use A.server_adress
4
- A.server({ address: 'localhost:9292' , type: 'ws'})
5
- user_password = {global: :all_star, read: { atome: :all_star }, write: { atome: :all_star } }
6
-
7
- human({ id: :jeezs, login: true, password: user_password, data: { birthday: '10/05/2016' },selection: [], tag: { system: true } , attach: :user_view })
8
-
9
-
10
- #
11
- # b = box({ color: :red, id: :my_box })
12
- #
13
- # b.touch(true) do
14
- # b.connection('localhost:9292') do |params|
15
- # alert " the connection is : #{params}"
16
- # end
17
- # end
18
-
19
- b = box({ color: :yellow, left: 333 })
20
-
21
- b.touch(true) do
22
- b.message({message: 'cd ..;cd server;ls; pwd', action: :terminal })
23
- b.message({message: 'capture.rb', action: :file, option: :read })
24
- b.message({message: 'tototo.rb', action: :file, option: :write, value: :hello })
25
- # b.message({message: 'cd ..;cd server;ls; pwd'})
26
- # c = box({ color: :red, left: 333 })
27
- end
3
+ my_pass = Black_matter.encode('hell')
4
+ puts my_pass
5
+ checker = Black_matter.check_password('hello,', my_pass)
6
+ puts checker
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # atome server
4
+
4
5
  require 'em/pure_ruby' if RUBY_PLATFORM == 'x64-mingw32'
5
6
  require 'fileutils'
6
7
  require '../src/utilities/aui'
@@ -14,301 +15,12 @@ require 'roda'
14
15
  require 'rufus-scheduler'
15
16
  require 'securerandom'
16
17
  require 'sequel'
17
-
18
- class EDen
19
-
20
- def self.db_access
21
- Database.connect_database
22
- end
23
-
24
- def self.terminal(cmd, option, ws, value, user, pass, message_id)
25
- { return: `#{cmd}`, message_id: message_id }
26
- end
27
-
28
- def self.pass(cmd, option, ws, value, user, pass, message_id)
29
- { return: 'password received', message_id: message_id }
30
- end
31
-
32
- def self.login(cmd, option, ws, value, user, pass, message_id)
33
- { return: 'login received', message_id: message_id }
34
- end
35
-
36
- def self.init_db(cmd, option, ws, value, user, pass, message_id)
37
- # Database.
38
- { return: 'database initialised', message_id: message_id }
39
- end
40
-
41
- def self.query(cmd, option, ws, value, user, pass, message_id)
42
- identity_table = db_access[cmd['table'].to_sym]
43
- result = identity_table.send(:all).send(:select)
44
- { action: :query, data: cmd['table'], return: "==> #{result}", message_id: message_id }
45
- end
46
-
47
- def self.insert(params, option, ws, value, user, pass, message_id)
48
- table = params['table'].to_sym
49
- particle = params['particle'].to_sym
50
- data = params['data']
51
- if db_access.table_exists?(table)
52
- schema = db_access.schema(table)
53
- if schema.any? { |col_def| col_def.first == particle }
54
- identity_table = db_access[table.to_sym]
55
- identity_table.insert(particle => data)
56
- { action: :insert, return: "column : #{particle}, in table : #{table}, updated with : #{data}", message_id: message_id }
57
- else
58
- { action: :insert, return: "column not found: #{particle.class}", message_id: message_id }
59
- end
60
- else
61
- { action: :insert, return: "table not found: #{table.class}", message_id: message_id }
62
-
63
- end
64
- end
65
-
66
- def self.file(source, operation, ws, value, user, pass, message_id)
67
- file_content = File.send(operation, source, value).to_s
68
- file_content = file_content.gsub("'", "\"")
69
- { return: "=> operation: #{operation}, source: #{source} , content : #{file_content}", message_id: message_id }
70
- end
71
-
72
- # return_message = EDen.safe_send(action_requested, data,option, current_user, user_pass)
73
-
74
- def self.safe_send(method_name, *args)
75
- method_sym = method_name.to_sym
76
- eden_methods = EDen.singleton_methods(false) - Object.singleton_methods
77
- if eden_methods.include?(method_sym)
78
- send(method_sym, *args)
79
- else
80
- { return: "forbidden action: #{method_name}" }
81
- end
82
- end
83
- end
18
+ require './eDen'
19
+ require './database'
20
+ require './extensions'
84
21
 
85
22
  Faye::WebSocket.load_adapter('puma')
86
23
 
87
- class String
88
- def is_json?
89
- begin
90
- !JSON.parse(self).nil?
91
- rescue
92
- false
93
- end
94
- end
95
- end
96
-
97
- class Database
98
-
99
- def self.table_exists?(table_name)
100
- # code below must be removed but not fpr now
101
- eden = Sequel.connect("sqlite://eden.sqlite3")
102
- if eden.table_exists?(table_name)
103
- puts "La table #{table_name} existe dans la base de données."
104
- else
105
- puts "La table suivante : #{table_name} n'existe pas dans la base de données."
106
- end
107
-
108
- end
109
-
110
- # def self.create_table(table_name)
111
- def self.connect_database
112
- if File.exist?("eden.sqlite3")
113
- eden = Sequel.connect("sqlite://eden.sqlite3")
114
- # now we test if the table exist
115
- table_exists?(:table_name)
116
- else
117
- eden = Sequel.connect("sqlite://eden.sqlite3")
118
- eden.create_table :atome do
119
- primary_key :atome_id
120
- String :creator
121
- end
122
-
123
- eden.create_table :communication do
124
- primary_key :communication_id
125
- String :connection
126
- JSON :data
127
- JSON :controller
128
- end
129
-
130
- ###################
131
-
132
- Sequel.extension :migration
133
-
134
- Sequel.migration do
135
- change do
136
- add_column :communication, :jesaispas, String
137
- end
138
- end.apply(eden, :up)
139
-
140
- ###################
141
-
142
- eden.create_table :effect do
143
- primary_key :effect_id
144
- Int :smooth
145
- Int :blur
146
- end
147
-
148
- eden.create_table :event do
149
- primary_key :event_id
150
- JSON :touch
151
- Boolean :play
152
- Boolean :pause
153
- Int :time
154
- Boolean :on
155
- Boolean :fullscreen
156
- Boolean :mute
157
- Boolean :drag
158
- Boolean :drop
159
- Boolean :over
160
- String :targets
161
- Boolean :start
162
- Boolean :stop
163
- Time :begin
164
- Time :end
165
- Int :duration
166
- Int :mass
167
- Int :damping
168
- Int :stiffness
169
- Int :velocity
170
- Boolean :repeat
171
- Boolean :ease
172
- Boolean :keyboard
173
- Boolean :resize
174
- Boolean :overflow
175
- end
176
-
177
- eden.create_table :geometry do
178
- primary_key :geometry_id
179
- Int :width
180
- Int :height
181
- Int :size
182
- end
183
-
184
- eden.create_table :hierarchy do
185
- primary_key :hierarchy_id
186
- String :attach
187
- String :attached
188
- String :apply
189
- String :affect
190
- String :detached
191
- String :collect
192
- end
193
-
194
- eden.create_table :identity do
195
- primary_key :identity_id
196
- String :real
197
- String :type
198
- Int :id
199
- String :name
200
- String :firstname
201
- String :email
202
- String :nickname
203
- Boolean :active
204
- String :markup
205
- String :bundle
206
- String :data
207
- String :category
208
- String :selection
209
- Boolean :selected
210
- String :format
211
- String :alien
212
- end
213
-
214
- eden.create_table :material do
215
- primary_key :material_id
216
- String :component
217
- Boolean :edit
218
- String :style
219
- Boolean :hide
220
- Boolean :remove
221
- JSON :classes
222
- Boolean :remove_classes
223
- Int :opacity
224
- String :definition
225
- Int :gradient
226
- Int :border
227
- end
228
-
229
- eden.create_table :property do
230
- primary_key :property_id
231
- String :red
232
- String :green
233
- String :blue
234
- String :alpha
235
- String :diffusion
236
- Boolean :clean
237
- String :insert
238
- Boolean :remove
239
- Int :sort
240
- end
241
-
242
- eden.create_table :security do
243
- primary_key :security_id
244
- String :password
245
- end
246
-
247
- eden.create_table :spatial do
248
- primary_key :spatial_id
249
- Int :left
250
- Int :right
251
- Int :top
252
- Int :bottom
253
- Int :rotate
254
- String :direction
255
- String :center
256
- Int :depth
257
- Int :position
258
- String :organise
259
- String :spacing
260
- Boolean :display
261
- String :layout
262
- end
263
-
264
- eden.create_table :time do
265
- primary_key :time_id
266
- JSON :markers
267
- end
268
-
269
- eden.create_table :utility do
270
- primary_key :utility_id
271
- String :renderers
272
- String :code
273
- Boolean :run
274
- Boolean :delete
275
- Boolean :clear
276
- String :path
277
- String :schedule
278
- String :read
279
- String :cursor
280
- String :preset
281
- JSON :relations
282
- JSON :tag
283
- String :web
284
- JSON :unit
285
- String :initialize
286
- String :login
287
- String :hypertext
288
- String :hyperedit
289
- String :terminal
290
- String :browse
291
- String :copies
292
- Int :temporary
293
- String :atomes
294
- String :match
295
- Boolean :invert
296
- String :option
297
- String :duplicate
298
- String :copy
299
- String :paste
300
- String :backup
301
- String :import
302
- String :compute
303
- String :get
304
- end
305
-
306
- end
307
- eden
308
- end
309
-
310
- end
311
-
312
24
  class App < Roda
313
25
  index_content = File.read("../src/index_server.html")
314
26
  opts[:root] = '../src'
@@ -317,7 +29,7 @@ class App < Roda
317
29
  r.root do
318
30
  if Faye::WebSocket.websocket?(r.env)
319
31
  ws = Faye::WebSocket.new(r.env)
320
- ws.on :open do |event|
32
+ ws.on :open do |_event|
321
33
  ws.send({ return: 'server ready' }.to_json)
322
34
  end
323
35
  ws.on(:message) do |event|
@@ -325,15 +37,10 @@ class App < Roda
325
37
  full_data = JSON.parse(json_string)
326
38
  data = full_data['data']
327
39
  action_requested = full_data['action']
328
- value = full_data['value']
329
- option = full_data['option']
330
- current_user = full_data['user']
331
40
  message_id = full_data['message_id']
332
- user_pass = full_data['pass']['global']
333
- return_message = EDen.safe_send(action_requested, data, option, ws, value, current_user, user_pass, message_id)
41
+ return_message = EDen.safe_send(action_requested, data, message_id)
334
42
  ws.send(return_message.to_json)
335
43
  end
336
-
337
44
  ws.on(:close) do |event|
338
45
  puts "server closed with status #{event.code}"
339
46
  end
@@ -343,4 +50,4 @@ class App < Roda
343
50
  end
344
51
  end
345
52
 
346
- end
53
+ end
@@ -26,43 +26,43 @@ class String
26
26
  end
27
27
  end
28
28
 
29
- class Database
30
- def self.connect_database
31
- if File.exist?("eden.sqlite3")
32
- eden = Sequel.connect("sqlite://eden.sqlite3")
33
- else
34
- eden = Sequel.connect("sqlite://eden.sqlite3")
35
- eden.create_table :atome do
36
- primary_key :atome_id
37
- String :aui
38
- String :id
39
- String :type
40
- String :name
41
- String :content
42
- String :position
43
- String :dimension
44
- String :color
45
- String :right
46
- String :effect
47
- String :shadow
48
- String :border
49
- String :fill
50
- Float :x
51
- Float :xx
52
- Float :y
53
- Float :yy
54
- Float :z
55
- Float :zz
56
- Float :width
57
- Float :height
58
- Float :depth
59
- end
60
-
61
- end
62
- eden
63
- end
64
-
65
- end
29
+ # class Database
30
+ # def self.connect_database
31
+ # if File.exist?("eden.sqlite3")
32
+ # eden = Sequel.connect("sqlite://eden.sqlite3")
33
+ # else
34
+ # eden = Sequel.connect("sqlite://eden.sqlite3")
35
+ # eden.create_table :atome do
36
+ # primary_key :atome_id
37
+ # String :aui
38
+ # String :id
39
+ # String :type
40
+ # String :name
41
+ # String :content
42
+ # String :position
43
+ # String :dimension
44
+ # String :color
45
+ # String :right
46
+ # String :effect
47
+ # String :shadow
48
+ # String :border
49
+ # String :fill
50
+ # Float :x
51
+ # Float :xx
52
+ # Float :y
53
+ # Float :yy
54
+ # Float :z
55
+ # Float :zz
56
+ # Float :width
57
+ # Float :height
58
+ # Float :depth
59
+ # end
60
+ #
61
+ # end
62
+ # eden
63
+ # end
64
+ #
65
+ # end
66
66
 
67
67
  class App < Roda
68
68
  # comment below when test will be done
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ # database handling for eDen Db
4
+ class Database
5
+ class << self
6
+ Sequel.extension :migration
7
+
8
+ def db_access
9
+ Sequel.connect("sqlite://eden.sqlite3")
10
+ end
11
+
12
+ def create_table(table_name)
13
+ eden = Sequel.connect("sqlite://eden.sqlite3")
14
+ unless eden.table_exists?(table_name)
15
+ eden.create_table table_name.to_sym do
16
+ primary_key "#{table_name}_id".to_sym
17
+ end
18
+ end
19
+ end
20
+
21
+ def create_column(table, column_name, type)
22
+ eden = Sequel.connect("sqlite://eden.sqlite3")
23
+ if eden.table_exists?(table)
24
+ unless eden.schema(table).any? { |column| column.first == column_name }
25
+ Sequel.migration do
26
+ change do
27
+ add_column table, column_name, type
28
+ end
29
+ end.apply(eden, :up)
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ # server utils to handle eDen Db
4
+
5
+ class EDen
6
+ class << self
7
+ def db_access
8
+ Database.db_access
9
+ end
10
+
11
+ def terminal(data, message_id)
12
+ { data: { message: `#{data}` }, message_id: message_id }
13
+ end
14
+
15
+ def authorization(data, message_id)
16
+ db = db_access
17
+ security_items = db[:security]
18
+ user_password = data["password"]
19
+ user_exists = security_items.where(password: user_password).first
20
+
21
+ if !user_exists
22
+ { return: 'Password not found', message_id: message_id }
23
+ # Ask to the user if he wants to subscribe
24
+ # Send the basic template
25
+ else
26
+ { return: 'Password found, connected', message_id: message_id }
27
+ # Send the user account template
28
+ end
29
+ end
30
+
31
+ def authentication(data, message_id)
32
+ # { data: { message: 'login received' }, message_id: message_id }
33
+ db = db_access
34
+ identity_items = db[:identity]
35
+ user_email = data["email"]
36
+ mail_exists = identity_items.where(email: user_email).first
37
+
38
+ if !mail_exists
39
+ { return: 'Email not found', message_id: message_id }
40
+ # { return: user_email, message_id: message_id }
41
+ # Ask to the user if he wants to subscribe
42
+ # Send the basic template
43
+ else
44
+ { return: 'Email found, looking for pass', message_id: message_id }
45
+ # Verify password
46
+ # If password isn't ok, send error
47
+ # If the password is ok, send the user account template
48
+ end
49
+ end
50
+
51
+ def init_db(_data, message_id)
52
+ unless File.exist?("eden.sqlite3")
53
+ Sequel.connect("sqlite://eden.sqlite3")
54
+ end
55
+ { data: { message: 'database initialised' }, message_id: message_id }
56
+ end
57
+
58
+ def crate_db_table(data, message_id)
59
+ table = data['table']
60
+ Database.create_table(table)
61
+ { data: { message: "table #{table} added" }, message_id: message_id }
62
+ end
63
+
64
+ def create_db_column(data, message_id)
65
+ table = data['table']
66
+ column = data['column']
67
+ type = data['type']
68
+ Database.create_column(table, column, type)
69
+ { data: { message: "column #{column} with type : #{type} added" }, message_id: message_id }
70
+ end
71
+
72
+ def query(data, message_id)
73
+ identity_table = db_access[data['table'].to_sym]
74
+ result = identity_table.send(:all).send(:select)
75
+ { data: { table: data['table'], infos: result }, message_id: message_id }
76
+ end
77
+
78
+ def insert(data, message_id)
79
+ table = data['table'].to_sym
80
+ particle = data['particle'].to_sym
81
+ data = data['data']
82
+ if db_access.table_exists?(table)
83
+ schema = db_access.schema(table)
84
+ if schema.any? { |col_def| col_def.first == particle }
85
+ identity_table = db_access[table.to_sym]
86
+ identity_table.insert(particle => data)
87
+ { data: { message: "column : #{particle}, in table : #{table}, updated with : #{data}" }, message_id: message_id }
88
+ else
89
+ { data: { message: "column not found: #{particle.class}" }, message_id: message_id }
90
+ end
91
+ else
92
+ { data: { message: "table not found: #{table.class}" }, message_id: message_id }
93
+
94
+ end
95
+ end
96
+
97
+ def file(data, message_id)
98
+
99
+ file_content = File.send(data['operation'], data['source'], data['value']).to_s
100
+ file_content = file_content.gsub("'", "\"")
101
+
102
+ file_content = file_content.gsub('#', '\x23')
103
+ { data: "=> operation: #{data['operation']}, source: #{data['source']}, content: #{file_content}", message_id: message_id }
104
+ end
105
+
106
+ def safe_send(method_name, data, message_id)
107
+ method_sym = method_name.to_sym
108
+ send(method_sym, data, message_id)
109
+ end
110
+ end
111
+
112
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Object extensions for atome
4
+
5
+ class String
6
+ def is_json?
7
+ begin
8
+ !JSON.parse(self).nil?
9
+ rescue
10
+ false
11
+ end
12
+ end
13
+ end
@@ -67,9 +67,10 @@ const communication = {
67
67
 
68
68
  // now new can exec user code : loadApplicationJs in index.html
69
69
  loadApplicationJs();
70
- rubyVMCallback("A.user_login");
70
+ // rubyVMCallback("A.user_login");
71
71
  };
72
72
  this.websocket.onmessage = function (event) {
73
+ // console.log(event.data)
73
74
  rubyVMCallback("A.server_receiver(" + event.data + ")");
74
75
  };
75
76
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6.2.1
4
+ version: 0.5.6.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Eric Godard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-13 00:00:00.000000000 Z
11
+ date: 2024-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: artoo
@@ -622,6 +622,9 @@ files:
622
622
  - vendor/assets/server/atome_server_wasm.rb
623
623
  - vendor/assets/server/capture.rb
624
624
  - vendor/assets/server/config.ru
625
+ - vendor/assets/server/database.rb
626
+ - vendor/assets/server/eDen.rb
627
+ - vendor/assets/server/extensions.rb
625
628
  - vendor/assets/src-tauri/.gitignore
626
629
  - vendor/assets/src-tauri/Cargo.toml
627
630
  - vendor/assets/src-tauri/build.rs