Skip to content

trbngr/Lyex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This project is not usable for most WSDLs. It probably won't work for you. Please don't use in production!

Lyex

I've tried all the SOAP libraries for Elixir without success.

So Lyex was born.

I had to learn a bit lot about WSDL. I'm pretty sure this won't work on a bunch of WSDLs in the wild.

Much more to do.

Installation

If available in Hex, the package can be installed by adding lyex to your list of dependencies in mix.exs:

def deps do
  [
    {:lyex, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/lyex.

Usage

use the Lyex.Client with configuration to generate a full SOAP client with functions and structs.

defmodule KeefeClient do
  use Lyex.Client,
    service_name: "Keefe",
    wsdl: "https://services.keefegp.com/VendorPayment/VendorPaymentSvc.svc?wsdl",
    cache_dir: "./priv"
end


defmodule OtherModule do
  def run do

    response =
      KeefeClient.lookup_recipient(%Keefe.LookupRecipientInput{
        Auth: %{
          VendorCode: "redacted",
          UserId: "redacted",
          Password: "redacted"
        },
        RecipientNumber: "123456",
        FacilityCode: "ALDOC"
      })

    %Keefe.LookupRecipientOutput{
      DOBDay: "0",
      DOBMonth: "0",
      DOBYear: "0",
      FacilityName: nil,
      FirstName: nil,
      LastName: nil,
      MaxDepositAmount: "0",
      Result: %{Code: "INVALID_DEPOSITOR", Text: "Could not find resident"}
    } = response
  end
end

Features

  • WSDL Parsing.
  • Function generation for each operation.
  • Input/output struct generation.
  • parse responses into output structs.
  • generate documentation for functions/structs.
  • Input validation.
  • adding soap headers to requests.
  • supporting multiple ports.

Overview of code

  • Resolve file and cache it

  • Parse the WSDL file via SAX. When we hit an import, start at step 1 and store it into state.imports. Merge all imports into the main WSDL

  • Assemble the WSDL by resolving all messages, bindings, etc.

  • Generate code

About

A modern SOAP client library for Elixir

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages