mirror of https://github.com/Calamitous/iris.git
Changed Message storage format to JSON
This commit is contained in:
parent
745a99367f
commit
4272f288a7
38
iris.rb
38
iris.rb
|
@ -28,9 +28,7 @@ class Config
|
||||||
end
|
end
|
||||||
|
|
||||||
class Message
|
class Message
|
||||||
TERMINATOR = "\n.\n"
|
FILE_FORMAT = 'v2'
|
||||||
FIELD_SEPARATOR = '|'
|
|
||||||
FILE_FORMAT = 'v1'
|
|
||||||
|
|
||||||
attr_reader :timestamp, :hash, :edit_hash, :author, :parent, :message
|
attr_reader :timestamp, :hash, :edit_hash, :author, :parent, :message
|
||||||
|
|
||||||
|
@ -42,30 +40,34 @@ class Message
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.load(payload)
|
def self.load(payload)
|
||||||
payload = payload.gsub(/#{TERMINATOR}$/, '')
|
data = JSON.parse(payload)
|
||||||
hash, edit_hash, timestamp, parent, author, *message = payload.split(FIELD_SEPARATOR)
|
# hash, edit_hash, timestamp, parent, author, *message = payload.split(FIELD_SEPARATOR)
|
||||||
|
|
||||||
loaded_message = self.new(message.join(FIELD_SEPARATOR), author, parent, timestamp, edit_hash)
|
loaded_message = self.new(data['data']['message'], data['data']['author'], data['data']['parent'], data['data']['timestamp'], data['edit_hash'])
|
||||||
raise 'Broken hash!' unless loaded_message.hash == hash
|
raise 'Broken hash!' unless loaded_message.hash == data['hash']
|
||||||
loaded_message
|
loaded_message
|
||||||
end
|
end
|
||||||
|
|
||||||
def hash
|
def hash(payload = nil)
|
||||||
make_sha(unconfirmed_payload)
|
payload ||= unconfirmed_payload.to_json
|
||||||
|
Base64.encode64(Digest::SHA1.digest(payload))
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_payload
|
def to_json
|
||||||
[hash, @edit_hash, unconfirmed_payload].join(FIELD_SEPARATOR) + TERMINATOR
|
{
|
||||||
|
hash: hash,
|
||||||
|
edit_hash: edit_hash,
|
||||||
|
data: unconfirmed_payload
|
||||||
|
}.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def unconfirmed_payload
|
def unconfirmed_payload
|
||||||
[@timestamp, @parent, @author, @message].join(FIELD_SEPARATOR)
|
{
|
||||||
end
|
author: author,
|
||||||
|
parent: parent,
|
||||||
def make_sha(payload)
|
timestamp: timestamp,
|
||||||
Base64.encode64(Digest::SHA1.digest(payload))
|
message: message,
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue