Skip to content
This repository was archived by the owner on Jan 15, 2025. It is now read-only.

Commit 3ce590c

Browse files
feat(apiclient): automatic IDN conversion of API command parameters to punycode
1 parent 5e40ffa commit 3ce590c

File tree

49 files changed

+1259
-1128
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1259
-1128
lines changed

MYMETA.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,6 @@
6161
}
6262
},
6363
"release_status" : "stable",
64-
"version" : "v2.2.5",
64+
"version" : "v2.3.0",
6565
"x_serialization_backend" : "JSON::PP version 2.27400_02"
6666
}

MYMETA.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ requires:
3939
perl: '5.026000'
4040
utf8: '0'
4141
version: '0.9924'
42-
version: v2.2.5
42+
version: v2.3.0
4343
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ This module is a connector library for the insanely fast HEXONET Backend API. Fo
1515
* [Release Notes](https://github.com/hexonet/perl-sdk/releases)
1616
* [Development Guide](https://github.com/hexonet/perl-sdk/wiki/Development-Guide)
1717

18+
## Features
19+
20+
* Automatic IDN Domain name conversion to punycode (our API accepts only punycode format in commands)
21+
* Allow nested associative arrays in API commands to improve for bulk parameters
22+
* Connecting and communication with our API
23+
* Several ways to access and deal with response data
24+
* Getting the command again returned together with the response
25+
* sessionless communication
26+
* session-based communication
27+
* possibility to save API session identifier in session
28+
1829
## How to use this module in your project
1930

2031
We have also a demo app available showing how to integrate and use our SDK. See [here](https://github.com/hexonet/perl-sdk-demo).

cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--branch.html

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
44
<html xmlns="http://www.w3.org/1999/xhtml">
55
<!--
6-
This file was generated by Devel::Cover Version 1.33
7-
Devel::Cover is copyright 2001-2019, Paul Johnson (paul@pjcj.net)
6+
This file was generated by Devel::Cover Version 1.30
7+
Devel::Cover is copyright 2001-2017, Paul Johnson (paul@pjcj.net)
88
Devel::Cover is free. It is licensed under the same terms as Perl itself.
99
The latest version of Devel::Cover should be available from my homepage:
1010
http://www.pjcj.net
@@ -20,30 +20,35 @@
2020
<h1>Branch Coverage</h1>
2121
<table>
2222
<tr><td class="h" align="right">File:</td><td align="left">blib/lib/WebService/Hexonet/Connector/APIClient.pm</td></tr>
23-
<tr><td class="h" align="right">Coverage:</td><td align="left" class="c1">81.6%</td></tr>
23+
<tr><td class="h" align="right">Coverage:</td><td align="left" class="c1">85.4%</td></tr>
2424
</table>
2525
<div><br/></div>
2626
<table>
2727
<tr><th>line</th><th>%</th><th colspan="2">coverage</th><th>branch</th></tr>
28-
<tr><td class="h"><a id="L56">56</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (ref $cmd eq &quot;HASH&quot;)</td></tr>
29-
<tr><td class="h"><a id="L58">58</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (defined $cmd-&gt;{$key})</td></tr>
30-
<tr><td class="h"><a id="L59">59</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (ref $cmd-&gt;{$key} eq &#39;ARRAY&#39;) { }</td></tr>
31-
<tr><td class="h"><a id="L76">76</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if (utf8::is_utf8($tmp))</td></tr>
32-
<tr><td class="h"><a id="L87">87</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (length $sessid)</td></tr>
33-
<tr><td class="h"><a id="L102">102</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless (length $self-&gt;{&#39;ua&#39;})</td></tr>
34-
<tr><td class="h"><a id="L195">195</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($rr-&gt;isSuccess)</td></tr>
35-
<tr><td class="h"><a id="L198">198</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if (defined $col)</td></tr>
36-
<tr><td class="h"><a id="L212">212</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">unless (defined $otpc)</td></tr>
37-
<tr><td class="h"><a id="L221">221</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if ($rr-&gt;isSuccess)</td></tr>
38-
<tr><td class="h"><a id="L224">224</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if (defined $col)</td></tr>
39-
<tr><td class="h"><a id="L237">237</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($rr-&gt;isSuccess)</td></tr>
40-
<tr><td class="h"><a id="L255">255</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($r-&gt;is_success) { }</td></tr>
41-
<tr><td class="h"><a id="L257">257</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($self-&gt;{&#39;debugMode&#39;})</td></tr>
42-
<tr><td class="h"><a id="L265">265</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($self-&gt;{&#39;debugMode&#39;})</td></tr>
43-
<tr><td class="h"><a id="L278">278</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if (defined $mycmd-&gt;{&#39;LAST&#39;})</td></tr>
44-
<tr><td class="h"><a id="L282">282</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (defined $mycmd-&gt;{&#39;FIRST&#39;})</td></tr>
45-
<tr><td class="h"><a id="L288">288</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($first &lt; $total)</td></tr>
46-
<tr><td class="h"><a id="L348">348</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($newkey ne $key)</td></tr>
28+
<tr><td class="h"><a id="L57">57</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (ref $cmd eq &#39;HASH&#39;)</td></tr>
29+
<tr><td class="h"><a id="L59">59</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (defined $cmd-&gt;{$key})</td></tr>
30+
<tr><td class="h"><a id="L67">67</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (utf8::is_utf8($tmp))</td></tr>
31+
<tr><td class="h"><a id="L78">78</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (length $sessid)</td></tr>
32+
<tr><td class="h"><a id="L93">93</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless (length $self-&gt;{&#39;ua&#39;})</td></tr>
33+
<tr><td class="h"><a id="L186">186</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($rr-&gt;isSuccess)</td></tr>
34+
<tr><td class="h"><a id="L189">189</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if (defined $col)</td></tr>
35+
<tr><td class="h"><a id="L203">203</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">unless (defined $otpc)</td></tr>
36+
<tr><td class="h"><a id="L212">212</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if ($rr-&gt;isSuccess)</td></tr>
37+
<tr><td class="h"><a id="L215">215</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if (defined $col)</td></tr>
38+
<tr><td class="h"><a id="L228">228</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($rr-&gt;isSuccess)</td></tr>
39+
<tr><td class="h"><a id="L252">252</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($r-&gt;is_success) { }</td></tr>
40+
<tr><td class="h"><a id="L254">254</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($self-&gt;{&#39;debugMode&#39;})</td></tr>
41+
<tr><td class="h"><a id="L262">262</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if ($self-&gt;{&#39;debugMode&#39;})</td></tr>
42+
<tr><td class="h"><a id="L275">275</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">if (defined $mycmd-&gt;{&#39;LAST&#39;})</td></tr>
43+
<tr><td class="h"><a id="L279">279</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (defined $mycmd-&gt;{&#39;FIRST&#39;})</td></tr>
44+
<tr><td class="h"><a id="L285">285</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($first &lt; $total)</td></tr>
45+
<tr><td class="h"><a id="L345">345</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($newkey ne $key)</td></tr>
46+
<tr><td class="h"><a id="L348">348</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (ref $cmd-&gt;{$newkey} eq &#39;ARRAY&#39;)</td></tr>
47+
<tr><td class="h"><a id="L365">365</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($cmd-&gt;{&#39;COMMAND&#39;} =~ /^CONVERTIDN$/imsux)</td></tr>
48+
<tr><td class="h"><a id="L369">369</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (scalar @keys == 0)</td></tr>
49+
<tr><td class="h"><a id="L376">376</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($val =~ /[^[:lower:]\d. -]/imsux)</td></tr>
50+
<tr><td class="h"><a id="L386">386</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if ($r-&gt;isSuccess)</td></tr>
51+
<tr><td class="h"><a id="L388">388</a></td><td class="c0">50</td><td class="c3">T</td><td class="c0">F</td><td class="s">if ($col)</td></tr>
4752
</table>
4853
</body>
4954
</html>

cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--condition.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
44
<html xmlns="http://www.w3.org/1999/xhtml">
55
<!--
6-
This file was generated by Devel::Cover Version 1.33
7-
Devel::Cover is copyright 2001-2019, Paul Johnson (paul@pjcj.net)
6+
This file was generated by Devel::Cover Version 1.30
7+
Devel::Cover is copyright 2001-2017, Paul Johnson (paul@pjcj.net)
88
Devel::Cover is free. It is licensed under the same terms as Perl itself.
99
The latest version of Devel::Cover should be available from my homepage:
1010
http://www.pjcj.net
@@ -25,7 +25,7 @@ <h1>Condition Coverage</h1>
2525
<div><br/></div>
2626
<table>
2727
<tr><th>line</th><th>%</th><th>coverage</th><th>condition</th></tr>
28-
<tr><td class="h"><a id="L193">193</a></td><td class="c0">50</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$otp || &#39;&#39;</td></tr>
28+
<tr><td class="h"><a id="L184">184</a></td><td class="c0">50</td><td><div><table><tr><th>A</th><th>dec</th></tr><tr align="center"><td class="c3">0</td><td class="c3">0</td></tr><tr align="center"><td class="c0">1</td><td class="c0">1</td></tr></table></div></td><td class="s">$otp || &#39;&#39;</td></tr>
2929
</table>
3030
</body>
3131
</html>

cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--subroutine.html

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
44
<html xmlns="http://www.w3.org/1999/xhtml">
55
<!--
6-
This file was generated by Devel::Cover Version 1.33
7-
Devel::Cover is copyright 2001-2019, Paul Johnson (paul@pjcj.net)
6+
This file was generated by Devel::Cover Version 1.30
7+
Devel::Cover is copyright 2001-2017, Paul Johnson (paul@pjcj.net)
88
Devel::Cover is free. It is licensed under the same terms as Perl itself.
99
The latest version of Devel::Cover should be available from my homepage:
1010
http://www.pjcj.net
@@ -38,35 +38,36 @@ <h1>Subroutine Coverage</h1>
3838
<tr><td class="h"><a id="L13">13</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
3939
<tr><td class="h"><a id="L14">14</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
4040
<tr><td class="h"><a id="L15">15</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
41-
<tr><td class="h"><a id="L19">19</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
42-
<tr><td class="h"><a id="L25">25</a></td><td class="c3"><div class="s">new</div></td></tr>
43-
<tr><td class="h"><a id="L39">39</a></td><td class="c3"><div class="s">enableDebugMode</div></td></tr>
44-
<tr><td class="h"><a id="L46">46</a></td><td class="c3"><div class="s">disableDebugMode</div></td></tr>
45-
<tr><td class="h"><a id="L53">53</a></td><td class="c3"><div class="s">getPOSTData</div></td></tr>
46-
<tr><td class="h"><a id="L85">85</a></td><td class="c3"><div class="s">getSession</div></td></tr>
47-
<tr><td class="h"><a id="L95">95</a></td><td class="c3"><div class="s">getURL</div></td></tr>
48-
<tr><td class="h"><a id="L101">101</a></td><td class="c3"><div class="s">getUserAgent</div></td></tr>
49-
<tr><td class="h"><a id="L113">113</a></td><td class="c3"><div class="s">setUserAgent</div></td></tr>
50-
<tr><td class="h"><a id="L123">123</a></td><td class="c3"><div class="s">getVersion</div></td></tr>
51-
<tr><td class="h"><a id="L129">129</a></td><td class="c3"><div class="s">saveSession</div></td></tr>
52-
<tr><td class="h"><a id="L139">139</a></td><td class="c3"><div class="s">reuseSession</div></td></tr>
53-
<tr><td class="h"><a id="L147">147</a></td><td class="c3"><div class="s">setURL</div></td></tr>
54-
<tr><td class="h"><a id="L154">154</a></td><td class="c3"><div class="s">setOTP</div></td></tr>
55-
<tr><td class="h"><a id="L161">161</a></td><td class="c3"><div class="s">setSession</div></td></tr>
56-
<tr><td class="h"><a id="L168">168</a></td><td class="c3"><div class="s">setRemoteIPAddress</div></td></tr>
57-
<tr><td class="h"><a id="L175">175</a></td><td class="c3"><div class="s">setCredentials</div></td></tr>
58-
<tr><td class="h"><a id="L183">183</a></td><td class="c3"><div class="s">setRoleCredentials</div></td></tr>
59-
<tr><td class="h"><a id="L191">191</a></td><td class="c3"><div class="s">login</div></td></tr>
60-
<tr><td class="h"><a id="L209">209</a></td><td class="c3"><div class="s">loginExtended</div></td></tr>
61-
<tr><td class="h"><a id="L235">235</a></td><td class="c3"><div class="s">logout</div></td></tr>
62-
<tr><td class="h"><a id="L245">245</a></td><td class="c3"><div class="s">request</div></td></tr>
63-
<tr><td class="h"><a id="L276">276</a></td><td class="c3"><div class="s">requestNextResponsePage</div></td></tr>
64-
<tr><td class="h"><a id="L298">298</a></td><td class="c3"><div class="s">requestAllResponsePages</div></td></tr>
65-
<tr><td class="h"><a id="L317">317</a></td><td class="c3"><div class="s">setUserView</div></td></tr>
66-
<tr><td class="h"><a id="L324">324</a></td><td class="c3"><div class="s">resetUserView</div></td></tr>
67-
<tr><td class="h"><a id="L331">331</a></td><td class="c3"><div class="s">useOTESystem</div></td></tr>
68-
<tr><td class="h"><a id="L338">338</a></td><td class="c3"><div class="s">useLIVESystem</div></td></tr>
69-
<tr><td class="h"><a id="L345">345</a></td><td class="c3"><div class="s">_toUpperCaseKeys</div></td></tr>
41+
<tr><td class="h"><a id="L20">20</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
42+
<tr><td class="h"><a id="L26">26</a></td><td class="c3"><div class="s">new</div></td></tr>
43+
<tr><td class="h"><a id="L40">40</a></td><td class="c3"><div class="s">enableDebugMode</div></td></tr>
44+
<tr><td class="h"><a id="L47">47</a></td><td class="c3"><div class="s">disableDebugMode</div></td></tr>
45+
<tr><td class="h"><a id="L54">54</a></td><td class="c3"><div class="s">getPOSTData</div></td></tr>
46+
<tr><td class="h"><a id="L76">76</a></td><td class="c3"><div class="s">getSession</div></td></tr>
47+
<tr><td class="h"><a id="L86">86</a></td><td class="c3"><div class="s">getURL</div></td></tr>
48+
<tr><td class="h"><a id="L92">92</a></td><td class="c3"><div class="s">getUserAgent</div></td></tr>
49+
<tr><td class="h"><a id="L104">104</a></td><td class="c3"><div class="s">setUserAgent</div></td></tr>
50+
<tr><td class="h"><a id="L114">114</a></td><td class="c3"><div class="s">getVersion</div></td></tr>
51+
<tr><td class="h"><a id="L120">120</a></td><td class="c3"><div class="s">saveSession</div></td></tr>
52+
<tr><td class="h"><a id="L130">130</a></td><td class="c3"><div class="s">reuseSession</div></td></tr>
53+
<tr><td class="h"><a id="L138">138</a></td><td class="c3"><div class="s">setURL</div></td></tr>
54+
<tr><td class="h"><a id="L145">145</a></td><td class="c3"><div class="s">setOTP</div></td></tr>
55+
<tr><td class="h"><a id="L152">152</a></td><td class="c3"><div class="s">setSession</div></td></tr>
56+
<tr><td class="h"><a id="L159">159</a></td><td class="c3"><div class="s">setRemoteIPAddress</div></td></tr>
57+
<tr><td class="h"><a id="L166">166</a></td><td class="c3"><div class="s">setCredentials</div></td></tr>
58+
<tr><td class="h"><a id="L174">174</a></td><td class="c3"><div class="s">setRoleCredentials</div></td></tr>
59+
<tr><td class="h"><a id="L182">182</a></td><td class="c3"><div class="s">login</div></td></tr>
60+
<tr><td class="h"><a id="L200">200</a></td><td class="c3"><div class="s">loginExtended</div></td></tr>
61+
<tr><td class="h"><a id="L226">226</a></td><td class="c3"><div class="s">logout</div></td></tr>
62+
<tr><td class="h"><a id="L236">236</a></td><td class="c3"><div class="s">request</div></td></tr>
63+
<tr><td class="h"><a id="L273">273</a></td><td class="c3"><div class="s">requestNextResponsePage</div></td></tr>
64+
<tr><td class="h"><a id="L295">295</a></td><td class="c3"><div class="s">requestAllResponsePages</div></td></tr>
65+
<tr><td class="h"><a id="L314">314</a></td><td class="c3"><div class="s">setUserView</div></td></tr>
66+
<tr><td class="h"><a id="L321">321</a></td><td class="c3"><div class="s">resetUserView</div></td></tr>
67+
<tr><td class="h"><a id="L328">328</a></td><td class="c3"><div class="s">useOTESystem</div></td></tr>
68+
<tr><td class="h"><a id="L335">335</a></td><td class="c3"><div class="s">useLIVESystem</div></td></tr>
69+
<tr><td class="h"><a id="L342">342</a></td><td class="c3"><div class="s">_flattenCommand</div></td></tr>
70+
<tr><td class="h"><a id="L364">364</a></td><td class="c3"><div class="s">_autoIDNConvert</div></td></tr>
7071
</table>
7172
</body>
7273
</html>

0 commit comments

Comments
 (0)