Packages

Production-ready SOAP library for Elixir featuring SOAP 1.1/1.2 support, dynamic WSDL parsing, interactive web forms, MTOM attachments, Phoenix integration, and multi-protocol API generation

Current section

Files

Jump to
lather mix.exs
Raw

mix.exs

defmodule Lather.MixProject do
  use Mix.Project

  def project do
    [
      app: :lather,
      version: "1.2.1",
      elixir: "~> 1.14",
      test_coverage: [summary: [threshold: 75]],
      start_permanent: Mix.env() == :prod,
      description:
        "Production-ready SOAP library for Elixir featuring SOAP 1.1/1.2 support, dynamic WSDL parsing, " <>
          "interactive web forms, MTOM attachments, Phoenix integration, and multi-protocol API generation",
      source_url: "https://github.com/awksedgreep/lather",
      homepage_url: "https://github.com/awksedgreep/lather",
      package: package(),
      deps: deps(),
      docs: docs()
    ]
  end

  # Run "mix help compile.app" to learn about applications.
  def application do
    [
      extra_applications: [:logger],
      mod: {Lather.Application, []}
    ]
  end

  # Run "mix help deps" to learn about dependencies.
  defp deps do
    [
      {:finch, "~> 0.16"},
      {:sweet_xml, "~> 0.7"},
      {:xml_builder, ">= 2.4.1 and < 3.0.0"},
      {:telemetry, "~> 1.2"},
      {:jason, "~> 1.4", optional: true},
      {:plug, "~> 1.14"},
      {:ex_doc, "~> 0.30", only: :dev, runtime: false},
      {:bandit, "~> 1.0", only: :test}
    ]
  end

  defp package do
    [
      maintainers: ["Mark Cotner"],
      licenses: ["MIT"],
      links: %{
        "GitHub" => "https://github.com/awksedgreep/lather",
        "Documentation" => "https://hexdocs.pm/lather",
        "Changelog" => "https://github.com/awksedgreep/lather/blob/main/CHANGELOG.md"
      },
      files:
        ~w(lib priv mix.exs README.md LICENSE CHANGELOG.md USAGE.md TESTING.md API.md RELEASE_NOTES_1.0.0.md TODO.md),
      keywords: [
        "soap",
        "soap12",
        "wsdl",
        "xml",
        "web-services",
        "client",
        "server",
        "phoenix",
        "mtom",
        "attachments",
        "elixir",
        "http",
        "rpc"
      ]
    ]
  end

  defp docs do
    [
      main: "readme",
      name: "Lather SOAP Library",
      source_ref: "v1.2.1",
      source_url: "https://github.com/awksedgreep/lather",
      extras: [
        "README.md",
        "CHANGELOG.md",
        "USAGE.md",
        "TESTING.md",
        "API.md",
        "RELEASE_NOTES_1.0.0.md",
        "TODO.md"
      ],
      groups_for_extras: [
        "Getting Started": ["README.md", "USAGE.md"],
        Reference: ["API.md", "TESTING.md"],
        "Release Info": ["CHANGELOG.md", "RELEASE_NOTES_1.0.0.md"],
        Development: ["TODO.md"]
      ],
      groups_for_modules: [
        Core: [Lather, Lather.Client, Lather.DynamicClient],
        Server: [
          Lather.Server,
          Lather.Server.Plug,
          Lather.Server.EnhancedPlug,
          Lather.Server.WSDLGenerator,
          Lather.Server.EnhancedWSDLGenerator,
          Lather.Server.FormGenerator
        ],
        "SOAP Processing": [
          Lather.Soap.Envelope,
          Lather.Operation.Builder,
          Lather.Wsdl.Analyzer
        ],
        "Transport & HTTP": [
          Lather.Http.Transport
        ],
        "XML Processing": [
          Lather.Xml.Builder,
          Lather.Xml.Parser
        ],
        "MTOM & Attachments": [
          Lather.Mtom.Builder,
          Lather.Mtom.Attachment,
          Lather.Mtom.Mime
        ]
      ],
      before_closing_head_tag: &docs_before_closing_head_tag/1,
      before_closing_body_tag: &docs_before_closing_body_tag/1
    ]
  end

  defp docs_before_closing_head_tag(:html) do
    """
    <meta name="keywords" content="elixir,soap,wsdl,xml,web-services,phoenix,soap12">
    <meta name="description" content="Production-ready SOAP library for Elixir with SOAP 1.2 support">
    """
  end

  defp docs_before_closing_head_tag(_), do: ""

  defp docs_before_closing_body_tag(:html) do
    """
    <!-- Analytics could go here -->
    """
  end

  defp docs_before_closing_body_tag(_), do: ""
end