From a6da1c3f8edee2bae616d415428274a251491c9f Mon Sep 17 00:00:00 2001 From: Ali imran Date: Fri, 25 Oct 2019 11:40:10 +0500 Subject: [PATCH] Update swagger endpoints and models. --- assets/public/swagger.json | 174 ++++++++++++------ config/config.exs | 2 + lib/edge_commander/commands/commands.ex | 6 + lib/edge_commander/devices/devices.ex | 12 ++ lib/edge_commander/sites/sites.ex | 7 + lib/edge_commander/three_scraper/records.ex | 6 + .../controllers/commands_controller.ex | 39 +++- .../controllers/nvrs_controller.ex | 64 +++++-- .../controllers/routers_controller.ex | 33 +++- .../controllers/sims_controller.ex | 44 ++++- .../controllers/sites_controller.ex | 46 ++++- lib/edge_commander_web/router.ex | 12 +- mix.exs | 7 +- mix.lock | 27 ++- 14 files changed, 368 insertions(+), 111 deletions(-) diff --git a/assets/public/swagger.json b/assets/public/swagger.json index 894a55c7..5ebcdc6f 100644 --- a/assets/public/swagger.json +++ b/assets/public/swagger.json @@ -88,7 +88,7 @@ "description": "" } ], - "operationId": "EdgeCommanderWeb.SitesController.get_all_sites", + "operationId": "EdgeCommanderWeb.SitesController.get_all_sites_by_users", "description": "Returns sites list" } }, @@ -109,7 +109,7 @@ "required": true, "name": "sim_number", "in": "path", - "description": "Sim number in given format (08xxxxxxxx)" + "description": "Sim number in given format (+353xxxxxxxx)" }, { "type": "string", @@ -147,7 +147,7 @@ "required": true, "name": "sim_number", "in": "path", - "description": "Sim number in given format (08xxxxxxxx)" + "description": "Sim number in given format (+353xxxxxxxx)" }, { "type": "string", @@ -190,7 +190,7 @@ "required": true, "name": "sim_number", "in": "path", - "description": "Sim number in given format (08xxxxxxxx)" + "description": "Sim number in given format (+353xxxxxxxx)" }, { "type": "string", @@ -228,7 +228,7 @@ "required": true, "name": "sim_number", "in": "path", - "description": "Sim number in given format (08xxxxxxxx)" + "description": "Sim number in given format (+353xxxxxxxx)" }, { "type": "string", @@ -276,7 +276,7 @@ "description": "" } ], - "operationId": "EdgeCommanderWeb.SimsController.get_sim_logs", + "operationId": "EdgeCommanderWeb.SimsController.get_all_sims_by_users", "description": "" } }, @@ -345,7 +345,7 @@ "description": "" } ], - "operationId": "EdgeCommanderWeb.CommandsController.get_all_rules", + "operationId": "EdgeCommanderWeb.CommandsController.get_all_rules_by_users", "description": "Returns rules list" } }, @@ -564,7 +564,7 @@ "description": "" } ], - "operationId": "EdgeCommanderWeb.RoutersController.get_all_routers", + "operationId": "EdgeCommanderWeb.RoutersController.get_all_routers_by_users", "description": "Returns routers list" } }, @@ -825,7 +825,7 @@ "description": "" } ], - "operationId": "EdgeCommanderWeb.NvrsController.get_all_nvrs", + "operationId": "EdgeCommanderWeb.NvrsController.get_all_nvrs_by_users", "description": "Returns nvrs list" } } @@ -834,16 +834,17 @@ "version": "1.0", "title": "Edge Commander" }, - "host": "app.edgecommander.com", + "host": "localhost:4000", "definitions": { "Site": { "type": "object", "title": "Site", "required": [ - "lat", - "lng", - "location", + "created_at", + "name", + "nvr_id", "nvr_name", + "router_id", "router_name", "sim_number" ], @@ -856,61 +857,95 @@ "type": "string", "description": "" }, + "router_id": { + "type": "integer", + "description": "" + }, "nvr_name": { "type": "string", "description": "" }, - "notes": { - "type": "string", + "nvr_id": { + "type": "integer", "description": "" }, - "location": { + "notes": { "type": "string", "description": "" }, - "lng": { + "name": { "type": "string", - "description": "Longitude of the location" + "description": "" }, - "lat": { - "type": "string", - "description": "Latitude of the location" + "location": { + "type": "object", + "properties": { + "map_area": { + "type": "string", + "description": "" + }, + "lng": { + "type": "float", + "description": "" + }, + "lat": { + "type": "float", + "description": "" + } + } }, "id": { "type": "integer", "description": "" + }, + "created_at": { + "type": "string", + "description": "" } }, - "description": "A site of the application" + "description": "A site module of the application" }, "Rule": { "type": "object", "title": "Rule", "required": [ - "active", - "category", + "variable", + "value", + "rule_name", "recipients", - "rule_name" + "created_at", + "category", + "active" ], "properties": { + "variable": { + "type": "string", + "example": "greater_than", + "description": "" + }, + "value": { + "type": "integer", + "description": "" + }, "rule_name": { "type": "string", "description": "" }, "recipients": { - "type": "string", - "example": "test@user.com, who@am.io", + "type": "array", + "example": "['test@user.com', 'who@am.io']", "description": "" }, "id": { "type": "integer", "description": "" }, + "created_at": { + "type": "string", + "description": "" + }, "category": { "type": "string", - "enum": [ - "usage_command" - ], "description": "" }, "active": { @@ -919,7 +954,7 @@ "default": false } }, - "description": "A rule of the application" + "description": "A rule module of the application" }, "Router": { "type": "object", @@ -947,12 +982,20 @@ "default": false }, "ip": { - "type": "integer", + "type": "string", "description": "" }, "id": { "type": "integer", "description": "" + }, + "extra": { + "type": "json", + "description": "" + }, + "created_at": { + "type": "string", + "description": "" } }, "description": "A router of the application" @@ -961,15 +1004,15 @@ "type": "object", "title": "Nvr", "required": [ - "is_monitoring", "sdk_port", "rtsp_port", "vh_port", "port", - "ip", "password", "username", - "name" + "name", + "is_monitoring", + "ip" ], "properties": { "vh_port": { @@ -980,10 +1023,6 @@ "type": "string", "description": "" }, - "serial_number": { - "type": "string", - "description": "" - }, "sdk_port": { "type": "integer", "description": "" @@ -992,10 +1031,6 @@ "type": "integer", "description": "" }, - "reason": { - "type": "string", - "description": "Offline reason" - }, "port": { "type": "integer", "description": "" @@ -1016,10 +1051,6 @@ "type": "string", "description": "" }, - "mac_address": { - "type": "string", - "description": "" - }, "is_monitoring": { "type": "boolean", "description": "", @@ -1037,15 +1068,48 @@ "type": "string", "description": "" }, - "firmware_released_date": { - "type": "string", - "description": "" - }, - "encoder_version": { - "type": "string", - "description": "" + "extra": { + "type": "object", + "properties": { + "serial_number": { + "type": "string", + "description": "" + }, + "reason": { + "type": "string", + "description": "" + }, + "mac_address": { + "type": "string", + "description": "" + }, + "firmware_released_date": { + "type": "string", + "description": "" + }, + "encoder_version": { + "type": "string", + "description": "" + }, + "encoder_released_date": { + "type": "string", + "description": "" + }, + "device_type": { + "type": "string", + "description": "" + }, + "device_name": { + "type": "string", + "description": "" + }, + "device_id": { + "type": "string", + "description": "" + } + } }, - "encoder_released_date": { + "created_at": { "type": "string", "description": "" } diff --git a/config/config.exs b/config/config.exs index 02645a57..cd0d68f1 100644 --- a/config/config.exs +++ b/config/config.exs @@ -5,6 +5,8 @@ # is restricted to this project. use Mix.Config +config :phoenix, :json_library, Jason + # General application configuration config :edge_commander, ecto_repos: [EdgeCommander.Repo] diff --git a/lib/edge_commander/commands/commands.ex b/lib/edge_commander/commands/commands.ex index 73049ee1..e995e57f 100644 --- a/lib/edge_commander/commands/commands.ex +++ b/lib/edge_commander/commands/commands.ex @@ -58,6 +58,12 @@ defmodule EdgeCommander.Commands do def get_rule!(id), do: Repo.get!(Rule, id) + def get_rules_by_user(user_id) do + Rule + |> where(user_id: ^user_id) + |> Repo.all + end + def create_rule(attrs \\ %{}) do %Rule{} |> Rule.changeset(attrs) diff --git a/lib/edge_commander/devices/devices.ex b/lib/edge_commander/devices/devices.ex index c840f42b..f7b2a480 100644 --- a/lib/edge_commander/devices/devices.ex +++ b/lib/edge_commander/devices/devices.ex @@ -67,6 +67,12 @@ defmodule EdgeCommander.Devices do |> Repo.all end + def get_nvrs_by_user(user_id) do + Nvr + |> where(user_id: ^user_id) + |> Repo.all + end + @doc """ Gets a single nvr. @@ -166,6 +172,12 @@ defmodule EdgeCommander.Devices do |> Repo.all end + def get_routers_by_user(user_id) do + Router + |> where(user_id: ^user_id) + |> Repo.all + end + @doc """ Gets a single router. diff --git a/lib/edge_commander/sites/sites.ex b/lib/edge_commander/sites/sites.ex index 5ac2495e..7fddc7a6 100644 --- a/lib/edge_commander/sites/sites.ex +++ b/lib/edge_commander/sites/sites.ex @@ -39,6 +39,13 @@ defmodule EdgeCommander.Sites do """ def get_records!(id), do: Repo.get!(Records, id) + + def get_sites_by_user(user_id) do + Records + |> where(user_id: ^user_id) + |> Repo.all + end + @doc """ Creates a records. diff --git a/lib/edge_commander/three_scraper/records.ex b/lib/edge_commander/three_scraper/records.ex index e0a745c1..58a66fa4 100644 --- a/lib/edge_commander/three_scraper/records.ex +++ b/lib/edge_commander/three_scraper/records.ex @@ -151,4 +151,10 @@ defmodule EdgeCommander.ThreeScraper.Records do Sims |> Repo.all end + + def get_sims_by_user(user_id) do + Sims + |> where(user_id: ^user_id) + |> Repo.all + end end diff --git a/lib/edge_commander_web/controllers/commands_controller.ex b/lib/edge_commander_web/controllers/commands_controller.ex index 7574dd73..7992066c 100644 --- a/lib/edge_commander_web/controllers/commands_controller.ex +++ b/lib/edge_commander_web/controllers/commands_controller.ex @@ -4,7 +4,7 @@ defmodule EdgeCommanderWeb.CommandsController do alias EdgeCommander.Repo alias EdgeCommander.Util import Ecto.Query, warn: false - import EdgeCommander.Commands, only: [get_rule!: 1] + import EdgeCommander.Commands, only: [get_rule!: 1, get_rules_by_user: 1] import EdgeCommander.Accounts, only: [current_user: 1] use PhoenixSwagger @@ -12,19 +12,22 @@ defmodule EdgeCommanderWeb.CommandsController do %{ Rule: swagger_schema do title "Rule" - description "A rule of the application" + description "A rule module of the application" properties do + active :boolean, "", required: true, default: false + category :string, "", required: true + created_at :string, "", required: true id :integer, "" + recipients :array, "", required: true, example: "['test@user.com', 'who@am.io']" rule_name :string, "", required: true - recipients :string, "", required: true, example: "test@user.com, who@am.io" - category :string, "", required: true, enum: ["usage_command"] - active :boolean, "", required: true, default: false + value :integer, "", required: true + variable :string, "", required: true, example: "greater_than" end end } end - swagger_path :get_all_rules do + swagger_path :get_all_rules_by_users do get "/v1/rules" description "Returns rules list" summary "Returns all rules" @@ -89,6 +92,30 @@ defmodule EdgeCommanderWeb.CommandsController do end end + def get_all_rules_by_users(conn, params) do + user_id = Util.get_user_id(conn, params) + rules = + get_rules_by_user(user_id) + |> Enum.map(fn(rule) -> + %{ + "id" => rule.id, + "rule_name" => rule.rule_name, + "active" => rule.active, + "category" => rule.category, + "variable" => rule.variable, + "value" => rule.value, + "recipients" => rule.recipients, + "created_at" => rule.inserted_at + } + end) + + conn + |> put_status(200) + |> json(%{ + rules: rules + }) + end + def get_all_rules(conn, params) do [column, order] = params["sort"] |> String.split("|") search = if params["search"] in ["", nil], do: "", else: params["search"] diff --git a/lib/edge_commander_web/controllers/nvrs_controller.ex b/lib/edge_commander_web/controllers/nvrs_controller.ex index c1901ad6..b7a6f917 100644 --- a/lib/edge_commander_web/controllers/nvrs_controller.ex +++ b/lib/edge_commander_web/controllers/nvrs_controller.ex @@ -6,7 +6,7 @@ defmodule EdgeCommanderWeb.NvrsController do import Ecto.Query, warn: false import EdgeCommander.Accounts, only: [current_user: 1] import EdgeCommander.Monitors - import EdgeCommander.Devices, only: [update_nvr_ISAPI: 1, list_nvrs: 0, get_nvr!: 1] + import EdgeCommander.Devices, only: [update_nvr_ISAPI: 1, list_nvrs: 0, get_nvr!: 1, get_nvrs_by_user: 1] use PhoenixSwagger def swagger_definitions do @@ -15,31 +15,39 @@ defmodule EdgeCommanderWeb.NvrsController do title "Nvr" description "A network video recorder of the application" properties do + created_at :string, "" + extra (Schema.new do + properties do + device_id :string, "" + device_name :string, "" + device_type :string, "" + encoder_released_date :string, "" + encoder_version :string, "" + firmware_released_date :string, "" + mac_address :string, "" + reason :string, "" + serial_number :string, "" + end + end) + firmware_version :string, "" id :integer, "" + ip :integer, "", required: true + is_monitoring :boolean, "", default: false, required: true + model :string, "" name :string, "", required: true + nvr_status :boolean, "" username :string, "", required: true password :string, "", required: true - ip :integer, "", required: true port :integer, "", required: true vh_port :integer, "", required: true rtsp_port :integer, "", required: true sdk_port :integer, "", required: true - is_monitoring :boolean, "", default: false, required: true - nvr_status :boolean, "" - model :string, "" - mac_address :string, "" - firmware_version :string, "" - firmware_released_date :string, "" - encoder_version :string, "" - encoder_released_date :string, "" - serial_number :string, "" - reason :string, "Offline reason" end end } end - swagger_path :get_all do + swagger_path :get_all_nvrs_by_users do get "/v1/nvrs" description "Returns nvrs list" summary "Returns all nvrs" @@ -153,6 +161,36 @@ defmodule EdgeCommanderWeb.NvrsController do end end + def get_all_nvrs_by_users(conn, params) do + user_id = Util.get_user_id(conn, params) + nvrs = + get_nvrs_by_user(user_id) + |> Enum.map(fn(nvr) -> + %{ + "id" => nvr.id, + "name" => nvr.name, + "username" => nvr.username, + "password" => nvr.password, + "ip" => nvr.ip, + "port" => nvr.port, + "is_monitoring" => nvr.is_monitoring, + "created_at" => nvr.inserted_at, + "firmware_version" => nvr.firmware_version, + "model" => nvr.model, + "extra" => nvr.extra, + "vh_port" => nvr.vh_port, + "sdk_port" => nvr.sdk_port, + "rtsp_port" => nvr.rtsp_port, + "nvr_status" => nvr.nvr_status + } + end) + conn + |> put_status(200) + |> json(%{ + nvrs: nvrs + }) + end + def get_all_nvrs(conn, params) do [column, order] = params["sort"] |> String.split("|") diff --git a/lib/edge_commander_web/controllers/routers_controller.ex b/lib/edge_commander_web/controllers/routers_controller.ex index 70300795..f342fb86 100644 --- a/lib/edge_commander_web/controllers/routers_controller.ex +++ b/lib/edge_commander_web/controllers/routers_controller.ex @@ -4,7 +4,7 @@ defmodule EdgeCommanderWeb.RoutersController do alias EdgeCommander.Repo alias EdgeCommander.Util import Ecto.Query, warn: false - import EdgeCommander.Devices, only: [list_routers: 0, get_router!: 1] + import EdgeCommander.Devices, only: [list_routers: 0, get_router!: 1, get_routers_by_user: 1] import EdgeCommander.Accounts, only: [current_user: 1] use PhoenixSwagger @@ -18,15 +18,17 @@ defmodule EdgeCommanderWeb.RoutersController do name :string, "" username :string, "" password :string, "" - ip :integer, "" + ip :string, "" port :integer, "" is_monitoring :boolean, "", default: false + extra :json, "" + created_at :string, "" end end } end - swagger_path :get_all do + swagger_path :get_all_routers_by_users do get "/v1/routers" description "Returns routers list" summary "Returns all routers" @@ -126,6 +128,31 @@ defmodule EdgeCommanderWeb.RoutersController do end end + def get_all_routers_by_users(conn, params) do + user_id = Util.get_user_id(conn, params) + routers = + get_routers_by_user(user_id) + |> Enum.map(fn(router) -> + %{ + "id" => router.id, + "name" => router.name, + "username" => router.username, + "password" => router.password, + "ip" => router.ip, + "port" => router.port, + "is_monitoring" => router.is_monitoring, + "created_at" => router.inserted_at, + "extra" => router.extra + } + end) + + conn + |> put_status(200) + |> json(%{ + routers: routers + }) + end + def get_all_routers(conn, params) do [column, order] = params["sort"] |> String.split("|") search = if params["search"] in ["", nil], do: "", else: params["search"] diff --git a/lib/edge_commander_web/controllers/sims_controller.ex b/lib/edge_commander_web/controllers/sims_controller.ex index 27c25cbb..bb8244ce 100644 --- a/lib/edge_commander_web/controllers/sims_controller.ex +++ b/lib/edge_commander_web/controllers/sims_controller.ex @@ -13,7 +13,7 @@ defmodule EdgeCommanderWeb.SimsController do require Logger use PhoenixSwagger - swagger_path :get_sim_logs do + swagger_path :get_all_sims_by_users do get "/v1/sims" summary "Returns all sims data" parameters do @@ -29,7 +29,7 @@ defmodule EdgeCommanderWeb.SimsController do description "Returns list of data for single sim" summary "Find data by sim number" parameters do - sim_number :path, :string, "Sim number in given format (08xxxxxxxx)", required: true + sim_number :path, :string, "Sim number in given format (+353xxxxxxxx)", required: true api_id :query, :string, "", required: true api_key :query, :string, "", required: true end @@ -42,7 +42,7 @@ defmodule EdgeCommanderWeb.SimsController do description "Returns latest 10 sms for single sim" summary "Find sms by sim number" parameters do - sim_number :path, :string, "Sim number in given format (08xxxxxxxx)", required: true + sim_number :path, :string, "Sim number in given format (+353xxxxxxxx)", required: true api_id :query, :string, "", required: true api_key :query, :string, "", required: true end @@ -55,7 +55,7 @@ defmodule EdgeCommanderWeb.SimsController do description "Returns data usage in % for single sim" summary "Find data usage in % by sim number" parameters do - sim_number :path, :string, "Sim number in given format (08xxxxxxxx)", required: true + sim_number :path, :string, "Sim number in given format (+353xxxxxxxx)", required: true api_id :query, :string, "", required: true api_key :query, :string, "", required: true end @@ -67,7 +67,7 @@ defmodule EdgeCommanderWeb.SimsController do post "/v1/sims/{sim_number}/sms" summary "Send sms to sim" parameters do - sim_number :path, :string, "Sim number in given format (08xxxxxxxx)", required: true + sim_number :path, :string, "Sim number in given format (+353xxxxxxxx)", required: true sms_message :query, :string, "", required: true api_id :query, :string, "", required: true api_key :query, :string, "", required: true @@ -206,6 +206,40 @@ defmodule EdgeCommanderWeb.SimsController do }) end + def get_all_sims_by_users(conn, params) do + user_id = Util.get_user_id(conn, params) + sims = + Records.get_sims_by_user(user_id) + |> Enum.map(fn(sim) -> + %{ + "id" => sim.id, + "number" => sim.number, + "name" => sim.name, + "addon" => sim.addon, + "allowance" => sim.allowance, + "volume_used" => sim.volume_used, + "sim_provider" => sim.sim_provider, + "yesterday_volume_used" => sim.yesterday_volume_used, + "percentage_used" => sim.percentage_used, + "remaning_days" => sim.remaning_days, + "last_log_reading_at" => sim.last_log_reading_at, + "last_bill_date" => sim.last_bill_date, + "last_sms" => sim.last_sms, + "last_sms_date" => sim.last_sms_date, + "sms_since_last_bill" => sim.sms_since_last_bill, + "status" => sim.status, + "user_id" => sim.user_id, + "three_user_id" => sim.three_user_id, + } + end) + + conn + |> put_status(200) + |> json(%{ + sims: sims + }) + end + def get_sim_logs(conn, params) do [column, order] = params["sort"] |> String.split("|") search = if params["search"] in ["", nil], do: "", else: params["search"] diff --git a/lib/edge_commander_web/controllers/sites_controller.ex b/lib/edge_commander_web/controllers/sites_controller.ex index 29d54c65..49bb7ade 100644 --- a/lib/edge_commander_web/controllers/sites_controller.ex +++ b/lib/edge_commander_web/controllers/sites_controller.ex @@ -4,7 +4,7 @@ defmodule EdgeCommanderWeb.SitesController do alias EdgeCommander.Repo alias EdgeCommander.Util import Ecto.Query, warn: false - import EdgeCommander.Sites, only: [get_records!: 1] + import EdgeCommander.Sites, only: [get_records!: 1, get_sites_by_user: 1] import EdgeCommander.Devices, only: [get_router!: 1, get_nvr!: 1] import EdgeCommander.Accounts, only: [current_user: 1] use PhoenixSwagger @@ -13,22 +13,30 @@ defmodule EdgeCommanderWeb.SitesController do %{ Site: swagger_schema do title "Site" - description "A site of the application" + description "A site module of the application" properties do id :integer, "" sim_number :string, "", required: true router_name :string, "", required: true + router_id :integer, "", required: true nvr_name :string, "", required: true + nvr_id :integer, "", required: true notes :string, "" - location :string, "", required: true - lng :string, "Longitude of the location", required: true - lat :string, "Latitude of the location", required: true + name :string, "", required: true + location (Schema.new do + properties do + lat :float, "" + lng :float, "" + map_area :string, "" + end + end) + created_at :string, "", required: true end end } end - swagger_path :get_all_sites do + swagger_path :get_all_sites_by_users do get "/v1/sites" description "Returns sites list" summary "Returns all sites" @@ -99,6 +107,32 @@ defmodule EdgeCommanderWeb.SitesController do end end + def get_all_sites_by_users(conn, params) do + user_id = Util.get_user_id(conn, params) + sites = + get_sites_by_user(user_id) + |> Enum.map(fn(site) -> + %{ + "id" => site.id, + "name" => site.name, + "sim_number" => site.sim_number, + "router_name" => site.router_id |> get_router_name, + "router_id" => site.router_id, + "nvr_name" => site.nvr_id |> get_nvr_name, + "nvr_id" => site.nvr_id, + "notes" => site.notes, + "location" => site.location, + "created_at" => site.inserted_at + } + end) + + conn + |> put_status(200) + |> json(%{ + sites: sites + }) + end + def get_all_sites(conn, params) do [column, order] = params["sort"] |> String.split("|") search = if params["search"] in ["", nil], do: "", else: params["search"] diff --git a/lib/edge_commander_web/router.ex b/lib/edge_commander_web/router.ex index 42a8cd1d..9c344ed8 100644 --- a/lib/edge_commander_web/router.ex +++ b/lib/edge_commander_web/router.ex @@ -33,7 +33,7 @@ defmodule EdgeCommanderWeb.Router do version: "1.0", title: "Edge Commander" }, - host: "app.edgecommander.com", + host: "localhost:4000", tags: [ %{ name: "sims", @@ -183,28 +183,28 @@ defmodule EdgeCommanderWeb.Router do scope "/" do pipe_through :swagger_auth - get "/sims", SimsController, :get_sim_logs + get "/sims", SimsController, :get_all_sims_by_users get "/sims/:sim_number/usage", SimsController, :create_chartjs_line_data get "/sims/:sim_number", SimsController, :get_single_sim_data get "/sims/:sim_number/sms", SimsController, :get_single_sim_sms post "/sims", SimsController, :create - get "/routers", RoutersController, :get_all_routers + get "/routers", RoutersController, :get_all_routers_by_users post "/routers", RoutersController, :create patch "/routers/:id", RoutersController, :update delete "/routers/:id", RoutersController, :delete - get "/nvrs", NvrsController, :get_all_nvrs + get "/nvrs", NvrsController, :get_all_nvrs_by_users post "/nvrs", NvrsController, :create delete "/nvrs/:id", NvrsController, :delete patch "/nvrs/:id", NvrsController, :update - get "/rules", CommandsController, :get_all_rules + get "/rules", CommandsController, :get_all_rules_by_users post "/rules/new", CommandsController, :create patch "/rules/update", CommandsController, :update delete "/rules/:id", CommandsController, :delete - get "/sites", SitesController, :get_all_sites + get "/sites", SitesController, :get_all_sites_by_users post "/sites/new", SitesController, :create patch "/sites/update", SitesController, :update delete "/sites/:id", SitesController, :delete diff --git a/mix.exs b/mix.exs index 146e1f9f..86330cc2 100644 --- a/mix.exs +++ b/mix.exs @@ -53,13 +53,14 @@ defmodule EdgeCommander.Mixfile do {:swoosh, "~> 0.22"}, {:phoenix_swoosh, "~> 0.2"}, {:sshex, "2.2.1"}, - {:phoenix_swagger, "~> 0.8.1"}, - {:ex_json_schema, "~> 0.5"}, # optional + {:phoenix_swagger, github: "xerions/phoenix_swagger"}, + {:ex_json_schema, "~> 0.7.1"}, {:uuid, "~> 1.1.8"}, {:guardian, github: "ueberauth/guardian"}, {:geoip, "~> 0.2.3"}, {:browser, github: "danhper/elixir-browser"}, - {:bcrypt_elixir, "~> 2.0"} + {:bcrypt_elixir, "~> 2.0"}, + {:poison, "~> 4.0", override: true} ] end diff --git a/mix.lock b/mix.lock index a85068da..8cba1e4b 100644 --- a/mix.lock +++ b/mix.lock @@ -9,24 +9,24 @@ "comeonin": {:hex, :comeonin, "5.1.2", "fbbbbbfcf0f0e9900c0336d16c8d462edf838ba1759577e29cc5fbd7c28a4540", [:mix], [], "hexpm"}, "con_cache": {:hex, :con_cache, "0.14.0", "863acb90fa08017be3129074993af944cf7a4b6c3ee7c06c5cd0ed6b94fbc223", [:mix], [], "hexpm"}, "connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm"}, - "cowboy": {:hex, :cowboy, "2.6.3", "99aa50e94e685557cad82e704457336a453d4abcb77839ad22dbe71f311fcc06", [:rebar3], [{:cowlib, "~> 2.7.3", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm"}, - "cowlib": {:hex, :cowlib, "2.7.3", "a7ffcd0917e6d50b4d5fb28e9e2085a0ceb3c97dea310505f7460ff5ed764ce9", [:rebar3], [], "hexpm"}, - "crontab": {:hex, :crontab, "1.1.5", "2c9439506ceb0e9045de75879e994b88d6f0be88bfe017d58cb356c66c4a5482", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm"}, + "cowboy": {:hex, :cowboy, "2.7.0", "91ed100138a764355f43316b1d23d7ff6bdb0de4ea618cb5d8677c93a7a2f115", [:rebar3], [{:cowlib, "~> 2.8.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm"}, + "cowlib": {:hex, :cowlib, "2.8.0", "fd0ff1787db84ac415b8211573e9a30a3ebe71b5cbff7f720089972b2319c8a4", [:rebar3], [], "hexpm"}, + "crontab": {:hex, :crontab, "1.1.8", "2ce0e74777dfcadb28a1debbea707e58b879e6aa0ffbf9c9bb540887bce43617", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm"}, "db_connection": {:hex, :db_connection, "2.1.1", "a51e8a2ee54ef2ae6ec41a668c85787ed40cb8944928c191280fe34c15b76ae5", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm"}, - "decimal": {:hex, :decimal, "1.8.0", "ca462e0d885f09a1c5a342dbd7c1dcf27ea63548c65a65e67334f4b61803822e", [], [], "hexpm"}, + "decimal": {:hex, :decimal, "1.8.0", "ca462e0d885f09a1c5a342dbd7c1dcf27ea63548c65a65e67334f4b61803822e", [:mix], [], "hexpm"}, "dotenv": {:hex, :dotenv, "3.0.0", "52a28976955070d8312a81d59105b57ecf5d6a755c728b49c70a7e2120e6cb40", [:mix], [], "hexpm"}, - "ecto": {:hex, :ecto, "3.2.2", "bb6d1dbcd7ef975b60637e63182e56f3d7d0b5dd9c46d4b9d6183a5c455d65d1", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, + "ecto": {:hex, :ecto, "3.2.3", "51274df79862845b388733fddcf6f107d0c8c86e27abe7131fa98f8d30761bda", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, "ecto_sql": {:hex, :ecto_sql, "3.2.0", "751cea597e8deb616084894dd75cbabfdbe7255ff01e8c058ca13f0353a3921b", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.2.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.2.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, - "elixir_make": {:hex, :elixir_make, "0.5.2", "96a28c79f5b8d34879cd95ebc04d2a0d678cfbbd3e74c43cb63a76adf0ee8054", [:mix], [], "hexpm"}, + "elixir_make": {:hex, :elixir_make, "0.6.0", "38349f3e29aff4864352084fc736fa7fa0f2995a819a737554f7ebd28b85aaab", [:mix], [], "hexpm"}, "eternal": {:hex, :eternal, "1.2.1", "d5b6b2499ba876c57be2581b5b999ee9bdf861c647401066d3eeed111d096bc4", [:mix], [], "hexpm"}, "ex_json_schema": {:hex, :ex_json_schema, "0.7.1", "3dd7100996bf1a4f25f7e130a7a8c0f930279d9c49f4fa52c88df2e1b191b369", [:mix], [], "hexpm"}, "file_system": {:hex, :file_system, "0.2.7", "e6f7f155970975789f26e77b8b8d8ab084c59844d8ecfaf58cbda31c494d14aa", [:mix], [], "hexpm"}, "floki": {:hex, :floki, "0.23.0", "956ab6dba828c96e732454809fb0bd8d43ce0979b75f34de6322e73d4c917829", [:mix], [{:html_entities, "~> 0.4.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm"}, - "gen_stage": {:hex, :gen_stage, "0.14.1", "9d46723fda072d4f4bb31a102560013f7960f5d80ea44dcb96fd6304ed61e7a4", [:mix], [], "hexpm"}, + "gen_stage": {:hex, :gen_stage, "0.14.2", "6a2a578a510c5bfca8a45e6b27552f613b41cf584b58210f017088d3d17d0b14", [:mix], [], "hexpm"}, "gen_state_machine": {:hex, :gen_state_machine, "2.0.5", "9ac15ec6e66acac994cc442dcc2c6f9796cf380ec4b08267223014be1c728a95", [:mix], [], "hexpm"}, "geoip": {:hex, :geoip, "0.2.6", "bf12b696c1ca8f099a40b82854c2f5c69397662811fe40946fee339a514537cf", [:mix], [{:cachex, "~> 3.0", [hex: :cachex, repo: "hexpm", optional: false]}, {:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"}, "gettext": {:hex, :gettext, "0.17.0", "abe21542c831887a2b16f4c94556db9c421ab301aee417b7c4fbde7fbdbe01ec", [:mix], [], "hexpm"}, - "guardian": {:git, "https://github.com/ueberauth/guardian.git", "57de1b2ddb159ace2e5b2ecb98a4714384fd6d8a", []}, + "guardian": {:git, "https://github.com/ueberauth/guardian.git", "398b0170ccbe3a401b92a5352e6b92b8b1d12d7b", []}, "hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"}, "html_entities": {:hex, :html_entities, "0.4.0", "f2fee876858cf6aaa9db608820a3209e45a087c5177332799592142b50e89a6b", [:mix], [], "hexpm"}, "httpoison": {:hex, :httpoison, "1.6.1", "2ce5bf6e535cd0ab02e905ba8c276580bab80052c5c549f53ddea52d72e81f33", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"}, @@ -38,19 +38,18 @@ "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"}, "mime": {:hex, :mime, "1.3.1", "30ce04ab3175b6ad0bdce0035cba77bba68b813d523d1aac73d9781b4d193cf8", [:mix], [], "hexpm"}, "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm"}, - "mochiweb": {:hex, :mochiweb, "2.18.0", "eb55f1db3e6e960fac4e6db4e2db9ec3602cc9f30b86cd1481d56545c3145d2e", [:rebar3], [], "hexpm"}, "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm"}, "phoenix": {:hex, :phoenix, "1.4.10", "619e4a545505f562cd294df52294372d012823f4fd9d34a6657a8b242898c255", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.1 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.0.0", "c43117a136e7399ea04ecaac73f8f23ee0ffe3e07acfcb8062fe5f4c9f0f6531", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.9", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "phoenix_html": {:hex, :phoenix_html, "2.13.3", "850e292ff6e204257f5f9c4c54a8cb1f6fbc16ed53d360c2b780a3d0ba333867", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.2.1", "274a4b07c4adbdd7785d45a8b0bb57634d0b4f45b18d2c508b26c0344bd59b8f", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "1.1.2", "496c303bdf1b2e98a9d26e89af5bba3ab487ba3a3735f74bf1f4064d2a845a3e", [:mix], [], "hexpm"}, - "phoenix_swagger": {:hex, :phoenix_swagger, "0.8.1", "af7fc985804145e17df316bb988db86d43401af3cff2f5f7ef6c21d22af5086c", [:mix], [{:ex_json_schema, "~> 0.5", [hex: :ex_json_schema, repo: "hexpm", optional: true]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm"}, + "phoenix_swagger": {:git, "https://github.com/xerions/phoenix_swagger.git", "a6c9a58526f910efa5341552be6c03ce629c75f1", []}, "phoenix_swoosh": {:hex, :phoenix_swoosh, "0.2.0", "a7e0b32077cd6d2323ae15198839b05d9caddfa20663fd85787479e81f89520e", [:mix], [{:phoenix, "~> 1.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.2", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:swoosh, "~> 0.1", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm"}, - "plug": {:hex, :plug, "1.8.3", "12d5f9796dc72e8ac9614e94bda5e51c4c028d0d428e9297650d09e15a684478", [], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"}, + "plug": {:hex, :plug, "1.8.3", "12d5f9796dc72e8ac9614e94bda5e51c4c028d0d428e9297650d09e15a684478", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"}, "plug_cowboy": {:hex, :plug_cowboy, "2.1.0", "b75768153c3a8a9e8039d4b25bb9b14efbc58e9c4a6e6a270abff1cd30cbe320", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"}, - "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, + "poison": {:hex, :poison, "4.0.1", "bcb755a16fac91cad79bfe9fc3585bb07b9331e50cfe3420a24bcc2d735709ae", [:mix], [], "hexpm"}, "postgrex": {:hex, :postgrex, "0.15.1", "23ce3417de70f4c0e9e7419ad85bdabcc6860a6925fe2c6f3b1b5b1e8e47bf2f", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, "quantum": {:hex, :quantum, "2.3.4", "72a0e8855e2adc101459eac8454787cb74ab4169de6ca50f670e72142d4960e9", [:mix], [{:calendar, "~> 0.17", [hex: :calendar, repo: "hexpm", optional: true]}, {:crontab, "~> 1.1", [hex: :crontab, repo: "hexpm", optional: false]}, {:gen_stage, "~> 0.12", [hex: :gen_stage, repo: "hexpm", optional: false]}, {:swarm, "~> 3.3", [hex: :swarm, repo: "hexpm", optional: false]}, {:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: true]}], "hexpm"}, "ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm"}, @@ -58,10 +57,10 @@ "sshex": {:hex, :sshex, "2.2.1", "e1270b8345ea2a66a11c2bb7aed22c93e3bc7bc813486f4ffd0a980e4a898160", [:mix], [], "hexpm"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm"}, "swarm": {:hex, :swarm, "3.4.0", "64f8b30055d74640d2186c66354b33b999438692a91be275bb89cdc7e401f448", [:mix], [{:gen_state_machine, "~> 2.0", [hex: :gen_state_machine, repo: "hexpm", optional: false]}, {:libring, "~> 1.0", [hex: :libring, repo: "hexpm", optional: false]}], "hexpm"}, - "swoosh": {:hex, :swoosh, "0.23.5", "bfd9404bbf5069b1be2ffd317923ce57e58b332e25dbca2a35dedd7820dfee5a", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm"}, + "swoosh": {:hex, :swoosh, "0.24.0", "1371416214fee154195e74e1d2fd8e2b8e6bf0b99deda0a582652f64c5933adc", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm"}, "telemetry": {:hex, :telemetry, "0.4.0", "8339bee3fa8b91cb84d14c2935f8ecf399ccd87301ad6da6b71c09553834b2ab", [:rebar3], [], "hexpm"}, "timex": {:hex, :timex, "3.6.1", "efdf56d0e67a6b956cc57774353b0329c8ab7726766a11547e529357ffdc1d56", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"}, - "tzdata": {:hex, :tzdata, "1.0.1", "f6027a331af7d837471248e62733c6ebee86a72e57c613aa071ebb1f750fc71a", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"}, + "tzdata": {:hex, :tzdata, "1.0.2", "6c4242c93332b8590a7979eaf5e11e77d971e579805c44931207e32aa6ad3db1", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm"}, "uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [:mix], [], "hexpm"},