All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
List all changes before release a new version.
- Rewrite HTTP Connection
- New Connection for Halite
- Proxy support
- Reuse connection
0.12.1 (2021-11-04)
- Reduce alloc too many memory. #108 (thanks @wolfgang371)
0.12.0 (2021-03-24)
- Compatibility with Crystal 1.0.
0.11.0 (2021-02-18)
Finally, the major version was out! Happy new year!
- [breaking changing] Drop file logging in favor of Crystal's Log. (removed
.logging(file: ), use.logging(for: )instead) #101 (thanks @oprypin) - Pre-read
TZenvironment value to convert timestamp's timezone during logging output. #102 - Crystal 0.34.x support.
0.10.9 (2021-02-01)
0.10.8 (2020-12-22)
0.10.7 (2020-12-08)
0.10.6 (2020-11-24)
0.10.5 (2020-04-15)
- Compatibility with Crystal 0.34.0.
0.10.4 (2019-09-26)
- Compatibility with Crystal 0.31.0.
0.10.3 (2019-08-12)
- Compatibility with Crystal 0.30.0.
0.10.2 (2019-06-24)
- Fixed Basic Auth creates bad headers in crystal 0.29.0. #73 (thanks @kalinon)
- Fixed use one shared options in multiple instanced
Halite::Client. #72 (thanks @qszhu)
0.10.1 (2019-05-28)
- Fixed duplica query and backslash when reuse client. #67, #68 (thanks @watzon)
- Fixed no effect to call
logging(true)method in Crystal 0.28. #69
0.10.0 (2019-05-20)
- Add
endpointchainable method, also add it as configuration option to reuse client. #66
0.9.2 (2019-05-20)
- Compatibility with Crystal 0.28.0
- Drop Crystal 0.25.x, 0.26.x, 0.27.x support.
0.9.1 (2019-01-14)
Minor typo fix (same as v0.9.0)
- Correct version both in
shard.ymlandversion.cr. (thanks @matthewmcgarvey) - Update basic auth example in
README.md. (thanks @matthewmcgarvey)
0.9.0 (2018-12-21)
New features with performance improved.
- Add streaming requests (feature to store binary data chunk by chunk) #53
- Add
user_agentto Chainable methods. #55
- Fix overwrite the value with default headers when use
mergeormerge!method inHalite::Options. #54
- Remove default headers in
Halite::Options. - Move header
User-AgenttoHalite::Request. - Change header
Connectionfrom "keep-alive" to "close" toHalite::Request. - Remove header
Accept.
0.8.0 (2018-11-30)
Compatibility with Crystal 0.27 and serious bugfix.
- [breaking changing] Rename
loggertologging,with_loggertowith_logging. #52 - [breaking changing] Remove
loggingargument inHalite::Options.newandHalite::Client.new. #51 - [breaking changing] Remove
logging?method inHalite::Options, useloggingmethod instead. #51 - Change
loggingbehavior check if features is exists any class of superclasses isHalite::Logginginstead of given a Bool type. - Rename prefix
X-CachetoX-Halite-Cachein cache feature.
- Allow
timeoutmethod passed singlereadorconnectmethod. - Add
merge!anddupmethods inHalite::Options. #51
- Fix duplice add "Content-Type" into header during request. #50
- Fix non overwrite value of headers use
Halite::Options.mergemethod. #50 - Fix always overwrite and return merged option in a instanced class(session mode), see updated note in Session.
- Compatibility with Crystal 0.27
- Add specs with Crystal 0.25, 0.26 and 0.27 in Circle CI.
0.7.5 (2018-10-31)
- [breaking changing] Rename argument name
ssltotlsinHalite::Client/Halite::Options/Halite::Chainable.
- Fix new a
Halite::Clientinstance with empty block returnNil. #44
0.7.4 (2018-10-30)
- Fix typos in document and comments. #43 (thanks @GloverDonovan)
0.7.3 (2018-10-18)
- Fix json payloads with sub hash/array/namedtupled. #41 (thanks @fusillicode)
0.7.2 (2018-09-14)
Minor bugfix 🐛
- [breaking changing] Renamed
#to_hto#to_flat_hto avoid confict inHTTP::Paramsextension. #39
- Fix cast from NamedTuple(work: String) to Halite::Options::Type failed with params/json/form. #38
0.7.1 (2018-09-04)
- Return empty hash for an empty named tuple.
- Fix send cookie during requesting in session mode. (thanks @megatux)
- Fix pass current options instead of instance variable.
- Fix move named tuple extension to src path.
0.7.0 (2018-09-03)
Features support 🎉
- [breaking changing] Change instance
Halite::Clientwith block behavior. #33 - [breaking changing] Renamed argument name
adaptertoformatin#loggerchainable method. - Move logger into features.
- Add features (aka middleware) support, you can create monitor or interceptor. #29
- Add cache feature. #24
- Add
#loggingin chainable method.
- Add misisng
#requestmethod with headers, params, form, json, raw, ssl arguments. - Fix do not overwrite default headers with exists one by using
Halite::Options.merge. - Fix append response to history only with redirect uri. (thanks @j8r)
- Typo and correct words in README. (thanks @megatux)
0.6.0 (2018-08-24)
Improve performance with 🙈
- [breaking changing] Set
loggerto nil when instance aHalite::Options, it throws aHalite::Errorexception if enablelogging. - Change
Halite::Optionsaccepts argument inside. no effect for users. #27 - Wrap all exception class into a module, better for reading document.
- Fix always return
#with#full_pathif fragment not exists inHalite::Request. - Fix always overwrite with default headers with
#mergeinHalite::Options
- Compatibility with Crystal 0.26
0.5.0 (2018-07-03)
- New logger system and json logger support, see #19.
- [breaking changing] Change verb request behavior:
get,headonly accepts#paramsargument.post,put,delete,patch,optionsaccepts#params,#form,#jsonand#rawarguments.
0.4.0 (2018-06-27)
- [breaking changing] Remove
#mime_typeduplicate with#content_typeinHalite::Response. - Change write log file use append mode by default, it could be change by param.
- Change logger formatter to easy identify category(request/response).
- Add #links to
Halite::Responseto fetch link headers. - Add #raise_for_status to
Halite::Response. - Support multiple files upload. #14 (thanks @BenDietze)
- Add
#to_rawtoHalite::Responseto dump a raw of response. #15 (thanks @BenDietze) - Support
OPTIONSmethod (crystal 0.25.0+) - Append write log to a file section to README.
- Stripped the filename in a
multipart/form-databody. #16 (thanks @BenDietze) - Fix
#domaininHalite::Requestwith subdomain. #17 (thanks @007lva) - Create missing directories when use path to write log to a file.
0.3.2 (2018-06-19)
Compatibility with Crystal 0.25
0.3.1 (2017-12-13)
- Set
Options.default_headersto be public method. - Accept tuples options in
Options.new. - Accept
follow/follow_strictinOptions.new. - Accept options block in
Options.new. - Add logger during request and response (see usage).
- Alias method
Options.read_timeouttoOptions::Timeout.read. - Alias method
Options.read_timeout=toOptions::Timeout.read=. - Alias method
Options.connect_timeouttoOptions::Timeout.connect. - Alias method
Options.connect_timeouttoOptions::Timeout.connect=. - Alias method
Options.follow=toOptions::Timeout.follow.hops=. - Alias method
Options.follow_stricttoOptions::Timeout.follow.strict. - Alias method
Options.follow_strict=toOptions::Timeout.follow.strict=.
- Fix store Set-Cookies in response and set Cookies in request in better way.
- Fix cant not set connect/read timeout in
Options.new. - Fix cant not overwrite default headers in
Options.new. - Fix
Options.clear!was not clear everything and restore default headers.
0.2.0 (2017-11-28)
HTTP::Headers#to_hreturn string with each key if it contains one in array. (commit#e057c47c)
- Add
Response#mime_typemethod. - Add
Response#historymethod to support full history of redirections. (#8) - Add
Response#parsemethod that it better body parser of response with json and write custom adapter for MIME type. (#9)
- Fix issue to first char of redirect uri is not slash(/). (#11)
- Fix raise unsafe verbs in strict mode.
0.1.5 (2017-10-11)
- Only store cookies in Sessions shards. (#7)
- Add
TLS/SSLsupport (based on HTTP::Client.new(uri : URI, tls = nil)). - Add
UnsupportedMethodError/UnsupportedSchemeErrorexceptions.
- Timeout with redirection. (#7)
- Compatibility with Crystal 0.24.0 (unreleased)
0.1.3 (2017-10-09)
- Always instance a new Options with each request in chainable methods.
- Add
acceptmethod.
- Fix
follow(redirect uri) with full uri and relative path. - Fix always overwrite request headers with default values.
- Fix always shard same options in any new call. (it only valid in chainable methods)
- First beta version.