aboutsummaryrefslogtreecommitdiff
path: root/lib/xmlrpc/client.go
AgeCommit message (Collapse)Author
2026-01-03all: use SPDX license header formatShulhan
2024-03-15lib/http: refactoring Client methods to return struct ClientResponseShulhan
Instead of returning three variables, [http.Response], []byte, and error, we combine the [http.Response] and []byte into single struct: ClientResponse.
2024-03-09lib/http: refactoring NewServer and NewClientShulhan
The NewServer and NewClient now accept non-pointer options, so the caller unable to modify the options once the server or client has been created.
2024-03-05all: comply with linter recommendations #2Shulhan
HTTP request now implicitly create request with context. Any false positive related to not closing HTTP response body has been annotated with "nolint:bodyclose". In the example code, use consistent "// Output:" comment format, by prefixing with single space. Any comment on code now also prefixing with single space. An error returned without variables now use [errors.New] instead of [fmt.Errorf]. Any error returned using [fmt.Errorf] now wrapped using "%w" instead of "%s". Also, replace error checking using [errors.Is] or [errors.As], instead of using equal/not-equal operator. Any statement like "x = x OP y" now replaced with "x OP= y". Also, swap statement is simplified using "x, y = y, x". Any switch statement with single case now replaced with if-condition. Any call to defer on function or program that call [os.Exit], now replaced by calling the deferred function directly. Any if-else condition now replaced with switch statement, if possible.
2024-03-05all: comply with linter recommendations #1Shulhan
Instead of annotating the lines that caught by linters, fix it to comply with the recommendations. This causes several breaking changes, especially related to naming, * api/slack: [Message.IconUrl] become [Message.IconURL] * lib/dns: DefaultSoaMinumumTtl become DefaultSoaMinimumTTL * lib/email: [Message.SetBodyHtml] become [Message.SetBodyHTML] * lib/http: [Client.GenerateHttpRequest] become [Client.GenerateHTTPRequest] * lib/http: [ClientOptions.ServerUrl] become [ClientOptions.ServerURL] * lib/http: [EndpointRequest.HttpWriter] become [EndpointRequest.HTTPWriter] * lib/http: [EndpointRequest.HttpRequest] become [EndpointRequest.HTTPRequest] * lib/http: [ServerOptions.EnableIndexHtml] become [ServerOptions.EnableIndexHTML] * lib/http: [SSEConn.HttpRequest] become [SSEConn.HTTPRequest] * lib/smtp: [ClientOptions.ServerUrl] become [ClientOptions.ServerURL] * lib/ssh/sftp: [FileAttrs.SetUid] become [FileAttrs.SetUID] * lib/ssh/sftp: [FileAttrs.Uid] become [FileAttrs.UID]
2024-03-02all: move the repository to "git.sr.ht/~shulhan/pakakeh.go"Shulhan
There are several reasons that why we move from github.com. First, related to the name of package. We accidentally name the package with "share" a common word in English that does not reflect the content of repository. By moving to other repository, we can rename it to better and unique name, in this "pakakeh.go". Pakakeh is Minang word for tools, and ".go" suffix indicate that the repository related to Go programming language. Second, supporting open source. The new repository is hosted under sourcehut.org, the founder is known to support open source, and all their services are licensed under AGPL, unlike GitHub that are closed sources. Third, regarding GitHub CoPilot. The GitHub Terms of Service [1], allow any public content that are hosted there granted them to parse the content. On one side, GitHub helps and flourish the open source, but on another side have an issues regarding scraping the copyleft license [2]. [1]: https://docs.github.com/en/site-policy/github-terms/github-terms-of-service#4-license-grant-to-us [2]: https://githubcopilotinvestigation.com
2023-09-11lib/xmlrpc: realign struct for better size allocationShulhan
The realignment reduce the cost of the following struct, * Client: from 24 to 16 bytes (-8) * Response: from 64 to 48 bytes (-16) * Value: from 40 to 32 bytes (-8)
2023-05-20all: remove any usage of debug.Value in all packagesShulhan
Using global debug value for all packages turns out is not a good idea.
2022-05-09all: reformat all codes using gofmt 1.19 (the Go tip)Shulhan
2022-01-09lib/http: refactoring NewClient to accept single structShulhan
Previously, the NewClient function accept three parameters: serverURL, http.Header, and insecure. If we want to add another parameter, for example timeout it will cause changes on the function signature. To prevent this changes in the future, we change it now. The NewClient now accept single struct. While at it, we add option to set Timeout. The Timeout affect the http Transport Timeout and TLSHandshakeTimeout. The field is optional, if not set it will set to 10 seconds.
2021-10-05lib/xmlrpc: rewrite the Client connection using lib/httpShulhan
Using socket connection require reading the HTTP response header before we can process the response body. Instead of rewrite the parser, use the lib/http to send and receive the request/response.
2021-08-17lib/xmlrpc: fix missing port on NewClientShulhan
Calling net.Dial or tls.Dial on host without port will cause the following error, NewClient: Dial: dial tcp: address 10.148.0.164: missing port in address This changes fix this by always generate new host value using previous host and port values.
2021-05-25xmlrpc: change the Response to embed the errors.EShulhan
The errors.E contains code and message that also implement wrapping and unwrapping error, so we can use the Response as error just like in http.EndpointResponse.
2021-05-19xmlrpc: set client response IsFault when StatusCode >= 400Shulhan
Previously, we set IsFault to true if the HTTP response code not equal to 200 only, which is not always correct. This commit changes it to check any status code that is greater or equal to 400.
2021-05-19xmlrpc: write the XML header when marshaling request not on clientShulhan
Previously, the XML header is added when sending the request using client. This commit changes it to write the header when marshaling the Request instance.
2021-03-21xmlrpc: add debug statements to print request and responseShulhan
The debug level is set minimum to 3. If its set it will print the request and response to standard output.
2020-06-10all: update email addressShulhan
2020-06-06all: use default linter optionsShulhan
2020-01-23xmlrpc: check for empty port number on NewClientShulhan
2020-01-20xmlprc: package for working with XML-RPCShulhan
This package provide a client library for talking with XML-RPC server.