Current section
Files
Jump to
Current section
Files
lib/data_point.ex
defmodule UDPFlux.DataPoint do
defstruct name: "", tags: [], fields: []
def dump(point) do
tags = point.tags |> Enum.map_join(",", &encode_tag/1)
fields = point.fields |> Enum.map_join(",", &encode_field/1)
# Construct string: "name,tag=tagvalue,tag2=tagvalue2 field=fieldval1,field2=fieldval2"
# Timestamp is automatically added by influxdb
point.name <> "," <> tags <> " " <> fields
end
defp encode_tag({key, value}) do
to_string(key) <> "=" <> fuck_up_string_according_to_spec(to_string(value))
end
defp encode_field({key, value}) when is_binary(value) do
to_string(key) <> "=\"" <> fuck_up_string_according_to_spec(to_string(value)) <> "\""
end
defp encode_field({key, value}) do
to_string(key) <> "=" <> to_string(value)
end
defp fuck_up_string_according_to_spec(string) do
string |>
String.replace(" ", "\\ ") |>
String.replace(",", "\\,") |>
String.replace("=", "\\=")
end
end