Open Nezteb opened 1 year ago
Hi @Nezteb , as for the C LANG docs, try these:
I didn't see the broken link you found on the page you mentioned. Where'd you find it?
EDIT: I encountered the same problem when I pasted the https://docs.openziti.io/docs/reference/developer/sdk/ziti-sdk-c
in the address bar, though I could click the link in the referenced SDKs page.
Weird, if I try to open the link in a new tab it 404s:
https://user-images.githubusercontent.com/3588798/223302037-761d32e2-a478-4850-a26a-4ad8438e0757.mov
If I open the link in the same tab it works fine.
Thanks for those links!
@Nezteb That's right, an Erlang/Elixir Edge SDK would implement the OpenZiti Edge Client API. You found the correct API reference. Conceptually, clients use the API to authenticate, find services they can dial or bind, and find router advertisements. I've mainly worked with the management API myself, but I'll ask around in case anyone else is thinking about Erlang/Elixir. Excited to have your interest in this.
Even without that, if I were to implement a native SDK for Erlang/Elixir, I assume I'd just have to implement an HTTP client that supports each part of the Edge API as documented? https://docs.openziti.io/docs/reference/developer/api/edge-client-reference
Hi @Nezteb , a Ziti SDK generally has two parts. The first is an HTTP REST client for the edge endpoints, allowing users to authenticate (create api sessions), list services and create sessions (authenticate to dial/bind(host) a specific service). The second part is implementing the communications channel to edge routers to allow dialing and hosting services. Those communications channels can then hopefully wrapped in a way which makes them easy integrate with native applications for that languages. For example, in the Go SDK we expose service communication channels as net.Conn instances.
Hope that's helpful.
@qrkourier @plorenz Thanks for the details!
I'm going to start a draft SDK this weekend. I'll probably create my own repo, unless y'all want to create a template repo under the openziti
org and I can make a PR? 😄
Go ahead! I created https://github.com/openziti-test-kitchen/ziti-sdk-elixir to start.
Hi @qrkourier. I was busy for a few months.
Is a community-contributed Elixir Edge SDK still be something the NetFoundry/OpenZiti team is interested in? If so I'm going to try to continue my previous work on it. 😄
Welcome back, @Nezteb. I'd be excited to see that!
The implementation alternatives are native, like the Go SDK, or a foreign function interface (FFI) leveraging the C-SDK.
I'm unsure which makes the most sense for Erlang/Elixer. I'll ask around in case someone else has any guidance. :relaxed:
A community-driven elixir sdk sounds great. It'd be good to look the ziti-sdk-c and "zitilib.h" in there for a good set of first functions to start with to expose. Let us know if you need any help or guidance
@Nezteb Hey there, this would still be cool. Can we offer you some extra support to resurrect the idea?
@qrkourier I've been swamped with other work since offering to take on this work; the project I was working on at the time decided to move in a different direction so I wasn't able to get dedicated time to work on this, Realistically I won't be able to contribute much in terms of code. 😅
But if anyone else is able to start an SDK, I'd happily help test it!
I saw that there was no official Edge SDK for Erlang/Elixir: https://docs.openziti.io/docs/reference/developer/sdk/
I was looking at potentially using the C SDK along with Elixir/Erlang NIFs to create my own:
However, when I went to look at the C SDK reference page but it 404s: https://docs.openziti.io/docs/reference/developer/sdk/ziti-sdk-c/clang/
Even without that, if I were to implement a native SDK for Erlang/Elixir, I assume I'd just have to implement an HTTP client that supports each part of the Edge API as documented? https://docs.openziti.io/docs/reference/developer/api/edge-client-reference