<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pakakeh.go, branch v0.55.2</title>
<subtitle>Collections of packages and tools for working with Go programming language.</subtitle>
<id>http://git.kilabit.info/pakakeh.go/atom?h=v0.55.2</id>
<link rel='self' href='http://git.kilabit.info/pakakeh.go/atom?h=v0.55.2'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/'/>
<updated>2024-07-21T17:39:49Z</updated>
<entry>
<title>Release pakakeh.go v0.55.2 (2024-07-22)</title>
<updated>2024-07-21T17:39:49Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-07-21T17:39:49Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=e28a932fe2e4c13f599e029c3f7c3af1d1441700'/>
<id>urn:sha1:e28a932fe2e4c13f599e029c3f7c3af1d1441700</id>
<content type='text'>
=== Bug fix

*  lib/memfs: sanitize the Root directory to fix refresh

   In [MemFS.refresh], if the requested url is "/file1" and [Options.Root]
   is ".", the path during refresh become "file1" and if passed to
   [filepath.Dir] it will return ".". This cause the loop on refresh
   never end because there is no PathNodes equal with ".".
</content>
</entry>
<entry>
<title>lib/memfs: sanitize the Root directory to fix refresh</title>
<updated>2024-07-21T17:38:19Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-07-18T18:48:28Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=52ef9967fca5946ee047847d744d00ccaecff1a8'/>
<id>urn:sha1:52ef9967fca5946ee047847d744d00ccaecff1a8</id>
<content type='text'>
In [MemFS.refresh], if the requested url is "/file1" and [Options.Root]
is ".", the path during refresh become "file1" and if passed to
[filepath.Dir] it will return ".".
This cause the loop on refresh never end because there is no PathNodes
equal with ".".
</content>
</entry>
<entry>
<title>cmd/bcrypt: check for error during Fscanln</title>
<updated>2024-07-21T17:35:02Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-07-18T18:51:24Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=1093c8ce4ae0015e4d3d1f654c0e2e5d2ddd28a7'/>
<id>urn:sha1:1093c8ce4ae0015e4d3d1f654c0e2e5d2ddd28a7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Release pakakeh.go v0.55.1 (2024-06-20)</title>
<updated>2024-06-19T19:12:54Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-06-19T19:12:54Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=3594debcc137b2536477f01f00705aa700b4d653'/>
<id>urn:sha1:3594debcc137b2536477f01f00705aa700b4d653</id>
<content type='text'>
===  Enhancements

* lib/http: add request type HTML

  The RequestTypeHTML define the content type "text/html".

* lib/path: add method Path to Route

  Unlike String method that may return the key’s name in returned
  path, the Path method return the path with all the keys has been
  substituted with values, even if its empty.
</content>
</entry>
<entry>
<title>all: update the git file links</title>
<updated>2024-06-18T16:09:29Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-06-18T16:09:29Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=81b670e6154feba35d29ff9e7d590fa3ba39650d'/>
<id>urn:sha1:81b670e6154feba35d29ff9e7d590fa3ba39650d</id>
<content type='text'>
Replace link with master branch to main branch.
</content>
</entry>
<entry>
<title>lib/http: add request type HTML</title>
<updated>2024-06-08T16:11:52Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-06-08T16:11:52Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=274ef1036f8a73ec0af058b843657f9e24184475'/>
<id>urn:sha1:274ef1036f8a73ec0af058b843657f9e24184475</id>
<content type='text'>
The RequestTypeHTML define the content type "text/html".
</content>
</entry>
<entry>
<title>lib/path: add method Path to Route</title>
<updated>2024-06-08T08:44:47Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-06-08T07:49:13Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=c8b408fc32fcaba43f69bd494305c52cbdeb06c6'/>
<id>urn:sha1:c8b408fc32fcaba43f69bd494305c52cbdeb06c6</id>
<content type='text'>
Unlike String method that may return the key's name in returned path,
the Path method return the path with all the keys has been substituted
with values, even if its empty.
</content>
</entry>
<entry>
<title>Release pakakeh.go v0.55.0 (2024-05-04)</title>
<updated>2024-05-04T08:17:06Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-05-04T08:05:07Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=85dffe4cb596ba8d5131c07f8993c6158184d988'/>
<id>urn:sha1:85dffe4cb596ba8d5131c07f8993c6158184d988</id>
<content type='text'>
=== Breaking changes

* lib/http: refactoring "multipart/form-data" parameters in ClientRequest

  Previously, ClientRequest with type RequestTypeMultipartForm pass the
  type "map[string][]byte" in Params.
  This type hold the file upload, where key is the file name and []byte
  is content of file.
  Unfortunately, this model does not correct because a
  "multipart/form-data" can contains different field name and file name,
  for example

    --boundary
    Content-Disposition: form-data; name="field0"; filename="file0"
    Content-Type: application/octet-stream

    &lt;Content of file0&gt;

  This changes fix this by changing the parameter type for
  RequestTypeMultipartForm to [*multipart.Form], which affect several
  functions including [Client.PutFormData] and [GenerateFormData].

===  Bug fixes

* lib/dns: fix packing and unpacking OPT record

  The RDATA in OPT records can contains zero or more options.
  Previously, we only handle unpacking and packing one option, now we
  handle multiple options.

* telegram/bot: fix Webhook URL registration

  Using [path.Join] cause "https://domain" become "https:/domain"
  which is not a valid URL. This bug caused by refactoring in b89afa24f.

=== Enhancements

* lib/memfs: set embed file mode to print as octal

  Using octal in mode make the embedded code more readable, for
  example mode with permission "0o644" much more readable than 420".

* telegram/bot: register GET endpoint to test webhook

  The call to get "GET &lt;Webhook.URL.Path&gt;/&lt;Token&gt;" will return HTTP
  status 200 with JSON body '{"code":200,"message":"OK"}'.

  This endpoint is to check if the bot server is really running.

* lib/http: allow all HTTP method to generate HTTP request with body

  Although the RFC 7231 says that no special defined meaning for a
  payload in GET, some implementation of HTTP API sometimes use GET with
  content type "application/x-www-form-urlencoded".

* lib/http: add new function [CreateMultipartFileHeader]

  The CreateMultipartFileHeader help creating [multipart.FileHeader]
  from raw bytes, that can be assigned to [*multipart.Form].
</content>
</entry>
<entry>
<title>lib: comply with linter recommendations</title>
<updated>2024-05-04T08:17:04Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-05-04T08:03:41Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=a129da5d8790b25de11fa270b411ad5aca6fa892'/>
<id>urn:sha1:a129da5d8790b25de11fa270b411ad5aca6fa892</id>
<content type='text'>
</content>
</entry>
<entry>
<title>go.mod: update module go-x-crypto</title>
<updated>2024-05-04T08:17:00Z</updated>
<author>
<name>Shulhan</name>
<email>ms@kilabit.info</email>
</author>
<published>2024-05-04T07:37:22Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/pakakeh.go/commit/?id=de4da5d99646d9daf494915901211348f9a3e1db'/>
<id>urn:sha1:de4da5d99646d9daf494915901211348f9a3e1db</id>
<content type='text'>
</content>
</entry>
</feed>
