resx v0.1.0 Resx.Resource.Reference.Integrity
The integrity of a resource.
%Resx.Resource.Reference.Integrity{
checksum: { :crc32, 3829359344 },
timestamp: DateTime.utc_now
}
Link to this section Summary
Functions
Compare two integrities
Link to this section Types
Link to this type
t()
t() :: %Resx.Resource.Reference.Integrity{ checksum: nil | checksum(), timestamp: DateTime.t() }
Link to this section Functions
Link to this function
compare(integrity1, integrity2)
Compare two integrities.
The result is a tuple with the first element being the result of the comparison between the two checksums. If the checksums are equal then it will be true, if the checksum algorithms are the same but the hashes are not equal it will be false, otherwise if the checksums cannot be compared it will be nil
. The second element will be the result of a DateTime.compare/2
on the two timestamps.
iex> Resx.Resource.Reference.Integrity.compare(%Resx.Resource.Reference.Integrity{ timestamp: DateTime.from_unix!(0) }, %Resx.Resource.Reference.Integrity{ timestamp: DateTime.from_unix!(0) })
{ nil, :eq }
iex> Resx.Resource.Reference.Integrity.compare(%Resx.Resource.Reference.Integrity{ checksum: { :foo, 1 }, timestamp: DateTime.from_unix!(1) }, %Resx.Resource.Reference.Integrity{ checksum: { :foo, 1 }, timestamp: DateTime.from_unix!(0) })
{ true, :gt }
iex> Resx.Resource.Reference.Integrity.compare(%Resx.Resource.Reference.Integrity{ checksum: { :foo, 2 }, timestamp: DateTime.from_unix!(0) }, %Resx.Resource.Reference.Integrity{ checksum: { :foo, 1 }, timestamp: DateTime.from_unix!(1) })
{ false, :lt }
iex> Resx.Resource.Reference.Integrity.compare(%Resx.Resource.Reference.Integrity{ checksum: { :bar, 1 }, timestamp: DateTime.from_unix!(0) }, %Resx.Resource.Reference.Integrity{ checksum: { :foo, 1 }, timestamp: DateTime.from_unix!(0) })
{ nil, :eq }