Packages
sentry
8.0.4
13.3.0
13.2.0
13.1.0
13.0.1
13.0.0
12.0.3
12.0.2
12.0.1
12.0.0
11.0.4
11.0.3
11.0.2
11.0.1
11.0.0
10.10.0
10.9.0
10.8.1
10.8.0
10.7.1
10.7.0
10.6.2
10.6.1
10.6.0
10.5.0
10.4.0
10.3.0
10.2.1
10.2.0
10.2.0-rc.2
10.2.0-rc.1
10.1.0
10.0.3
10.0.2
10.0.1
10.0.0
9.1.0
9.0.0
8.1.0
8.0.6
8.0.5
8.0.4
8.0.3
8.0.2
8.0.1
8.0.0
8.0.0-rc.2
8.0.0-rc.1
8.0.0-rc.0
retired
7.2.5
7.2.4
7.2.3
7.2.2
7.2.1
7.2.0
7.1.0
7.0.6
7.0.5
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.4.2
6.4.1
6.4.0
6.3.0
6.2.1
6.2.0
6.1.0
6.0.5
6.0.4
6.0.3
6.0.2
6.0.1
6.0.0
5.0.1
5.0.0
4.0.3
4.0.2
4.0.1
4.0.0
3.0.0
2.2.0
2.1.0
2.0.2
2.0.1
2.0.0
1.1.2
1.1.1
1.1.0
1.0.0
0.3.2
0.3.1
0.3.0
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
The Official Elixir client for Sentry
Current section
Files
Jump to
Current section
Files
lib/sentry/util.ex
defmodule Sentry.Util do
@moduledoc """
Provides basic utility functions.
"""
@rfc_4122_variant10 2
@uuid_v4_identifier 4
@doc """
Generates a unix timestamp
"""
@spec unix_timestamp :: pos_integer()
def unix_timestamp do
:os.system_time(:seconds)
end
@doc """
Generates a iso8601_timestamp without microseconds and timezone
"""
@spec iso8601_timestamp :: String.t()
def iso8601_timestamp do
DateTime.utc_now()
|> Map.put(:microsecond, {0, 0})
|> DateTime.to_iso8601()
|> String.trim_trailing("Z")
end
@spec mix_deps() :: list(atom())
def mix_deps do
Mix.Project.deps_paths()
|> Map.keys()
end
@spec mix_deps_versions(list(atom())) :: map()
def mix_deps_versions(deps) when is_list(deps) do
Enum.reduce(deps, %{}, fn app, acc ->
Map.put(acc, app, to_string(Application.spec(app, :vsn)))
end)
end
@doc """
Per http://www.ietf.org/rfc/rfc4122.txt
"""
@spec uuid4_hex() :: String.t()
def uuid4_hex do
<<time_low_mid::48, _version::4, time_high::12, _reserved::2, rest::62>> =
:crypto.strong_rand_bytes(16)
<<time_low_mid::48, @uuid_v4_identifier::4, time_high::12, @rfc_4122_variant10::2, rest::62>>
|> Base.encode16(case: :lower)
end
end