1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 | <!doctype html>
<html lang="en" data-releases="../releases.json">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>clj.git — ird-clj, Clojure client for the ird API</title>
<style>
:root {
color-scheme: dark;
--paper: #12161c; --ink: #e8edf2; --ink-soft: #9aa7b3;
--line: #263241; --card: #182029; --code-bg: #1f2a36; --accent: #7fc4a8;
}
@media (prefers-color-scheme: light) {
:root {
color-scheme: light;
--paper: #f8f9fa; --ink: #232a30; --ink-soft: #61707d;
--line: #dde4ea; --card: #ffffff; --code-bg: #eef2f5; --accent: #35836a;
}
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--paper); color: var(--ink);
font: 16.5px/1.65 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, sans-serif;
padding: 64px 22px 90px;
}
main { max-width: 660px; margin: 0 auto; }
h1 { font-size: 40px; font-weight: 600; letter-spacing: -.4px;
font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.tag { margin: 14px 0 34px; font-size: 18px; color: var(--ink-soft); }
h2 { font-size: 20px; font-weight: 600; margin: 36px 0 10px; }
p { margin: 10px 0; }
a { color: var(--accent); }
pre {
background: var(--card); border: 1px solid var(--line); border-radius: 10px;
padding: 13px 16px; overflow-x: auto; margin: 14px 0;
font: 14px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace;
}
code { font: 15px ui-monospace, SFMono-Regular, Menlo, monospace;
background: var(--code-bg); border-radius: 5px; padding: 1px 6px; }
pre code { background: none; padding: 0; }
ul { padding-left: 22px; } li { margin: 6px 0; }
footer { margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--line);
font-size: 14px; color: var(--ink-soft); }
footer a { color: inherit; }
</style>
</head>
<body>
<main>
<h1>clj.git</h1>
<p class="tag"><strong>ird-clj</strong> — full-coverage Clojure client for the
<a href="https://api.ird.ro/openapi.json">ird public API</a>: .ro domains, DNS
(hosted zones, DNSSEC, bring-your-own-domain claims), VPS, tunnels, IPFS,
P2P apps, and async jobs. Every one of the API's 161 operations is wrapped
by a thin, documented function.</p>
<h2>Use as a dependency</h2>
<pre><code>;; deps.edn
ro.ird/ird-clj {:git/url "https://ird.cod-sursa.ro/clj.git"
:git/tag "<span data-rel="clj.tag">v0.2.0</span>"
:git/sha "<span data-rel="clj.tag_sha_short">319801b</span>"}</code></pre>
<p>That is the latest release. To track the newest commit instead, pin
<code>:git/sha "<span data-rel="clj.head">…</span>"</code> (or ask the mirror:
<code>git ls-remote https://ird.cod-sursa.ro/clj.git HEAD</code>). The same
coordinates are machine-readable in
<a href="../releases.json">releases.json</a>.</p>
<h2>Clone</h2>
<pre><code>git clone https://ird.cod-sursa.ro/clj.git</code></pre>
<p><a href="browse/">browse the source in your browser →</a></p>
<h2>Quickstart</h2>
<pre><code>(require '[ird.client :as ird]
'[ird.domains :as domains])
(def c (ird/make-client {:api-key (System/getenv "IRD_API_KEY")}))
(domains/check c "example.ro")
;; => {:domain "example.ro" :status "registered" ...}</code></pre>
<p>The full guide — authentication, pagination, async jobs, the domain
safety gate, tests — is in the repo's <code>README.md</code>.</p>
<h2>What's inside</h2>
<ul>
<li><code>src/ird/</code> — one namespace per API area
(<code>domains</code>, <code>dns</code>, <code>vps</code>,
<code>tunnels</code>, <code>ipfs</code>, <code>p2p</code>,
<code>jobs</code>, …)</li>
<li><code>spec/openapi.json</code> — the API spec the client is verified
against, one-to-one, by the test suite</li>
<li><code>test/ird/</code> — conformance, coverage and integration tests
(<code>clojure -M:test</code>; live tests opt-in)</li>
</ul>
<h2>License</h2>
<p>MIT.</p>
<footer>
part of <a href="https://ird.cod-sursa.ro/">ird.cod-sursa.ro</a> —
public source, clonable straight from this domain.
</footer>
</main>
<script>
// Fill release coordinates from the site's releases.json (written by the
// assembler from the mirrors it publishes); the static text is the fallback.
(function () {
var els = document.querySelectorAll('[data-rel]');
if (!els.length || !window.fetch) return;
fetch(document.documentElement.getAttribute('data-releases') || 'releases.json')
.then(function (r) { return r.ok ? r.json() : null; })
.then(function (j) {
if (!j || !j.apps) return;
Array.prototype.forEach.call(els, function (el) {
var k = el.getAttribute('data-rel').split('.'), a = j.apps[k[0]];
var v = a && a[k[1]];
if (typeof v === 'string' && v) el.textContent = v;
});
})
.catch(function () {});
})();
</script>
</body>
</html>
|