Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
MikaelFangel committed Apr 24, 2024
0 parents commit 675be29
Show file tree
Hide file tree
Showing 8 changed files with 189 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .formatter.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Used by "mix format"
[
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
]
26 changes: 26 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# The directory Mix will write compiled artifacts to.
/_build/

# If you run "mix test --cover", coverage assets end up here.
/cover/

# The directory Mix downloads your dependencies sources to.
/deps/

# Where third-party dependencies like ExDoc output generated docs.
/doc/

# Ignore .fetch files in case you like to edit your project deps locally.
/.fetch

# If the VM crashes, it generates a dump, let's ignore it too.
erl_crash.dump

# Also ignore archive artifacts (built via "mix archive.build").
*.ez

# Ignore package tarball (built via "mix hex.build").
logpoint_api-*.tar

# Temporary files, for example, from tests.
/tmp/
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# LogpointApi

**TODO: Add description**

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `logpoint_api` to your list of dependencies in `mix.exs`:

```elixir
def deps do
[
{:logpoint_api, "~> 0.1.0"}
]
end
```

Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at <https://hexdocs.pm/logpoint_api>.

89 changes: 89 additions & 0 deletions lib/logpoint_api.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
defmodule LogpointApi do
@moduledoc """
Documentation for `LogpointApi`.
"""

@doc """
Hello world.
## Examples
iex> LogpointApi.hello()
:world
"""
def hello do
:world
end
end

defmodule LogpointApi.SearchApi do
@allowed_types ["user_preference", "loginspects", "Logpoint_repos", "devices", "livesearches"]

def get_user_timezone(ip, username, secret_key), do:
get_allowed_data(ip, username, secret_key, "user_preference")

def get_logpoints(ip, username, secret_key), do:
get_allowed_data(ip, username, secret_key, "loginspects")

def get_repos(ip, username, secret_key), do:
get_allowed_data(ip, username, secret_key, "Logpoint_repos")

def get_devices(ip, username, secret_key), do:
get_allowed_data(ip, username, secret_key, "devices")

def get_livesearches(ip, username, secret_key), do:
get_allowed_data(ip, username, secret_key, "livesearches")

defp make_request(ip, path, payload) do
url = "https://" <> ip <> path
headers = [{"Content-Type", "application/x-www-form-urlencoded"}]
# On-prem uses self signed certificates and we thus need to disable the verification.
options = [ssl: [{:verify, :verify_none}]]

case HTTPoison.post(url, payload, headers, options) do
{:ok, %HTTPoison.Response{status_code: 200}, body: body} ->
body
|> Jason.decode!()

{:ok, %HTTPoison.Response{status_code: status_code}} ->
IO.puts("Received response with status code #{status_code}")

{:error, %HTTPoison.Error{reason: reason}} ->
IO.puts("HTTP request failed with reason: #{reason}")
end
end

defp get_allowed_data(ip, username, secret_key, type) when type in @allowed_types do
payload =
URI.encode_query(%{
"username" => username,
"secret_key" => secret_key,
"type" => type
})

make_request(ip, "/getalloweddata", payload)
end
end

defmodule LogpointApi.IncidentApi do
defp make_request(ip, path, params) do
url = "https://" <> ip <> path
headers = [{"Content-Type", "application/json"}]
body = Jason.encode!(params)
# On-prem uses self signed certificates and we thus need to disable the verification.
options = [ssl: [{:verify, :verify_none}]]

case HTTPoison.request(:get, url, body, headers, options) do
{:ok, %HTTPoison.Response{status_code: 200}, body: body} ->
body
|> Jason.decode!()

{:ok, %HTTPoison.Response{status_code: status_code}} ->
IO.puts("Received response with status code #{status_code}")

{:error, %HTTPoison.Error{reason: reason}} ->
IO.puts("HTTP request failed with reason: #{reason}")
end
end
end
28 changes: 28 additions & 0 deletions mix.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
defmodule LogpointApi.MixProject do
use Mix.Project

def project do
[
app: :logpoint_api,
version: "0.1.0",
elixir: "~> 1.15",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end

# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end

# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:httpoison, "~> 2.0"},
{:jason, "~> 1.4.1"}
]
end
end
12 changes: 12 additions & 0 deletions mix.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
%{
"certifi": {:hex, :certifi, "2.12.0", "2d1cca2ec95f59643862af91f001478c9863c2ac9cb6e2f89780bfd8de987329", [:rebar3], [], "hexpm", "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c"},
"hackney": {:hex, :hackney, "1.20.1", "8d97aec62ddddd757d128bfd1df6c5861093419f8f7a4223823537bad5d064e2", [:rebar3], [{:certifi, "~> 2.12.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "fe9094e5f1a2a2c0a7d10918fee36bfec0ec2a979994cff8cfe8058cd9af38e3"},
"httpoison": {:hex, :httpoison, "2.2.1", "87b7ed6d95db0389f7df02779644171d7319d319178f6680438167d7b69b1f3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "51364e6d2f429d80e14fe4b5f8e39719cacd03eb3f9a9286e61e216feac2d2df"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},
"parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
}
8 changes: 8 additions & 0 deletions test/logpoint_api_test.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
defmodule LogpointApiTest do
use ExUnit.Case
doctest LogpointApi

test "greets the world" do
assert LogpointApi.hello() == :world
end
end
1 change: 1 addition & 0 deletions test/test_helper.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ExUnit.start()

0 comments on commit 675be29

Please sign in to comment.