factoryd

factoryd

Lyex - A SOAP client that will hopefully work

Greetings, Alchemists.

I have a really old project that I’ve been maintaining for the last 8 years. It’s written in .NET and has been growing very long in the tooth for a long time. It talks to around 10 SOAP services (yay…not). Lately I’ve been wanting to port it to Elixir but haven’t had much luck finding a SOAP lib that works. I could have settled on hard coding each service with templates and calling it a day. But the dirty developer in me thinks that’s insanely boring.

So I set out to build a client of my own.

I had to learn about how WSDL files are structured. Fun…yeah no.
Once I got a WSDL parsed into Elixir, I had to figure out how to use that. So what better chance to learn a bit about macros. That was fun!

Anyway, with a boring/typical name, Lyex was born.

The idea is to feed it a WSDL URI and it will download and cache the file(s). It will then generate a full client based on the operations found in the WSDL.

The client includes functions for every operation and typed structs based on the inputs and outputs of each operation.

This is an initial commit of Lyex and my first real used of macros in elixir-land.

I’d appreciate it if someone could throw a WSDL or two at it let me know how you fare.

Lyex @ GitHub

Cheers,
Chris

Most Liked

xlphs

xlphs

:clap: Great work, you did what I wanted to, I only had to talk to 1 SOAP service so I ended up hardcoding the templates and response parsers with sweet xml.

factoryd

factoryd

Thanks. I started and got obsessed with achieving the end goal. I’m sure a lot of you can understand that! Haha.

I’m committed to making this usable.

factoryd

factoryd

It seems that Lyex has an issue with WSDL containing multiple bindings. I will fix that up over the weekend

factoryd

factoryd

Just pushed the “rewrite” if anyone is testing. I got it working with a few new WSDL files.

OvermindDL1

OvermindDL1

Ooo, I’m sorry, I had to do that at my last job almost 10 years ago, that was a horror… ^.^;

Yep, had to do the same… ^.^;

Seems punny to me. ^.^

This is awesome!

Does it generate docs about the interface as well? Can it be generated out with the projects docs as well? :slight_smile:

Sadly/Happily I don’t have to deal with SOAP/WSDL anymore so I don’t have anything I can test it with. ^.^;

Where Next?

Popular in Libraries Top

kevinlang
Hey all, We have made an Ecto3 Adapter for SQLite3, ecto_sqlite3! We have successfully on-boarded the full suite of integration tests (...
New
josevalim
EDIT: since Ecto 3.0 final version is out, this post was amended to use the final versions in the instructions below. Hi everyone, We a...
New
achempion
Hi, I would like to tell about my initiative to further maintain and develop Waffle project which is the fork of Arc library. The progre...
New
tfwright
After working on it for a couple of months and using it in production for most of that time, today I’ve released LiveAdmin, a LiveView ba...
New
Crowdhailer
I have been updating a library that allows you to pipe between functions that use the erlang result tuple convention. Assuming you have...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 42633 214
New
OvermindDL1
I created a new library (rather I pulled out a couple files from my big project), it manages an operating system PID file for the BEAM. ...
New
gabrielpoca
Hello everyone! I want to share with you something that I’m really proud of: https://stillstatic.io/ Still is a static site builder for...
New
vic
Expat is a tiny experiment I did for extracting patterns and being able to reuse them (compose and share patterns between elixir librarie...
New
mischov
import Meeseeks.CSS html = HTTPoison.get!("https://news.ycombinator.com/").body for story <- Meeseeks.all(html, css("tr.athing")) do...
New

Other popular topics Top

dotdotdotPaul
Okay, I'm having a heck of a time trying to figure out how to best handle the validation of belongs_to associations in Ecto. I'm sure I'...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list....
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
lucidguppy
I have a super simple question about elixir - how would I take a file like this foo bar baz and output a new file that enumerates th...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New

Sub Categories:

We're in Beta

About us Mission Statement