diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..1b10f8cf --- /dev/null +++ b/.travis.yml @@ -0,0 +1,24 @@ +language: erlang + +env: + - ST=PharoCore-1.3 + - ST=Pharo-1.4 + - ST=Pharo-2.0 +# - ST=Pharo-3.0 + +# blacklist master as it is the "shared code" branch +branches: + except: + - master + +install: + - export PROJECT_HOME="$(pwd)" + - cd $HOME + - wget -q -O builderCI.zip https://github.com/dalehenrich/builderCI/zipball/master + - unzip -q builderCI.zip + - cd dalehenrich-builderCI* + - source build_env_vars + - ln -s $PROJECT_HOME $GIT_PATH + - ./build_image.sh + +script: $BUILDER_CI_HOME/testTravisCI.sh # -verbose diff --git a/README.md b/README.md index 08e11eb8..790ac77a 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,31 @@ to deal with the HTTP networking protocol. [MIT Licensed](https://github.com/svenvc/zinc/blob/master/license.txt) + +## Loading into GemStone + +1. [Upgrade to GLASS 1.0-beta.9](http://code.google.com/p/glassdb/wiki/GemToolsUpdate#Update_GLASS) + +2. Install Zinc: + + ```Smalltalk + "GemStone 2.4" + Metacello new + baseline: 'Zinc'; + repository: 'github://glassdb/zinc:gemstone2.4/repository'; + load: 'Tests'. + + "GemStone 3.1" + Metacello new + baseline: 'Zinc'; + repository: 'github://glassdb/zinc:gemstone3.1/repository'; + load: 'Tests'. + ``` + +*See the [Releases page](https://github.com/glassdb/zinc/releases/) for instructions for installing specific Zinc releases.* + +## Travis Status + +**GemStone2.4.x** [![Build Status](https://travis-ci.org/glassdb/zinc.png?branch=gemstone2.4)](https://travis-ci.org/glassdb/zinc) + +**GemStone3.1.x** [![Build Status](https://travis-ci.org/glassdb/zinc.png?branch=gemstone3.1)](https://travis-ci.org/glassdb/zinc) diff --git a/repository/BaselineOfZincHTTPComponents.package/.filetree b/repository/BaselineOfZincHTTPComponents.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/BaselineOfZincHTTPComponents.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/README.md b/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/README.md similarity index 100% rename from repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/README.md rename to repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/README.md diff --git a/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/instance/baseline..st b/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/instance/baseline..st new file mode 100644 index 00000000..700d693f --- /dev/null +++ b/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/instance/baseline..st @@ -0,0 +1,112 @@ +baseline +baseline: spec + + spec + for: #'common' + do: [ + spec + project: 'XML Support' + with: [ + spec + className: 'ConfigurationOfXMLSupport'; + versionString: #'stable'; + repository: 'http://www.squeaksource.com/MetacelloRepository' ]. + spec + project: 'Neo JSON' + with: [ + spec + className: 'ConfigurationOfNeoJSON'; + versionString: #'stable'; + repository: 'http://mc.stfx.eu/Neo' ]. + spec + package: 'Zodiac-Core' + with: [ spec repository: 'http://mc.stfx.eu/Zodiac' ]. + spec + package: 'Zodiac-Tests' + with: [ spec repository: 'http://mc.stfx.eu/Zodiac' ]. + spec + package: 'Zinc-Character-Encoding-Core'; + package: 'Zinc-Character-Encoding-Tests' + with: [ spec requires: 'Zinc-Character-Encoding-Core' ]; + package: 'Zinc-Resource-Meta-Core' + with: [ spec requires: 'Zinc-Character-Encoding-Core' ]; + package: 'Zinc-Resource-Meta-Tests' + with: [ spec requires: 'Zinc-Resource-Meta-Core' ]; + package: 'Zinc-HTTP' + with: [ spec requires: #('Zinc-Character-Encoding-Core' 'Zinc-Resource-Meta-Core') ]; + package: 'Zinc-Patch-HTTPSocket' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-AWS' + with: [ spec requires: #('Zinc-HTTP' 'XML Support') ]; + package: 'Zinc-REST' with: [ spec requires: #('Zinc-HTTP' 'Neo JSON') ]; + package: 'Zinc-Zodiac' + with: [ spec requires: #('Zinc-HTTP' 'Zodiac-Core' 'Zodiac-Tests') ]; + package: 'Zinc-WebSocket-Core' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-WebSocket-Tests' + with: [ spec requires: 'Zinc-WebSocket-Core' ]; + package: 'Zinc-SSO-OAuth1-Core' + with: [ spec requires: #('Zinc-HTTP' 'Neo JSON') ]; + package: 'Zinc-SSO-OAuth2-Core' + with: [ spec requires: #('Zinc-HTTP' 'Neo JSON') ]; + package: 'Zinc-SSO-OpenID-Core' + with: [ spec requires: #('Zinc-HTTP' 'XML Support') ]; + package: 'Zinc-SSO-Demo' + with: [ + spec + requires: + #('Zinc-SSO-OAuth1-Core' 'Zinc-SSO-OAuth2-Core' 'Zinc-SSO-OpenID-Core') ]; + package: 'Zinc-SSO-OAuth1-Tests' + with: [ spec requires: #('Zinc-SSO-OAuth1-Core') ]; + package: 'Zinc-SSO-OpenID-Tests' + with: [ spec requires: #('Zinc-SSO-OpenID-Core') ]; + package: 'Zinc-WebDAV' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-WWS-Server' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-WWS-Client' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-Tests' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-Seaside'. "For now, no dependence on Seaside itself" + spec + group: 'default' with: #('Core'); + group: 'Core' with: #('Zinc-HTTP'); + group: 'Tests' + with: + #('Zinc-Tests' 'Zinc-Character-Encoding-Tests' 'Zinc-Resource-Meta-Tests'); + group: 'Character-Encoding' + with: + #('Zinc-Character-Encoding-Core' 'Zinc-Character-Encoding-Tests'); + group: 'Resource-Meta' + with: #('Zinc-Resource-Meta-Core' 'Zinc-Resource-Meta-Tests'); + group: 'Zodiac' with: #('Zinc-Zodiac'); + group: 'AWS' with: #('Zinc-AWS'); + group: 'WebDAV' with: #('Zinc-WebDAV'); + group: 'WebSocket' + with: #('Zinc-WebSocket-Core' 'Zinc-WebSocket-Tests'); + group: 'SSO-OAuth1' + with: #('Zinc-SSO-OAuth1-Core' 'Zinc-SSO-OAuth1-Tests'); + group: 'SSO-OAuth2' with: #('Zinc-SSO-OAuth2-Core'); + group: 'SSO-OpenID' + with: #('Zinc-SSO-OpenID-Core' 'Zinc-SSO-OpenID-Tests'); + group: 'SSO-Demo' + with: + #('Zinc-SSO-OAuth1-Core' 'Zinc-SSO-OAuth2-Core' 'Zinc-SSO-OpenID-Core'); + group: 'SSO' + with: + #('SSO-OAuth1' 'SSO-OAuth2' 'SSO-OpenID' 'SSO-Demo' 'Zinc-SSO-Demo'); + group: 'WWS' with: #('Zinc-WWS-Server' 'Zinc-WWS-Client'); + group: 'REST' with: #('Zinc-REST'); + group: 'Patch-HTTPSocket' with: #('Zinc-Patch-HTTPSocket'); + group: 'Seaside' with: #('Zinc-Seaside') ]. + spec + for: #'pharo1.x' + do: [ + spec + package: 'Zinc-Patch-HTTPSocket' + with: [ spec file: 'Zinc-Patch-HTTPSocket.pharo1x' ]; + package: 'Zinc-FileSystem-Legacy'; + package: 'Zinc-Pharo-Forward-Compatibility'; + package: 'Zinc-HTTP' + with: [ spec requires: #('Zinc-FileSystem-Legacy' 'Zinc-Pharo-Forward-Compatibility') ] ]. + spec + for: #'pharo2.x' + do: [ + spec + package: 'Zinc-FileSystem'; + package: 'Zinc-HTTP' with: [ spec requires: 'Zinc-FileSystem' ] ] \ No newline at end of file diff --git a/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/methodProperties.json b/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/methodProperties.json new file mode 100644 index 00000000..f16db925 --- /dev/null +++ b/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "baseline:" : "dkh 07/02/2013 22:44" } } diff --git a/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/properties.json b/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/properties.json new file mode 100644 index 00000000..14e50ffd --- /dev/null +++ b/repository/BaselineOfZincHTTPComponents.package/BaselineOfZincHTTPComponents.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "BaselineOfZincHTTPComponents", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BaselineOfZincHTTPComponents", + "pools" : [ + ], + "super" : "BaselineOf", + "type" : "normal" } diff --git a/repository/BaselineOfZincHTTPComponents.package/monticello.meta/categories.st b/repository/BaselineOfZincHTTPComponents.package/monticello.meta/categories.st new file mode 100644 index 00000000..5adc537e --- /dev/null +++ b/repository/BaselineOfZincHTTPComponents.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: 'BaselineOfZincHTTPComponents'! diff --git a/repository/BaselineOfZincHTTPComponents.package/monticello.meta/initializers.st b/repository/BaselineOfZincHTTPComponents.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/BaselineOfZincHTTPComponents.package/monticello.meta/package b/repository/BaselineOfZincHTTPComponents.package/monticello.meta/package new file mode 100644 index 00000000..4c5c522e --- /dev/null +++ b/repository/BaselineOfZincHTTPComponents.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'BaselineOfZincHTTPComponents') \ No newline at end of file diff --git a/repository/BaselineOfZincHTTPComponents.package/monticello.meta/version b/repository/BaselineOfZincHTTPComponents.package/monticello.meta/version new file mode 100644 index 00000000..9089d594 --- /dev/null +++ b/repository/BaselineOfZincHTTPComponents.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'BaselineOfZincHTTPComponents-dkh.2' message 'add Zinc-Patch-HTTPSocket.pharo1x pacakge ' id '6ed3a344-2cc6-4148-98b6-e469172b4945' date '07/02/2013' time '22:45:23' author 'dkh' ancestors ((name 'BaselineOfZincHTTPComponents-dkh.1' message 'create BaselineOfZincHTTPComponents ' id '538d79c1-e9c4-48be-84fb-1887988f13a8' date '07/02/2013' time '22:30:27' author 'dkh' ancestors () stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/BaselineOfZincHTTPComponents.package/properties.json b/repository/BaselineOfZincHTTPComponents.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/BaselineOfZincHTTPComponents.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/README.md b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/README.md index a0f1a98a..651c8684 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/README.md +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/README.md @@ -1,4 +1,4 @@ -I am ConfigurationOfZincHTTPComponents the Metacello configuration of Zinc HTTP Components, an open-source Smalltalk framework to deal with the HTTP networking protocol. +I am ConfigurationOfZincHTTPComponents, the Metacello configuration of Zinc HTTP Components, an open-source Smalltalk framework to deal with the HTTP networking protocol. For more information, see http://zn.stfx.eu @@ -9,4 +9,22 @@ Here are some ways to load this project: ConfigurationOfZincHTTPComponents project latestVersion load: 'Tests'. ConfigurationOfZincHTTPComponents project bleedingEdge load. +Here is a list of available groups: + + default - Core + Tests + Character-Encoding + Resource-Meta + Zodiac + + AWS + REST + Seaside + WebSocket + SSO - SSO-OAuth1 - SSO-OAuth2 - SSO-OpenID - SSO-Demo + + WebDAV + WWS + Patch-HTTPSocket + This is open-source software licensed under the MIT License. \ No newline at end of file diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline24..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline24..st new file mode 100644 index 00000000..60ac5777 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline24..st @@ -0,0 +1,81 @@ +baselines +baseline24: spec + + spec for: #common do: [ + spec + blessing: #baseline; + description: 'Baseline for Zinc HTTP Components, a framework to deal with the HTTP networking'; + author: 'SvenVanCaekenberghe'; + repository: 'http://mc.stfx.eu/ZincHTTPComponents'. + spec project: 'XML Support' with: [ + spec + className: 'ConfigurationOfXMLSupport'; + versionString: #'stable'; + repository: 'http://www.squeaksource.com/MetacelloRepository' ]. + spec project: 'Neo JSON' with: [ + spec + className: 'ConfigurationOfNeoJSON'; + versionString: #'stable'; + repository: 'http://mc.stfx.eu/Neo' ]. + spec package: 'Zodiac-Core' with: [ spec repository: 'http://mc.stfx.eu/Zodiac' ]. + spec package: 'Zodiac-Tests' with: [ spec repository: 'http://mc.stfx.eu/Zodiac' ]. + spec + package: 'Zinc-Character-Encoding-Core'; + package: 'Zinc-Character-Encoding-Tests' with: [ spec requires: 'Zinc-Character-Encoding-Core' ]; + package: 'Zinc-Resource-Meta-Core' with: [ spec requires: 'Zinc-Character-Encoding-Core' ]; + package: 'Zinc-Resource-Meta-Tests' with: [ spec requires: 'Zinc-Resource-Meta-Core' ]; + package: 'Zinc-HTTP' with: [ spec requires: #( 'Zinc-Character-Encoding-Core' 'Zinc-Resource-Meta-Core' ) ]; + package: 'Zinc-Patch-HTTPSocket' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-AWS' with: [ spec requires: #( 'Zinc-HTTP' 'XML Support' ) ]; + package: 'Zinc-REST' with: [ spec requires: #( 'Zinc-HTTP' 'Neo JSON' ) ]; + package: 'Zinc-Zodiac' with: [ spec requires: #( 'Zinc-HTTP' 'Zodiac-Core' 'Zodiac-Tests' ) ]; + package: 'Zinc-WebSocket-Core' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-WebSocket-Tests' with: [ spec requires: 'Zinc-WebSocket-Core' ]; + package: 'Zinc-SSO-OAuth1-Core' with: [ spec requires: #( 'Zinc-HTTP' 'Neo JSON' ) ]; + package: 'Zinc-SSO-OAuth2-Core' with: [ spec requires: #( 'Zinc-HTTP' 'Neo JSON' ) ]; + package: 'Zinc-SSO-OpenID-Core' with: [ spec requires: #( 'Zinc-HTTP' 'XML Support' ) ]; + package: 'Zinc-SSO-Demo' with: [ spec requires: #( 'Zinc-SSO-OAuth1-Core' 'Zinc-SSO-OAuth2-Core' 'Zinc-SSO-OpenID-Core' ) ]; + package: 'Zinc-SSO-OAuth1-Tests' with: [ spec requires: #( 'Zinc-SSO-OAuth1-Core' ) ]; + package: 'Zinc-SSO-OpenID-Tests' with: [ spec requires: #( 'Zinc-SSO-OpenID-Core' ) ]; + package: 'Zinc-WebDAV' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-WWS-Server' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-WWS-Client' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-Tests' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-Seaside'. "For now, no dependence on Seaside itself" + spec + group: 'default' with: #('Core'); + group: 'Core' with: #('Zinc-HTTP'); + group: 'Tests' with: #('Zinc-Tests' 'Zinc-Character-Encoding-Tests' 'Zinc-Resource-Meta-Tests'); + group: 'Character-Encoding' with: #('Zinc-Character-Encoding-Core' 'Zinc-Character-Encoding-Tests'); + group: 'Resource-Meta' with: #('Zinc-Resource-Meta-Core' 'Zinc-Resource-Meta-Tests'); + group: 'Zodiac' with: #('Zinc-Zodiac'); + group: 'AWS' with: #('Zinc-AWS'); + group: 'WebDAV' with: #('Zinc-WebDAV'); + group: 'WebSocket' with: #('Zinc-WebSocket-Core' 'Zinc-WebSocket-Tests'); + group: 'SSO-OAuth1' with: #('Zinc-SSO-OAuth1-Core' 'Zinc-SSO-OAuth1-Tests'); + group: 'SSO-OAuth2' with: #('Zinc-SSO-OAuth2-Core'); + group: 'SSO-OpenID' with: #('Zinc-SSO-OpenID-Core' 'Zinc-SSO-OpenID-Tests'); + group: 'SSO-Demo' with: #('Zinc-SSO-OAuth1-Core' 'Zinc-SSO-OAuth2-Core' 'Zinc-SSO-OpenID-Core'); + group: 'SSO' with: #('SSO-OAuth1' 'SSO-OAuth2' 'SSO-OpenID' 'SSO-Demo' 'Zinc-SSO-Demo'); + group: 'WWS' with: #('Zinc-WWS-Server' 'Zinc-WWS-Client'); + group: 'REST' with: #('Zinc-REST'); + group: 'Patch-HTTPSocket' with: #('Zinc-Patch-HTTPSocket'); + group: 'Seaside' with: #('Zinc-Seaside') ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy'; + package: 'Zinc-Pharo-Forward-Compatibility'; + package: 'Zinc-HTTP' with: [ spec requires: #('Zinc-FileSystem-Legacy' 'Zinc-Pharo-Forward-Compatibility') ] ]. + spec for: #'pharo2.x' do: [ + spec + package: 'Zinc-FileSystem'; + package: 'Zinc-HTTP' with: [ spec requires: 'Zinc-FileSystem' ] ]. + spec for: #gemstone do: [ + spec + repository: 'http://seaside.gemstone.com/ss/ZincHTTPComponents'; + package: 'Zinc-HTTP' with: [ spec includes: #('Zinc-Gemstone') ]; + package: 'SocketStream' with: [ spec repository: 'http://seaside.gemstone.com/ss/PharoCompat' ]; + package: 'Zinc-GemstonePreliminary' with: [ spec requires: #('SocketStream') ]; + package: 'Zinc-HTTP' with: [ spec requires: #('Zinc-GemstonePreliminary') ]; + package: 'Zinc-Gemstone' with: [ spec requires: #('Zinc-HTTP') ]; + package: 'Zinc-Tests' with: [ spec requires: 'Zinc-Gemstone' ] ] \ No newline at end of file diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/stable..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/stable..st index fd32f3b3..b39a4241 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/stable..st +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/stable..st @@ -1,6 +1,7 @@ accessing stable: spec - spec for: #pharo version: '2.3.2'. - spec for: #'pharo2.x' version: '2.3.2'. + spec for: #pharo version: '2.4.3'. + spec for: #'pharo2.x' version: '2.4.3'. + spec for: #'pharo3.x' version: '2.4.3'. spec for: #gemstone version: '1.1' \ No newline at end of file diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version233..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version233..st new file mode 100644 index 00000000..84dedd61 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version233..st @@ -0,0 +1,45 @@ +versions +version233: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-Character-Encoding-Core' with: 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.5'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.3'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.10'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.345'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.176'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.10'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.25'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-SSO-OAuth1-Core' with: 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.12'; + package: 'Zinc-SSO-OAuth2-Core' with: 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.13'; + package: 'Zinc-SSO-OpenID-Core' with: 'Zinc-SSO-OpenID-Core-JanVanDeSandt.6'; + package: 'Zinc-SSO-Demo' with: 'Zinc-SSO-Demo-SvenVanCaekenberghe.4'; + package: 'Zinc-SSO-OAuth1-Tests' with: 'Zinc-SSO-OAuth1-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-SSO-OpenID-Tests' with: 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.3'; + package: 'Zinc-WWS-Client' with: 'Zinc-WWS-Client-SvenVanCaekenberghe.2'; + package: 'Zinc-WWS-Server' with: 'Zinc-WWS-Server-SvenVanCaekenberghe.8'; + package: 'Zinc-Zodiac' with: 'Zinc-Zodiac-SvenVanCaekenberghe.25'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.27'; + package: 'Zodiac-Tests' with: 'Zodiac-Tests-SvenVanCaekenberghe.10' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.5'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-MarcusDenker.4'; + package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.9' ]. + spec for: #gemstone do: [ + spec blessing: #release. + spec + package: 'Zinc-GemstonePreliminary' with: 'Zinc-GemstonePreliminary-PaulDeBruicker.2'; + package: 'Zinc-Gemstone' with: 'Zinc-Gemstone-PaulDeBruicker.14'; + package: 'SocketStream' with: 'SocketStream-PaulDeBruicker.12' ] diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version234..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version234..st new file mode 100644 index 00000000..c980af4d --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version234..st @@ -0,0 +1,45 @@ +versions +version234: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-Character-Encoding-Core' with: 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.6'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.4'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.10'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.346'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.177'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.17'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.10'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.25'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-SSO-OAuth1-Core' with: 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.12'; + package: 'Zinc-SSO-OAuth2-Core' with: 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.13'; + package: 'Zinc-SSO-OpenID-Core' with: 'Zinc-SSO-OpenID-Core-JanVanDeSandt.6'; + package: 'Zinc-SSO-Demo' with: 'Zinc-SSO-Demo-SvenVanCaekenberghe.4'; + package: 'Zinc-SSO-OAuth1-Tests' with: 'Zinc-SSO-OAuth1-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-SSO-OpenID-Tests' with: 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.3'; + package: 'Zinc-WWS-Client' with: 'Zinc-WWS-Client-SvenVanCaekenberghe.2'; + package: 'Zinc-WWS-Server' with: 'Zinc-WWS-Server-SvenVanCaekenberghe.9'; + package: 'Zinc-Zodiac' with: 'Zinc-Zodiac-SvenVanCaekenberghe.25'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.27'; + package: 'Zodiac-Tests' with: 'Zodiac-Tests-SvenVanCaekenberghe.10' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.5'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-MarcusDenker.4'; + package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.9' ]. + spec for: #gemstone do: [ + spec blessing: #release. + spec + package: 'Zinc-GemstonePreliminary' with: 'Zinc-GemstonePreliminary-PaulDeBruicker.2'; + package: 'Zinc-Gemstone' with: 'Zinc-Gemstone-PaulDeBruicker.14'; + package: 'SocketStream' with: 'SocketStream-PaulDeBruicker.12' ] diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version24..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version24..st new file mode 100644 index 00000000..9f6d8690 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version24..st @@ -0,0 +1,45 @@ +versions +version24: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-Character-Encoding-Core' with: 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.16'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.14'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.9'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.365'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.187'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.17'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.10'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.25'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-SSO-OAuth1-Core' with: 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.12'; + package: 'Zinc-SSO-OAuth2-Core' with: 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.13'; + package: 'Zinc-SSO-OpenID-Core' with: 'Zinc-SSO-OpenID-Core-JanVanDeSandt.6'; + package: 'Zinc-SSO-Demo' with: 'Zinc-SSO-Demo-SvenVanCaekenberghe.4'; + package: 'Zinc-SSO-OAuth1-Tests' with: 'Zinc-SSO-OAuth1-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-SSO-OpenID-Tests' with: 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.3'; + package: 'Zinc-WWS-Client' with: 'Zinc-WWS-Client-SvenVanCaekenberghe.2'; + package: 'Zinc-WWS-Server' with: 'Zinc-WWS-Server-SvenVanCaekenberghe.9'; + package: 'Zinc-Zodiac' with: 'Zinc-Zodiac-SvenVanCaekenberghe.27'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.29'; + package: 'Zodiac-Tests' with: 'Zodiac-Tests-SvenVanCaekenberghe.12' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.5'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-MarcusDenker.4'; + package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.9' ]. + spec for: #gemstone do: [ + spec blessing: #release. + spec + package: 'Zinc-GemstonePreliminary' with: 'Zinc-GemstonePreliminary-PaulDeBruicker.2'; + package: 'Zinc-Gemstone' with: 'Zinc-Gemstone-PaulDeBruicker.14'; + package: 'SocketStream' with: 'SocketStream-PaulDeBruicker.12' ] diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version241..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version241..st new file mode 100644 index 00000000..0ef38ae1 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version241..st @@ -0,0 +1,45 @@ +versions +version241: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-Character-Encoding-Core' with: 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.17'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.8'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.14'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.9'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.365'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.187'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.17'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.10'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.25'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-SSO-OAuth1-Core' with: 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.12'; + package: 'Zinc-SSO-OAuth2-Core' with: 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.13'; + package: 'Zinc-SSO-OpenID-Core' with: 'Zinc-SSO-OpenID-Core-JanVanDeSandt.6'; + package: 'Zinc-SSO-Demo' with: 'Zinc-SSO-Demo-SvenVanCaekenberghe.4'; + package: 'Zinc-SSO-OAuth1-Tests' with: 'Zinc-SSO-OAuth1-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-SSO-OpenID-Tests' with: 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.3'; + package: 'Zinc-WWS-Client' with: 'Zinc-WWS-Client-SvenVanCaekenberghe.2'; + package: 'Zinc-WWS-Server' with: 'Zinc-WWS-Server-SvenVanCaekenberghe.9'; + package: 'Zinc-Zodiac' with: 'Zinc-Zodiac-SvenVanCaekenberghe.27'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.30'; + package: 'Zodiac-Tests' with: 'Zodiac-Tests-SvenVanCaekenberghe.12' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.5'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-MarcusDenker.4'; + package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.9' ]. + spec for: #gemstone do: [ + spec blessing: #release. + spec + package: 'Zinc-GemstonePreliminary' with: 'Zinc-GemstonePreliminary-PaulDeBruicker.2'; + package: 'Zinc-Gemstone' with: 'Zinc-Gemstone-PaulDeBruicker.14'; + package: 'SocketStream' with: 'SocketStream-PaulDeBruicker.12' ] diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version242..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version242..st new file mode 100644 index 00000000..8d4ef762 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version242..st @@ -0,0 +1,46 @@ +versions +version242: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-Character-Encoding-Core' with: 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.18'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.9'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.16'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.10'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.367'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.188'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.17'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.10'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.25'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-SSO-OAuth1-Core' with: 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.13'; + package: 'Zinc-SSO-OAuth2-Core' with: 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.15'; + package: 'Zinc-SSO-OpenID-Core' with: 'Zinc-SSO-OpenID-Core-JanVanDeSandt.6'; + package: 'Zinc-SSO-Demo' with: 'Zinc-SSO-Demo-SvenVanCaekenberghe.5'; + package: 'Zinc-SSO-OAuth1-Tests' with: 'Zinc-SSO-OAuth1-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-SSO-OpenID-Tests' with: 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.3'; + package: 'Zinc-WWS-Client' with: 'Zinc-WWS-Client-SvenVanCaekenberghe.2'; + package: 'Zinc-WWS-Server' with: 'Zinc-WWS-Server-SvenVanCaekenberghe.9'; + package: 'Zinc-Zodiac' with: 'Zinc-Zodiac-SvenVanCaekenberghe.27'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.30'; + package: 'Zodiac-Tests' with: 'Zodiac-Tests-SvenVanCaekenberghe.12'; + package: 'Zinc-Seaside' with: 'Zinc-Seaside-SvenVanCaekenberghe.40' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.5'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-MarcusDenker.4'; + package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.9' ]. + spec for: #gemstone do: [ + spec blessing: #release. + spec + package: 'Zinc-GemstonePreliminary' with: 'Zinc-GemstonePreliminary-PaulDeBruicker.2'; + package: 'Zinc-Gemstone' with: 'Zinc-Gemstone-PaulDeBruicker.14'; + package: 'SocketStream' with: 'SocketStream-PaulDeBruicker.12' ] diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version243..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version243..st new file mode 100644 index 00000000..cda0133c --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version243..st @@ -0,0 +1,46 @@ +versions +version243: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-Character-Encoding-Core' with: 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.21'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.12'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.17'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.10'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.371'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.190'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.17'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.11'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.25'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-SSO-OAuth1-Core' with: 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.13'; + package: 'Zinc-SSO-OAuth2-Core' with: 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.15'; + package: 'Zinc-SSO-OpenID-Core' with: 'Zinc-SSO-OpenID-Core-JanVanDeSandt.6'; + package: 'Zinc-SSO-Demo' with: 'Zinc-SSO-Demo-SvenVanCaekenberghe.5'; + package: 'Zinc-SSO-OAuth1-Tests' with: 'Zinc-SSO-OAuth1-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-SSO-OpenID-Tests' with: 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.3'; + package: 'Zinc-WWS-Client' with: 'Zinc-WWS-Client-SvenVanCaekenberghe.2'; + package: 'Zinc-WWS-Server' with: 'Zinc-WWS-Server-SvenVanCaekenberghe.9'; + package: 'Zinc-Zodiac' with: 'Zinc-Zodiac-SvenVanCaekenberghe.27'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.30'; + package: 'Zodiac-Tests' with: 'Zodiac-Tests-SvenVanCaekenberghe.12'; + package: 'Zinc-Seaside' with: 'Zinc-Seaside-SvenVanCaekenberghe.40' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.5'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-MarcusDenker.4'; + package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.9' ]. + spec for: #gemstone do: [ + spec blessing: #release. + spec + package: 'Zinc-GemstonePreliminary' with: 'Zinc-GemstonePreliminary-PaulDeBruicker.2'; + package: 'Zinc-Gemstone' with: 'Zinc-Gemstone-PaulDeBruicker.14'; + package: 'SocketStream' with: 'SocketStream-PaulDeBruicker.12' ] diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/methodProperties.json b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/methodProperties.json index c711a7c7..e1c01c85 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/methodProperties.json +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/methodProperties.json @@ -22,8 +22,9 @@ "baseline21:" : "SvenVanCaekenberghe 12/17/2012 22:02", "baseline22:" : "SvenVanCaekenberghe 1/8/2013 15:31", "baseline23:" : "SvenVanCaekenberghe 1/21/2013 13:08", + "baseline24:" : "SvenVanCaekenberghe 6/7/2013 13:45", "project" : "SvenVanCaekenberghe 1/15/2011 17:31", - "stable:" : "SvenVanCaekenberghe 2/1/2013 20:07", + "stable:" : "SvenVanCaekenberghe 6/21/2013 22:56", "version10:" : "PaulDeBruicker 6/1/2011 23:13", "version11:" : "dkh 9/1/2011 17:12", "version12:" : "dkh 9/1/2011 17:12", @@ -48,4 +49,10 @@ "version22:" : "SvenVanCaekenberghe 1/8/2013 15:32", "version231:" : "SvenVanCaekenberghe 1/31/2013 22:24", "version232:" : "SvenVanCaekenberghe 2/1/2013 20:06", - "version23:" : "SvenVanCaekenberghe 1/21/2013 17:00" } } + "version233:" : "SvenVanCaekenberghe 2/22/2013 15:36", + "version234:" : "SvenVanCaekenberghe 3/14/2013 19:03", + "version23:" : "SvenVanCaekenberghe 1/21/2013 17:00", + "version241:" : "SvenVanCaekenberghe 6/3/2013 20:20", + "version242:" : "SvenVanCaekenberghe 6/7/2013 13:49", + "version243:" : "SvenVanCaekenberghe 6/21/2013 22:55", + "version24:" : "SvenVanCaekenberghe 5/28/2013 20:45" } } diff --git a/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/categories.st b/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/categories.st index d9d63cf2..9effadb4 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/categories.st +++ b/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/categories.st @@ -1 +1 @@ -SystemOrganization addCategory: #ConfigurationOfZincHTTPComponents! +SystemOrganization addCategory: #'ConfigurationOfZincHTTPComponents'! diff --git a/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/version b/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/version index 8410cdc9..58ce86a3 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/version +++ b/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/version @@ -1,7 +1 @@ -(name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.44' message 'upgraded to 2.3.2' id '120f7de0-d551-4f88-8ed8-651c6f98b4d8' date '1 February 2013' time '8:08:03.697 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.43' message 'updated to version 2.2.3 for Pharo (all versions)' id 'f575109c-b13a-472b-b5a6-760ad7b308d1' date '31 January 2013' time '10:28:43.709 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.42' message 'stable version 2.3 for pharo 2.0' id 'b6aaec85-fbf2-4138-9219-053d91c25f37' date '21 January 2013' time '5:01:18.657 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.41' message 'new, not yet stable, version 2.2 containing the Zinc-SSO packages (except the Seaside code) - with fixes' id '6a2f6e91-f85b-4219-8339-ffb6b691ef06' date '8 January 2013' time '3:32:31.842 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.40' message 'new, not yet stable, version 2.2 containing the Zinc-SSO packages (except the Seaside code)' id '80f2d574-c0ba-4d99-a82b-7900e074aa1f' date '8 January 2013' time '3:07:04.842 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.39' message 'v2.1.3 with new API to support SSO/SeasideAdaptor ' id '2b67627e-6d89-4ae4-b9e6-c2d0af911a08' date '8 January 2013' time '1:57:29.416 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.38' message 'updated to 2.1.2 for pharo 2' id 'f30c35cc-6c5a-46a6-bd1e-e9719817023b' date '31 December 2012' time '5:59:30.594 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.37' message 'stable version 2.1.1 for Pharo 2.0 (http://code.google.com/p/pharo/issues/detail?id=7180)' id 'a96b58ca-68db-4211-a1f5-1d981aed10d2' date '24 December 2012' time '2:58:40.15 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.36' message 'fixing some bugs in baseline/version 2.1' id '9a0764c1-dd54-485b-8749-4397deb41c6d' date '17 December 2012' time '10:07:33.384 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.35' message 'version 2.1 with separate Zinc-Character-Encoding as prerequisite for Zinc-Resource-Meta' id '470b15ef-6a3b-4cbe-b5f6-684c4c86a211' date '17 December 2012' time '5:16:49.438 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.34' message 'updated to version 2.0 with new Zinc-Resource-Meta-*, Zinc-REST with NeoJSON dependency, addition of Zodiac-Tests' id 'db9c0612-3694-4a1d-891d-75eee1eea1ea' date '12 December 2012' time '8:38:34.768 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.33' message '-> 1.9.3' id 'b76a89ad-e38b-4239-8a45-2e0df9382bb3' date '13 October 2012' time '8:57:27.605 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.32' message 'version 1.9.2 with updated WebSocket support' id '38870314-aa2c-4eb0-9641-087a0cdde458' date '13 October 2012' time '5:55:17.266 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.31' message 'updated to stable version 1.9.1 for pharo 2' id '3265f2b8-6e27-43fc-bdf9-eacfccbe34a5' date '12 October 2012' time '1:30:35.738 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.30' message 'created a new baseline that is using http://mc.stfx.eu created new version 1.9 only updated stable version for #''pharo2.x''' id '53d23edf-5b40-4b49-b218-560a8c8c02f5' date '28 September 2012' time '2:32:39.913 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.29' message 'updated to 1.8.2' id '0e94bd02-30b2-4a8b-9ae1-d416b9aa4ce8' date '12 September 2012' time '3:43:39.144 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.28' message 'updated Zinc-WWS-Server version' id '554840de-27d6-4ba4-b1d0-8e924cf96dd8' date '4 September 2012' time '4:52:51.671 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.27' message 'cleanup/simplification added Zinc-Pharo-Forward-Compatibility for pre 2.0 added #baseline18: and #version18: updated #stable:' id '763fe404-9380-443a-958a-316954bd662e' date '4 September 2012' time '10:21:36.863 am' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SeanDeNigris.26' message '* Add baseline 1.7 - add XMLSupport project - update Zinc-AWS to require above - add FileSystem-Legacy to Pharo 1.x and FileSystem to Pharo 2.x'' * Add version 1.7 - update to latest package versions - add FileSystem-Legacy to Pharo 1.x and FileSystem to Pharo 2.x * Declare 1.7 as the stable version for #pharo' id '71c2744d-a6b1-442a-9042-0787d057e184' date '5 July 2012' time '1:45:11.542 am' author 'SeanDeNigris' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.25' message 'Merge Sean DeNigris''s fixes and fix bug in #stable:' id 'e2fe949c-649b-4ae2-aa07-d9d112382b41' date '7 June 2012' time '7:51:44 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.24' message 'updated to latest versions as of June 6 2012. ' id 'fbad39d5-8e57-457b-afc9-6895ecf1670c' date '6 June 2012' time '1:14:23 pm' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.23' message 'fixed a typo' id '77162054-82e4-4e9f-b5b5-ab54147e6ad4' date '4 April 2012' time '10:40:19 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.22' message 'Fixed a typo' id 'a011f142-f0fb-49b1-8a42-bf1b3e847013' date '4 April 2012' time '10:39:27 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.21' message ' made baseline 1.5, made version 1.5. marked version 1.5 as stable. Upgraded to latest packages as of 9 AM pacific US time, April 4 2012. Made no changes to the Gemstone configuration. This should only affect Pharo fixed two package declarations in version 20 of the configuration. I misspelled the names.' id '51cabfad-60d1-464c-bddb-4b3c25bd6f4b' date '4 April 2012' time '9:31:52 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.20' message 'made baseline 1.5, made version 1.5. marked version 1.5 as stable. Upgraded to latest packages as of 9 AM pacific US time, April 4 2012. Made no changes to the Gemstone configuration. This should only affect Pharo' id 'cae869bd-f213-41e6-bdba-ec6ecbcd9a5d' date '4 April 2012' time '9:25:01 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-FrancoisStephany.19' message '- Update to the latest version of each package - Change the repository for ''Zinc-Patch-HTTPSocket'' to the pharo repository on squeaksource3 (the latest package does not exist on the Zinc repo). - As I do not have any expertise with Gemstone. I havent updated the Gemstone version.' id '11f0ccf6-3d6c-42ec-8407-23b8ce9dc0c0' date '12 December 2011' time '12:06:06 pm' author 'FrancoisStephany' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.18' message 'added Zinc-REST, upgraded versions of other packages' id 'dd34ea5f-cc3b-42a9-be19-909d1c14300f' date '25 October 2011' time '5:18:32.203 pm' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-dkh.17' message '- open 1.2 for development - - Move Seaside support into ConfigurationOfSeaside30 - - update to latest set of packages. -- fix configuration validation errors involving Zodiac support - - remove Zodiac packages from 1.0-baseline ... it looked like - the Zodiac support wasn''t added until 1.1 - - added 1.1-baseline and corrected mispellings' id '0d6b2786-25b2-4e3f-af3e-f7d754ab9b23' date '1 September 2011' time '5:21:40 pm' author 'dkh' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.16' message 'Corrected error with Zodiac configuration. If you use this to load Seaside into Gemstone you should wrap the call to commit when almost out of memory. ' id 'faef135c-6f52-41d7-88af-58a615b3fb2b' date '2 June 2011' time '9:46:43 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.15' message 'updated gemstone port to latest on SqueakSource. Added Zodiac to the configuration' id 'aec25cf7-27a0-4a3b-91c9-a81d6dfca2e0' date '2 June 2011' time '9:10:21 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.14' message 'Fixed a typo in the Gemstone Seaside Adaptor spec' id 'c0f76eae-d87d-4782-84a4-f64a12ebcd7a' date '14 April 2011' time '2:34:20 pm' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.13' message 'Added a Seaside adaptor for Gemstone + Zinc' id 'fc45b047-07ad-4f1d-90b3-d880727ee954' date '14 April 2011' time '2:26:23 pm' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.12' message 'made some more changes for Gemstone' id 'f2d583bd-3470-4503-8707-a8db51066605' date '13 April 2011' time '11:33 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.11' message 'Increased the version of SocketStream for Gemstone' id '99d7c9df-4098-4282-bb3e-9ec187898ea0' date '12 April 2011' time '4:18:02 pm' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.10' message 'Increased version for Zinc-Gemstone to fix logging issues. Found some new problems with SocketStream on Gemstone. ' id '45a951d0-c4bd-4ab0-9c61-82ab63565825' date '12 April 2011' time '11:06:26 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.9' message 'This version includes a working configuration for Gemstone. Also the package versions for Pharo have been updated to the latest in the ZincHTTPComponents repository' id 'b3dbb2b2-fa9b-4669-aca0-a0e67d42587f' date '10 April 2011' time '12:45:10 pm' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.8' message 'increased versions for gemstone' id '340fbe5d-d1df-4c86-a064-3970e8e16f53' date '10 April 2011' time '12:28:29 pm' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.7' message 'Added Zinc-Gemstone-Preliminary to load some stub classes and methods that Gemstone puts up warnings about when loading the Pharo code.' id '6339a3f1-4b85-4fe7-a040-751fa05d0db1' date '10 April 2011' time '12:18:53 pm' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.6' message 'Increased the versions to reflect changes made to be able to load into gemstone and pharo' id 'dde6671e-e926-40fd-8eb6-90623ba25f2f' date '10 April 2011' time '12:04:45 pm' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.5' message 'Added #stable:' id 'e5b13d4c-7097-461c-9b0f-05f806a8c985' date '10 April 2011' time '11:46:07 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.4' message 'Added config for Gemstone and updated the versions of the Pharo packages' id '7d7b5e1c-1030-4bd0-8d80-a8eb0bd5dfef' date '10 April 2011' time '11:38:25 am' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.3' message 'added ''Zinc-Seaside'' group with dependency on Seaside 3.x Core (hopefully correct)' id 'd8ca2ae9-b0fe-42b5-8a1b-d9f0eb8caf77' date '17 January 2011' time '4:44:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.2' message 'added Patch-HTTPSocket group' id '59b4d12c-bf68-42b4-85f2-5f456246ea28' date '15 January 2011' time '7:41:38 pm' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.1' message 'First primitive Metacello configuration for Zinc HTTP Components' id '8d018889-1b3e-46dc-ac1c-5a4fd03b9220' date '15 January 2011' time '6:07:58 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'ConfigurationOfZincHTTPComponents-SeanDeNigris.24' message '* fixed Zodiac-Core package name * updated to latest packages * all tests pass on Pharo 1.4' id '153211df-e9b1-4edd-9e5b-8b7016709b0b' date '7 June 2012' time '12:32:23.35 am' author 'SeanDeNigris' ancestors ((id '77162054-82e4-4e9f-b5b5-ab54147e6ad4')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.50' message 'v 2.4.3' id '302da4dc-e1c5-4332-95ef-1639565bfbd1' date '06/21/2013' time '10:57:11' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.49' message 'v 2.4.2 including Zinc-Seaside' id '983d7a0a-9f15-401c-ab9e-8a1d3e960423' date '06/07/2013' time '02:01:01' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.48' message 'Updated #stable to 2.4.1' id 'b86460d5-c3d9-4293-8a36-fed9159b981b' date '06/03/2013' time '08:28:40' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.47' message 'upgraded to stable version 2.4 Summary of high impact changes: - ZdcSocketStream is now the default (and Zn no longer uses SocketStream) - ZnEntity IO has been refactored and optimised - ZnUTF8Encoding has been optimised using the ''fast'' trick from Seaside (the assumption being that most characters are ASCII or Latin1 anyway) Summary of new features: - Server side gzip compression and chunking - New demo/debug server handers (/repl & /sunit) - Client curl command line generation - Better fleshed out core object model, more tests' id 'fb70dcd6-31a5-4d81-9be0-3cbdda98761b' date '05/28/2013' time '08:47:26' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.46' message 'updated to 2.3.4' id '42f6943e-f444-42ab-b2ce-306b7c87b1f5' date '03/14/2013' time '07:05:02' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.45' message 'Updated to stable version 2.3.3 (as included in Pharo 2.0)' id '0ebdd697-74fb-4c87-a911-27cd65ed9d3f' date '02/22/2013' time '03:38:22' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.44' message 'upgraded to 2.3.2' id '120f7de0-d551-4f88-8ed8-651c6f98b4d8' date '02/01/2013' time '08:08:03' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.43' message 'updated to version 2.2.3 for Pharo (all versions)' id 'f575109c-b13a-472b-b5a6-760ad7b308d1' date '01/31/2013' time '10:28:43' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.42' message 'stable version 2.3 for pharo 2.0' id 'b6aaec85-fbf2-4138-9219-053d91c25f37' date '01/21/2013' time '05:01:18' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.41' message 'new, not yet stable, version 2.2 containing the Zinc-SSO packages (except the Seaside code) - with fixes' id '6a2f6e91-f85b-4219-8339-ffb6b691ef06' date '01/08/2013' time '03:32:31' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.40' message 'new, not yet stable, version 2.2 containing the Zinc-SSO packages (except the Seaside code)' id '80f2d574-c0ba-4d99-a82b-7900e074aa1f' date '01/08/2013' time '03:07:04' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.39' message 'v2.1.3 with new API to support SSO/SeasideAdaptor ' id '2b67627e-6d89-4ae4-b9e6-c2d0af911a08' date '01/08/2013' time '01:57:29' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.38' message 'updated to 2.1.2 for pharo 2' id 'f30c35cc-6c5a-46a6-bd1e-e9719817023b' date '12/31/2012' time '05:59:30' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.37' message 'stable version 2.1.1 for Pharo 2.0 (http://code.google.com/p/pharo/issues/detail?id=7180)' id 'a96b58ca-68db-4211-a1f5-1d981aed10d2' date '12/24/2012' time '02:58:40' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.36' message 'fixing some bugs in baseline/version 2.1' id '9a0764c1-dd54-485b-8749-4397deb41c6d' date '12/17/2012' time '10:07:33' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.35' message 'version 2.1 with separate Zinc-Character-Encoding as prerequisite for Zinc-Resource-Meta' id '470b15ef-6a3b-4cbe-b5f6-684c4c86a211' date '12/17/2012' time '05:16:49' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.34' message 'updated to version 2.0 with new Zinc-Resource-Meta-*, Zinc-REST with NeoJSON dependency, addition of Zodiac-Tests' id 'db9c0612-3694-4a1d-891d-75eee1eea1ea' date '12/12/2012' time '08:38:34' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.33' message '-> 1.9.3' id 'b76a89ad-e38b-4239-8a45-2e0df9382bb3' date '10/13/2012' time '08:57:27' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.32' message 'version 1.9.2 with updated WebSocket support' id '38870314-aa2c-4eb0-9641-087a0cdde458' date '10/13/2012' time '05:55:17' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.31' message 'updated to stable version 1.9.1 for pharo 2' id '3265f2b8-6e27-43fc-bdf9-eacfccbe34a5' date '10/12/2012' time '01:30:35' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.30' message 'created a new baseline that is using http://mc.stfx.eu created new version 1.9 only updated stable version for #''pharo2.x''' id '53d23edf-5b40-4b49-b218-560a8c8c02f5' date '09/28/2012' time '02:32:39' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.29' message 'updated to 1.8.2' id '0e94bd02-30b2-4a8b-9ae1-d416b9aa4ce8' date '09/12/2012' time '03:43:39' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.28' message 'updated Zinc-WWS-Server version' id '554840de-27d6-4ba4-b1d0-8e924cf96dd8' date '09/04/2012' time '04:52:51' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.27' message 'cleanup/simplification added Zinc-Pharo-Forward-Compatibility for pre 2.0 added #baseline18: and #version18: updated #stable:' id '763fe404-9380-443a-958a-316954bd662e' date '09/04/2012' time '10:21:36' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SeanDeNigris.26' message '* Add baseline 1.7 - add XMLSupport project - update Zinc-AWS to require above - add FileSystem-Legacy to Pharo 1.x and FileSystem to Pharo 2.x'' * Add version 1.7 - update to latest package versions - add FileSystem-Legacy to Pharo 1.x and FileSystem to Pharo 2.x * Declare 1.7 as the stable version for #pharo' id '71c2744d-a6b1-442a-9042-0787d057e184' date '07/05/2012' time '01:45:11' author 'SeanDeNigris' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.25' message 'Merge Sean DeNigris''s fixes and fix bug in #stable:' id 'e2fe949c-649b-4ae2-aa07-d9d112382b41' date '06/07/2012' time '07:51:44' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.24' message 'updated to latest versions as of June 6 2012. ' id 'fbad39d5-8e57-457b-afc9-6895ecf1670c' date '06/06/2012' time '13:14:23' author 'PaulDeBruicker' ancestors () stepChildren ())(name 'ConfigurationOfZincHTTPComponents-SeanDeNigris.24' message '* fixed Zodiac-Core package name * updated to latest packages * all tests pass on Pharo 1.4' id '153211df-e9b1-4edd-9e5b-8b7016709b0b' date '06/07/2012' time '12:32:23' author 'SeanDeNigris' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.23' message 'fixed a typo' id '77162054-82e4-4e9f-b5b5-ab54147e6ad4' date '04/04/2012' time '10:40:19' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.22' message 'Fixed a typo' id 'a011f142-f0fb-49b1-8a42-bf1b3e847013' date '04/04/2012' time '10:39:27' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.21' message ' made baseline 1.5, made version 1.5. marked version 1.5 as stable. Upgraded to latest packages as of 9 AM pacific US time, April 4 2012. Made no changes to the Gemstone configuration. This should only affect Pharo fixed two package declarations in version 20 of the configuration. I misspelled the names.' id '51cabfad-60d1-464c-bddb-4b3c25bd6f4b' date '04/04/2012' time '09:31:52' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.20' message 'made baseline 1.5, made version 1.5. marked version 1.5 as stable. Upgraded to latest packages as of 9 AM pacific US time, April 4 2012. Made no changes to the Gemstone configuration. This should only affect Pharo' id 'cae869bd-f213-41e6-bdba-ec6ecbcd9a5d' date '04/04/2012' time '09:25:01' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-FrancoisStephany.19' message '- Update to the latest version of each package - Change the repository for ''Zinc-Patch-HTTPSocket'' to the pharo repository on squeaksource3 (the latest package does not exist on the Zinc repo). - As I do not have any expertise with Gemstone. I havent updated the Gemstone version.' id '11f0ccf6-3d6c-42ec-8407-23b8ce9dc0c0' date '12/12/2011' time '12:06:06' author 'FrancoisStephany' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.18' message 'added Zinc-REST, upgraded versions of other packages' id 'dd34ea5f-cc3b-42a9-be19-909d1c14300f' date '10/25/2011' time '05:18:32' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-dkh.17' message '- open 1.2 for development - Move Seaside support into ConfigurationOfSeaside30 - update to latest set of packages. - fix configuration validation errors involving Zodiac support - remove Zodiac packages from 1.0-baseline ... it looked like the Zodiac support wasn''t added until 1.1 - added 1.1-baseline and corrected mispellings' id '0d6b2786-25b2-4e3f-af3e-f7d754ab9b23' date '09/01/2011' time '17:21:40' author 'dkh' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.16' message 'Corrected error with Zodiac configuration. If you use this to load Seaside into Gemstone you should wrap the call to commit when almost out of memory. ' id 'faef135c-6f52-41d7-88af-58a615b3fb2b' date '06/02/2011' time '09:46:43' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.15' message 'updated gemstone port to latest on SqueakSource. Added Zodiac to the configuration' id 'aec25cf7-27a0-4a3b-91c9-a81d6dfca2e0' date '06/02/2011' time '09:10:21' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.14' message 'Fixed a typo in the Gemstone Seaside Adaptor spec' id 'c0f76eae-d87d-4782-84a4-f64a12ebcd7a' date '04/14/2011' time '14:34:20' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.13' message 'Added a Seaside adaptor for Gemstone + Zinc' id 'fc45b047-07ad-4f1d-90b3-d880727ee954' date '04/14/2011' time '14:26:23' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.12' message 'made some more changes for Gemstone' id 'f2d583bd-3470-4503-8707-a8db51066605' date '04/13/2011' time '11:33:00' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.11' message 'Increased the version of SocketStream for Gemstone' id '99d7c9df-4098-4282-bb3e-9ec187898ea0' date '04/12/2011' time '16:18:02' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.10' message 'Increased version for Zinc-Gemstone to fix logging issues. Found some new problems with SocketStream on Gemstone. ' id '45a951d0-c4bd-4ab0-9c61-82ab63565825' date '04/12/2011' time '11:06:26' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.9' message 'This version includes a working configuration for Gemstone. Also the package versions for Pharo have been updated to the latest in the ZincHTTPComponents repository' id 'b3dbb2b2-fa9b-4669-aca0-a0e67d42587f' date '04/10/2011' time '12:45:10' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.8' message 'increased versions for gemstone' id '340fbe5d-d1df-4c86-a064-3970e8e16f53' date '04/10/2011' time '12:28:29' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.7' message 'Added Zinc-Gemstone-Preliminary to load some stub classes and methods that Gemstone puts up warnings about when loading the Pharo code.' id '6339a3f1-4b85-4fe7-a040-751fa05d0db1' date '04/10/2011' time '12:18:53' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.6' message 'Increased the versions to reflect changes made to be able to load into gemstone and pharo' id 'dde6671e-e926-40fd-8eb6-90623ba25f2f' date '04/10/2011' time '12:04:45' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.5' message 'Added #stable:' id 'e5b13d4c-7097-461c-9b0f-05f806a8c985' date '04/10/2011' time '11:46:07' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-PaulDeBruicker.4' message 'Added config for Gemstone and updated the versions of the Pharo packages' id '7d7b5e1c-1030-4bd0-8d80-a8eb0bd5dfef' date '04/10/2011' time '11:38:25' author 'PaulDeBruicker' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.3' message 'added ''Zinc-Seaside'' group with dependency on Seaside 3.x Core (hopefully correct)' id 'd8ca2ae9-b0fe-42b5-8a1b-d9f0eb8caf77' date '01/17/2011' time '16:44:03' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.2' message 'added Patch-HTTPSocket group' id '59b4d12c-bf68-42b4-85f2-5f456246ea28' date '01/15/2011' time '19:41:38' author 'SvenVanCaekenberghe' ancestors ((name 'ConfigurationOfZincHTTPComponents-SvenVanCaekenberghe.1' message 'First primitive Metacello configuration for Zinc HTTP Components' id '8d018889-1b3e-46dc-ac1c-5a4fd03b9220' date '01/15/2011' time '18:07:58' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/accessKeyId..st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/accessKeyId..st index ad791b47..a1cf2591 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/accessKeyId..st +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/accessKeyId..st @@ -2,4 +2,4 @@ accessing accessKeyId: string "Set my AWS Security Credentials' Access Keys' Access Key ID" - accessKeyId := string \ No newline at end of file + signatureTool accessKeyId: string \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/accessKeyId.st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/accessKeyId.st index f7c40aff..724eee0e 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/accessKeyId.st +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/accessKeyId.st @@ -2,4 +2,4 @@ accessing accessKeyId "The AWS Security Credentials' Access Keys' Access Key ID used by me" - ^ accessKeyId \ No newline at end of file + ^ signatureTool accessKeyId \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/addAuthorization.st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/addAuthorization.st deleted file mode 100644 index dcb3aa7d..00000000 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/addAuthorization.st +++ /dev/null @@ -1,10 +0,0 @@ -private protocol -addAuthorization - | authorization | - authorization := self authorizationFor: self httpClient request. - self httpClient - headerAt: 'Authorization' - put: (String streamContents: [ :stream | - stream nextPutAll: 'AWS '; nextPutAll: self accessKeyId; nextPut: $:; nextPutAll: authorization ]). - - diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/endPoint..st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/endPoint..st index 7ea7b376..b43abdba 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/endPoint..st +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/endPoint..st @@ -1,7 +1,13 @@ initialize-release endPoint: host "Initialize me to talk to the endpoint named host. - Create a new HTTP client if needed, else reuse the existing one." - - httpClient ifNil: [ (httpClient := ZnClient new) http ]. + Create a new HTTP client if needed, else reuse the existing one. + Install my signatureTool as a prepare request hook." + + httpClient + ifNil: [ + httpClient := ZnClient new + http; + prepareRequest: signatureTool; + yourself ]. httpClient host: host \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/httpClient.st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/httpClient.st index 96e9eadd..8037fd31 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/httpClient.st +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/httpClient.st @@ -1,4 +1,5 @@ private httpClient - httpClient isNil ifTrue: [ self initializeHttpClient ]. + httpClient isNil + ifTrue: [ self endPoint: self standardEndPoint ]. ^ httpClient \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/initialize.st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/initialize.st new file mode 100644 index 00000000..12eb6c58 --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + signatureTool := ZnAWSS3RequestSignatureTool new \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/initializeHttpClient.st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/initializeHttpClient.st deleted file mode 100644 index 28cdd732..00000000 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/initializeHttpClient.st +++ /dev/null @@ -1,3 +0,0 @@ -private -initializeHttpClient - self endPoint: self standardEndPoint \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/prepareRequest.st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/prepareRequest.st index 2a94e276..bd245566 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/prepareRequest.st +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/prepareRequest.st @@ -1,7 +1,4 @@ private protocol prepareRequest self checkIntegrity - ifTrue: [ self addContentHash ]. - self addAuthorization - - + ifTrue: [ self addContentHash ] diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/secretAccessKey..st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/secretAccessKey..st index 00aa80c0..93c3b32d 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/secretAccessKey..st +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/secretAccessKey..st @@ -2,4 +2,4 @@ accessing secretAccessKey: string "Set my AWS Security Credentials' Access Keys' Secret Access Key" - secretAccessKey := string \ No newline at end of file + signatureTool secretAccessKey: string \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/secretAccessKey.st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/secretAccessKey.st index 3b843755..184cf945 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/secretAccessKey.st +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/secretAccessKey.st @@ -2,4 +2,4 @@ accessing secretAccessKey "The AWS Security Credentials' Access Keys' Secret Access Key used by me" - ^ secretAccessKey \ No newline at end of file + ^ signatureTool secretAccessKey \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/methodProperties.json b/repository/Zinc-AWS.package/ZnAWSS3Client.class/methodProperties.json index 8a18a188..0ef6dc46 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/methodProperties.json +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/methodProperties.json @@ -2,43 +2,37 @@ "class" : { }, "instance" : { - "accessKeyId" : "SvenVanCaekenberghe 1/5/2011 20:07", - "accessKeyId:" : "SvenVanCaekenberghe 1/5/2011 20:08", - "addAuthorization" : "SvenVanCaekenberghe 9/17/2011 13:39", + "accessKeyId" : "SvenVanCaekenberghe 2/21/2013 16:37", + "accessKeyId:" : "SvenVanCaekenberghe 2/21/2013 16:37", "addBucket:" : "SvenVanCaekenberghe 11/23/2011 16:16", "addContentHash" : "SvenVanCaekenberghe 9/17/2011 13:40", "at:" : "SvenVanCaekenberghe 11/23/2011 16:17", "at:put:" : "SvenVanCaekenberghe 1/5/2011 20:16", "at:put:headers:" : "SvenVanCaekenberghe 11/23/2011 16:19", - "authorizationFor:" : "SvenVanCaekenberghe 3/21/2011 20:29", - "bucketFromEndPoint:" : "SvenVanCaekenberghe 11/23/2011 19:27", "buckets" : "SvenVanCaekenberghe 11/23/2011 15:28", - "canonicalStringFor:" : "SvenVanCaekenberghe 11/23/2011 16:11", "checkIntegrity" : "SvenVanCaekenberghe 1/5/2011 20:09", "checkIntegrity:" : "SvenVanCaekenberghe 1/5/2011 20:09", "close" : "SvenVanCaekenberghe 9/17/2011 11:22", "downloadFile:fromBucket:" : "SvenVanCaekenberghe 9/27/2012 21:17", "eTag" : "SvenVanCaekenberghe 11/23/2011 19:49", - "endPoint:" : "SvenVanCaekenberghe 11/23/2011 16:25", + "endPoint:" : "SvenVanCaekenberghe 2/21/2013 16:40", "endPointForBucket:" : "SvenVanCaekenberghe 11/23/2011 15:28", "enforceContentHash" : "SvenVanCaekenberghe 11/23/2011 19:47", "executeRequest:" : "SvenVanCaekenberghe 9/17/2011 13:51", - "hmacSha1:" : "SvenVanCaekenberghe 1/4/2011 22:42", - "httpClient" : "SvenVanCaekenberghe 9/17/2011 11:23", - "initializeHttpClient" : "SvenVanCaekenberghe 11/23/2011 15:28", + "httpClient" : "SvenVanCaekenberghe 2/21/2013 16:51", + "initialize" : "SvenVanCaekenberghe 2/21/2013 16:37", "keysIn:" : "SvenVanCaekenberghe 1/5/2011 20:56", "keysIn:query:" : "SvenVanCaekenberghe 11/23/2011 15:41", "md5:" : "SvenVanCaekenberghe 1/5/2011 11:30", "metaAt:" : "SvenVanCaekenberghe 12/1/2011 10:14", "postProcessResponse" : "SvenVanCaekenberghe 9/17/2011 13:41", - "prepareRequest" : "SvenVanCaekenberghe 9/17/2011 13:37", - "printAmzHeaders:to:" : "SvenVanCaekenberghe 1/5/2011 19:42", + "prepareRequest" : "SvenVanCaekenberghe 2/21/2013 16:46", "processBucketsXml:" : "SvenVanCaekenberghe 1/5/2011 20:54", "processKeysXml:for:" : "SvenVanCaekenberghe 1/5/2011 20:55", "remove:" : "SvenVanCaekenberghe 11/23/2011 16:21", "removeBucket:" : "SvenVanCaekenberghe 11/23/2011 16:16", - "secretAccessKey" : "SvenVanCaekenberghe 1/5/2011 20:07", - "secretAccessKey:" : "SvenVanCaekenberghe 1/5/2011 20:07", + "secretAccessKey" : "SvenVanCaekenberghe 2/21/2013 16:37", + "secretAccessKey:" : "SvenVanCaekenberghe 2/21/2013 16:37", "standardEndPoint" : "SvenVanCaekenberghe 11/23/2011 15:28", "uploadFile:inBucket:" : "SvenVanCaekenberghe 11/24/2011 19:46", "uploadFile:withMd5:inBucket:" : "SvenVanCaekenberghe 9/27/2012 21:59" } } diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/properties.json b/repository/Zinc-AWS.package/ZnAWSS3Client.class/properties.json index a4146a62..6e92a614 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/properties.json +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/properties.json @@ -6,8 +6,7 @@ ], "commentStamp" : "SvenVanCaekenberghe 9/17/2011 14:06", "instvars" : [ - "accessKeyId", - "secretAccessKey", + "signatureTool", "checkIntegrity", "httpClient" ], "name" : "ZnAWSS3Client", diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/README.md b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/README.md new file mode 100644 index 00000000..f4302d31 --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/README.md @@ -0,0 +1,3 @@ +I am a tool to sign AWS S3 requests. + +See also http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/accessKeyId..st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/accessKeyId..st new file mode 100644 index 00000000..ad791b47 --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/accessKeyId..st @@ -0,0 +1,5 @@ +accessing +accessKeyId: string + "Set my AWS Security Credentials' Access Keys' Access Key ID" + + accessKeyId := string \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/accessKeyId.st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/accessKeyId.st new file mode 100644 index 00000000..f7c40aff --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/accessKeyId.st @@ -0,0 +1,5 @@ +accessing +accessKeyId + "The AWS Security Credentials' Access Keys' Access Key ID used by me" + + ^ accessKeyId \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/authorizationFor..st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/authorizationFor..st similarity index 80% rename from repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/authorizationFor..st rename to repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/authorizationFor..st index 78ccca94..1ae30bf5 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/authorizationFor..st +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/authorizationFor..st @@ -1,7 +1,7 @@ -private protocol +private authorizationFor: request | canonicalString hmac | request headers at: 'Date' put: ZnUtils httpDate. canonicalString := self canonicalStringFor: request. hmac := self hmacSha1: canonicalString. - ^ ZnUtils encodeBase64: hmac \ No newline at end of file + ^ ZnUtils encodeBase64: hmac \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/bucketFromEndPoint..st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/bucketFromEndPoint..st similarity index 69% rename from repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/bucketFromEndPoint..st rename to repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/bucketFromEndPoint..st index 1bbc501d..225df6d3 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/bucketFromEndPoint..st +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/bucketFromEndPoint..st @@ -1,5 +1,8 @@ private bucketFromEndPoint: host + "For foo.s3.amazonaws.com return /foo + For s3.amazonaws.com return the empty string" + | position | position := host indexOfSubCollection: self standardEndPoint. ^ position < 3 diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/canonicalStringFor..st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/canonicalStringFor..st similarity index 97% rename from repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/canonicalStringFor..st rename to repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/canonicalStringFor..st index 220766e7..3cf0c93f 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/canonicalStringFor..st +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/canonicalStringFor..st @@ -1,4 +1,4 @@ -private protocol +private canonicalStringFor: request ^ String streamContents: [ :stream | stream nextPutAll: request method; lf. diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/hmacSha1..st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/hmacSha1..st similarity index 100% rename from repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/hmacSha1..st rename to repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/hmacSha1..st diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/printAmzHeaders.to..st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/printAmzHeaders.to..st similarity index 100% rename from repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/printAmzHeaders.to..st rename to repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/printAmzHeaders.to..st diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/secretAccessKey..st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/secretAccessKey..st new file mode 100644 index 00000000..00aa80c0 --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/secretAccessKey..st @@ -0,0 +1,5 @@ +accessing +secretAccessKey: string + "Set my AWS Security Credentials' Access Keys' Secret Access Key" + + secretAccessKey := string \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/secretAccessKey.st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/secretAccessKey.st new file mode 100644 index 00000000..3b843755 --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/secretAccessKey.st @@ -0,0 +1,5 @@ +accessing +secretAccessKey + "The AWS Security Credentials' Access Keys' Secret Access Key used by me" + + ^ secretAccessKey \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/signRequest..st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/signRequest..st new file mode 100644 index 00000000..c5cfad8d --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/signRequest..st @@ -0,0 +1,13 @@ +public +signRequest: request + | authorization | + authorization := self authorizationFor: request. + request + setAuthorization: + (String + streamContents: [ :stream | + stream + nextPutAll: 'AWS '; + nextPutAll: self accessKeyId; + nextPut: $:; + nextPutAll: authorization ]) \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/standardEndPoint.st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/standardEndPoint.st new file mode 100644 index 00000000..fa38bec6 --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/standardEndPoint.st @@ -0,0 +1,3 @@ +private +standardEndPoint + ^ 's3.amazonaws.com' \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/value..st b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/value..st new file mode 100644 index 00000000..b22ac0d2 --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/instance/value..st @@ -0,0 +1,3 @@ +public +value: request + self signRequest: request \ No newline at end of file diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/methodProperties.json b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/methodProperties.json new file mode 100644 index 00000000..7677a540 --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/methodProperties.json @@ -0,0 +1,16 @@ +{ + "class" : { + }, + "instance" : { + "accessKeyId" : "SvenVanCaekenberghe 2/21/2013 16:05", + "accessKeyId:" : "SvenVanCaekenberghe 2/21/2013 16:05", + "authorizationFor:" : "SvenVanCaekenberghe 2/21/2013 16:06", + "bucketFromEndPoint:" : "SvenVanCaekenberghe 2/21/2013 16:35", + "canonicalStringFor:" : "SvenVanCaekenberghe 2/21/2013 16:06", + "hmacSha1:" : "SvenVanCaekenberghe 2/21/2013 16:42", + "printAmzHeaders:to:" : "SvenVanCaekenberghe 2/21/2013 16:13", + "secretAccessKey" : "SvenVanCaekenberghe 2/21/2013 16:05", + "secretAccessKey:" : "SvenVanCaekenberghe 2/21/2013 16:05", + "signRequest:" : "SvenVanCaekenberghe 2/21/2013 16:41", + "standardEndPoint" : "SvenVanCaekenberghe 2/21/2013 16:29", + "value:" : "SvenVanCaekenberghe 2/21/2013 16:04" } } diff --git a/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/properties.json b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/properties.json new file mode 100644 index 00000000..21c624b9 --- /dev/null +++ b/repository/Zinc-AWS.package/ZnAWSS3RequestSignatureTool.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-AWS", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "accessKeyId", + "secretAccessKey" ], + "name" : "ZnAWSS3RequestSignatureTool", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-AWS.package/monticello.meta/version b/repository/Zinc-AWS.package/monticello.meta/version index 5ff7340b..4b4a3b8b 100644 --- a/repository/Zinc-AWS.package/monticello.meta/version +++ b/repository/Zinc-AWS.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-AWS-SvenVanCaekenberghe.16' message 'ported to Pharo 2.0 FileSystem API' id '7b52b3be-bb3d-40be-8ae0-109d84d6a22b' date '27 September 2012' time '10:04:31.829 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.15' message 'small fix to ZnAWSS3Client>>#uploadFile:withMd5:fromBucket: better use #readOnlyFileNamed:' id 'c9906c39-ddc8-4693-8ff7-4896d8f3f94f' date '2 December 2011' time '2:54:37 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.14' message 'added ZnAWSS3Client>>#downloadFile:fromBucket: and #metaAt:' id '9b651af8-93d6-4b08-89d8-f349c95dcf2a' date '1 December 2011' time '10:34:04 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.13' message 'added ZnAWSS3Client>>#uploadFile:withMd5:inBucket:' id '118e82ea-340e-424d-9f65-1bcda5458f85' date '24 November 2011' time '8:47:49 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.12' message 'fixed ZnAWSS3Client>>#enforceContentHash' id 'c54536c9-aaa1-4b54-bd83-0307372ddb87' date '23 November 2011' time '8:06:12 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.11' message 'changed AWS S3 client to use the virtual bucket style' id '35804904-6724-42ef-a750-fbe35933abb9' date '23 November 2011' time '4:28:27 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.10' message 'tracking the renaming of ZnNeoClient -> ZnClient' id '8d5b9649-1fee-41b5-8887-db8131122e5e' date '9 November 2011' time '9:25:41 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.9' message 'rewrote ZnAWSS3Client to use ZnNeoClient internally' id 'eafb3833-3d74-44ed-995b-499f3e902710' date '17 September 2011' time '2:07:19 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.7' message 'now using ZnUtils class>>#encodeBase64:' id 'be0018d4-037d-45e8-b7e6-72c9bbe79d96' date '21 March 2011' time '8:55 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.6' message 'added ZnAWSS3Key>>#asResource and ZnAWSS3Key>>#asUrl; added ZnAWSS3Key class>>#bucket:key: and ZnAWSS3Key class>>#fromAssociation:' id 'cf548b23-80c7-443e-a2c3-735679036b79' date '8 January 2011' time '5:21:36 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.5' message 'added ZnAWSS3Client>>#keysIn:query: to specify optional URI query fields' id '4c83d2aa-d318-4407-8a6b-7bf9c447a62e' date '5 January 2011' time '9:08:18 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.4' message 'added comments to all public methods' id 'a9438ed3-f3c4-46f9-85c7-d749ea6cdb97' date '5 January 2011' time '8:18:46 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.3' message 'added ZnAWSS3Client>>#at:put:headers: to allow setting custom headers (such as x-amz-* headers); implemented adding x-amz-* headers to the canonical string for authorization' id 'b2e778b7-8c9d-4bb5-883c-9f0fd8304bb0' date '5 January 2011' time '8:04:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.2' message 'implemented MD5 integrity checking for GET and PUT operations' id '9fd785c9-c343-4e92-b04f-3378ca4a83d4' date '5 January 2011' time '5:10:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.1' message 'first working proof of concept of an Amazon Web Services (AWS) Simple Storage Service (S3) Client; this package depends on Zinc HTTP Components and XML Support ' id '05a32ed6-1e74-4821-81eb-12c61761d0c5' date '5 January 2011' time '4:14:45 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-AWS-SvenVanCaekenberghe.17' message 'refactored ZnAWSS3Client by using ZnClient>>##prepareRequest: and the newly introduced ZnAWSS3RequestSignatureTool' id '837789c5-248d-44f2-8e8c-e02728eb2974' date '02/21/2013' time '05:11:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.16' message 'ported to Pharo 2.0 FileSystem API' id '7b52b3be-bb3d-40be-8ae0-109d84d6a22b' date '09/27/2012' time '10:04:31' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.15' message 'small fix to ZnAWSS3Client>>#uploadFile:withMd5:fromBucket: better use #readOnlyFileNamed:' id 'c9906c39-ddc8-4693-8ff7-4896d8f3f94f' date '12/02/2011' time '14:54:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.14' message 'added ZnAWSS3Client>>#downloadFile:fromBucket: and #metaAt:' id '9b651af8-93d6-4b08-89d8-f349c95dcf2a' date '12/01/2011' time '10:34:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.13' message 'added ZnAWSS3Client>>#uploadFile:withMd5:inBucket:' id '118e82ea-340e-424d-9f65-1bcda5458f85' date '11/24/2011' time '20:47:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.12' message 'fixed ZnAWSS3Client>>#enforceContentHash' id 'c54536c9-aaa1-4b54-bd83-0307372ddb87' date '11/23/2011' time '20:06:12' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.11' message 'changed AWS S3 client to use the virtual bucket style' id '35804904-6724-42ef-a750-fbe35933abb9' date '11/23/2011' time '16:28:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.10' message 'tracking the renaming of ZnNeoClient -> ZnClient' id '8d5b9649-1fee-41b5-8887-db8131122e5e' date '11/09/2011' time '09:25:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.9' message 'rewrote ZnAWSS3Client to use ZnNeoClient internally' id 'eafb3833-3d74-44ed-995b-499f3e902710' date '09/17/2011' time '14:07:19' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.7' message 'now using ZnUtils class>>#encodeBase64:' id 'be0018d4-037d-45e8-b7e6-72c9bbe79d96' date '03/21/2011' time '20:55:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.6' message 'added ZnAWSS3Key>>#asResource and ZnAWSS3Key>>#asUrl; added ZnAWSS3Key class>>#bucket:key: and ZnAWSS3Key class>>#fromAssociation:' id 'cf548b23-80c7-443e-a2c3-735679036b79' date '01/08/2011' time '17:21:36' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.5' message 'added ZnAWSS3Client>>#keysIn:query: to specify optional URI query fields' id '4c83d2aa-d318-4407-8a6b-7bf9c447a62e' date '01/05/2011' time '21:08:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.4' message 'added comments to all public methods' id 'a9438ed3-f3c4-46f9-85c7-d749ea6cdb97' date '01/05/2011' time '20:18:46' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.3' message 'added ZnAWSS3Client>>#at:put:headers: to allow setting custom headers (such as x-amz-* headers); implemented adding x-amz-* headers to the canonical string for authorization' id 'b2e778b7-8c9d-4bb5-883c-9f0fd8304bb0' date '01/05/2011' time '20:04:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.2' message 'implemented MD5 integrity checking for GET and PUT operations' id '9fd785c9-c343-4e92-b04f-3378ca4a83d4' date '01/05/2011' time '17:10:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-AWS-SvenVanCaekenberghe.1' message 'first working proof of concept of an Amazon Web Services (AWS) Simple Storage Service (S3) Client; this package depends on Zinc HTTP Components and XML Support ' id '05a32ed6-1e74-4821-81eb-12c61761d0c5' date '01/05/2011' time '16:14:45' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/String.extension/instance/urlDecoded.st b/repository/Zinc-Character-Encoding-Core.package/String.extension/instance/urlDecoded.st new file mode 100644 index 00000000..6403973f --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/String.extension/instance/urlDecoded.st @@ -0,0 +1,3 @@ +*Zinc-Character-Encoding-Core +urlDecoded + ^ ZnPercentEncoder new decode: self \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/String.extension/instance/urlEncoded.st b/repository/Zinc-Character-Encoding-Core.package/String.extension/instance/urlEncoded.st new file mode 100644 index 00000000..31ba8132 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/String.extension/instance/urlEncoded.st @@ -0,0 +1,3 @@ +*Zinc-Character-Encoding-Core +urlEncoded + ^ ZnPercentEncoder new encode: self diff --git a/repository/Zinc-Character-Encoding-Core.package/String.extension/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/String.extension/methodProperties.json new file mode 100644 index 00000000..d4c22652 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/String.extension/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "urlDecoded" : "CamilloBruni 3/26/2013 23:18", + "urlEncoded" : "CamilloBruni 3/26/2013 23:18" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/String.extension/properties.json b/repository/Zinc-Character-Encoding-Core.package/String.extension/properties.json new file mode 100644 index 00000000..c2138507 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/String.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "String" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/initialize.st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/initialize.st index fee720fa..b90d1ebf 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/initialize.st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/initialize.st @@ -2,4 +2,4 @@ initialize-release initialize super initialize. alphabet := DefaultAlphabet. - inverse := DefaultInverse \ No newline at end of file + inverse := DefaultInverse \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/README.md index 22d5e31f..7a01ba2f 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/README.md +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/README.md @@ -1,4 +1,4 @@ -I am STONBufferedReadStream. +I am ZnBufferedReadStream. I wrap another ReadStream and add efficient buffering for the typical access pattern of parsers: sending lots of #next, #peek and #atEnd messages. diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into..st index 5a2ace64..887a2a67 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into..st @@ -6,4 +6,4 @@ next: requestedCount into: collection ^ self next: requestedCount into: collection - startingAt: 1 \ No newline at end of file + startingAt: 1 \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into.startingAt..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into.startingAt..st index 69c5aa02..091e2592 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into.startingAt..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into.startingAt..st @@ -10,4 +10,4 @@ next: requestedCount into: collection startingAt: offset count: requestedCount. ^ read = requestedCount ifTrue: [ collection ] - ifFalse: [ collection copyFrom: 1 to: offset + read - 1 ] \ No newline at end of file + ifFalse: [ collection copyFrom: 1 to: offset + read - 1 ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/finish.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/finish.st new file mode 100644 index 00000000..0db8b6ca --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/finish.st @@ -0,0 +1,3 @@ +initialize-release +finish + self flushBuffer \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/methodProperties.json index 93154aab..eb4d246b 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/methodProperties.json +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/methodProperties.json @@ -8,6 +8,7 @@ "bufferSize" : "SvenVanCaekenberghe 12/8/2010 10:08", "close" : "SvenVanCaekenberghe 12/7/2010 21:22", "defaultBufferSize" : "SvenVanCaekenberghe 11/30/2012 21:22", + "finish" : "SvenVanCaekenberghe 5/18/2013 20:17", "flush" : "SvenVanCaekenberghe 12/7/2010 21:23", "flushBuffer" : "SvenVanCaekenberghe 12/7/2010 23:48", "flushBufferIfFull" : "SvenVanCaekenberghe 12/7/2010 23:39", diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/parseUnicodeOrgSpec..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/parseUnicodeOrgSpec..st index 5ceb9bed..38ef4d97 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/parseUnicodeOrgSpec..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/parseUnicodeOrgSpec..st @@ -14,4 +14,4 @@ parseUnicodeOrgSpec: url mapping at: (hexReader value: tokens first) put: (hexReader value: tokens second) ] ] ]. - ^ mapping \ No newline at end of file + ^ mapping \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/README.md new file mode 100644 index 00000000..928ecab0 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/README.md @@ -0,0 +1,5 @@ +I am ZnByteStringBecameWideString, a Notification signalled to indicate that some byteString was changed to a wideString. + +Used by ZnUTF8Encoder>>#readInto:startingAt:count:fromStream: to avoid a #becomeForward: when a ByteString automagically changes into a WideString. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/class/convert..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/class/convert..st new file mode 100644 index 00000000..a88dda82 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/class/convert..st @@ -0,0 +1,11 @@ +convenience +convert: byteString + "Convert byteString to a wideString, signalling a notification" + + | wideString | + wideString := WideString from: byteString. + self new + byteString: byteString; + wideString: wideString; + signal. + ^ wideString \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/byteString..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/byteString..st new file mode 100644 index 00000000..53ac55a6 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/byteString..st @@ -0,0 +1,3 @@ +accessing +byteString: anObject + byteString := anObject \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/byteString.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/byteString.st new file mode 100644 index 00000000..9746fab1 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/byteString.st @@ -0,0 +1,3 @@ +accessing +byteString + ^ byteString \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/wideString..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/wideString..st new file mode 100644 index 00000000..3f27b1bb --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/wideString..st @@ -0,0 +1,3 @@ +accessing +wideString: anObject + wideString := anObject \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/wideString.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/wideString.st new file mode 100644 index 00000000..bcc907d6 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/instance/wideString.st @@ -0,0 +1,3 @@ +accessing +wideString + ^ wideString \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/methodProperties.json new file mode 100644 index 00000000..61bb60e3 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + "convert:" : "SvenVanCaekenberghe 6/11/2013 15:00" }, + "instance" : { + "byteString" : "SvenVanCaekenberghe 6/11/2013 14:44", + "byteString:" : "SvenVanCaekenberghe 6/11/2013 14:44", + "wideString" : "SvenVanCaekenberghe 6/11/2013 14:44", + "wideString:" : "SvenVanCaekenberghe 6/11/2013 14:44" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/properties.json new file mode 100644 index 00000000..66517616 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteStringBecameWideString.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "byteString", + "wideString" ], + "name" : "ZnByteStringBecameWideString", + "pools" : [ + ], + "super" : "Notification", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/class/handlesEncoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/class/handlesEncoding..st index 7a42a2dd..37c4f547 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/class/handlesEncoding..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/class/handlesEncoding..st @@ -2,4 +2,4 @@ accessing handlesEncoding: string "Return true when my instances handle the encoding described by string" - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/decodeBytes..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/decodeBytes..st index 55b763b1..ca056774 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/decodeBytes..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/decodeBytes..st @@ -6,4 +6,4 @@ decodeBytes: bytes byteStream := bytes readStream. ^ String streamContents: [ :stream | [ byteStream atEnd ] whileFalse: [ - stream nextPut: (self nextFromStream: byteStream) ] ] \ No newline at end of file + stream nextPut: (self nextFromStream: byteStream) ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodeString..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodeString..st index ea9e0bea..52472998 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodeString..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodeString..st @@ -3,5 +3,4 @@ encodeString: string "Encode string and return the resulting byte array" ^ ByteArray streamContents: [ :stream | - string do: [ :each | - self nextPut: each toStream: stream ] ] \ No newline at end of file + self next: string size putAll: string startingAt: 1 toStream: stream ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodedByteCountFor..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodedByteCountFor..st index 9a23e13a..cef90351 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodedByteCountFor..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodedByteCountFor..st @@ -2,4 +2,4 @@ converting encodedByteCountFor: character "Return how many bytes are needed to encode character" - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/next.putAll.startingAt.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/next.putAll.startingAt.toStream..st new file mode 100644 index 00000000..e1200fa8 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/next.putAll.startingAt.toStream..st @@ -0,0 +1,6 @@ +convenience +next: count putAll: string startingAt: offset toStream: stream + "Write count characters from string starting at offset to stream." + + 0 to: count - 1 do: [ :each | + self nextPut: (string at: offset + each) toStream: stream ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextFromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextFromStream..st index e04cbb47..2baaaf76 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextFromStream..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextFromStream..st @@ -2,4 +2,4 @@ converting nextFromStream: stream "Read and return the next character from stream" - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextPut.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextPut.toStream..st index 0f6f0848..f4e75028 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextPut.toStream..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextPut.toStream..st @@ -2,4 +2,4 @@ converting nextPut: character toStream: stream "Write the encoding for character to stream" - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/readInto.startingAt.count.fromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/readInto.startingAt.count.fromStream..st new file mode 100644 index 00000000..bde62c3c --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/readInto.startingAt.count.fromStream..st @@ -0,0 +1,9 @@ +convenience +readInto: string startingAt: offset count: requestedCount fromStream: stream + "Read requestedCount characters into string starting at offset, + returning the number read, there could be less available when stream is atEnd" + + 0 to: requestedCount - 1 do: [ :count | + stream atEnd ifTrue: [ ^ count ]. + string at: offset + count put: (self nextFromStream: stream) ]. + ^ requestedCount \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/methodProperties.json index aab65cef..a0b6c85e 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/methodProperties.json +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/methodProperties.json @@ -6,10 +6,12 @@ "=" : "SvenVanCaekenberghe 12/14/2010 11:56", "beLenient" : "SvenVanCaekenberghe 12/17/2012 14:47", "decodeBytes:" : "SvenVanCaekenberghe 12/16/2012 15:17", - "encodeString:" : "SvenVanCaekenberghe 12/16/2012 15:17", + "encodeString:" : "SvenVanCaekenberghe 5/21/2013 21:51", "encodedByteCountFor:" : "SvenVanCaekenberghe 11/29/2010 21:17", "encodedByteCountForString:" : "SvenVanCaekenberghe 12/16/2012 15:18", "error:" : "SvenVanCaekenberghe 12/16/2012 15:21", "hash" : "SvenVanCaekenberghe 4/20/2011 12:19", + "next:putAll:startingAt:toStream:" : "SvenVanCaekenberghe 5/21/2013 21:55", "nextFromStream:" : "SvenVanCaekenberghe 11/29/2010 21:16", - "nextPut:toStream:" : "SvenVanCaekenberghe 11/29/2010 21:16" } } + "nextPut:toStream:" : "SvenVanCaekenberghe 11/29/2010 21:16", + "readInto:startingAt:count:fromStream:" : "SvenVanCaekenberghe 5/23/2013 09:25" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/defaultEncoder.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/defaultEncoder.st index 53b77dde..d33faea2 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/defaultEncoder.st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/defaultEncoder.st @@ -1,3 +1,3 @@ -as yet unclassified +accessing defaultEncoder ^ ZnUTF8Encoder new \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on..st index 43695fac..b6cdd633 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on..st @@ -1,4 +1,4 @@ -as yet unclassified +instance creation on: writeStream ^ self new on: writeStream; diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on.encoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on.encoding..st index 71c13b74..e164ffbe 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on.encoding..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on.encoding..st @@ -1,4 +1,4 @@ -as yet unclassified +instance creation on: writeStream encoding: encoding ^ self new on: writeStream; diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoding..st index 1dba1be9..e8878377 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoding..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoding..st @@ -1,3 +1,3 @@ initialize-release encoding: encoding - encoder := ZnCharacterEncoder forEncoding: encoding \ No newline at end of file + encoder := ZnCharacterEncoder newForEncoding: encoding \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/methodProperties.json index 82a88dd2..3ed5d144 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/methodProperties.json +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/methodProperties.json @@ -8,7 +8,7 @@ "close" : "SvenVanCaekenberghe 5/3/2012 15:51", "encoder" : "SvenVanCaekenberghe 5/3/2012 18:47", "encoder:" : "SvenVanCaekenberghe 5/3/2012 15:51", - "encoding:" : "SvenVanCaekenberghe 5/3/2012 15:51", + "encoding:" : "SvenVanCaekenberghe 4/19/2013 12:49", "flush" : "SvenVanCaekenberghe 5/3/2012 15:52", "isBinary" : "SvenVanCaekenberghe 5/3/2012 15:52", "next:putAll:" : "SvenVanCaekenberghe 5/3/2012 15:54", diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnInvalidUTF8.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnInvalidUTF8.class/README.md new file mode 100644 index 00000000..a44017b9 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnInvalidUTF8.class/README.md @@ -0,0 +1,7 @@ +I am ZnInvalidUTF8. +I am a ZnCharacterEncodingError. +I am an Error. + +I signal when something goes wrong while encoding or decoding UTF8. + +Part of Zinc HTTP Components \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnInvalidUTF8.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnInvalidUTF8.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnInvalidUTF8.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnInvalidUTF8.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnInvalidUTF8.class/properties.json new file mode 100644 index 00000000..e61c6727 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnInvalidUTF8.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnInvalidUTF8", + "pools" : [ + ], + "super" : "ZnCharacterEncodingError", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/next.putAll.startingAt.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/next.putAll.startingAt.toStream..st new file mode 100644 index 00000000..0b7a7124 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/next.putAll.startingAt.toStream..st @@ -0,0 +1,8 @@ +convenience +next: count putAll: string startingAt: offset toStream: stream + "Write count bytes from string starting at offset to stream." + + | bytes | + bytes := ByteArray new: count. + bytes replaceFrom: 1 to: count with: string startingAt: offset. + stream nextPutAll: bytes \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/readInto.startingAt.count.fromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/readInto.startingAt.count.fromStream..st new file mode 100644 index 00000000..b5a0dc07 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/readInto.startingAt.count.fromStream..st @@ -0,0 +1,10 @@ +convenience +readInto: string startingAt: offset count: requestedCount fromStream: stream + "Read requestedCount characters into string starting at offset, + returning the number read, there could be less available when stream is atEnd" + + | byteBuffer readCount | + byteBuffer := ByteArray new: requestedCount. + readCount := stream readInto: byteBuffer startingAt: 1 count: requestedCount. + string replaceFrom: offset to: offset + readCount - 1 with: byteBuffer startingAt: 1. + ^ readCount \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/methodProperties.json index 3e920c27..4078e16f 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/methodProperties.json +++ b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/methodProperties.json @@ -7,5 +7,7 @@ "encodeString:" : "SvenVanCaekenberghe 5/3/2012 11:32", "encodedByteCountFor:" : "SvenVanCaekenberghe 11/29/2010 21:17", "encodedByteCountForString:" : "SvenVanCaekenberghe 5/3/2012 11:32", + "next:putAll:startingAt:toStream:" : "SvenVanCaekenberghe 5/22/2013 10:03", "nextFromStream:" : "SvenVanCaekenberghe 1/4/2011 20:52", - "nextPut:toStream:" : "SvenVanCaekenberghe 1/25/2011 12:36" } } + "nextPut:toStream:" : "SvenVanCaekenberghe 1/25/2011 12:36", + "readInto:startingAt:count:fromStream:" : "SvenVanCaekenberghe 5/23/2013 11:34" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/encode.to..st b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/encode.to..st index 2c69d9ad..6502a012 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/encode.to..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/encode.to..st @@ -12,4 +12,4 @@ encode: readStream to: writeStream ifTrue: [ writeStream nextPut: byte asCharacter ] ifFalse: [ writeStream nextPut: $%. - byte printOn: writeStream base: 16 showRadix: false ] ] ] \ No newline at end of file + byte printOn: writeStream base: 16 length: 2 padded: true ] ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/safeSet..st b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/safeSet..st index 1bd636ed..69df79bc 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/safeSet..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/safeSet..st @@ -2,4 +2,4 @@ initialize-release safeSet: string "Set my safe set to be the characters in string, which I will convert to bytes" - safeSet := string asByteArray \ No newline at end of file + safeSet := string asByteArray \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/methodProperties.json index 59836281..964cccec 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/methodProperties.json +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/methodProperties.json @@ -7,7 +7,7 @@ "decode:" : "SvenVanCaekenberghe 12/15/2012 13:56", "decode:to:" : "SvenVanCaekenberghe 12/16/2012 16:41", "encode:" : "SvenVanCaekenberghe 12/15/2012 13:56", - "encode:to:" : "KenTreis 01/18/2013 16:46", + "encode:to:" : "SvenVanCaekenberghe 3/1/2013 21:25", "readHexFrom:" : "SvenVanCaekenberghe 12/16/2012 15:12", "safeSet" : "SvenVanCaekenberghe 12/15/2012 14:02", "safeSet:" : "SvenVanCaekenberghe 12/15/2012 13:58" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/class/initialize.st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/class/initialize.st new file mode 100644 index 00000000..ce6d7d97 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/class/initialize.st @@ -0,0 +1,18 @@ +class initialization +initialize + | encoder stream | + ByteASCIISet := ByteArray new: 256. + ByteUTF8Encoding := Array new: 256. + encoder := self new. + stream := ByteArray new writeStream. + 0 to: 255 do: [ :each | + | bytes | + stream reset. + encoder nextPut: (Character value: each) toStream: stream. + bytes := stream contents. + (bytes size = 1 and: [ bytes first = each ]) + ifTrue: [ + ByteASCIISet at: each + 1 put: 0 ] + ifFalse: [ + ByteASCIISet at: each + 1 put: 1. + ByteUTF8Encoding at: each + 1 put: bytes ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/decodeBytes..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/decodeBytes..st new file mode 100644 index 00000000..c63e10fa --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/decodeBytes..st @@ -0,0 +1,16 @@ +convenience +decodeBytes: bytes + "Overridden to prevent the automagic switch from ByteString to WideString + and the slow #becomeForward: in there. See also #decodeBytesIntoWideString:" + + | byteStream | + byteStream := bytes readStream. + ^ String streamContents: [ :stream | + [ byteStream atEnd ] whileFalse: [ | char | + char := self nextFromStream: byteStream. + (char isOctetCharacter not and: [ stream originalContents isWideString not ]) + ifTrue: [ | wideString position | + position := stream position. + wideString := WideString from: stream originalContents. + stream on: wideString; setFrom: position + 1 to: position ]. + stream nextPut: char ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/decodeBytesIntoWideString..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/decodeBytesIntoWideString..st new file mode 100644 index 00000000..6eda70e1 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/decodeBytesIntoWideString..st @@ -0,0 +1,10 @@ +convenience +decodeBytesIntoWideString: bytes + "Variant of #decodeBytes: that is faster when you know upfront + that a WideString is probably needed" + + | byteStream | + byteStream := bytes readStream. + ^ WideString streamContents: [ :stream | + [ byteStream atEnd ] whileFalse: [ + stream nextPut: (self nextFromStream: byteStream) ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/encodedByteCountFor..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/encodedByteCountFor..st index 86981033..872c52a0 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/encodedByteCountFor..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/encodedByteCountFor..st @@ -6,4 +6,4 @@ encodedByteCountFor: character code < 2048 ifTrue: [ ^ 2 ]. code < 65535 ifTrue: [ ^ 3 ]. code <= self maximumUTF8Code ifTrue: [ ^ 4 ]. - self error: 'Unicode character code point outside range' + self errorOutsideRange \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/encodingLengthFor..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/encodingLengthFor..st new file mode 100644 index 00000000..725bc8fc --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/encodingLengthFor..st @@ -0,0 +1,7 @@ +converting +encodingLengthFor: byte + byte < 128 ifTrue: [ ^ 1 ]. + (byte bitAnd: 2r11100000) == 2r11000000 ifTrue: [ ^ 2 ]. + (byte bitAnd: 2r11110000) == 2r11100000 ifTrue: [ ^ 3 ]. + (byte bitAnd: 2r11111000) == 2r11110000 ifTrue: [ ^ 4 ]. + self error \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/error..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/error..st new file mode 100644 index 00000000..989d6f33 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/error..st @@ -0,0 +1,3 @@ +error handling +error: message + ZnInvalidUTF8 signal: message \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/error.st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/error.st new file mode 100644 index 00000000..c332f159 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/error.st @@ -0,0 +1,3 @@ +error handling +error + ZnInvalidUTF8 signal \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/errorIncomplete.st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/errorIncomplete.st new file mode 100644 index 00000000..b30a62df --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/errorIncomplete.st @@ -0,0 +1,3 @@ +error handling +errorIncomplete + self error: 'Incomplete utf-8 encoding' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/errorOutsideRange.st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/errorOutsideRange.st new file mode 100644 index 00000000..8abab4b3 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/errorOutsideRange.st @@ -0,0 +1,3 @@ +error handling +errorOutsideRange + self error: 'Unicode character code point outside range' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/errorOverlong.st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/errorOverlong.st new file mode 100644 index 00000000..ff181dde --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/errorOverlong.st @@ -0,0 +1,3 @@ +error handling +errorOverlong + self error: 'Overlong encoding (non-shortest form)' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/findFirstNonASCIIIn.startingAt..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/findFirstNonASCIIIn.startingAt..st new file mode 100644 index 00000000..1ec69c5e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/findFirstNonASCIIIn.startingAt..st @@ -0,0 +1,9 @@ +private +findFirstNonASCIIIn: string startingAt: offset + "This calls a fast primitive. Note that string can be a ByteString or ByteA`rray" + + offset > string size ifTrue: [ ^ 0 ]. + ^ ByteString + findFirstInString: string + inSet: ByteASCIISet + startingAt: offset \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/next.putAll.startingAt.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/next.putAll.startingAt.toStream..st new file mode 100644 index 00000000..fea7156b --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/next.putAll.startingAt.toStream..st @@ -0,0 +1,7 @@ +convenience +next: count putAll: string startingAt: offset toStream: stream + "Write count characters from string starting at offset to stream." + + string isByteString + ifTrue: [ self next: count putAllByteString: string startingAt: offset toStream: stream ] + ifFalse: [ super next: count putAll: string startingAt: offset toStream: stream ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/next.putAllASCII.startingAt.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/next.putAllASCII.startingAt.toStream..st new file mode 100644 index 00000000..fa7354aa --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/next.putAllASCII.startingAt.toStream..st @@ -0,0 +1,11 @@ +private +next: count putAllASCII: string startingAt: offset toStream: stream + "Write count bytes from string starting at offset to stream, + assuming all characters are in the ASCII set and need no translation" + + "For now, we don't use the option of mixing ByteString and ByteArray as similar" + + | bytes | + bytes := ByteArray new: count. + bytes replaceFrom: 1 to: count with: string startingAt: offset. + stream nextPutAll: bytes \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/next.putAllByteString.startingAt.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/next.putAllByteString.startingAt.toStream..st new file mode 100644 index 00000000..52fb0ffb --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/next.putAllByteString.startingAt.toStream..st @@ -0,0 +1,21 @@ +private +next: count putAllByteString: string startingAt: offset toStream: stream + "A faster version when string is a ByteString" + + | lastIndex nextIndex | + lastIndex := offset. + nextIndex := self findFirstNonASCIIIn: string startingAt: lastIndex. + (nextIndex = 0 or: [ offset + count <= nextIndex ]) + ifTrue: [ + ^ self next: count putAllASCII: string startingAt: offset toStream: stream ]. + [ nextIndex > lastIndex + ifTrue: [ + self next: nextIndex - lastIndex putAllASCII: string startingAt: lastIndex toStream: stream ]. + stream nextPutAll: (ByteUTF8Encoding at: (string byteAt: nextIndex) + 1). + lastIndex := nextIndex + 1. + nextIndex := self findFirstNonASCIIIn: string startingAt: lastIndex. + nextIndex = 0 or: [ offset + count <= nextIndex ] ] whileFalse. + offset + count <= lastIndex + ifFalse: [ + self next: offset + count - lastIndex putAllASCII: string startingAt: lastIndex toStream: stream ] + \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextFromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextFromStream..st index 99e8b600..64c52012 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextFromStream..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextFromStream..st @@ -6,24 +6,30 @@ nextFromStream: stream (byte bitAnd: 2r11100000) == 2r11000000 ifTrue: [ code := byte bitAnd: 2r00011111. - ((next := stream next) bitAnd: 2r11000000) == 2r10000000 + ((next := stream next ifNil: [ self errorIncomplete ]) bitAnd: 2r11000000) == 2r10000000 ifTrue: [ code := (code bitShift: 6) + (next bitAnd: 2r00111111) ] - ifFalse: [ ^ self error: 'illegal UTF-8 encoding' ]. + ifFalse: [ ^ self error ]. + code < 128 ifTrue: [ self errorOverlong ]. ^ Character codePoint: code ]. (byte bitAnd: 2r11110000) == 2r11100000 ifTrue: [ code := byte bitAnd: 2r00001111. 2 timesRepeat: [ - ((next := stream next) bitAnd: 2r11000000) == 2r10000000 + ((next := stream next ifNil: [ self errorIncomplete ]) bitAnd: 2r11000000) == 2r10000000 ifTrue: [ code := (code bitShift: 6) + (next bitAnd: 2r00111111) ] - ifFalse: [ ^ self error: 'illegal UTF-8 encoding' ] ]. + ifFalse: [ ^ self error ] ]. + code < 2048 ifTrue: [ self errorOverlong ]. + code = 65279 "Unicode Byte Order Mark" ifTrue: [ + stream atEnd ifTrue: [ self errorIncomplete ]. + ^ self nextFromStream: stream ]. ^ Character codePoint: code ]. (byte bitAnd: 2r11111000) == 2r11110000 ifTrue: [ code := byte bitAnd: 2r00000111. 3 timesRepeat: [ - ((next := stream next) bitAnd: 2r11000000) == 2r10000000 + ((next := stream next ifNil: [ self errorIncomplete ]) bitAnd: 2r11000000) == 2r10000000 ifTrue: [ code := (code bitShift: 6) + (next bitAnd: 2r00111111) ] - ifFalse: [ ^ self error: 'illegal UTF-8 encoding' ] ]. + ifFalse: [ ^ self error ] ]. + code < 65535 ifTrue: [ self errorOverlong ]. ^ Character codePoint: code ]. - self error: 'illegal UTF-8 encoding' \ No newline at end of file + self error \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextPut.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextPut.toStream..st index f0791bf9..4375cf04 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextPut.toStream..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextPut.toStream..st @@ -16,7 +16,7 @@ nextPut: character toStream: stream code <= self maximumUTF8Code ifTrue: [ ^ stream nextPut: (2r11110000 + (code bitShift: -18)); - nextPut: (2r10000000 + (code bitShift: -12)); + nextPut: (2r10000000 + ((code bitShift: -12) bitAnd: 2r111111)); nextPut: (2r10000000 + ((code bitShift: -6) bitAnd: 2r111111)); nextPut: (2r10000000 + (code bitAnd: 2r111111)) ]. - self error: 'Unicode character code point outside range' + self errorOutsideRange diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/optimizedReadInto.startingAt.count.fromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/optimizedReadInto.startingAt.count.fromStream..st new file mode 100644 index 00000000..a0b3971b --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/optimizedReadInto.startingAt.count.fromStream..st @@ -0,0 +1,60 @@ +private +optimizedReadInto: string startingAt: offset count: requestedCount fromStream: stream + "Read requestedCount characters into string starting at offset, + returning the number read, there could be less available when stream is atEnd. + Optimized based on the assumption that most decoded characters will be ASCII. + I signal a ZnByteStringBecameWideString notification if necessary." + + | stringBuffer byteBuffer bytesRead read last next count readStream bytesLeft char | + stringBuffer := string. + "Start by reading the minimum amount of bytes for decoding requestedCount characters" + byteBuffer := ByteArray new: requestedCount. + bytesRead := stream readInto: byteBuffer startingAt: 1 count: requestedCount. + readStream := byteBuffer readStream. + read := 0. + last := offset. + next := self findFirstNonASCIIIn: byteBuffer startingAt: last. + (next = 0 or: [ bytesRead < next ]) + ifTrue: [ + "The whole input is ASCII" + self replace: stringBuffer from: offset to: offset + bytesRead - 1 with: byteBuffer startingAt: 1. + ^ bytesRead ]. + [ next > last + ifTrue: [ + "Copy the ASCII run from last to next" + count := next - last. + self replace: stringBuffer from: offset + read to: offset + read + count - 1 with: byteBuffer startingAt: last. + read := read + count ]. + "Read one UTF-8 encoded non ASCII character" + readStream position: next - 1. + count := self encodingLengthFor: readStream peek. + bytesLeft := bytesRead - next + 1. + count <= bytesLeft + ifTrue: [ + char := self nextFromStream: readStream. + (char isOctetCharacter not and: [ stringBuffer isWideString not ]) + ifTrue: [ stringBuffer := ZnByteStringBecameWideString convert: stringBuffer ]. + stringBuffer at: offset + read put: char ] + ifFalse: [ | tmpBuffer extraRead | + tmpBuffer := ByteArray new: count. + readStream readInto: tmpBuffer startingAt: 1 count: bytesLeft. + extraRead := stream readInto: tmpBuffer startingAt: bytesLeft + 1 count: count - bytesLeft. + extraRead = (count - bytesLeft) ifFalse: [ self error: 'incomplete utf-8 encoding' ]. + char := self nextFromStream: tmpBuffer readStream. + (char isOctetCharacter not and: [ stringBuffer isWideString not ]) + ifTrue: [ stringBuffer := ZnByteStringBecameWideString convert: stringBuffer ]. + stringBuffer at: offset + read put: char ]. + last := next + count. + read := read + 1. + "Iterate" + next := self findFirstNonASCIIIn: byteBuffer startingAt: last. + next = 0 or: [ bytesRead < next ] ] whileFalse. + bytesRead < last + ifFalse: [ + "There is a last ASCII run left" + count := bytesRead - last + 1. + self replace: stringBuffer from: offset + read to: offset + read + count - 1 with: byteBuffer startingAt: last. + read := read + count ]. + "Try consuming enough input to reach requestedCount since we probably read too little" + count := requestedCount - read. + ^ read + (self originalReadInto: stringBuffer startingAt: offset + read count: count fromStream: stream) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/originalReadInto.startingAt.count.fromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/originalReadInto.startingAt.count.fromStream..st new file mode 100644 index 00000000..7f138681 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/originalReadInto.startingAt.count.fromStream..st @@ -0,0 +1,16 @@ +private +originalReadInto: string startingAt: offset count: requestedCount fromStream: stream + "Read requestedCount characters into string starting at offset, + returning the number read, there could be less available when stream is atEnd. + I signal a ZnByteStringBecameWideString notification if necessary" + + | stringBuffer | + stringBuffer := string. + 0 to: requestedCount - 1 do: [ :count | + | char | + stream atEnd ifTrue: [ ^ count ]. + char := self nextFromStream: stream. + (char isOctetCharacter not and: [ stringBuffer isWideString not ]) + ifTrue: [ stringBuffer := ZnByteStringBecameWideString convert: stringBuffer ]. + stringBuffer at: offset + count put: char ]. + ^ requestedCount \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/readInto.startingAt.count.fromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/readInto.startingAt.count.fromStream..st new file mode 100644 index 00000000..3f3d1c84 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/readInto.startingAt.count.fromStream..st @@ -0,0 +1,7 @@ +convenience +readInto: string startingAt: offset count: requestedCount fromStream: stream + "Read requestedCount characters into string starting at offset, + returning the number read, there could be less available when stream is atEnd. + The clean code is in my superclass" + + ^ self optimizedReadInto: string startingAt: offset count: requestedCount fromStream: stream \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/replace.from.to.with.startingAt..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/replace.from.to.with.startingAt..st new file mode 100644 index 00000000..4008ef7e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/replace.from.to.with.startingAt..st @@ -0,0 +1,12 @@ +private +replace: string from: start to: stop with: replacement startingAt: repStart + string isByteString + ifTrue: [ + string replaceFrom: start to: stop with: replacement startingAt: repStart ] + ifFalse: [ + | index repOff | + repOff := repStart - start. + index := start - 1. + [ (index := index + 1) <= stop ] + whileTrue: [ + string at: index put: (replacement at: repOff + index) asCharacter ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/methodProperties.json index 5a7453cf..ac9948b5 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/methodProperties.json +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/methodProperties.json @@ -1,9 +1,26 @@ { "class" : { "handlesEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:11", + "initialize" : "SvenVanCaekenberghe 5/25/2013 13:58", "newForEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:19" }, "instance" : { - "encodedByteCountFor:" : "SvenVanCaekenberghe 11/29/2010 21:23", + "decodeBytes:" : "SvenVanCaekenberghe 6/10/2013 20:52", + "decodeBytesIntoWideString:" : "SvenVanCaekenberghe 6/10/2013 20:53", + "encodedByteCountFor:" : "SvenVanCaekenberghe 6/3/2013 19:57", + "encodingLengthFor:" : "SvenVanCaekenberghe 6/3/2013 19:58", + "error" : "SvenVanCaekenberghe 6/3/2013 19:55", + "error:" : "SvenVanCaekenberghe 6/3/2013 19:52", + "errorIncomplete" : "SvenVanCaekenberghe 6/3/2013 19:59", + "errorOutsideRange" : "SvenVanCaekenberghe 6/3/2013 19:58", + "errorOverlong" : "SvenVanCaekenberghe 6/4/2013 16:58", + "findFirstNonASCIIIn:startingAt:" : "SvenVanCaekenberghe 5/27/2013 14:05", "maximumUTF8Code" : "SvenVanCaekenberghe 11/29/2010 21:19", - "nextFromStream:" : "SvenVanCaekenberghe 12/3/2012 14:25", - "nextPut:toStream:" : "SvenVanCaekenberghe 12/16/2012 15:20" } } + "next:putAll:startingAt:toStream:" : "SvenVanCaekenberghe 5/23/2013 22:51", + "next:putAllASCII:startingAt:toStream:" : "SvenVanCaekenberghe 5/24/2013 21:12", + "next:putAllByteString:startingAt:toStream:" : "SvenVanCaekenberghe 5/23/2013 23:05", + "nextFromStream:" : "SvenVanCaekenberghe 6/4/2013 17:21", + "nextPut:toStream:" : "SvenVanCaekenberghe 6/3/2013 20:00", + "optimizedReadInto:startingAt:count:fromStream:" : "SvenVanCaekenberghe 6/11/2013 16:13", + "originalReadInto:startingAt:count:fromStream:" : "SvenVanCaekenberghe 6/11/2013 15:04", + "readInto:startingAt:count:fromStream:" : "SvenVanCaekenberghe 6/11/2013 15:18", + "replace:from:to:with:startingAt:" : "SvenVanCaekenberghe 5/23/2013 22:08" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/properties.json index f7c8a48c..42880941 100644 --- a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/properties.json +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/properties.json @@ -3,7 +3,8 @@ "classinstvars" : [ ], "classvars" : [ - ], + "ByteASCIISet", + "ByteUTF8Encoding" ], "commentStamp" : "SvenVanCaekenberghe 12/6/2010 12:55", "instvars" : [ ], diff --git a/repository/Zinc-Character-Encoding-Core.package/monticello.meta/version b/repository/Zinc-Character-Encoding-Core.package/monticello.meta/version index 58392e65..451003fb 100644 --- a/repository/Zinc-Character-Encoding-Core.package/monticello.meta/version +++ b/repository/Zinc-Character-Encoding-Core.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.5' message 'merging in some Gemstone portability changes by Ken Treis' id 'aa29124f-b47d-438c-b086-8cb23a17d2cd' date '21 January 2013' time '1:13:52.198 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-KenTreis.4.1' message 'Minor changes for GemStone compatibility: * Removed a stray period after a method comment * When printing in base 16, used #printOn:base:showRadix:' id 'bc01d2d5-7bf2-4bb3-be36-8f9faff96af3' date '19 January 2013' time '11:22:49 am' author 'KenTreis' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.4' message 'add a comment to ZnByteEncoder class>>#initialize to make sure it get executed when loaded in an image where it is already present (Thx Lukas Renggli for suggesting the idea)' id '2070bf5a-a914-4d68-9469-58eb6c85aeb8' date '15 January 2013' time '5:09:22 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.3' message 'use ''asZnUrl retrieveContents'' for simple. one off, non critical HTTP client usage in ZnByteEncoder class>>#parseUnicodeOrgSpec' id '1804c2bb-41a6-48ab-9404-64ea1e486ed5' date '15 January 2013' time '2:58:21 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.2' message 'stop using ZnNullEncoder for latin1; added #beLenient option to make a ZnByteEncoder non-strict (the old behavior)' id '07e720c3-e179-40b0-94de-073e11a8bd45' date '17 December 2012' time '4:08:17 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.1' message 'creation of Zinc-Character-Encoding-[Core|Tests] by moving various classes out of Zinc-HTTP' id '4e1d9613-d6ec-4e2c-8587-f69086cb2208' date '16 December 2012' time '5:01:29 am' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.21' message 'Added an optimalization to ZnUTF8Encoder>>#readInto:startingAt:count:fromStream: to avoid the price of #becomeForward: when a ByteString to WideString conversion happens' id '29f57ebd-e428-46d7-aa36-233e4bc40938' date '06/11/2013' time '04:31:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.20' message 'merge' id '23dc613d-4596-483b-945a-95e8497e06e9' date '06/11/2013' time '09:21:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.19' message 'Added an optimized ZnUTF8Encoder>>#decodeBytes: and an even faster #decodeBytesIntoWideString: (thx johnny/JanStruz)' id '2fd6df01-681f-4453-abc0-9422a8103e65' date '06/10/2013' time '11:19:58' author 'SvenVanCaekenberghe' ancestors () stepChildren ())(name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.18' message 'Added support to ZnUTF8Encoder to detect overlong (non-shortest form) encodings as well as to skip the Unicode Byte Order Mark (BOM) character' id 'd07b55a8-4a53-40d8-85eb-63af21c7fb12' date '06/04/2013' time '05:28:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.17' message 'Introduction of an explicit ZnInvalidUTF8 exception.' id 'aae299b0-a550-47c6-a444-847d01206d94' date '06/03/2013' time '08:13:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.16' message 'Fix to an edge case in ZnUTF8Encoder>>#optimizedReadInto:startingAt:count:fromStream:' id 'd6bdd5aa-3f6d-4786-a3b8-5dcaeba2a5aa' date '05/27/2013' time '04:19:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.15' message 'Bugfix to ZnUTF8Encoder class>>#initialize (circular dependency)' id '2c097f3b-3eaa-4626-ae1f-620df08ef898' date '05/25/2013' time '02:00:52' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.14' message 'ZnUTF8Encoder: - enabled #next:putAll:startingAt:toStream: for real - added & enabled #optimizedReadInto:startingAt:count:fromStream: - #nextFromStream now signals specific errors on eof - some refactoring/cleanup' id 'a4e03928-dd20-4e7c-b686-28e10a8130c3' date '05/25/2013' time '10:29:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.13' message 'Added ZnCharacterEncoder>>#readInto:startingAt:count:fromStream with an optimized implementation for ZnNullEncoder' id 'fbc0480f-5050-4930-ab24-0fb8464d82a1' date '05/23/2013' time '12:25:16' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.12' message 'Introduction of ZnCharacterEncoder>>#next:putAll:startingAt:toStream with optimized implementations in ZnNullEncoder and ZnUTF8Encoder for ByteString instances' id '7505c957-45dc-4689-a9e3-25a0a00be1f6' date '05/22/2013' time '04:15:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.11' message 'Added ZnBufferedWriteStream>>#finish as alias for #flushBuffer' id '14216331-a683-4994-9aa2-cdf56d325fb7' date '05/19/2013' time '11:45:46' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.10' message 'Bugfix to ZnUTF8Encoder>>#nextPut:toStream (codepoints > 65535 were wrongly encoded)' id '9548942a-1b84-48a0-8976-dac39be9f314' date '05/16/2013' time '11:11:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.9' message 'fixed a typo in a class comment' id '304b757c-8af9-4723-a7c0-fed57c353db2' date '05/14/2013' time '01:37:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.8' message 'Typo/bug in ZnCharacterWriteStream>>#encoding: (thx Stephane Ducasse)' id '2642837d-126e-44c1-a980-e147d940e9d2' date '04/19/2013' time '01:03:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.7' message 'Added String>>#urlEncoded & #urlDecoded - Thx Camillo Bruni' id '6715de50-a8b8-4240-a1ef-1282e1e343c7' date '04/16/2013' time '09:19:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.6' message 'Bugfix to ZnPercentEncoder: always use 2 hex digits (Thanks Benjamin Van Ryseghem)' id 'af573099-bafb-4e38-9192-4440765e8883' date '03/01/2013' time '09:35:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.5' message 'merging in some Gemstone portability changes by Ken Treis' id 'aa29124f-b47d-438c-b086-8cb23a17d2cd' date '01/21/2013' time '01:13:52' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-KenTreis.4.1' message 'Minor changes for GemStone compatibility: * Removed a stray period after a method comment * When printing in base 16, used #printOn:base:showRadix:' id 'bc01d2d5-7bf2-4bb3-be36-8f9faff96af3' date '01/19/2013' time '11:22:49' author 'KenTreis' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.4' message 'add a comment to ZnByteEncoder class>>#initialize to make sure it get executed when loaded in an image where it is already present (Thx Lukas Renggli for suggesting the idea)' id '2070bf5a-a914-4d68-9469-58eb6c85aeb8' date '01/15/2013' time '05:09:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.3' message 'use ''asZnUrl retrieveContents'' for simple. one off, non critical HTTP client usage in ZnByteEncoder class>>#parseUnicodeOrgSpec' id '1804c2bb-41a6-48ab-9404-64ea1e486ed5' date '01/15/2013' time '02:58:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.2' message 'stop using ZnNullEncoder for latin1; added #beLenient option to make a ZnByteEncoder non-strict (the old behavior)' id '07e720c3-e179-40b0-94de-073e11a8bd45' date '12/17/2012' time '04:08:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Core-SvenVanCaekenberghe.1' message 'creation of Zinc-Character-Encoding-[Core|Tests] by moving various classes out of Zinc-HTTP' id '4e1d9613-d6ec-4e2c-8587-f69086cb2208' date '12/16/2012' time '05:01:29' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testQuote.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testQuote.st index d9b096cb..f73eb2b1 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testQuote.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testQuote.st @@ -14,4 +14,4 @@ testQuote equals: output. self assert: (encoder decode: output) - equals: input asByteArray \ No newline at end of file + equals: input asByteArray \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testSimple.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testSimple.st index 38152bca..9189e480 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testSimple.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testSimple.st @@ -7,4 +7,4 @@ testSimple equals: 'TWFu'. self assert: (encoder decode: 'TWFu') - equals: 'Man' asByteArray \ No newline at end of file + equals: 'Man' asByteArray \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadInto.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadInto.st index 9678cc24..8370031f 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadInto.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadInto.st @@ -11,4 +11,4 @@ testReadInto self assert: buffer equals: '456123'. count := stream readInto: buffer startingAt: 1 count: 100. self assert: count equals: 3. - self assert: buffer equals: '789123' \ No newline at end of file + self assert: buffer equals: '789123' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadIntoLarger.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadIntoLarger.st index 81c671ca..042acaf4 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadIntoLarger.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadIntoLarger.st @@ -6,4 +6,4 @@ testReadIntoLarger buffer := String new: 10. count := stream readInto: buffer startingAt: 1 count: 10. self assert: count equals: 10. - self assert: buffer equals: '0123456789' \ No newline at end of file + self assert: buffer equals: '0123456789' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testConvencienceMethods.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testConvencienceMethods.st index 1adae66a..838c461e 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testConvencienceMethods.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testConvencienceMethods.st @@ -4,4 +4,7 @@ testConvencienceMethods encoder := ZnUTF8Encoder new. string := 'élève en Français'. self assert: (encoder decodeBytes: (encoder encodeString: string)) equals: string. - self assert: (encoder encodedByteCountForString: string) = 20 \ No newline at end of file + self assert: (encoder encodedByteCountForString: string) = 20. + + #( 'ccc' 'ççç' 'c' 'ç' 'çc' 'cç' ) do: [ :each | + self assert: (encoder decodeBytes: (encoder encodeString: each)) equals: each ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin2Encoder.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin2Encoder.st index 73a959c0..97007137 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin2Encoder.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin2Encoder.st @@ -11,4 +11,4 @@ testLatin2Encoder outputBytes := self encodeString: inputString with: encoder. self assert: outputBytes = inputBytes. outputString := self decodeBytes: inputBytes with: encoder. - self assert: outputString = inputString \ No newline at end of file + self assert: outputString = inputString \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testNextPutAllStartingAtToStream.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testNextPutAllStartingAtToStream.st new file mode 100644 index 00000000..bf2406a4 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testNextPutAllStartingAtToStream.st @@ -0,0 +1,16 @@ +testing +testNextPutAllStartingAtToStream + | encoder | + encoder := ZnUTF8Encoder new. + #( 'ccc' 'ççç' 'c' 'ç' 'çc' 'cç' 'çç' ) do: [ :each | + #( ( '' '' ) ( 'ABC' '' ) ( '' 'ABC' ) ( 'ABC' 'ABC' ) + ( 'AéC' '' ) ( '' 'AèC' ) ( 'AéC' 'AèC' ) + ( 'AXC' 'AèC' ) ( 'AéC' 'AXC' ) + ( 'PRE' 'ç' ) ) do: [ :extra | + | prefix postfix string bytes | + prefix := extra first. + postfix := extra last. + string := prefix, each, postfix. + bytes := ByteArray streamContents: [ :out | + encoder next: each size putAll: string startingAt: prefix size + 1 toStream: out ]. + self assert: (encoder decodeBytes: bytes) equals: each ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testNullEncoder.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testNullEncoder.st index cbad2592..dbc8ab9e 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testNullEncoder.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testNullEncoder.st @@ -5,4 +5,4 @@ testNullEncoder bytes := self encodeString: 'abc' with: encoder. self assert: bytes = #(97 98 99) asByteArray. string := self decodeBytes: #(65 66 67) asByteArray with: encoder. - self assert: string = 'ABC' \ No newline at end of file + self assert: string = 'ABC' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testReadIntoStartingAtCountFromStream.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testReadIntoStartingAtCountFromStream.st new file mode 100644 index 00000000..fb1509a5 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testReadIntoStartingAtCountFromStream.st @@ -0,0 +1,17 @@ +testing +testReadIntoStartingAtCountFromStream + | encoder | + encoder := ZnUTF8Encoder new. + #( 'ccc' 'ççç' 'c' 'ç' 'çc' 'cç' 'çç' ) do: [ :each | + #( ( '' '' ) ( 'ABC' '' ) ( '' 'ABC' ) ( 'ABC' 'ABC' ) + ( 'AéC' '' ) ( '' 'AèC' ) ( 'AéC' 'AèC' ) + ( 'AXC' 'AèC' ) ( 'AéC' 'AXC' ) + ( 'PRE' 'ç' ) ) do: [ :extra | + | prefix postfix string bytes buffer | + prefix := extra first. + postfix := extra last. + string := prefix, each. + bytes := encoder encodeString: string, postfix. + buffer := String new: string size. + encoder readInto: buffer startingAt: 1 count: string size fromStream: bytes readStream. + self assert: buffer equals: string ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testReadIntoStartingAtCountFromStreamWide.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testReadIntoStartingAtCountFromStreamWide.st new file mode 100644 index 00000000..6512d5ab --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testReadIntoStartingAtCountFromStreamWide.st @@ -0,0 +1,18 @@ +testing +testReadIntoStartingAtCountFromStreamWide + | encoder | + encoder := ZnUTF8Encoder new. + { 'abc', (WideString withAll: { 300 asCharacter. 400 asCharacter. 500 asCharacter}), 'xyz' } do: [ :each | + | bytes buffer notified | + bytes := encoder encodeString: each. + buffer := String new: each size. + notified := false. + [ encoder readInto: buffer startingAt: 1 count: each size fromStream: bytes readStream ] + on: ZnByteStringBecameWideString + do: [ :notification | + self deny: notified. + notified := true. + buffer := notification wideString. + notification resume ]. + self assert: notified. + self assert: buffer equals: each ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8ByteOrderMark.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8ByteOrderMark.st new file mode 100644 index 00000000..74357c78 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8ByteOrderMark.st @@ -0,0 +1,11 @@ +testing +testUTF8ByteOrderMark + "The Unicode Byte Order Mark (BOM) should be skipped." + + | bom string bytes encoder | + encoder := ZnUTF8Encoder new. + bom := #(239 187 191). + string := 'élève en Français'. + bytes := encoder encodeString: string. + self assert: (encoder decodeBytes: bom, bytes) equals: string. + self should: [ encoder decodeBytes: bom ] raise: ZnInvalidUTF8 \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Encoder.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Encoder.st index de0aa6d0..275eb85e 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Encoder.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Encoder.st @@ -9,4 +9,4 @@ testUTF8Encoder outputBytes := self encodeString: inputString with: encoder. self assert: outputBytes = inputBytes. outputString := self decodeBytes: inputBytes with: encoder. - self assert: outputString = inputString \ No newline at end of file + self assert: outputString = inputString \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderAuto.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderAuto.st index 9fec90b4..c9747d1d 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderAuto.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderAuto.st @@ -5,4 +5,4 @@ testUTF8EncoderAuto inputString := String withAll: ((1 to: 3072) collect: [ :each | Character value: each ]). bytes := self encodeString: inputString with: encoder. outputString := self decodeBytes: bytes with: encoder. - self assert: inputString = outputString \ No newline at end of file + self assert: inputString = outputString \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderIncomplete.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderIncomplete.st new file mode 100644 index 00000000..0bb58fdc --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderIncomplete.st @@ -0,0 +1,11 @@ +testing +testUTF8EncoderIncomplete + "The examples are taken from http://en.wikipedia.org/wiki/UTF-8#Description" + + | encoder | + encoder := ZnUTF8Encoder new. + #( (16rC2 16rA2) (16rE2 16r82 16rAC) (16rF0 16rA4 16rAD 16rA2) ) do: [ :each | + 2 to: each size do: [ :count | + self + should: [ encoder decodeBytes: (each allButLast: count - 1) ] + raise: ZnInvalidUTF8 ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderWide.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderWide.st new file mode 100644 index 00000000..751ead97 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderWide.st @@ -0,0 +1,8 @@ +testing +testUTF8EncoderWide + | encoder | + encoder := ZnUTF8Encoder new. + { 'abc'. 'élève en Français'. 'Pra-ská' copy at: 4 put: (Character value: 382); yourself. '' } + do: [ :each | | bytes | + bytes := self encodeString: each with: encoder. + self assert: (encoder decodeBytesIntoWideString: bytes) equals: each ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Overlong.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Overlong.st new file mode 100644 index 00000000..cb915854 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Overlong.st @@ -0,0 +1,13 @@ +testing +testUTF8Overlong + "Overlong encoding, aka Non shortest form characters should be rejected. + See http://en.wikipedia.org/wiki/UTF-8#Overlong_encodings" + + self + should: [ ZnUTF8Encoder new decodeBytes: #[ 16rF0 16r82 16r82 16rAC ] ] + raise: ZnInvalidUTF8. + self + should: [ ZnUTF8Encoder new decodeBytes: #(193 129 193 130 193 131 ) ] + raise: ZnInvalidUTF8. + + \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json index c561b1ed..12919357 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json @@ -5,10 +5,17 @@ "decodeBytes:with:" : "SvenVanCaekenberghe 11/30/2010 11:57", "encodeString:with:" : "SvenVanCaekenberghe 11/30/2010 11:57", "testBeLenient" : "SvenVanCaekenberghe 12/17/2012 15:13", - "testConvencienceMethods" : "SvenVanCaekenberghe 5/2/2012 16:35", + "testConvencienceMethods" : "SvenVanCaekenberghe 5/22/2013 13:51", "testLatin1Encoder" : "SvenVanCaekenberghe 12/15/2012 19:12", "testLatin2Encoder" : "PaulDeBruicker 04/10/2011 10:44", + "testNextPutAllStartingAtToStream" : "SvenVanCaekenberghe 5/24/2013 13:24", "testNullEncoder" : "PaulDeBruicker 04/10/2011 10:45", + "testReadIntoStartingAtCountFromStream" : "SvenVanCaekenberghe 5/24/2013 16:22", + "testReadIntoStartingAtCountFromStreamWide" : "SvenVanCaekenberghe 6/11/2013 16:17", + "testUTF8ByteOrderMark" : "SvenVanCaekenberghe 6/4/2013 17:19", "testUTF8Encoder" : "PaulDeBruicker 04/10/2011 10:44", "testUTF8EncoderAuto" : "SvenVanCaekenberghe 11/30/2010 13:42", - "testUTF8EncoderByteCount" : "PaulDeBruicker 04/10/2011 10:44" } } + "testUTF8EncoderByteCount" : "PaulDeBruicker 04/10/2011 10:44", + "testUTF8EncoderIncomplete" : "SvenVanCaekenberghe 6/3/2013 19:51", + "testUTF8EncoderWide" : "SvenVanCaekenberghe 6/10/2013 23:12", + "testUTF8Overlong" : "SvenVanCaekenberghe 6/4/2013 16:56" } } diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testLeadingZero.st b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testLeadingZero.st new file mode 100644 index 00000000..6de906d6 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testLeadingZero.st @@ -0,0 +1,8 @@ +testing +testLeadingZero + | encoder | + encoder := ZnPercentEncoder new. + self assert: (encoder encode: 'foo', Character tab asString, 'bar') equals: 'foo%09bar'. + self assert: (encoder decode: 'foo%09bar') equals: 'foo', Character tab asString, 'bar'. + self assert: (encoder encode: 'foo', Character lf asString, 'bar') equals: 'foo%0Abar'. + self assert: (encoder decode: 'foo%0Abar') equals: 'foo', Character lf asString, 'bar' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testStringUrlDecoded.st b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testStringUrlDecoded.st new file mode 100644 index 00000000..e547a5b5 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testStringUrlDecoded.st @@ -0,0 +1,3 @@ +testing +testStringUrlDecoded + self assert: ('foo%20bar' urlDecoded) equals: 'foo bar' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testStringUrlEncoded.st b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testStringUrlEncoded.st new file mode 100644 index 00000000..63c7f07e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testStringUrlEncoded.st @@ -0,0 +1,3 @@ +testing +testStringUrlEncoded + self assert: ('foo bar' urlEncoded) equals: 'foo%20bar' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/methodProperties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/methodProperties.json index a15cb7f0..e772459b 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/methodProperties.json +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/methodProperties.json @@ -3,5 +3,8 @@ }, "instance" : { "testDecodingErrors" : "SvenVanCaekenberghe 12/16/2012 15:12", + "testLeadingZero" : "SvenVanCaekenberghe 3/1/2013 21:29", "testNonAscii" : "SvenVanCaekenberghe 12/13/2012 11:26", - "testSimple" : "SvenVanCaekenberghe 12/13/2012 11:58" } } + "testSimple" : "SvenVanCaekenberghe 12/13/2012 11:58", + "testStringUrlDecoded" : "CamilloBruni 3/26/2013 23:18", + "testStringUrlEncoded" : "CamilloBruni 3/26/2013 23:18" } } diff --git a/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/version b/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/version index 96cb4898..e55108b1 100644 --- a/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/version +++ b/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.3' message 'merging in some Gemstone portability changes by Ken Treis' id '9045618f-8b58-4d47-b6f8-8c18ca27869d' date '21 January 2013' time '1:16:18.853 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-KenTreis.2.1' message 'Minor changes for GemStone Compatibility that hopefully don''t break anything in Pharo: * Use `ByteArray new writeStream` rather than `#[] writeStream` * In ZnBase64EncoderTests, put CRs in for line breaks explicitly' id '0c541244-918a-4df3-9543-170b07bd6870' date '19 January 2013' time '11:05:42 am' author 'KenTreis' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.2' message 'stop using ZnNullEncoder for latin1; added #beLenient option to make a ZnByteEncoder non-strict (the old behavior)' id '5a82017c-5d0e-448c-a7a3-1b8f35aae2d2' date '17 December 2012' time '4:08:57 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.1' message 'creation of Zinc-Character-Encoding-[Core|Tests] by moving various classes out of Zinc-HTTP' id '9f23b0ec-9909-4839-b631-db4c10c9f613' date '16 December 2012' time '5:01:49 am' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.12' message 'Added an optimalization to ZnUTF8Encoder>>#readInto:startingAt:count:fromStream: to avoid the price of #becomeForward: when a ByteString to WideString conversion happens' id '691abf05-9485-451a-aea0-6a3a08dd2939' date '06/11/2013' time '04:33:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.11' message 'merge' id '352e538c-d3c0-411c-be19-bb8e7181b391' date '06/11/2013' time '09:22:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.10' message 'Added an optimized ZnUTF8Encoder>>#decodeBytes: and an even faster #decodeBytesIntoWideString: (thx johnny/JanStruz)' id 'c4338bce-4823-4afd-9c03-ed82ddf2afff' date '06/10/2013' time '11:20:45' author 'SvenVanCaekenberghe' ancestors () stepChildren ())(name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.9' message 'Added support to ZnUTF8Encoder to detect overlong (non-shortest form) encodings as well as to skip the Unicode Byte Order Mark (BOM) character' id '3cfdf396-c625-4c8f-9aea-ede90630edcb' date '06/04/2013' time '05:29:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.8' message 'Introduction of an explicit ZnInvalidUTF8 exception.' id '873f8d6a-5631-4dfb-8fb5-cda3e522c9ee' date '06/03/2013' time '08:15:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.7' message 'ZnUTF8Encoder: - enabled #next:putAll:startingAt:toStream: for real - added & enabled #optimizedReadInto:startingAt:count:fromStream: - #nextFromStream now signals specific errors on eof - some refactoring/cleanup' id 'dc085fe8-a4e4-46f4-a5c0-2678315e7428' date '05/25/2013' time '10:30:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.6' message 'Introduction of ZnCharacterEncoder>>#next:putAll:startingAt:toStream with optimized implementations in ZnNullEncoder and ZnUTF8Encoder for ByteString instances' id '49bd7fce-ffab-4c09-9bf3-a3c550090cab' date '05/22/2013' time '04:16:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.5' message 'Added String>>#urlEncoded & #urlDecoded - Thx Camillo Bruni' id 'c0387a62-53b8-421c-b74b-43d224d63afc' date '04/16/2013' time '09:19:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.4' message 'Bugfix to ZnPercentEncoder: always use 2 hex digits (Thanks Benjamin Van Ryseghem)' id 'a1f1c1f3-7878-45db-a609-0d4c3ff81e69' date '03/01/2013' time '09:36:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.3' message 'merging in some Gemstone portability changes by Ken Treis' id '9045618f-8b58-4d47-b6f8-8c18ca27869d' date '01/21/2013' time '01:16:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-KenTreis.2.1' message 'Minor changes for GemStone Compatibility that hopefully don''t break anything in Pharo: * Use `ByteArray new writeStream` rather than `#[] writeStream` * In ZnBase64EncoderTests, put CRs in for line breaks explicitly' id '0c541244-918a-4df3-9543-170b07bd6870' date '01/19/2013' time '11:05:42' author 'KenTreis' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.2' message 'stop using ZnNullEncoder for latin1; added #beLenient option to make a ZnByteEncoder non-strict (the old behavior)' id '5a82017c-5d0e-448c-a7a3-1b8f35aae2d2' date '12/17/2012' time '04:08:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.1' message 'creation of Zinc-Character-Encoding-[Core|Tests] by moving various classes out of Zinc-HTTP' id '9f23b0ec-9909-4839-b631-db4c10c9f613' date '12/16/2012' time '05:01:49' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/class/designatedMimeType.st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/class/designatedMimeType.st index 3870e4d6..88f8b3b3 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/class/designatedMimeType.st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/class/designatedMimeType.st @@ -1,3 +1,3 @@ testing designatedMimeType - ^ ZnMimeType applicationFormUrlEncoded \ No newline at end of file + ^ ZnMimeType applicationFormUrlEncoded \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/class/withAll..st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/class/withAll..st index cd01d9fc..fd24fcb4 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/class/withAll..st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/class/withAll..st @@ -2,4 +2,4 @@ instance creation withAll: keyedCollection ^ self new addAll: keyedCollection; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/addAll..st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/addAll..st index 82b21a8e..adc9f9e7 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/addAll..st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/addAll..st @@ -2,5 +2,6 @@ accessing addAll: keyedCollection "Note that we use #addAllMulti:" + self invalidateRepresentation. self fields addAllMulti: keyedCollection. - ^ keyedCollection \ No newline at end of file + ^ keyedCollection \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/contentLength.st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/contentLength.st index 745b2451..987e9914 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/contentLength.st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/contentLength.st @@ -1,4 +1,4 @@ accessing contentLength contentLength isNil ifTrue: [ self computeRepresentation ]. - ^ contentLength \ No newline at end of file + ^ contentLength \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/initialize.st index d791ca82..38182df1 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/initialize.st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/initialize.st @@ -2,4 +2,4 @@ initialize-release initialize super initialize. fields := ZnMultiValueDictionary new. - self contentType: self class designatedMimeType \ No newline at end of file + self contentType: self class designatedMimeType \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/writeOn..st index 578d62f2..d1ef7460 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/writeOn..st @@ -1,8 +1,6 @@ writing writeOn: stream - "In most use cases, contentLength will have been asked first so that a representation is cached, - there probably is no need to cache the representation generated here" + "In most use cases, contentLength will have been asked first so that a representation is cached" - representation isNil - ifTrue: [ self writeRepresentationOn: stream ] - ifFalse: [ stream nextPutAll: representation ] \ No newline at end of file + representation isNil ifTrue: [ self computeRepresentation ]. + ZnUtils nextPutAll: representation on: stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/methodProperties.json index 00f326e2..80b8975a 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/methodProperties.json @@ -4,7 +4,7 @@ "withAll:" : "SvenVanCaekenberghe 9/13/2010 22:23" }, "instance" : { "add:" : "SvenVanCaekenberghe 8/16/2011 23:26", - "addAll:" : "SvenVanCaekenberghe 1/7/2013 12:21", + "addAll:" : "SvenVanCaekenberghe 2/24/2013 10:52", "at:" : "SvenVanCaekenberghe 9/11/2010 21:07", "at:add:" : "SvenVanCaekenberghe 1/12/2011 11:23", "at:ifAbsent:" : "SvenVanCaekenberghe 1/25/2013 14:11", @@ -20,5 +20,5 @@ "isEmpty" : "SvenVanCaekenberghe 12/4/2010 12:41", "printContentsOn:" : "SvenVanCaekenberghe 8/18/2011 14:34", "readFrom:" : "SvenVanCaekenberghe 1/25/2013 14:32", - "writeOn:" : "SvenVanCaekenberghe 9/12/2010 10:22", + "writeOn:" : "SvenVanCaekenberghe 5/18/2013 19:58", "writeRepresentationOn:" : "SvenVanCaekenberghe 12/8/2012 20:58" } } diff --git a/repository/Zinc-HTTP.package/ZnBasicCredential.class/instance/authTokenForUrl.method..st b/repository/Zinc-HTTP.package/ZnBasicCredential.class/instance/authTokenForUrl.method..st index 81705408..e0f74767 100644 --- a/repository/Zinc-HTTP.package/ZnBasicCredential.class/instance/authTokenForUrl.method..st +++ b/repository/Zinc-HTTP.package/ZnBasicCredential.class/instance/authTokenForUrl.method..st @@ -1,3 +1,3 @@ accessing authTokenForUrl: urlObject method: method - ^ 'Basic ', (ZnUtils encodeBase64: (username, ':', password)) \ No newline at end of file + ^ 'Basic ', (ZnUtils encodeBase64: (username, ':', password)) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBasicCredential.class/instance/isComplete.st b/repository/Zinc-HTTP.package/ZnBasicCredential.class/instance/isComplete.st index a8f83610..be632ce6 100644 --- a/repository/Zinc-HTTP.package/ZnBasicCredential.class/instance/isComplete.st +++ b/repository/Zinc-HTTP.package/ZnBasicCredential.class/instance/isComplete.st @@ -1,3 +1,3 @@ testing isComplete - ^ username notNil & password notNil \ No newline at end of file + ^ username notNil & password notNil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/instance/next.putAll.startingAt..st b/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/instance/next.putAll.startingAt..st index 63297d1a..74e239b7 100644 --- a/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/instance/next.putAll.startingAt..st +++ b/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/instance/next.putAll.startingAt..st @@ -1,5 +1,18 @@ accessing next: count putAll: collection startingAt: offset + | buffer | self isBinary - ifTrue: [ stream next: count putAll: collection asByteArray startingAt: offset ] - ifFalse: [ stream next: count putAll: collection asString startingAt: offset ] \ No newline at end of file + ifTrue: [ + (collection isKindOf: ByteArray) + ifTrue: [ stream next: count putAll: collection startingAt: offset ] + ifFalse: [ + buffer := ByteArray new: count. + buffer replaceFrom: 1 to: count with: collection startingAt: offset. + stream nextPutAll: buffer ] ] + ifFalse: [ + (collection isKindOf: ByteArray) + ifTrue: [ + buffer := String new: count. + buffer replaceFrom: 1 to: count with: collection startingAt: offset. + stream nextPutAll: buffer ] + ifFalse: [ stream next: count putAll: collection startingAt: offset ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/methodProperties.json index 67d50f50..1ca66a33 100644 --- a/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/methodProperties.json @@ -5,7 +5,7 @@ "close" : "SvenVanCaekenberghe 10/4/2010 20:07", "flush" : "SvenVanCaekenberghe 4/4/2012 16:06", "isBinary" : "SvenVanCaekenberghe 1/4/2011 20:54", - "next:putAll:startingAt:" : "SvenVanCaekenberghe 1/4/2011 20:46", + "next:putAll:startingAt:" : "SvenVanCaekenberghe 5/22/2013 10:01", "nextPut:" : "SvenVanCaekenberghe 12/3/2010 20:54", "nextPutAll:" : "SvenVanCaekenberghe 12/3/2010 20:54", "on:" : "SvenVanCaekenberghe 10/4/2010 20:07", diff --git a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/class/bytes..st b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/class/bytes..st index 172ac654..a3f612c5 100644 --- a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/class/bytes..st +++ b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/class/bytes..st @@ -2,4 +2,4 @@ instance creation bytes: byteArray ^ (self type: ZnMimeType applicationOctetStream length: byteArray size) bytes: byteArray; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/class/matches..st b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/class/matches..st new file mode 100644 index 00000000..f6f38225 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/class/matches..st @@ -0,0 +1,6 @@ +testing +matches: mimeType + "I have no designated mime type, I can handle all binary content. + See #concreteSubclassForType: " + + ^ false \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/^equals.st new file mode 100644 index 00000000..400af234 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/^equals.st @@ -0,0 +1,3 @@ +comparing += other + ^ super = other and: [ self bytes = other bytes ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/hash.st new file mode 100644 index 00000000..644310ed --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ super hash bitXor: self bytes hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/writeOn..st index 6fefb375..28ebc490 100644 --- a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/writeOn..st @@ -1,7 +1,3 @@ writing writeOn: stream - self contentLength > ZnUtils streamingBufferSize - ifTrue: [ - ZnUtils streamFrom: self readStream to: stream size: self contentLength ] - ifFalse: [ - stream nextPutAll: self bytes ] \ No newline at end of file + ZnUtils nextPutAll: self bytes on: stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/methodProperties.json index d7ce978a..181d9514 100644 --- a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/methodProperties.json @@ -1,13 +1,16 @@ { "class" : { "bytes:" : "SvenVanCaekenberghe 9/12/2010 11:13", - "designatedMimeType" : "SvenVanCaekenberghe 9/11/2010 17:22" }, + "designatedMimeType" : "SvenVanCaekenberghe 9/11/2010 17:22", + "matches:" : "SvenVanCaekenberghe 6/4/2013 14:43" }, "instance" : { + "=" : "SvenVanCaekenberghe 5/22/2013 10:45", "bytes" : "SvenVanCaekenberghe 9/7/2010 15:12", "bytes:" : "SvenVanCaekenberghe 9/7/2010 15:12", "contents" : "SvenVanCaekenberghe 9/13/2010 22:05", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:44", "isEmpty" : "SvenVanCaekenberghe 5/1/2011 17:53", "printContentsOn:" : "SvenVanCaekenberghe 12/14/2010 11:20", "readFrom:" : "SvenVanCaekenberghe 9/17/2012 15:00", "readStream" : "SvenVanCaekenberghe 9/7/2010 19:27", - "writeOn:" : "SvenVanCaekenberghe 9/17/2012 14:58" } } + "writeOn:" : "SvenVanCaekenberghe 5/18/2013 19:54" } } diff --git a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/chunkCount.st b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/chunkCount.st new file mode 100644 index 00000000..2607fff0 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/chunkCount.st @@ -0,0 +1,3 @@ +accessing +chunkCount + ^ chunkCount \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/getNextChunk.st b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/getNextChunk.st index 6639ec21..de095f56 100644 --- a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/getNextChunk.st +++ b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/getNextChunk.st @@ -8,6 +8,7 @@ getNextChunk self getExtraHeaders ] ifFalse: [ totalSize := totalSize + size. + chunkCount := chunkCount + 1. self ensureChunkBufferOfSize: size. stream next: size into: chunk. stream next: 2. "consume CRLF" diff --git a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/initialize.st index ab1d000d..1fab4275 100644 --- a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/initialize.st +++ b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/initialize.st @@ -1,4 +1,5 @@ initialize-release initialize atEnd := false. + chunkCount := 0. totalSize := 0 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/readInto.startingAt.count..st b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/readInto.startingAt.count..st index 516970ab..f0444396 100644 --- a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/readInto.startingAt.count..st +++ b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/readInto.startingAt.count..st @@ -6,7 +6,6 @@ readInto: collection startingAt: offset count: requestedCount | read toRead | read := 0. [ read < requestedCount and: [ self atEnd not] ] whileTrue: [ - self ensureChunkOrAtEnd. toRead := (limit - position) min: (requestedCount - read). collection replaceFrom: offset + read diff --git a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/upToEnd.st b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/upToEnd.st index 10dfcfc5..1403af76 100644 --- a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/upToEnd.st +++ b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/instance/upToEnd.st @@ -1,7 +1,8 @@ accessing upToEnd - "We use out own collectionSpecies." + "We use our own collectionSpecies and read by chunk" ^ self collectionSpecies streamContents: [ :out | [ self atEnd ] whileFalse: [ - out nextPut: self next ] ] \ No newline at end of file + out next: limit putAll: chunk. + position := limit ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/methodProperties.json index 9d904036..1a183aac 100644 --- a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/methodProperties.json @@ -5,15 +5,16 @@ "instance" : { "atEnd" : "SvenVanCaekenberghe 9/26/2010 19:57", "binary" : "SvenVanCaekenberghe 9/27/2010 08:11", + "chunkCount" : "SvenVanCaekenberghe 5/18/2013 00:36", "collectionSpecies" : "SvenVanCaekenberghe 9/26/2010 19:45", "contents" : "SvenVanCaekenberghe 5/2/2012 16:02", "ensureChunkBufferOfSize:" : "SvenVanCaekenberghe 5/19/2011 12:39", "ensureChunkOrAtEnd" : "SvenVanCaekenberghe 5/19/2011 12:45", "extraHeaders" : "SvenVanCaekenberghe 9/26/2010 14:21", "getExtraHeaders" : "SvenVanCaekenberghe 9/26/2010 17:08", - "getNextChunk" : "SvenVanCaekenberghe 5/19/2011 12:45", + "getNextChunk" : "SvenVanCaekenberghe 5/18/2013 00:36", "getNextChunkSize" : "SvenVanCaekenberghe 9/27/2010 19:26", - "initialize" : "SvenVanCaekenberghe 9/26/2010 14:11", + "initialize" : "SvenVanCaekenberghe 5/18/2013 00:36", "isBinary" : "SvenVanCaekenberghe 9/26/2010 19:45", "match:" : "SvenVanCaekenberghe 5/2/2012 16:06", "next" : "SvenVanCaekenberghe 9/26/2010 19:57", @@ -24,9 +25,9 @@ "peek" : "SvenVanCaekenberghe 5/19/2011 12:36", "position" : "SvenVanCaekenberghe 9/27/2010 15:30", "printOn:" : "SvenVanCaekenberghe 9/26/2010 14:12", - "readInto:startingAt:count:" : "SvenVanCaekenberghe 8/2/2012 11:05", + "readInto:startingAt:count:" : "SvenVanCaekenberghe 5/17/2013 21:06", "reset" : "SvenVanCaekenberghe 9/26/2010 14:12", "skip:" : "SvenVanCaekenberghe 9/26/2010 17:10", "totalSize" : "SvenVanCaekenberghe 9/26/2010 14:20", "upTo:" : "SvenVanCaekenberghe 1/31/2012 13:15", - "upToEnd" : "SvenVanCaekenberghe 1/31/2012 12:33" } } + "upToEnd" : "SvenVanCaekenberghe 5/17/2013 23:49" } } diff --git a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/properties.json b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/properties.json index fc23d04a..bae740dd 100644 --- a/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnChunkedReadStream.class/properties.json @@ -12,6 +12,7 @@ "limit", "atEnd", "totalSize", + "chunkCount", "extraHeaders" ], "name" : "ZnChunkedReadStream", "pools" : [ diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/README.md b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/README.md new file mode 100644 index 00000000..815a7fe6 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/README.md @@ -0,0 +1,7 @@ +I am ZnChunkedWriteStream, I wrap another write stream and add HTTP 1.1 chunked transfer encoding. + +I write a chunk for each #nextPutAll: or #next:putAll:startingAt: +I should be wrapped in a ZnBufferedWriteStream for #next: to work. +When done, send #close or #finish to me. + +Part of Zinc HTTP Components. diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/class/on..st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/class/on..st new file mode 100644 index 00000000..b6cdd633 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/class/on..st @@ -0,0 +1,5 @@ +instance creation +on: writeStream + ^ self new + on: writeStream; + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/binary.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/binary.st new file mode 100644 index 00000000..d822482e --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/binary.st @@ -0,0 +1,3 @@ +initialize-release +binary + stream binary \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/chunkCount.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/chunkCount.st new file mode 100644 index 00000000..2607fff0 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/chunkCount.st @@ -0,0 +1,3 @@ +accessing +chunkCount + ^ chunkCount \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/close.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/close.st new file mode 100644 index 00000000..97861a36 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/close.st @@ -0,0 +1,4 @@ +initialize-release +close + self finish. + stream close \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/crlf.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/crlf.st new file mode 100644 index 00000000..b96e172f --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/crlf.st @@ -0,0 +1,3 @@ +private +crlf + stream nextPutAll: (self isBinary ifTrue: [ #[ 13 10 ] ] ifFalse: [ String crlf ]) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/extraHeaders.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/extraHeaders.st new file mode 100644 index 00000000..ee9768a2 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/extraHeaders.st @@ -0,0 +1,3 @@ +accessing +extraHeaders + ^ extraHeaders ifNil: [ extraHeaders ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/finish.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/finish.st new file mode 100644 index 00000000..ad65f697 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/finish.st @@ -0,0 +1,5 @@ +initialize-release +finish + self writeChunkSize: 0. + self crlf. + extraHeaders ifNotNil: [ extraHeaders writeOn: stream ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/flush.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/flush.st new file mode 100644 index 00000000..dd8f9ab7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/flush.st @@ -0,0 +1,3 @@ +initialize-release +flush + stream flush \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/initialize.st new file mode 100644 index 00000000..66d98023 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + super initialize. + totalSize := 0. + chunkCount := 0 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/isBinary.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/isBinary.st new file mode 100644 index 00000000..9f60bda1 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/isBinary.st @@ -0,0 +1,3 @@ +testing +isBinary + ^ stream isBinary diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/isStream.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/isStream.st new file mode 100644 index 00000000..4b758e3a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/isStream.st @@ -0,0 +1,3 @@ +testing +isStream + ^ true \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/next.putAll..st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/next.putAll..st new file mode 100644 index 00000000..fff14097 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/next.putAll..st @@ -0,0 +1,6 @@ +accessing +next: count putAll: collection + self + next: count + putAll: collection + startingAt: 1 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/next.putAll.startingAt..st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/next.putAll.startingAt..st new file mode 100644 index 00000000..30f87249 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/next.putAll.startingAt..st @@ -0,0 +1,7 @@ +accessing +next: count putAll: collection startingAt: offset + self writeChunkSize: count. + stream next: count putAll: collection startingAt: offset. + self crlf. + chunkCount := chunkCount + 1. + totalSize := totalSize + count diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/nextPut..st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/nextPut..st new file mode 100644 index 00000000..3bb53c45 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/nextPut..st @@ -0,0 +1,3 @@ +accessing +nextPut: element + self error: 'Wrap me into a buffered stream, because each #nexPut: will create a new chunk' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/nextPutAll..st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/nextPutAll..st new file mode 100644 index 00000000..19751552 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/nextPutAll..st @@ -0,0 +1,6 @@ +accessing +nextPutAll: collection + self + next: collection size + putAll: collection + startingAt: 1 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/on..st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/on..st new file mode 100644 index 00000000..4eb7ec1d --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/on..st @@ -0,0 +1,3 @@ +initialize-release +on: writeStream + stream := writeStream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/position.st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/position.st new file mode 100644 index 00000000..300df582 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/position.st @@ -0,0 +1,3 @@ +accessing +position + ^ totalSize \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/writeChunkSize..st b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/writeChunkSize..st new file mode 100644 index 00000000..11df60f3 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/instance/writeChunkSize..st @@ -0,0 +1,4 @@ +private +writeChunkSize: size + stream nextPutAll: (self isBinary ifTrue: [ size printStringHex asByteArray ] ifFalse: [ size printStringHex ]). + self crlf \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/methodProperties.json new file mode 100644 index 00000000..1b89795a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/methodProperties.json @@ -0,0 +1,21 @@ +{ + "class" : { + "on:" : "SvenVanCaekenberghe 5/17/2013 15:08" }, + "instance" : { + "binary" : "SvenVanCaekenberghe 5/17/2013 15:10", + "chunkCount" : "SvenVanCaekenberghe 5/18/2013 00:37", + "close" : "SvenVanCaekenberghe 5/17/2013 15:09", + "crlf" : "SvenVanCaekenberghe 5/17/2013 16:22", + "extraHeaders" : "SvenVanCaekenberghe 5/17/2013 15:09", + "finish" : "SvenVanCaekenberghe 5/17/2013 15:31", + "flush" : "SvenVanCaekenberghe 5/17/2013 15:09", + "initialize" : "SvenVanCaekenberghe 5/18/2013 00:35", + "isBinary" : "SvenVanCaekenberghe 5/17/2013 15:25", + "isStream" : "SvenVanCaekenberghe 5/18/2013 00:12", + "next:putAll:" : "SvenVanCaekenberghe 5/18/2013 00:23", + "next:putAll:startingAt:" : "SvenVanCaekenberghe 5/18/2013 00:35", + "nextPut:" : "SvenVanCaekenberghe 5/18/2013 21:02", + "nextPutAll:" : "SvenVanCaekenberghe 5/18/2013 00:26", + "on:" : "SvenVanCaekenberghe 5/17/2013 15:08", + "position" : "SvenVanCaekenberghe 5/18/2013 00:28", + "writeChunkSize:" : "SvenVanCaekenberghe 5/17/2013 15:28" } } diff --git a/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/properties.json b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/properties.json new file mode 100644 index 00000000..cd868a18 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnChunkedWriteStream.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Zinc-HTTP-Streaming", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "stream", + "extraHeaders", + "totalSize", + "chunkCount" ], + "name" : "ZnChunkedWriteStream", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/addPart..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/addPart..st index 8b38ae98..713e3489 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/addPart..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/addPart..st @@ -3,4 +3,4 @@ addPart: mimePart "Add mimePart to the multipart/form-data entity of the current request" self multiPartFormDataEntity - addPart: mimePart \ No newline at end of file + addPart: mimePart \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/addPathSegment..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/addPathSegment..st index f32dbb39..8f1d93d6 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/addPathSegment..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/addPathSegment..st @@ -4,4 +4,4 @@ addPathSegment: pathSegment request url ifNil: [ request url: (ZnUrl new addPathSegment: pathSegment; yourself) ] - ifNotNil: [ request url addPathSegment: pathSegment ] \ No newline at end of file + ifNotNil: [ request url addPathSegment: pathSegment ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/beOneShot.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/beOneShot.st index 743319c6..eb64743a 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/beOneShot.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/beOneShot.st @@ -7,4 +7,4 @@ beOneShot self streaming ifTrue: [ self error: 'I cannot be one shot when #streaming is true.' ]. - self optionAt: #oneShot put: true \ No newline at end of file + self optionAt: #oneShot put: true \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/canReuseConnection.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/canReuseConnection.st index 0391228b..ccfbe8c5 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/canReuseConnection.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/canReuseConnection.st @@ -2,5 +2,4 @@ private canReuseConnection self isConnected ifFalse: [ ^ false ]. lastUsed ifNil: [ ^ false ]. - ^ TimeStamp now - lastUsed < self connectionReuseTimeout seconds - \ No newline at end of file + ^ Time totalSeconds - lastUsed < self connectionReuseTimeout \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/contents.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/contents.st index ef70f869..ea49b6b9 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/contents.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/contents.st @@ -12,4 +12,4 @@ contents self streaming ifTrue: [ response entity stream ] ifFalse: [ response contents ] ] - ifNotNil: [ :reader | reader value: response entity ] ] \ No newline at end of file + ifNotNil: [ :reader | reader value: response entity ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/curl.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/curl.st new file mode 100644 index 00000000..474f22ec --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/curl.st @@ -0,0 +1,16 @@ +convenience +curl + "Create and return a curl command line invocation equivalent to the current request." + "ZnClient new url: 'http://zn.stfx.eu/zn/small.html'; method: #GET; curl." + "ZnClient new url: 'http://zn.stfx.eu/echo'; contents: #[2 4 6 8]; method: #POST; curl." + + self prepareRequest. + ^ String streamContents: [ :stream | + request hasEntity ifTrue: [ + stream << 'echo ' << request entity asByteArray hex << ' | xxd -r -p | ' ]. + stream << 'curl'. + request method = #GET ifFalse: [ stream << ' -X ' << request method ]. + stream space; print: request uri. + request headersDo: [ :key :value | + stream << ' -H"' << key << ':' << value << '"' ]. + request hasEntity ifTrue: [ stream << ' --data-binary @-' ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/entity.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/entity.st index 023aa913..db7ba633 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/entity.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/entity.st @@ -3,4 +3,4 @@ entity "Answer the entity or HTTP payload of the last response, assuming the current request was executed." - ^ response ifNotNil: [ response entity ] \ No newline at end of file + ^ response ifNotNil: [ response entity ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/followRedirects..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/followRedirects..st index 5bef093e..3a7709b3 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/followRedirects..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/followRedirects..st @@ -4,4 +4,4 @@ followRedirects: boolean This is still subject to #maxNumberOfRedirects. Defaults to true. When set to false, redirects will be returned as normal responses." - self optionAt: #followRedirects put: boolean \ No newline at end of file + self optionAt: #followRedirects put: boolean \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/formAdd..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/formAdd..st index f548073e..b3319f71 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/formAdd..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/formAdd..st @@ -4,4 +4,4 @@ formAdd: association entity of the current request." self applicationFormUrlEncodedEntity - add: association \ No newline at end of file + add: association \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/formAddAll..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/formAddAll..st index f49bfa77..6bcabe3c 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/formAddAll..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/formAddAll..st @@ -4,4 +4,4 @@ formAddAll: keyedCollection the application/x-www-form-urlencoded entity of the current request." self applicationFormUrlEncodedEntity - addAll: keyedCollection \ No newline at end of file + addAll: keyedCollection \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/handleResponse.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/handleResponse.st index a0374488..54e54b9c 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/handleResponse.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/handleResponse.st @@ -10,5 +10,5 @@ handleResponse (ZnUnexpectedContentType expected: request accept asZnMimeType actual: response contentType) signal ]. - lastUsed := TimeStamp now. + lastUsed := Time totalSeconds. ^ self contents \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAddAll..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAddAll..st index 8808248c..d93e86b6 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAddAll..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAddAll..st @@ -1,4 +1,4 @@ accessing request headerAddAll: keyedCollection request headers - addAll: keyedCollection \ No newline at end of file + addAll: keyedCollection \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.put..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.put..st index a7004dc6..66f7113d 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.put..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.put..st @@ -3,4 +3,4 @@ headerAt: key put: value "Set key equals value in the HTTP header of the current request" request headers - at: key put: value \ No newline at end of file + at: key put: value \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/logToTranscript.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/logToTranscript.st index 24bc331d..0e17969e 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/logToTranscript.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/logToTranscript.st @@ -2,4 +2,4 @@ logging logToTranscript "Setup logging to the Transcript" - self log addListener: ZnTranscriptLogger new \ No newline at end of file + self log addListener: ZnTranscriptLogger new \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/multiPartFormDataEntity.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/multiPartFormDataEntity.st index 3d7e03b7..0b94bd83 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/multiPartFormDataEntity.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/multiPartFormDataEntity.st @@ -6,7 +6,7 @@ multiPartFormDataEntity request hasEntity ifTrue: [ - request entity contentType = ZnMimeType multiPartFormData + (request entity contentType matches: ZnMimeType multiPartFormData) ifFalse: [ self error: 'An incompatible entity was already set for the request' ] ] ifFalse: [ request entity: ZnMultiPartFormDataEntity new ]. diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRedirect..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRedirect..st new file mode 100644 index 00000000..fe1544c0 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRedirect..st @@ -0,0 +1,3 @@ +notifications +noteRedirect: url + self log debug: [ 'Redirecting to ', url printString ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRedirect.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRedirect.st deleted file mode 100644 index 57735c2f..00000000 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRedirect.st +++ /dev/null @@ -1,3 +0,0 @@ -notifications -noteRedirect - self log debug: 'Redirecting' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRedirect.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRedirect.st index 4501fa83..9147c32b 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRedirect.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRedirect.st @@ -3,11 +3,13 @@ prepareRedirect "We implement the common behavior that POST/PUT redirects turn into GET request. Note also that the body data is dropped, as well as the cookie handling." - self noteRedirect. + | targetUrl | + targetUrl := self redirectUrl. + self noteRedirect: targetUrl. self receiveCookies. (#(POST PUT) includes: request method) ifTrue: [ self method: #GET ]. request hasEntity ifTrue: [ request resetEntity: nil ]. - self url: self redirectUrl. + self url: targetUrl. self sendCookies \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequest..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequest..st new file mode 100644 index 00000000..db21353b --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequest..st @@ -0,0 +1,8 @@ +options +prepareRequest: hook + "Set the current request preparation hook, an object conforming + to the #value: protocol that gets the final chance to change a request + right before it gets executed. Defaults to nil. + Typically used to sign requests. See also #prepareRequestHook " + + ^ self optionAt: #prepareRequestHook put: hook \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequest.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequest.st index 86616617..85658c3c 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequest.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequest.st @@ -7,4 +7,6 @@ prepareRequest "This is necessary because entities are often modified after first being added empty, and a wrong content length is cached at the request level" request resetEntity: request entity ]. - self sendCookies \ No newline at end of file + self sendCookies. + self prepareRequestHook + ifNotNil: [ :hook | hook value: request ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequestHook.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequestHook.st new file mode 100644 index 00000000..f3eaf0dd --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequestHook.st @@ -0,0 +1,8 @@ +options +prepareRequestHook + "Return the current request preparation hook, an object conforming + to the #value: protocol that gets the final chance to change a request + right before it gets executed. Defaults to nil. + Typically used to sign requests. See also #prepareRequest: " + + ^ self optionAt: #prepareRequestHook ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/queryAt.put..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/queryAt.put..st index abac3b1d..8a362486 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/queryAt.put..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/queryAt.put..st @@ -4,4 +4,4 @@ queryAt: key put: value request url ifNil: [ request url: (ZnUrl new queryAt: key put: value; yourself) ] - ifNotNil: [ request url queryAt: key put: value ] \ No newline at end of file + ifNotNil: [ request url queryAt: key put: value ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/request.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/request.st index 9af1b4d9..dd55c8eb 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/request.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/request.st @@ -3,4 +3,4 @@ request "Return the current request that I am building, or the previous request that I executed." - ^ request \ No newline at end of file + ^ request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/response.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/response.st index 77762d75..debf94d3 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/response.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/response.st @@ -2,4 +2,4 @@ accessing response response "Answer the last response, assuming the current request was executed." - ^ response \ No newline at end of file + ^ response \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/validateConnectionForHost.port..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/validateConnectionForHost.port..st index 3d960110..924ec086 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/validateConnectionForHost.port..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/validateConnectionForHost.port..st @@ -3,4 +3,4 @@ validateConnectionForHost: host port: port (connection isNil or: [ request url isNil ]) ifTrue: [ ^ self ]. (request url host = host and: [ request url port = port ]) - ifFalse: [ self close ] \ No newline at end of file + ifFalse: [ self close ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnClient.class/methodProperties.json index 17a2fc4a..47198b88 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnClient.class/methodProperties.json @@ -8,7 +8,7 @@ "addPathSegment:" : "SvenVanCaekenberghe 11/8/2011 17:03", "applicationFormUrlEncodedEntity" : "SvenVanCaekenberghe 11/8/2011 17:30", "beOneShot" : "SvenVanCaekenberghe 9/27/2012 14:29", - "canReuseConnection" : "SvenVanCaekenberghe 9/17/2011 11:49", + "canReuseConnection" : "SvenVanCaekenberghe 2/11/2013 11:24", "cleanupConnection" : "SvenVanCaekenberghe 8/18/2011 14:10", "close" : "SvenVanCaekenberghe 12/12/2012 10:22", "connection" : "SvenVanCaekenberghe 7/19/2012 15:43", @@ -21,6 +21,7 @@ "contentWriter:" : "SvenVanCaekenberghe 5/30/2012 21:31", "contents" : "SvenVanCaekenberghe 11/8/2011 20:56", "contents:" : "SvenVanCaekenberghe 11/8/2011 17:13", + "curl" : "SvenVanCaekenberghe 5/7/2013 16:04", "debugPolicy" : "SvenVanCaekenberghe 8/18/2011 15:07", "delete" : "SvenVanCaekenberghe 11/8/2011 19:13", "delete:" : "SvenVanCaekenberghe 11/8/2011 19:04", @@ -47,7 +48,7 @@ "get" : "SvenVanCaekenberghe 11/8/2011 19:13", "get:" : "SvenVanCaekenberghe 11/8/2011 19:04", "getConnectionAndExecute" : "SvenVanCaekenberghe 9/17/2012 09:44", - "handleResponse" : "SvenVanCaekenberghe 12/12/2012 10:22", + "handleResponse" : "SvenVanCaekenberghe 2/11/2013 11:24", "handleRetry:" : "SvenVanCaekenberghe 9/17/2012 09:47", "head" : "SvenVanCaekenberghe 11/8/2011 19:13", "head:" : "SvenVanCaekenberghe 11/8/2011 19:05", @@ -77,9 +78,9 @@ "maxNumberOfRedirects" : "SvenVanCaekenberghe 11/23/2011 17:23", "maxNumberOfRedirects:" : "SvenVanCaekenberghe 11/23/2011 17:23", "method:" : "SvenVanCaekenberghe 12/12/2012 10:19", - "multiPartFormDataEntity" : "SvenVanCaekenberghe 12/12/2012 10:19", + "multiPartFormDataEntity" : "SvenVanCaekenberghe 5/21/2013 22:31", "noteIgnoringExceptionOnReusedConnection:" : "SvenVanCaekenberghe 9/17/2012 09:45", - "noteRedirect" : "SvenVanCaekenberghe 10/4/2011 12:43", + "noteRedirect:" : "SvenVanCaekenberghe 4/19/2013 12:52", "noteRetrying:" : "SvenVanCaekenberghe 9/17/2012 09:46", "numberOfRetries" : "SvenVanCaekenberghe 11/8/2011 20:31", "numberOfRetries:" : "SvenVanCaekenberghe 11/8/2011 20:31", @@ -89,8 +90,10 @@ "port:" : "SvenVanCaekenberghe 11/8/2011 17:32", "post" : "SvenVanCaekenberghe 11/8/2011 19:13", "post:contents:" : "SvenVanCaekenberghe 11/8/2011 19:12", - "prepareRedirect" : "SvenVanCaekenberghe 12/12/2012 10:22", - "prepareRequest" : "SvenVanCaekenberghe 12/12/2012 10:22", + "prepareRedirect" : "SvenVanCaekenberghe 4/19/2013 12:53", + "prepareRequest" : "SvenVanCaekenberghe 2/21/2013 15:59", + "prepareRequest:" : "SvenVanCaekenberghe 2/21/2013 15:57", + "prepareRequestHook" : "SvenVanCaekenberghe 2/21/2013 15:57", "put" : "SvenVanCaekenberghe 11/8/2011 19:14", "put:contents:" : "SvenVanCaekenberghe 11/8/2011 19:12", "queryAddAll:" : "SvenVanCaekenberghe 11/8/2011 17:36", diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize.st b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize.st index 9e195007..dc4dd9d5 100644 --- a/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize.st +++ b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize.st @@ -5,4 +5,4 @@ defaultMaximumEntitySize Default value is 16Mb. This affects both client and server code. This helps to protect us from malicious content." - ^ DefaultMaximumEntitySize ifNil: [ DefaultMaximumEntitySize := 16 * 1024 * 1024 ] \ No newline at end of file + ^ DefaultMaximumEntitySize ifNil: [ DefaultMaximumEntitySize := 16 * 1024 * 1024 ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultServerString.st b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultServerString.st index 04a86dc0..986cd754 100644 --- a/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultServerString.st +++ b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultServerString.st @@ -1,3 +1,3 @@ accessing defaultServerString - ^ self frameworkNameAndVersion \ No newline at end of file + ^ self frameworkNameAndVersion \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultUserAgent.st b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultUserAgent.st index 2e55d855..9537373a 100644 --- a/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultUserAgent.st +++ b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultUserAgent.st @@ -1,3 +1,3 @@ accessing defaultUserAgent - ^ self frameworkNameAndVersion \ No newline at end of file + ^ self frameworkNameAndVersion \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/frameworkNameAndVersion.st b/repository/Zinc-HTTP.package/ZnConstants.class/class/frameworkNameAndVersion.st index 5ea0e2c2..00617b01 100644 --- a/repository/Zinc-HTTP.package/ZnConstants.class/class/frameworkNameAndVersion.st +++ b/repository/Zinc-HTTP.package/ZnConstants.class/class/frameworkNameAndVersion.st @@ -1,3 +1,3 @@ accessing frameworkNameAndVersion - ^ self frameworkName, ' ', self frameworkVersion \ No newline at end of file + ^ self frameworkName, ' ', self frameworkVersion \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/httpStatusCodes.st b/repository/Zinc-HTTP.package/ZnConstants.class/class/httpStatusCodes.st index 80b71f42..e579a3d4 100644 --- a/repository/Zinc-HTTP.package/ZnConstants.class/class/httpStatusCodes.st +++ b/repository/Zinc-HTTP.package/ZnConstants.class/class/httpStatusCodes.st @@ -1,3 +1,3 @@ accessing httpStatusCodes - ^ HTTPStatusCodes \ No newline at end of file + ^ HTTPStatusCodes \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCookie.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnCookie.class/instance/writeOn..st index 1c31c08a..cd2439c6 100644 --- a/repository/Zinc-HTTP.package/ZnCookie.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnCookie.class/instance/writeOn..st @@ -2,4 +2,4 @@ printing writeOn: aStream self writeNameAndValueOn: aStream; - writeExtraAttributesOn: aStream \ No newline at end of file + writeExtraAttributesOn: aStream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCredential.class/class/authName.st b/repository/Zinc-HTTP.package/ZnCredential.class/class/authName.st index 639ea851..55a30cee 100644 --- a/repository/Zinc-HTTP.package/ZnCredential.class/class/authName.st +++ b/repository/Zinc-HTTP.package/ZnCredential.class/class/authName.st @@ -1,3 +1,3 @@ accessing authName - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCredential.class/instance/authToken.st b/repository/Zinc-HTTP.package/ZnCredential.class/instance/authToken.st index 399ce390..602c22ae 100644 --- a/repository/Zinc-HTTP.package/ZnCredential.class/instance/authToken.st +++ b/repository/Zinc-HTTP.package/ZnCredential.class/instance/authToken.st @@ -1,3 +1,3 @@ accessing authToken - ^ self authTokenForUrl: nil method: nil \ No newline at end of file + ^ self authTokenForUrl: nil method: nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCredential.class/instance/authTokenForUrl.method..st b/repository/Zinc-HTTP.package/ZnCredential.class/instance/authTokenForUrl.method..st index c40837d7..34ad8152 100644 --- a/repository/Zinc-HTTP.package/ZnCredential.class/instance/authTokenForUrl.method..st +++ b/repository/Zinc-HTTP.package/ZnCredential.class/instance/authTokenForUrl.method..st @@ -1,3 +1,3 @@ accessing authTokenForUrl: urlObject method: method - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCredential.class/instance/isComplete.st b/repository/Zinc-HTTP.package/ZnCredential.class/instance/isComplete.st index eac9a8e5..579b874d 100644 --- a/repository/Zinc-HTTP.package/ZnCredential.class/instance/isComplete.st +++ b/repository/Zinc-HTTP.package/ZnCredential.class/instance/isComplete.st @@ -1,3 +1,3 @@ testing isComplete - ^ self subclassResponsibility \ No newline at end of file + ^ self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/README.md b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/README.md index 8b695c47..c6b6937b 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/README.md +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/README.md @@ -10,6 +10,8 @@ I implement responses to the following prefixes: /bytes - bytes according to a pattern (/bytes/32 for a specific size) /favicon.ico - a Zn favicon /status - a server status page +/error - force server errors +/session - a simpler session based counter /help - lists all page prefixes / - an html welcome page diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/echoRequest..st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/echoRequest..st index fcb6231e..249bafda 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/echoRequest..st +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/echoRequest..st @@ -6,5 +6,5 @@ echoRequest: request delay := Integer readFrom: (request uri queryAt: 'delay' ifAbsent: [ '' ]) ifFail: [ 0 ]. delay > 0 ifTrue: [ (Delay forSeconds: delay) wait ]. info := self generateEchoRequestString: request. - entity := ZnEntity text: info. + entity := ZnEntity textCRLF: info. ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateEchoRequestString..st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateEchoRequestString..st index 4d592164..d9ab27cf 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateEchoRequestString..st +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateEchoRequestString..st @@ -10,5 +10,5 @@ generateEchoRequestString: request stream crlf; nextPutAll: 'with headers'; crlf. request headersDo: [ :key :value | stream space; nextPutAll: key; nextPutAll: ': '; nextPutAll: value; crlf ]. - request entity isNil ifFalse: [ + request hasEntity ifTrue: [ stream nextPutAll: ' containing '; print: request entity ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateSessionRequest..st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateSessionRequest..st index ad1b1460..fc086573 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateSessionRequest..st +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateSessionRequest..st @@ -9,4 +9,4 @@ generateSessionRequest: session stream nextPutAll: '

I am using '; print: session; nextPutAll: '

'. stream nextPutAll: '

Current session-id='; nextPutAll: session id; nextPutAll: '

'. stream nextPutAll: '

Session hit count is '; print: (session attributeAt: #hitCount); nextPutAll: '

'. - stream nextPutAll: '' ] \ No newline at end of file + stream nextPutAll: '' ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/processes.st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/processes.st index 9287249f..7d25f2c6 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/processes.st +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/processes.st @@ -2,4 +2,4 @@ private processes ^ (Process allSubInstances reject: [ :each | each isTerminated or: [ each = Processor activeProcess ] ]) - sorted: [ :a :b | a priority >= b priority ] \ No newline at end of file + sorted: [ :a :b | a priority >= b priority ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/methodProperties.json index 6b498d72..53601cf2 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/methodProperties.json @@ -4,11 +4,11 @@ "instance" : { "bytes:" : "SvenVanCaekenberghe 8/18/2011 14:09", "dwbench:" : "SvenVanCaekenberghe 12/14/2010 10:30", - "echoRequest:" : "SvenVanCaekenberghe 7/14/2011 09:36", + "echoRequest:" : "SvenVanCaekenberghe 5/27/2013 16:11", "errorResponse:" : "SvenVanCaekenberghe 12/23/2012 18:03", "favicon:" : "SvenVanCaekenberghe 12/14/2010 10:39", "generateDWBench" : "SvenVanCaekenberghe 3/18/2012 19:08", - "generateEchoRequestString:" : "SvenVanCaekenberghe 11/10/2012 17:40", + "generateEchoRequestString:" : "SvenVanCaekenberghe 5/7/2013 15:02", "generateHelp" : "SvenVanCaekenberghe 1/4/2013 13:48", "generateSessionRequest:" : "SvenVanCaekenberghe 11/10/2012 23:43", "generateStatus" : "SvenVanCaekenberghe 11/10/2012 18:15", diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/properties.json b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/properties.json index 9d01a9c9..8ada4614 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "SvenVanCaekenberghe 8/18/2011 14:46", + "commentStamp" : "", "instvars" : [ "prefixMap", "byteArray" ], diff --git a/repository/Zinc-HTTP.package/ZnDigestCredential.class/instance/isComplete.st b/repository/Zinc-HTTP.package/ZnDigestCredential.class/instance/isComplete.st index 6462f6c3..87df233d 100644 --- a/repository/Zinc-HTTP.package/ZnDigestCredential.class/instance/isComplete.st +++ b/repository/Zinc-HTTP.package/ZnDigestCredential.class/instance/isComplete.st @@ -1,3 +1,3 @@ testing isComplete - ^ super isComplete & nonce notNil \ No newline at end of file + ^ super isComplete & nonce notNil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEasy.class/README.md b/repository/Zinc-HTTP.package/ZnEasy.class/README.md index e49baf3d..5c0c170c 100644 --- a/repository/Zinc-HTTP.package/ZnEasy.class/README.md +++ b/repository/Zinc-HTTP.package/ZnEasy.class/README.md @@ -5,7 +5,8 @@ My class side implements a number of convenience methods to do common HTTP clien ZnEasy get: 'http://zn.stfx.eu/zn/small.html'. For most requests, I return a response object. -Some return an image Form. + +For a couple of message, I return an image Form. ZnEasy getPng: 'http://www.pharo-project.org/images/pharo.png'. diff --git a/repository/Zinc-HTTP.package/ZnEasy.class/properties.json b/repository/Zinc-HTTP.package/ZnEasy.class/properties.json index 0b888e51..ff0ced3e 100644 --- a/repository/Zinc-HTTP.package/ZnEasy.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnEasy.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "SvenVanCaekenberghe 4/21/2012 11:13", + "commentStamp" : "", "instvars" : [ ], "name" : "ZnEasy", diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/class/byteArrayEntityClass.st b/repository/Zinc-HTTP.package/ZnEntity.class/class/byteArrayEntityClass.st index 058c6790..1252c62a 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/class/byteArrayEntityClass.st +++ b/repository/Zinc-HTTP.package/ZnEntity.class/class/byteArrayEntityClass.st @@ -1,3 +1,3 @@ accessing byteArrayEntityClass - ^ ZnByteArrayEntity \ No newline at end of file + ^ ZnByteArrayEntity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/class/concreteSubclassForType.binary..st b/repository/Zinc-HTTP.package/ZnEntity.class/class/concreteSubclassForType.binary..st index 3ddd8964..94bfd6f8 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/class/concreteSubclassForType.binary..st +++ b/repository/Zinc-HTTP.package/ZnEntity.class/class/concreteSubclassForType.binary..st @@ -4,7 +4,7 @@ concreteSubclassForType: mimeType binary: forceBinary ^ self allSubclasses detect: [ :each | - each designatedMimeType = mimeType ] + each matches: mimeType ] ifNone: [ (mimeType isBinary or: [ forceBinary ]) ifTrue: [ self byteArrayEntityClass ] diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/class/designatedMimeType.st b/repository/Zinc-HTTP.package/ZnEntity.class/class/designatedMimeType.st index e1fc641f..be3b51fc 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/class/designatedMimeType.st +++ b/repository/Zinc-HTTP.package/ZnEntity.class/class/designatedMimeType.st @@ -3,4 +3,4 @@ designatedMimeType "Answer the mime type we are designated to handle. See #concreteSubclassForType: " - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/class/matches..st b/repository/Zinc-HTTP.package/ZnEntity.class/class/matches..st new file mode 100644 index 00000000..ff1ed85f --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntity.class/class/matches..st @@ -0,0 +1,5 @@ +testing +matches: mimeType + "Return whether a given mimeType can be handled by instances of the receiver" + + ^ mimeType matches: self designatedMimeType \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/class/new.st b/repository/Zinc-HTTP.package/ZnEntity.class/class/new.st index 8d4d2723..777662d0 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/class/new.st +++ b/repository/Zinc-HTTP.package/ZnEntity.class/class/new.st @@ -1,3 +1,3 @@ instance creation new - ^ super new initialize \ No newline at end of file + ^ super new initialize \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnEntity.class/instance/^equals.st new file mode 100644 index 00000000..08549de8 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntity.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + self class = other class ifFalse: [ ^ false ]. + ^ self contentType = other contentType and: [ self contentLength = other contentLength ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/instance/asByteArray.st b/repository/Zinc-HTTP.package/ZnEntity.class/instance/asByteArray.st new file mode 100644 index 00000000..ca2c9c04 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntity.class/instance/asByteArray.st @@ -0,0 +1,5 @@ +converting +asByteArray + "Return the ByteArray that is the binary, encoded representation of the receiver" + + ^ ByteArray streamContents: [ :stream | self writeOn: stream ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/instance/contentType..st b/repository/Zinc-HTTP.package/ZnEntity.class/instance/contentType..st index 898e36bf..4d07fc41 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/instance/contentType..st +++ b/repository/Zinc-HTTP.package/ZnEntity.class/instance/contentType..st @@ -1,10 +1,11 @@ accessing contentType: object "We only allow assignment compatible with our designated mime type" + | newType | newType := object asZnMimeType. contentType = newType ifTrue: [ ^ self ] ifFalse: [ - (self class designatedMimeType isNil or: [ self class designatedMimeType = newType ]) + (self class designatedMimeType isNil or: [ self class matches: newType ]) ifTrue: [ contentType := newType ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/instance/contentType.st b/repository/Zinc-HTTP.package/ZnEntity.class/instance/contentType.st index 50c06efa..c86ded99 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/instance/contentType.st +++ b/repository/Zinc-HTTP.package/ZnEntity.class/instance/contentType.st @@ -1,3 +1,3 @@ accessing contentType - ^ contentType \ No newline at end of file + ^ contentType \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnEntity.class/instance/hash.st new file mode 100644 index 00000000..0e0bd5d8 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntity.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ self contentType hash bitXor: self contentLength hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/instance/isEmpty.st b/repository/Zinc-HTTP.package/ZnEntity.class/instance/isEmpty.st index 4af89e8c..9df3e9d1 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/instance/isEmpty.st +++ b/repository/Zinc-HTTP.package/ZnEntity.class/instance/isEmpty.st @@ -1,3 +1,3 @@ testing isEmpty - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/instance/readFrom..st b/repository/Zinc-HTTP.package/ZnEntity.class/instance/readFrom..st index 86a60876..9d442d76 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/instance/readFrom..st +++ b/repository/Zinc-HTTP.package/ZnEntity.class/instance/readFrom..st @@ -1,3 +1,3 @@ initialize-release readFrom: stream - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnEntity.class/instance/writeOn..st index a3b21b10..91ff76eb 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnEntity.class/instance/writeOn..st @@ -1,3 +1,3 @@ writing writeOn: stream - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnEntity.class/methodProperties.json index 25c8683c..327c3e9a 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnEntity.class/methodProperties.json @@ -2,9 +2,10 @@ "class" : { "byteArrayEntityClass" : "SvenVanCaekenberghe 12/3/2010 13:57", "bytes:" : "SvenVanCaekenberghe 12/3/2010 14:00", - "concreteSubclassForType:binary:" : "SvenVanCaekenberghe 4/7/2012 17:35", + "concreteSubclassForType:binary:" : "SvenVanCaekenberghe 6/4/2013 15:27", "designatedMimeType" : "SvenVanCaekenberghe 9/11/2010 17:22", "html:" : "SvenVanCaekenberghe 12/3/2010 14:01", + "matches:" : "SvenVanCaekenberghe 6/4/2013 14:43", "new" : "SvenVanCaekenberghe 9/17/2010 17:07", "readBinaryFrom:usingType:andLength:" : "SvenVanCaekenberghe 4/7/2012 17:38", "readFrom:usingType:andLength:" : "SvenVanCaekenberghe 4/7/2012 17:36", @@ -17,14 +18,17 @@ "with:type:" : "SvenVanCaekenberghe 9/17/2010 20:39", "xml:" : "SvenVanCaekenberghe 12/11/2011 18:12" }, "instance" : { + "=" : "SvenVanCaekenberghe 5/22/2013 10:42", + "asByteArray" : "SvenVanCaekenberghe 5/7/2013 15:58", "close" : "SvenVanCaekenberghe 8/18/2011 12:50", "contentLength" : "SvenVanCaekenberghe 9/25/2010 22:17", "contentLength:" : "SvenVanCaekenberghe 9/6/2010 21:57", "contentType" : "SvenVanCaekenberghe 9/6/2010 21:57", - "contentType:" : "SvenVanCaekenberghe 1/4/2011 19:57", + "contentType:" : "SvenVanCaekenberghe 6/4/2013 15:25", "contents" : "SvenVanCaekenberghe 9/13/2010 22:04", "hasContentLength" : "SvenVanCaekenberghe 12/14/2010 11:25", "hasContentType" : "SvenVanCaekenberghe 12/14/2010 11:26", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:41", "isEmpty" : "SvenVanCaekenberghe 5/1/2011 17:51", "printContentTypeAndLengthOn:" : "SvenVanCaekenberghe 12/14/2010 11:19", "printContentsOn:" : "SvenVanCaekenberghe 12/14/2010 10:56", diff --git a/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/isChunked.st b/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/isChunked.st index c43a8c5c..c98c8d74 100644 --- a/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/isChunked.st +++ b/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/isChunked.st @@ -2,4 +2,4 @@ testing isChunked | transferEncoding | transferEncoding := self headers at: 'Transfer-Encoding' ifAbsent: [ ^ false ]. - ^ transferEncoding beginsWith: 'chunked' \ No newline at end of file + ^ transferEncoding = 'chunked' or: [ transferEncoding beginsWith: 'chunked' ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/readEntity.st b/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/readEntity.st index 1deb3a78..e3723a12 100644 --- a/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/readEntity.st +++ b/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/readEntity.st @@ -5,4 +5,4 @@ readEntity entity := self readEntityFromStream. ^ entity isEmpty ifTrue: [ nil ] - ifFalse: [ entity ] \ No newline at end of file + ifFalse: [ entity ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/readEntityFromStream.st b/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/readEntityFromStream.st index 47aab57c..296cf431 100644 --- a/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/readEntityFromStream.st +++ b/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/readEntityFromStream.st @@ -1,8 +1,7 @@ private readEntityFromStream - | entity decodedEntityLength chunkedStream | - self canReadContent ifFalse: [ ^ nil ]. - chunkedStream := self isChunked ifTrue: [ stream := ZnChunkedReadStream on: stream ] ifFalse: [ nil ]. + | entity decodedEntityLength chunkedStream isChunked | + chunkedStream := (isChunked := self isChunked) ifTrue: [ stream := ZnChunkedReadStream on: stream ] ifFalse: [ nil ]. self isGzipped ifTrue: [ self hasContentLength ifTrue: [ stream := ZnLimitedReadStream on: stream limit: self contentLength ]. @@ -10,7 +9,7 @@ readEntityFromStream stream := GZipReadStream on: stream ] ifFalse: [ decodedEntityLength := self contentLength ]. entity := self readFrom: stream usingType: self contentType andLength: decodedEntityLength. - self isChunked ifTrue: [ + isChunked ifTrue: [ self isIdentityEncoded ifTrue: [ entity contentLength: stream totalSize ]. chunkedStream extraHeaders ifNotNil: [ :extraHeaders | self headers addAll: extraHeaders ] ]. ^ entity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/stream..st b/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/stream..st index 44bb7202..4b140eae 100644 --- a/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/stream..st +++ b/repository/Zinc-HTTP.package/ZnEntityReader.class/instance/stream..st @@ -1,3 +1,3 @@ accessing stream: readStream - stream := readStream \ No newline at end of file + stream := readStream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityReader.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnEntityReader.class/methodProperties.json index 3a561fdd..e15c2c88 100644 --- a/repository/Zinc-HTTP.package/ZnEntityReader.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnEntityReader.class/methodProperties.json @@ -12,12 +12,12 @@ "headers" : "SvenVanCaekenberghe 9/25/2010 22:23", "headers:" : "SvenVanCaekenberghe 9/25/2010 22:22", "isBinary" : "SvenVanCaekenberghe 4/7/2012 16:37", - "isChunked" : "SvenVanCaekenberghe 9/26/2010 13:10", + "isChunked" : "SvenVanCaekenberghe 5/28/2013 12:02", "isGzipped" : "SvenVanCaekenberghe 9/27/2010 13:55", "isIdentityEncoded" : "SvenVanCaekenberghe 9/27/2010 16:45", "isStreaming" : "SvenVanCaekenberghe 9/25/2010 23:03", "readEntity" : "SvenVanCaekenberghe 5/1/2011 17:50", - "readEntityFromStream" : "SvenVanCaekenberghe 4/7/2012 16:33", + "readEntityFromStream" : "SvenVanCaekenberghe 5/28/2013 13:17", "readFrom:usingType:andLength:" : "SvenVanCaekenberghe 4/7/2012 16:42", "stream" : "SvenVanCaekenberghe 9/25/2010 22:23", "stream:" : "SvenVanCaekenberghe 9/25/2010 22:22", diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/README.md b/repository/Zinc-HTTP.package/ZnEntityWriter.class/README.md new file mode 100644 index 00000000..f8a84874 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/README.md @@ -0,0 +1,5 @@ +I am ZnEntityWriter, I help writing ZnEntities to a stream given meta data in headers. + +I deal with chunking and gzip encoding. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/contentType.st b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/contentType.st new file mode 100644 index 00000000..8c60614a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/contentType.st @@ -0,0 +1,5 @@ +accessing +contentType + ^ (self headers includesKey: 'Content-Type') + ifTrue: [ self headers contentType ] + ifFalse: [ ZnMimeType applicationOctetStream ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/headers..st b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/headers..st new file mode 100644 index 00000000..8be0f0d5 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/headers..st @@ -0,0 +1,3 @@ +accessing +headers: znHeaders + headers := znHeaders \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/headers.st b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/headers.st new file mode 100644 index 00000000..484f67e3 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/headers.st @@ -0,0 +1,3 @@ +accessing +headers + ^ headers \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/isChunked.st b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/isChunked.st new file mode 100644 index 00000000..c98c8d74 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/isChunked.st @@ -0,0 +1,5 @@ +testing +isChunked + | transferEncoding | + transferEncoding := self headers at: 'Transfer-Encoding' ifAbsent: [ ^ false ]. + ^ transferEncoding = 'chunked' or: [ transferEncoding beginsWith: 'chunked' ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/isGzipped.st b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/isGzipped.st new file mode 100644 index 00000000..4bd73516 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/isGzipped.st @@ -0,0 +1,5 @@ +testing +isGzipped + | contentEncoding | + contentEncoding := self headers at: 'Content-Encoding' ifAbsent: [ ^ false ]. + ^ contentEncoding = 'gzip' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/stream..st b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/stream..st new file mode 100644 index 00000000..4488adf2 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/stream..st @@ -0,0 +1,3 @@ +accessing +stream: writeStream + stream := writeStream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/stream.st b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/stream.st new file mode 100644 index 00000000..691d9699 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/stream.st @@ -0,0 +1,3 @@ +accessing +stream + ^ stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/writeEntity..st b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/writeEntity..st new file mode 100644 index 00000000..16d77e4a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/instance/writeEntity..st @@ -0,0 +1,22 @@ +public +writeEntity: entity + | actualStream gzipStream bufferedStream chunkedStream isChunked | + actualStream := stream. + chunkedStream := gzipStream := bufferedStream := nil. + (isChunked := self isChunked) + ifTrue: [ + chunkedStream := actualStream := ZnChunkedWriteStream on: actualStream ]. + self isGzipped + ifTrue: [ + gzipStream := actualStream := GZipWriteStream on: actualStream ] + ifFalse: [ + (isChunked and: [ self contentType isBinary not ]) + ifTrue: [ bufferedStream := actualStream := ZnUtils bufferedWriteStreamOn: actualStream ] ]. + entity writeOn: actualStream. + gzipStream + ifNotNil: [ gzipStream finish ]. + bufferedStream + ifNotNil: [ bufferedStream finish ]. + chunkedStream + ifNotNil: [ chunkedStream finish ] + \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnEntityWriter.class/methodProperties.json new file mode 100644 index 00000000..d86c2be5 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + }, + "instance" : { + "contentType" : "SvenVanCaekenberghe 5/18/2013 20:58", + "headers" : "SvenVanCaekenberghe 5/18/2013 12:47", + "headers:" : "SvenVanCaekenberghe 5/18/2013 12:47", + "isChunked" : "SvenVanCaekenberghe 5/28/2013 12:02", + "isGzipped" : "SvenVanCaekenberghe 5/18/2013 13:01", + "stream" : "SvenVanCaekenberghe 5/18/2013 12:47", + "stream:" : "SvenVanCaekenberghe 5/18/2013 12:47", + "writeEntity:" : "SvenVanCaekenberghe 5/28/2013 13:10" } } diff --git a/repository/Zinc-HTTP.package/ZnEntityWriter.class/properties.json b/repository/Zinc-HTTP.package/ZnEntityWriter.class/properties.json new file mode 100644 index 00000000..8adf9d71 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntityWriter.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-HTTP-Streaming", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "headers", + "stream" ], + "name" : "ZnEntityWriter", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnFileLogger.class/class/onFileNamed..st b/repository/Zinc-HTTP.package/ZnFileLogger.class/class/onFileNamed..st index 12ee9a52..fb7f0dc0 100644 --- a/repository/Zinc-HTTP.package/ZnFileLogger.class/class/onFileNamed..st +++ b/repository/Zinc-HTTP.package/ZnFileLogger.class/class/onFileNamed..st @@ -2,4 +2,4 @@ instance creation onFileNamed: pathName ^ self new initializeOn: pathName; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/initializeOn..st b/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/initializeOn..st index 7eb3479e..877d2ecb 100644 --- a/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/initializeOn..st +++ b/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/initializeOn..st @@ -1,4 +1,4 @@ initialize-release initializeOn: aPathName self pathName: aPathName. - self open \ No newline at end of file + self open \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/open.st b/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/open.st index 3b7bbb1e..a6f6c800 100644 --- a/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/open.st +++ b/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/open.st @@ -5,4 +5,4 @@ open fileStream := ZnFileSystemUtils fileStreamFor: self pathName. fileStream setToEnd. self stream: fileStream. - self event: (ZnLogEvent info: 'Opening ', self printString) \ No newline at end of file + self event: (ZnLogEvent info: 'Opening ', self printString) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/pathName..st b/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/pathName..st index 654fc212..f7bd98c6 100644 --- a/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/pathName..st +++ b/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/pathName..st @@ -1,3 +1,3 @@ private pathName: aPathName - pathName := aPathName \ No newline at end of file + pathName := aPathName \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/pathName.st b/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/pathName.st index e19fbb6f..bec2e22f 100644 --- a/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/pathName.st +++ b/repository/Zinc-HTTP.package/ZnFileLogger.class/instance/pathName.st @@ -1,3 +1,3 @@ accessing pathName - ^ pathName \ No newline at end of file + ^ pathName \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/class/initialize.st b/repository/Zinc-HTTP.package/ZnHeaders.class/class/initialize.st new file mode 100644 index 00000000..bac657f9 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/class/initialize.st @@ -0,0 +1,12 @@ +class initialization +initialize + CommonHeaders := ( + #( + 'Content-Length' 'Content-Type' 'Date' 'Server' 'Connection' 'User-Agent' 'Host' + 'Accept' 'Accept-Language' 'Accept-Encoding' + 'Referer' 'Dnt' + 'Cookie' 'Set-Cookie' 'Authorization' 'WWW-Authenticate' 'Proxy-Authorization' + 'Content-Encoding' 'Transfer-Encoding' 'Location' + 'If-Modified-Since' 'Content-Disposition' + 'X-Zinc-Remote-Address' 'X-Forwarded-Server' 'X-Forwarded-For' 'X-Forwarded-Host' ) + collect: [ :each | ZnUtils capitalizeString: each ]) asSet \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/class/withAll..st b/repository/Zinc-HTTP.package/ZnHeaders.class/class/withAll..st index cd01d9fc..fd24fcb4 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/class/withAll..st +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/class/withAll..st @@ -2,4 +2,4 @@ instance creation withAll: keyedCollection ^ self new addAll: keyedCollection; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/^equals.st new file mode 100644 index 00000000..43b51e5c --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + self class = other class ifFalse: [ ^ false ]. + ^ self headers = other headers \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/acceptEntityDescription..st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/acceptEntityDescription..st index 51b01e0d..ff514a11 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/acceptEntityDescription..st +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/acceptEntityDescription..st @@ -9,5 +9,5 @@ acceptEntityDescription: entity at: 'Content-Length' put: entity contentLength printString ] ifNil: [ self - removeKey: 'Content-Type' ifAbsent: []; - removeKey: 'Content-Length' ifAbsent: [] ] \ No newline at end of file + clearContentType; + clearContentLength ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/clearContentLength.st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/clearContentLength.st new file mode 100644 index 00000000..0073c59c --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/clearContentLength.st @@ -0,0 +1,3 @@ +accessing +clearContentLength + self removeKey: 'Content-Length' ifAbsent: [] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/clearContentType.st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/clearContentType.st new file mode 100644 index 00000000..649c57a5 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/clearContentType.st @@ -0,0 +1,3 @@ +accessing +clearContentType + self removeKey: 'Content-Type' ifAbsent: [] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/contentLength.st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/contentLength.st index b513727f..dd4baab4 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/contentLength.st +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/contentLength.st @@ -8,4 +8,4 @@ contentLength value asSet size = 1 ifTrue: [ value := value first ] ifFalse: [ self error: 'Multiple, different Content-Length headers are not allowed' ] ]. - ^ Integer readFrom: value ifFail: [ self error: 'Illegal HTTP Content Length' ] \ No newline at end of file + ^ Integer readFrom: value ifFail: [ self error: 'Illegal HTTP Content Length' ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/extendHeaderAt.from..st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/extendHeaderAt.from..st index 5b1bca74..234a7fcf 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/extendHeaderAt.from..st +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/extendHeaderAt.from..st @@ -2,6 +2,13 @@ private extendHeaderAt: key from: line "The value of a continuation header line is concatenated, keeping the whitespace, but without the CRLF" - - self at: key put: (self at: key), line - \ No newline at end of file + + | existingValue newValue | + existingValue := self at: key. + newValue := existingValue isArray + ifTrue: [ | last | + last := existingValue size. + existingValue at: last put: ((existingValue at: last) , line). + existingValue ] + ifFalse: [ existingValue , line ]. + self at: key put: newValue \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/hash.st new file mode 100644 index 00000000..2e308021 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ self headers hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/normalizeHeaderKey..st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/normalizeHeaderKey..st index feeb3ebd..135e846d 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/normalizeHeaderKey..st +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/normalizeHeaderKey..st @@ -3,6 +3,9 @@ normalizeHeaderKey: string "Test string to see if it has proper header key capitalization, if true, return string, if not, return a properly capitalized copy" + "Optimization: if string is a know,, properly capitalized header, use it as is" + (CommonHeaders includes: string) + ifTrue: [ ^ string ]. ^ (ZnUtils isCapitalizedString: string) ifTrue: [ string ] - ifFalse: [ ZnUtils capitalizeString: string ] \ No newline at end of file + ifFalse: [ ZnUtils capitalizeString: string ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/readFrom..st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/readFrom..st index 438567d9..150de1e9 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/readFrom..st +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/readFrom..st @@ -5,6 +5,6 @@ readFrom: stream [ (line := reader nextLine) isEmpty ] whileFalse: [ | key | key := self readOneHeaderFrom: line readStream. "Continuation header lines start with a space or tab" - [ stream atEnd not and: [ ' ' includes: stream peek ] ] + [ stream atEnd not and: [ #[ 32 9 ] includes: stream peek ] ] whileTrue: [ - self extendHeaderAt: key from: reader nextLine ] ] \ No newline at end of file + self extendHeaderAt: key from: reader nextLine ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/request..st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/request..st index ae61b6fb..fe1ead68 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/request..st +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/request..st @@ -6,4 +6,3 @@ request: url self at: 'Host' put: url authority. (ZnNetworkingUtils proxyAuthorizationHeaderValueToUrl: url) ifNotNil: [ :value | self at: 'Proxy-Authorization' put: value ]. - \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/unlimited.st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/unlimited.st new file mode 100644 index 00000000..221c1078 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/unlimited.st @@ -0,0 +1,3 @@ +initialize-release +unlimited + self headers unlimited \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnHeaders.class/methodProperties.json index d857ef75..49e0284b 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/methodProperties.json @@ -2,11 +2,13 @@ "class" : { "defaultRequestHeaders" : "SvenVanCaekenberghe 9/6/2010 21:12", "defaultResponseHeaders" : "SvenVanCaekenberghe 3/31/2011 08:54", + "initialize" : "SvenVanCaekenberghe 5/28/2013 11:52", "readFrom:" : "SvenVanCaekenberghe 9/6/2010 17:07", "requestHeadersFor:" : "SvenVanCaekenberghe 7/27/2011 14:41", "withAll:" : "SvenVanCaekenberghe 9/13/2010 21:45" }, "instance" : { - "acceptEntityDescription:" : "SvenVanCaekenberghe 9/19/2011 10:08", + "=" : "SvenVanCaekenberghe 5/22/2013 10:34", + "acceptEntityDescription:" : "SvenVanCaekenberghe 5/20/2013 14:12", "addAll:" : "SvenVanCaekenberghe 1/7/2013 12:20", "at:" : "SvenVanCaekenberghe 9/10/2010 20:25", "at:add:" : "SvenVanCaekenberghe 1/2/2012 17:27", @@ -14,22 +16,26 @@ "at:ifPresent:" : "PaulDeBruicker 5/12/2012 10:02", "at:put:" : "SvenVanCaekenberghe 9/10/2010 20:26", "at:put:ifPresentMerge:" : "SvenVanCaekenberghe 9/10/2010 20:49", + "clearContentLength" : "SvenVanCaekenberghe 5/20/2013 12:59", + "clearContentType" : "SvenVanCaekenberghe 5/20/2013 12:59", "contentLength" : "SvenVanCaekenberghe 9/20/2011 13:48", "contentType" : "SvenVanCaekenberghe 9/10/2010 20:27", - "extendHeaderAt:from:" : "SvenVanCaekenberghe 5/22/2012 10:44", + "extendHeaderAt:from:" : "SvenVanCaekenberghe 6/11/2013 10:03", "hasContentLength" : "SvenVanCaekenberghe 9/21/2010 12:12", "hasContentType" : "SvenVanCaekenberghe 9/21/2010 12:11", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:35", "headers" : "SvenVanCaekenberghe 1/2/2012 17:24", "headersDo:" : "SvenVanCaekenberghe 9/21/2010 12:14", "includesKey:" : "SvenVanCaekenberghe 9/21/2010 12:13", "isDescribingEntity" : "SvenVanCaekenberghe 9/10/2010 20:29", "isEmpty" : "SvenVanCaekenberghe 9/6/2010 17:09", "keysAndValuesDo:" : "SvenVanCaekenberghe 9/26/2010 18:13", - "normalizeHeaderKey:" : "SvenVanCaekenberghe 9/10/2010 20:04", + "normalizeHeaderKey:" : "SvenVanCaekenberghe 5/28/2013 11:59", "printOn:" : "SvenVanCaekenberghe 9/20/2010 17:20", - "readFrom:" : "SvenVanCaekenberghe 5/22/2012 10:42", + "readFrom:" : "SvenVanCaekenberghe 6/11/2013 09:48", "readOneHeaderFrom:" : "SvenVanCaekenberghe 5/22/2012 10:27", "removeKey:" : "SvenVanCaekenberghe 9/14/2010 13:36", "removeKey:ifAbsent:" : "SvenVanCaekenberghe 9/21/2010 12:16", "request:" : "SvenVanCaekenberghe 8/12/2011 13:08", + "unlimited" : "SvenVanCaekenberghe 5/14/2013 11:29", "writeOn:" : "SvenVanCaekenberghe 12/3/2010 20:39" } } diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/properties.json b/repository/Zinc-HTTP.package/ZnHeaders.class/properties.json index b103977d..41366fec 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/properties.json @@ -3,7 +3,7 @@ "classinstvars" : [ ], "classvars" : [ - ], + "CommonHeaders" ], "commentStamp" : "SvenVanCaekenberghe 1/18/2011 10:57", "instvars" : [ "headers" ], diff --git a/repository/Zinc-HTTP.package/ZnLineReader.class/instance/growBuffer.st b/repository/Zinc-HTTP.package/ZnLineReader.class/instance/growBuffer.st index 621967d5..63cb9eaf 100644 --- a/repository/Zinc-HTTP.package/ZnLineReader.class/instance/growBuffer.st +++ b/repository/Zinc-HTTP.package/ZnLineReader.class/instance/growBuffer.st @@ -6,4 +6,4 @@ growBuffer (ZnLineTooLong limit: limit) signal ]. newBuffer := String new: buffer size * 2. newBuffer replaceFrom: 1 to: buffer size with: buffer. - buffer := newBuffer \ No newline at end of file + buffer := newBuffer \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLineReader.class/instance/nextLine.st b/repository/Zinc-HTTP.package/ZnLineReader.class/instance/nextLine.st index d67d3e75..c0eebdd4 100644 --- a/repository/Zinc-HTTP.package/ZnLineReader.class/instance/nextLine.st +++ b/repository/Zinc-HTTP.package/ZnLineReader.class/instance/nextLine.st @@ -2,4 +2,4 @@ accessing nextLine self reset. [ self processNext isNil ] whileFalse. - ^ buffer copyFrom: 1 to: position \ No newline at end of file + ^ buffer copyFrom: 1 to: position \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/class/category.message..st b/repository/Zinc-HTTP.package/ZnLogEvent.class/class/category.message..st index a8185667..e35e5575 100644 --- a/repository/Zinc-HTTP.package/ZnLogEvent.class/class/category.message..st +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/class/category.message..st @@ -3,4 +3,4 @@ category: symbol message: string ^ self new category: symbol; message: string; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/class/debug..st b/repository/Zinc-HTTP.package/ZnLogEvent.class/class/debug..st index 7c0638dc..8b62e214 100644 --- a/repository/Zinc-HTTP.package/ZnLogEvent.class/class/debug..st +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/class/debug..st @@ -1,3 +1,3 @@ instance creation debug: message - ^ self category: #debug message: message \ No newline at end of file + ^ self category: #debug message: message \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/class/info..st b/repository/Zinc-HTTP.package/ZnLogEvent.class/class/info..st index cf52c288..9be93df1 100644 --- a/repository/Zinc-HTTP.package/ZnLogEvent.class/class/info..st +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/class/info..st @@ -1,3 +1,3 @@ instance creation info: message - ^ self category: #info message: message \ No newline at end of file + ^ self category: #info message: message \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/class/transaction..st b/repository/Zinc-HTTP.package/ZnLogEvent.class/class/transaction..st index 5dfd67b8..be1bb800 100644 --- a/repository/Zinc-HTTP.package/ZnLogEvent.class/class/transaction..st +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/class/transaction..st @@ -1,3 +1,3 @@ instance creation transaction: message - ^ self category: #transaction message: message \ No newline at end of file + ^ self category: #transaction message: message \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/initialize.st index 247771fd..582ad981 100644 --- a/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/initialize.st +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/initialize.st @@ -2,4 +2,4 @@ initialize-release initialize self timeStamp: TimeStamp now. self category: #info. - self processId: ZnUtils currentProcessID \ No newline at end of file + self processId: ZnUtils currentProcessID \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/processId..st b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/processId..st index 9cb70181..06df99ed 100644 --- a/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/processId..st +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/processId..st @@ -1,3 +1,3 @@ private processId: integer - processId := integer \ No newline at end of file + processId := integer \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/processId.st b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/processId.st index 76b56f33..0a629fb4 100644 --- a/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/processId.st +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/processId.st @@ -1,3 +1,3 @@ accessing processId - ^ processId \ No newline at end of file + ^ processId \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/acceptEvent..st b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/acceptEvent..st index 6b8f9644..284840eb 100644 --- a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/acceptEvent..st +++ b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/acceptEvent..st @@ -2,4 +2,4 @@ private acceptEvent: logEvent filter isNil ifTrue: [ ^ true ]. filter isSymbol ifTrue: [ ^ logEvent category = filter ]. - ^ filter value: logEvent category \ No newline at end of file + ^ filter value: logEvent category \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/enabled.st b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/enabled.st index 377f4e44..e910c195 100644 --- a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/enabled.st +++ b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/enabled.st @@ -1,3 +1,3 @@ accessing enabled - ^ enabled \ No newline at end of file + ^ enabled \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/event..st b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/event..st index 7741fba1..863de5d9 100644 --- a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/event..st +++ b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/event..st @@ -1,3 +1,3 @@ accessing event: logEvent - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/filter..st b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/filter..st index 230e2a84..ce7364ad 100644 --- a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/filter..st +++ b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/filter..st @@ -1,3 +1,3 @@ accessing filter: symbolOrBlock - filter := symbolOrBlock \ No newline at end of file + filter := symbolOrBlock \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/handleEvent..st b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/handleEvent..st index 872442d8..ec50b3ab 100644 --- a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/handleEvent..st +++ b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/handleEvent..st @@ -2,4 +2,4 @@ accessing handleEvent: logEvent (self enabled and: [ self acceptEvent: logEvent ]) ifTrue: [ - lock critical: [ self event: logEvent ] ] \ No newline at end of file + lock critical: [ self event: logEvent ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/initialize.st index 58085d78..e7e903c7 100644 --- a/repository/Zinc-HTTP.package/ZnLogListener.class/instance/initialize.st +++ b/repository/Zinc-HTTP.package/ZnLogListener.class/instance/initialize.st @@ -1,4 +1,4 @@ initialize-release initialize lock := Monitor new. - self enabled: true \ No newline at end of file + self enabled: true \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogSupport.class/class/newEnabled.st b/repository/Zinc-HTTP.package/ZnLogSupport.class/class/newEnabled.st index 2e57f80f..a297ee9f 100644 --- a/repository/Zinc-HTTP.package/ZnLogSupport.class/class/newEnabled.st +++ b/repository/Zinc-HTTP.package/ZnLogSupport.class/class/newEnabled.st @@ -2,4 +2,4 @@ instance creation newEnabled ^ self new enabled: true; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/addListener..st b/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/addListener..st index 84e07820..d29eb80b 100644 --- a/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/addListener..st +++ b/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/addListener..st @@ -1,4 +1,4 @@ accessing addListener: logListener self enable. - self announcer on: ZnLogEvent send: #handleEvent: to: logListener \ No newline at end of file + self announcer on: ZnLogEvent send: #handleEvent: to: logListener \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/enabled..st b/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/enabled..st index 5eceb96d..6b73c63a 100644 --- a/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/enabled..st +++ b/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/enabled..st @@ -1,3 +1,3 @@ accessing enabled: boolean - enabled := boolean \ No newline at end of file + enabled := boolean \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/enabled.st b/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/enabled.st index 067cc4f5..3f806261 100644 --- a/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/enabled.st +++ b/repository/Zinc-HTTP.package/ZnLogSupport.class/instance/enabled.st @@ -1,3 +1,3 @@ accessing enabled - ^ enabled \ No newline at end of file + ^ enabled \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/README.md b/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/README.md index d7ca0fb0..8699b8ab 100644 --- a/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/README.md +++ b/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/README.md @@ -1,6 +1,6 @@ ZnManagingMultiThreadedServer is a ZnMultiThreadedServer that manages the socket stream connections used by the worker threads that are spawned. -ZnManagingMultiThreadedServer startDefaultOn: 1701. + ZnManagingMultiThreadedServer startDefaultOn: 1701. I keep track of all the connections that I spawn so that I can close them when I am stopped. diff --git a/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/properties.json b/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/properties.json index e7fd12be..4cd07d6e 100644 --- a/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "SvenVanCaekenberghe 4/7/2012 17:49", + "commentStamp" : "", "instvars" : [ "lock", "connections" ], diff --git a/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/clear.st b/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/clear.st index 7d785dd5..1c2c2007 100644 --- a/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/clear.st +++ b/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/clear.st @@ -1,3 +1,3 @@ initialize-release clear - logEvents ifNotNil: [ logEvents removeAll ] \ No newline at end of file + logEvents ifNotNil: [ logEvents removeAll ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/event..st b/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/event..st index e8f6b0e7..778e74e8 100644 --- a/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/event..st +++ b/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/event..st @@ -2,4 +2,4 @@ accessing event: logEvent (self limit notNil and: [ self logEvents size >= self limit ]) ifTrue: [ self shrink ]. - self logEvents add: logEvent \ No newline at end of file + self logEvents add: logEvent \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/shrink.st b/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/shrink.st index a6536aa2..2e3cf90d 100644 --- a/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/shrink.st +++ b/repository/Zinc-HTTP.package/ZnMemoryLogger.class/instance/shrink.st @@ -1,3 +1,3 @@ private shrink - (self limit / 10) rounded timesRepeat: [ self logEvents removeFirst ] \ No newline at end of file + (self limit / 10) rounded timesRepeat: [ self logEvents removeFirst ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/^equals.st new file mode 100644 index 00000000..177edfc7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + self class = other class ifFalse: [ ^ false ]. + ^ self headers = other headers and: [ self entity = other entity ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/cookies.st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/cookies.st index f472b03d..bf3c25bd 100644 --- a/repository/Zinc-HTTP.package/ZnMessage.class/instance/cookies.st +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/cookies.st @@ -1,3 +1,3 @@ accessing cookies - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/entityWriterOn..st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/entityWriterOn..st new file mode 100644 index 00000000..0115baa1 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/entityWriterOn..st @@ -0,0 +1,6 @@ +private +entityWriterOn: stream + ^ ZnEntityWriter new + headers: self headers; + stream: stream; + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/hash.st new file mode 100644 index 00000000..be0b2807 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ self headers hash bitXor: self entity hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/writeOn..st index 1696f3d1..22e4a7ca 100644 --- a/repository/Zinc-HTTP.package/ZnMessage.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/writeOn..st @@ -4,4 +4,5 @@ writeOn: stream bivalentWriteStream := ZnBivalentWriteStream on: stream. self headers writeOn: bivalentWriteStream. bivalentWriteStream nextPutAll: String crlf. - self hasEntity ifTrue: [ self entity writeOn: bivalentWriteStream ] \ No newline at end of file + self hasEntity ifTrue: [ + (self entityWriterOn: bivalentWriteStream) writeEntity: self entity ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnMessage.class/methodProperties.json index 4fec1de1..be9a75ac 100644 --- a/repository/Zinc-HTTP.package/ZnMessage.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnMessage.class/methodProperties.json @@ -5,6 +5,7 @@ "readHeaderFrom:" : "SvenVanCaekenberghe 9/21/2010 12:18", "readStreamingFrom:" : "SvenVanCaekenberghe 9/21/2010 11:56" }, "instance" : { + "=" : "SvenVanCaekenberghe 5/22/2013 10:38", "clearEntity" : "SvenVanCaekenberghe 5/14/2012 10:37", "contentLength" : "SvenVanCaekenberghe 9/21/2010 12:17", "contentType" : "SvenVanCaekenberghe 9/21/2010 12:15", @@ -13,9 +14,11 @@ "entity" : "SvenVanCaekenberghe 9/6/2010 22:34", "entity:" : "SvenVanCaekenberghe 9/19/2011 10:09", "entityReaderOn:" : "SvenVanCaekenberghe 5/1/2011 19:02", + "entityWriterOn:" : "SvenVanCaekenberghe 5/18/2013 12:51", "hasEntity" : "SvenVanCaekenberghe 9/21/2010 12:02", "hasHeaders" : "SvenVanCaekenberghe 12/4/2010 20:32", "hasSession" : "SvenVanCaekenberghe 11/10/2012 18:58", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:37", "headers" : "SvenVanCaekenberghe 9/6/2010 22:34", "headers:" : "SvenVanCaekenberghe 9/30/2010 19:53", "headersDo:" : "SvenVanCaekenberghe 9/21/2010 12:04", @@ -32,5 +35,5 @@ "setConnectionClose" : "SvenVanCaekenberghe 9/7/2010 22:32", "setConnectionKeepAlive" : "SvenVanCaekenberghe 12/14/2010 13:58", "wantsConnectionClose" : "SvenVanCaekenberghe 8/20/2012 16:07", - "writeOn:" : "SvenVanCaekenberghe 12/14/2010 11:34", + "writeOn:" : "SvenVanCaekenberghe 5/18/2013 12:52", "writeToTranscript" : "SvenVanCaekenberghe 1/24/2013 10:00" } } diff --git a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/^equals.st new file mode 100644 index 00000000..177edfc7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + self class = other class ifFalse: [ ^ false ]. + ^ self headers = other headers and: [ self entity = other entity ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/entityWriterOn..st b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/entityWriterOn..st new file mode 100644 index 00000000..0115baa1 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/entityWriterOn..st @@ -0,0 +1,6 @@ +private +entityWriterOn: stream + ^ ZnEntityWriter new + headers: self headers; + stream: stream; + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/fieldValue.st b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/fieldValue.st index f7159b9e..63c54439 100644 --- a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/fieldValue.st +++ b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/fieldValue.st @@ -2,4 +2,4 @@ accessing fieldValue ^ self hasEntity ifTrue: [ self entity contents ] - ifFalse: [ nil ] \ No newline at end of file + ifFalse: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/hash.st new file mode 100644 index 00000000..be0b2807 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ self headers hash bitXor: self entity hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/printOn..st b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/printOn..st new file mode 100644 index 00000000..40af3706 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/printOn..st @@ -0,0 +1,8 @@ +printing +printOn: stream + super printOn: stream. + stream nextPut: $(. + self hasEntity ifTrue: [ + self entity printContentTypeAndLengthOn: stream ]. + stream nextPut: $) + \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/setContentDisposition..st b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/setContentDisposition..st index 825e15b8..709fd59d 100644 --- a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/setContentDisposition..st +++ b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/setContentDisposition..st @@ -1,3 +1,3 @@ accessing setContentDisposition: value - ^ self headers at: 'Content-Disposition' put: value \ No newline at end of file + ^ self headers at: 'Content-Disposition' put: value \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/writeOn..st index 694a195d..974cba04 100644 --- a/repository/Zinc-HTTP.package/ZnMimePart.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnMimePart.class/instance/writeOn..st @@ -2,4 +2,5 @@ writing writeOn: stream self headers writeOn: stream. stream nextPutAll: String crlf. - self hasEntity ifTrue: [ self entity writeOn: stream ] \ No newline at end of file + self hasEntity ifTrue: [ + (self entityWriterOn: stream) writeEntity: self entity ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimePart.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnMimePart.class/methodProperties.json index a9746612..29e91c1d 100644 --- a/repository/Zinc-HTTP.package/ZnMimePart.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnMimePart.class/methodProperties.json @@ -6,6 +6,7 @@ "fieldName:value:" : "SvenVanCaekenberghe 1/29/2012 19:27", "readFrom:" : "SvenVanCaekenberghe 9/30/2010 19:57" }, "instance" : { + "=" : "SvenVanCaekenberghe 5/22/2013 10:41", "contentDisposition" : "SvenVanCaekenberghe 10/3/2010 16:12", "contentDispositionValues" : "SvenVanCaekenberghe 10/6/2010 09:30", "contentLength" : "SvenVanCaekenberghe 9/30/2010 19:53", @@ -15,15 +16,18 @@ "entity" : "SvenVanCaekenberghe 9/30/2010 19:53", "entity:" : "SvenVanCaekenberghe 9/19/2011 10:09", "entityReaderOn:" : "SvenVanCaekenberghe 10/3/2010 16:10", + "entityWriterOn:" : "SvenVanCaekenberghe 5/18/2013 12:53", "fieldName" : "SvenVanCaekenberghe 10/5/2010 17:03", "fieldValue" : "SvenVanCaekenberghe 10/4/2010 18:54", "fieldValueString" : "SvenVanCaekenberghe 7/29/2011 14:17", "fileName" : "SvenVanCaekenberghe 10/5/2010 17:01", "hasEntity" : "SvenVanCaekenberghe 9/30/2010 19:53", "hasHeaders" : "SvenVanCaekenberghe 12/4/2010 13:32", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:40", "headers" : "SvenVanCaekenberghe 9/30/2010 19:53", "headers:" : "SvenVanCaekenberghe 9/30/2010 19:53", "headersDo:" : "SvenVanCaekenberghe 9/30/2010 19:53", + "printOn:" : "SvenVanCaekenberghe 6/11/2013 11:24", "readFrom:" : "SvenVanCaekenberghe 9/30/2010 19:54", "setContentDisposition:" : "SvenVanCaekenberghe 10/4/2010 18:49", - "writeOn:" : "SvenVanCaekenberghe 9/30/2010 19:54" } } + "writeOn:" : "SvenVanCaekenberghe 5/18/2013 12:54" } } diff --git a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/class/designatedMimeType.st b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/class/designatedMimeType.st index 0f06e8d1..63a06741 100644 --- a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/class/designatedMimeType.st +++ b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/class/designatedMimeType.st @@ -1,3 +1,3 @@ testing designatedMimeType - ^ ZnMimeType multiPartFormData \ No newline at end of file + ^ ZnMimeType multiPartFormData \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/class/matches..st b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/class/matches..st new file mode 100644 index 00000000..150d787f --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/class/matches..st @@ -0,0 +1,3 @@ +testing +matches: mimeType + ^ mimeType matches: 'multipart/*' asZnMimeType \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/contentType..st b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/contentType..st index aac3c44f..2c29bcb1 100644 --- a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/contentType..st +++ b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/contentType..st @@ -5,5 +5,5 @@ contentType: object | newType | newType := object asZnMimeType. - self class designatedMimeType = newType + (self class matches: newType) ifTrue: [ contentType := newType ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/getBoundary.st b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/getBoundary.st index 91e5b32a..d018c3c7 100644 --- a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/getBoundary.st +++ b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/getBoundary.st @@ -4,4 +4,4 @@ getBoundary This should really be there, set externally or internally. See #initialize and #mimeTypeWithBoundary" - ^ (self contentType parameterAt: 'boundary') withoutQuoting \ No newline at end of file + ^ (self contentType parameterAt: 'boundary') withoutQuoting \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/parse.boundary..st b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/parse.boundary..st index df3646bf..04331e6d 100644 --- a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/parse.boundary..st +++ b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/parse.boundary..st @@ -2,7 +2,10 @@ private parse: bytes boundary: boundary | next start fullBoundary | fullBoundary := '--' asByteArray, boundary. - start := fullBoundary size + 1. + "Sometimes there is whitespace in front of the first boundary" + start := (bytes + indexOfSubCollection: fullBoundary + startingAt: 1) + 1. next := bytes indexOfSubCollection: fullBoundary startingAt: start diff --git a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/partsDo..st b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/partsDo..st index 0c20fdf2..f0697007 100644 --- a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/partsDo..st +++ b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/partsDo..st @@ -1,4 +1,4 @@ enumerating partsDo: block parts isNil ifTrue: [ ^ self ]. - parts do: block \ No newline at end of file + parts do: block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/writeOn..st index b4e90cf0..92843bab 100644 --- a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/instance/writeOn..st @@ -3,4 +3,4 @@ writeOn: stream "We always go via our representation because we need a bivalent stream" representation isNil ifTrue: [ self computeRepresentation ]. - stream nextPutAll: representation \ No newline at end of file + ZnUtils nextPutAll: representation on: stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/methodProperties.json index ca921f08..0470c4fc 100644 --- a/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnMultiPartFormDataEntity.class/methodProperties.json @@ -1,11 +1,12 @@ { "class" : { - "designatedMimeType" : "SvenVanCaekenberghe 9/11/2010 20:42" }, + "designatedMimeType" : "SvenVanCaekenberghe 9/11/2010 20:42", + "matches:" : "SvenVanCaekenberghe 6/11/2013 09:25" }, "instance" : { "addPart:" : "SvenVanCaekenberghe 1/27/2011 10:29", "computeRepresentation" : "SvenVanCaekenberghe 10/4/2010 20:11", "contentLength" : "SvenVanCaekenberghe 1/27/2011 17:11", - "contentType:" : "SvenVanCaekenberghe 1/4/2011 19:58", + "contentType:" : "SvenVanCaekenberghe 6/11/2013 10:43", "contents" : "SvenVanCaekenberghe 10/4/2010 19:14", "generateBoundary" : "SvenVanCaekenberghe 1/31/2011 12:13", "getBoundary" : "SvenVanCaekenberghe 10/5/2010 19:17", @@ -13,12 +14,12 @@ "invalidateRepresentation" : "SvenVanCaekenberghe 10/4/2010 19:15", "isEmpty" : "SvenVanCaekenberghe 12/4/2010 12:43", "mimeTypeWithBoundary" : "SvenVanCaekenberghe 10/5/2010 17:19", - "parse:boundary:" : "SvenVanCaekenberghe 7/9/2012 16:03", + "parse:boundary:" : "SvenVanCaekenberghe 6/11/2013 11:32", "partNamed:" : "SvenVanCaekenberghe 10/5/2010 19:12", "partNamed:ifNone:" : "SvenVanCaekenberghe 10/5/2010 19:18", "parts" : "SvenVanCaekenberghe 9/30/2010 20:07", "partsDo:" : "SvenVanCaekenberghe 2/27/2011 20:13", "printContentsOn:" : "SvenVanCaekenberghe 8/18/2011 14:34", "readFrom:" : "SvenVanCaekenberghe 1/31/2012 13:33", - "writeOn:" : "SvenVanCaekenberghe 10/5/2010 20:28", + "writeOn:" : "SvenVanCaekenberghe 5/18/2013 19:57", "writeRepresentationOn:" : "SvenVanCaekenberghe 10/5/2010 17:24" } } diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/README.md b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/README.md index 85cd589f..380c0906 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/README.md +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/README.md @@ -1,9 +1,9 @@ I am ZnMultiThreadedServer. I inherit most features from ZnSingleThreadedServer. -ZnMultiThreadedServer startDefaultOn: 1701. -ZnMultiThreadedServer default authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). -ZnClient get: 'http://localhost:1701' username: 'foo' password: 'secret'. + ZnMultiThreadedServer startDefaultOn: 1701. + ZnMultiThreadedServer default authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). + ZnClient new username: 'foo' password: 'secret'; get: 'http://localhost:1701'. I am multi threaded, I fork a new process for each incoming request. I try to keep connections alive in each process. diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/augmentResponse.forRequest..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/augmentResponse.forRequest..st new file mode 100644 index 00000000..2435dcac --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/augmentResponse.forRequest..st @@ -0,0 +1,6 @@ +request handling +augmentResponse: response forRequest: request + "Our handler has produced response for request, manipulate the response before writing it" + + super augmentResponse: response forRequest: request. + response setKeepAliveFor: request. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeOneRequestResponseOn..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeOneRequestResponseOn..st index 1eb1aaed..e35186c1 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeOneRequestResponseOn..st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeOneRequestResponseOn..st @@ -9,7 +9,7 @@ executeOneRequestResponseOn: stream ifNil: [ ^ true ] ifNotNil: [ response := self handleRequest: request. - response setKeepAliveFor: request. + self augmentResponse: response forRequest: request. self writeResponseSafely: response on: stream. response useConnection: stream ]. ^ request wantsConnectionClose or: [ response wantsConnectionClose ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestBadExceptionSet.st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestBadExceptionSet.st new file mode 100644 index 00000000..709c2e34 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestBadExceptionSet.st @@ -0,0 +1,8 @@ +private +readRequestBadExceptionSet + "Return the set of exceptions which, when they occur while reading a request, + are interpreted as equivalent to a request parse error or bad request." + + ^ self + exceptionSet: + #(#ZnParseError #ZnCharacterEncodingError #ZnUnknownScheme #ZnPortNotANumber #ZnTooManyDictionaryEntries #ZnEntityTooLarge) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestExceptionSet.st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestExceptionSet.st deleted file mode 100644 index 9f38ec33..00000000 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestExceptionSet.st +++ /dev/null @@ -1,8 +0,0 @@ -private -readRequestExceptionSet - "Return the set of exception which, when they occur while reading a request, - are interpreted as equivalent to a timeout or connection close." - - ^ self - exceptionSet: - #(#ConnectionClosed #ConnectionTimedOut #PrimitiveFailed #ZnParseError #ZnCharacterEncodingError #ZnUnknownScheme #ZnPortNotANumber #ZnTooManyDictionaryEntries #ZnEntityTooLarge) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestSafely..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestSafely..st index 46a8df37..5fc54611 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestSafely..st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestSafely..st @@ -2,8 +2,14 @@ request handling readRequestSafely: stream "Read request from stream, returning nil when the connection is closed or times out" - ^ [ self readRequest: stream ] - on: self readRequestExceptionSet - do: [ :exception | - self log debug: [ exception printString , ' while reading request' ]. - nil ] \ No newline at end of file + ^ [ + [ self readRequest: stream ] + on: self readRequestBadExceptionSet + do: [ :exception | + self log debug: [ exception printString , ' bad request while parsing' ]. + self writeResponseBad: exception on: stream. + nil ] ] + on: self readRequestTerminationExceptionSet + do: [ :exception | + self log debug: [ exception printString , ' while reading request' ]. + nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestTerminationExceptionSet.st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestTerminationExceptionSet.st new file mode 100644 index 00000000..bc3806eb --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestTerminationExceptionSet.st @@ -0,0 +1,8 @@ +private +readRequestTerminationExceptionSet + "Return the set of exceptions which, when they occur while reading a request, + are interpreted as equivalent to a timeout or connection close." + + ^ self + exceptionSet: + #(#ConnectionClosed #ConnectionTimedOut #PrimitiveFailed) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/serveConnectionsOn..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/serveConnectionsOn..st index c2d464e6..3e60b4a6 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/serveConnectionsOn..st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/serveConnectionsOn..st @@ -11,4 +11,4 @@ serveConnectionsOn: listeningSocket ensure: [ self log debug: 'Closing stream'. self closeSocketStream: stream ] ] ifCurtailed: [ self log debug: 'Destroying socket'. socket destroy ] ] forkAt: Processor lowIOPriority - named: self workerProcessName \ No newline at end of file + named: self workerProcessName \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseBad.on..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseBad.on..st new file mode 100644 index 00000000..21ed89ff --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseBad.on..st @@ -0,0 +1,12 @@ +private +writeResponseBad: exception on: stream + "When we failed to parse a request, write a bad request response before closing." + + | response | + response := ZnResponse new + statusLine: ZnStatusLine badRequest; + headers: ZnHeaders defaultResponseHeaders; + entity: (ZnEntity textCRLF: 'Bad Request ' , exception printString); + yourself. + response setConnectionClose. + self writeResponseSafely: response on: stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseSafely.on..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseSafely.on..st index ea76b3a6..e05513fa 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseSafely.on..st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseSafely.on..st @@ -3,5 +3,5 @@ writeResponseSafely: response on: stream "Write response to stream, when the connection is closed or times out we ignore this" [ self writeResponse: response on: stream ] - on: self writeResponseExceptionSet + on: self writeResponseTerminationExceptionSet do: [ :exception | self log debug: [ exception printString , ' while writing response' ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseExceptionSet.st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseTerminationExceptionSet.st similarity index 56% rename from repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseExceptionSet.st rename to repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseTerminationExceptionSet.st index 3bf01cf5..06e8cdc9 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseExceptionSet.st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseTerminationExceptionSet.st @@ -1,6 +1,6 @@ private -writeResponseExceptionSet - "Returnt the set of exceptions which, when they occur while writing a response, +writeResponseTerminationExceptionSet + "Return the set of exceptions which, when they occur while writing a response, are interpreted as equivalent to a timeout or connection close." ^ self exceptionSet: #(#ConnectionClosed #ConnectionTimedOut #PrimitiveFailed) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/methodProperties.json index 4331dab2..97296a90 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/methodProperties.json @@ -2,14 +2,17 @@ "class" : { }, "instance" : { + "augmentResponse:forRequest:" : "SvenVanCaekenberghe 5/19/2013 20:07", "closeSocketStream:" : "SvenVanCaekenberghe 9/5/2011 14:15", "exceptionSet:" : "SvenVanCaekenberghe 10/4/2011 09:46", - "executeOneRequestResponseOn:" : "SvenVanCaekenberghe 1/10/2013 15:06", + "executeOneRequestResponseOn:" : "SvenVanCaekenberghe 5/19/2013 20:06", "executeRequestResponseLoopOn:" : "SvenVanCaekenberghe 1/10/2013 15:08", "listenLoop" : "SvenVanCaekenberghe 12/10/2010 16:00", - "readRequestExceptionSet" : "SvenVanCaekenberghe 1/10/2013 15:22", - "readRequestSafely:" : "SvenVanCaekenberghe 1/10/2013 15:20", + "readRequestBadExceptionSet" : "SvenVanCaekenberghe 5/14/2013 10:43", + "readRequestSafely:" : "SvenVanCaekenberghe 5/14/2013 10:51", + "readRequestTerminationExceptionSet" : "SvenVanCaekenberghe 5/27/2013 14:57", "serveConnectionsOn:" : "SvenVanCaekenberghe 9/4/2011 12:38", "workerProcessName" : "SvenVanCaekenberghe 12/13/2010 16:33", - "writeResponseExceptionSet" : "SvenVanCaekenberghe 1/10/2013 15:23", - "writeResponseSafely:on:" : "SvenVanCaekenberghe 1/10/2013 15:19" } } + "writeResponseBad:on:" : "SvenVanCaekenberghe 5/14/2013 10:48", + "writeResponseSafely:on:" : "SvenVanCaekenberghe 5/14/2013 10:39", + "writeResponseTerminationExceptionSet" : "SvenVanCaekenberghe 5/14/2013 10:39" } } diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/properties.json b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/properties.json index fa32a2e4..5542f9bc 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "SvenVanCaekenberghe 12/15/2010 15:39", + "commentStamp" : "", "instvars" : [ ], "name" : "ZnMultiThreadedServer", diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/README.md b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/README.md index e30739e3..7e1bf14e 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/README.md +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/README.md @@ -4,4 +4,7 @@ My class side is a general API. My instance side is a factory. +ZnNetworkingUtils default socketStreamClass: SocketStream. +ZnNetworkingUtils default socketStreamClass: ZdcSocketStream. + Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/default..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/default..st index 9623ba14..f4a81dce 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/default..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/default..st @@ -1,3 +1,3 @@ accessing default: instance - Default := instance \ No newline at end of file + Default := instance \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/initialize.st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/initialize.st index 5055a149..247f4fd2 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/initialize.st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/initialize.st @@ -1,4 +1,6 @@ class initialization -initialize +initialize + "The default will try to use ZdcSocketStream and ZdcSecureSocketStream" + Default := self new. DefaultSocketStreamTimeout := 30 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/proxyAuthorizationHeaderValueToUrl..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/proxyAuthorizationHeaderValueToUrl..st index 03a862d6..2133c14d 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/proxyAuthorizationHeaderValueToUrl..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/proxyAuthorizationHeaderValueToUrl..st @@ -2,4 +2,4 @@ proxy proxyAuthorizationHeaderValueToUrl: url "Answer the Proxy-Authorization header value for HTTP access to url, or nil if none" - ^ self default proxyAuthorizationHeaderValueToUrl: url \ No newline at end of file + ^ self default proxyAuthorizationHeaderValueToUrl: url \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/serverSocketOn..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/serverSocketOn..st index c9a183bd..b41942a3 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/serverSocketOn..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/serverSocketOn..st @@ -1,4 +1,4 @@ networking serverSocketOn: port ^ self default - serverSocketOn: port \ No newline at end of file + serverSocketOn: port \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/serverSocketOn.interface..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/serverSocketOn.interface..st index 83f55175..8e62f055 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/serverSocketOn.interface..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/serverSocketOn.interface..st @@ -1,4 +1,4 @@ networking serverSocketOn: port interface: address ^ self default - serverSocketOn: port interface: address \ No newline at end of file + serverSocketOn: port interface: address \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/shouldProxyUrl..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/shouldProxyUrl..st index 251f8fb2..1d0a02f5 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/shouldProxyUrl..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/shouldProxyUrl..st @@ -2,4 +2,4 @@ proxy shouldProxyUrl: url "Answer if we should proxy HTTP access to url." - ^ self default shouldProxyUrl: url \ No newline at end of file + ^ self default shouldProxyUrl: url \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/socketStreamOn..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/socketStreamOn..st index 55a99847..6ec24bfc 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/socketStreamOn..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/socketStreamOn..st @@ -1,4 +1,4 @@ networking socketStreamOn: socket ^ self default - socketStreamOn: socket \ No newline at end of file + socketStreamOn: socket \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/socketStreamToUrl..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/socketStreamToUrl..st index 8f9a270f..f517a6f4 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/socketStreamToUrl..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/class/socketStreamToUrl..st @@ -1,4 +1,4 @@ networking socketStreamToUrl: url ^ self default - socketStreamToUrl: url \ No newline at end of file + socketStreamToUrl: url \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/httpProxyPassword.st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/httpProxyPassword.st index 90a7e51d..5c02cd25 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/httpProxyPassword.st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/httpProxyPassword.st @@ -2,4 +2,4 @@ proxy httpProxyPassword "Return the password for proxy authorization" - ^ NetworkSystemSettings proxyPassword \ No newline at end of file + ^ NetworkSystemSettings proxyPassword \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/initialize.st index 901043bd..b3001437 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/initialize.st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/initialize.st @@ -1,5 +1,5 @@ initialize-release initialize super initialize. - self socketStreamClass: SocketStream. + self socketStreamClass: (Smalltalk globals at: #ZdcSocketStream ifAbsent: [ SocketStream ]). self secureSocketStreamClass: (Smalltalk globals at: #ZdcSecureSocketStream ifAbsent: [ nil ]) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/isProxySet.st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/isProxySet.st index 7a617db0..b95644ff 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/isProxySet.st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/isProxySet.st @@ -2,4 +2,4 @@ proxy isProxySet "Should a proxy be used ?" - ^ NetworkSystemSettings useHTTPProxy \ No newline at end of file + ^ NetworkSystemSettings useHTTPProxy \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/proxyAuthorizationHeaderValueToUrl..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/proxyAuthorizationHeaderValueToUrl..st index 7ba63f78..b2780bbe 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/proxyAuthorizationHeaderValueToUrl..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/proxyAuthorizationHeaderValueToUrl..st @@ -4,4 +4,4 @@ proxyAuthorizationHeaderValueToUrl: url ^ (self isProxyAuthorizationRequired and: [ self shouldProxyUrl: url ]) ifTrue: [ 'Basic ', (ZnUtils encodeBase64: (self httpProxyUser, ':', self httpProxyPassword)) ] - ifFalse: [ nil ] \ No newline at end of file + ifFalse: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/setServerSocketOptions..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/setServerSocketOptions..st index 8f5405c9..1e7f02a9 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/setServerSocketOptions..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/setServerSocketOptions..st @@ -3,4 +3,4 @@ setServerSocketOptions: socket socket setOption: 'TCP_NODELAY' value: 1; setOption: 'SO_SNDBUF' value: self class socketBufferSize; - setOption: 'SO_RCVBUF' value: self class socketBufferSize \ No newline at end of file + setOption: 'SO_RCVBUF' value: self class socketBufferSize \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/methodProperties.json index 9cf42fa8..52405fc7 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/methodProperties.json @@ -4,7 +4,7 @@ "default:" : "SvenVanCaekenberghe 5/2/2011 22:08", "defaultSocketStreamTimeout" : "SvenVanCaekenberghe 6/18/2011 22:44", "defaultSocketStreamTimeout:" : "SvenVanCaekenberghe 6/18/2011 22:45", - "initialize" : "SvenVanCaekenberghe 6/19/2011 16:37", + "initialize" : "SvenVanCaekenberghe 5/18/2013 20:03", "ipAddressToString:" : "SvenVanCaekenberghe 1/7/2011 19:42", "listenBacklogSize" : "SvenVanCaekenberghe 3/24/2011 08:05", "proxyAuthorizationHeaderValueToUrl:" : "SvenVanCaekenberghe 6/16/2011 22:43", @@ -21,7 +21,7 @@ "httpProxyPort" : "SvenVanCaekenberghe 6/16/2011 22:51", "httpProxyServer" : "SvenVanCaekenberghe 6/16/2011 22:54", "httpProxyUser" : "MarcoSchmidt 6/17/2011 15:25", - "initialize" : "SvenVanCaekenberghe 11/10/2011 13:43", + "initialize" : "SvenVanCaekenberghe 5/20/2013 15:31", "isProxyAuthorizationRequired" : "SvenVanCaekenberghe 6/16/2011 22:55", "isProxySet" : "SvenVanCaekenberghe 6/16/2011 22:55", "proxyAuthorizationHeaderValueToUrl:" : "SvenVanCaekenberghe 6/16/2011 22:49", diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/properties.json b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/properties.json index 98a10e7c..a9b4f8b4 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/properties.json @@ -5,7 +5,7 @@ "classvars" : [ "Default", "DefaultSocketStreamTimeout" ], - "commentStamp" : "SvenVanCaekenberghe 5/2/2011 22:05", + "commentStamp" : "", "instvars" : [ "socketStreamClass", "secureSocketStreamClass" ], diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/README.md b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/README.md new file mode 100644 index 00000000..d345e66a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/README.md @@ -0,0 +1,57 @@ +I am ZnReadEvalPrintDelegate, I export a REPL Web Service. +You can use this service to work with a headless image. + + ZnReadEvalPrintDelegate startInServerOn: 1701. + + ZnClient new + url: 'http://localhost:1701/repl'; + contents: '42 factorial'; + post. + +Web Service API: + + POST /repl + +Here is an example terminal session: + +$ curl http://localhost:1701/repl +# Pharo Smalltalk REPL. POST expressions to evaluate +# Here is one way (type ctrl-d to end input) +curl -X POST -H'Content-Type:text/plain' --data-binary @- http://localhost:1701/repl + +$ curl -X POST -H'Content-Type:text/plain' -d '42 factorial' http://localhost:1701/repl +1405006117752879898543142606244511569936384000000000 + +$ curl -X POST -H'Content-Type:text/plain' --data-binary @- http://localhost:1701/repl +{ (1 to: 10) sum. (1 to: 10) average } +{55. (11/2)} + +There is error handling as well: + +$ curl -X POST -H'Content-Type:text/plain' --data-binary @- http://localhost:1701/repl +1 plus: 2 +MessageNotUnderstood: SmallInteger>>plus: +SmallInteger(Object)>>doesNotUnderstand: #plus: + Receiver: 1 + Arguments and temporary variables: + aMessage: plus: 2 + exception: MessageNotUnderstood: SmallInteger>>plus: + resumeValue: nil + Receiver's instance variables: +1 +UndefinedObject>>DoIt +Compiler>>evaluate:in:to:notifying:ifFail:logged: +Compiler>>evaluate:in:to:notifying:ifFail: +Compiler>>evaluate:in:to: +ZnReadEvalPrintDelegate>>evaluate: in Block: [| result |... +BlockClosure>>on:do: +ZnReadEvalPrintDelegate>>evaluate: in Block: [:out | [| result |... +String class(SequenceableCollection class)>>new:streamContents: + +WARNING: never open this service beyond your local network ! +This service gives you absolute control over and access to everything in your image. +For example, the following will kill your image: + +$ curl -X POST -H'Content-Type:text/plain' -d 'Smalltalk quitPrimitive' http://localhost:1701/repl + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/class/startInServerOn..st b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/class/startInServerOn..st new file mode 100644 index 00000000..0d2f272d --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/class/startInServerOn..st @@ -0,0 +1,11 @@ +public +startInServerOn: port + "Start a new server bound to port on the local network running a REPL web service" + + "self startInServerOn: 1701" + + ^ (ZnServer on: port) + bindingAddress: NetNameResolver loopBackAddress; + delegate: self new; + start; + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/evaluate..st b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/evaluate..st new file mode 100644 index 00000000..5885a487 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/evaluate..st @@ -0,0 +1,14 @@ +private +evaluate: string + | output | + output := String streamContents: [ :out | + [ | result | + result := Compiler evaluate: string. + out print: result; cr ] + on: Error, ParserNotification + do: [ :exception | + out print: exception; cr. + exception signalerContext printDetails: out. + exception signalerContext sender debugStack: 8 on: out ]. + out cr ]. + ^ String lf join: output lines \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/handleGetRequest..st b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/handleGetRequest..st new file mode 100644 index 00000000..041afc61 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/handleGetRequest..st @@ -0,0 +1,3 @@ +request handling +handleGetRequest: request + ^ ZnResponse ok: (ZnEntity text: (self helpText format: { request server port })) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/handlePostRequest..st b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/handlePostRequest..st new file mode 100644 index 00000000..a3e823b0 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/handlePostRequest..st @@ -0,0 +1,3 @@ +request handling +handlePostRequest: request + ^ ZnResponse ok: (ZnEntity text: (self evaluate: request entity contents)) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/handleRequest..st b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/handleRequest..st new file mode 100644 index 00000000..0aafac17 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/handleRequest..st @@ -0,0 +1,11 @@ +public +handleRequest: request + request uri firstPathSegment = #repl + ifTrue: [ + request method = #GET + ifTrue: [ + ^ self handleGetRequest: request ]. + (request method = #POST and: [ request hasEntity and: [ request contentType isBinary not ] ]) + ifTrue: [ + ^ self handlePostRequest: request ] ]. + ^ ZnResponse notFound: request uri \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/helpText.st b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/helpText.st new file mode 100644 index 00000000..fae90012 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/helpText.st @@ -0,0 +1,6 @@ +private +helpText + ^ '# Pharo Smalltalk REPL. POST expressions to evaluate\# Here is one way (type ctrl-d to end input)\curl -X POST -H''Content-Type:text/plain'' --data-binary @- http://localhost:{1}/repl\' + withCRs + replaceAll: Character cr with: Character lf; + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/value..st b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/value..st new file mode 100644 index 00000000..17bc2c2a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/instance/value..st @@ -0,0 +1,5 @@ +public +value: request + "I implement the generic #value: message as equivalent to #handleRequest:" + + ^ self handleRequest: request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/methodProperties.json new file mode 100644 index 00000000..7523ccac --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + "startInServerOn:" : "SvenVanCaekenberghe 5/15/2013 22:05" }, + "instance" : { + "evaluate:" : "SvenVanCaekenberghe 5/16/2013 11:17", + "handleGetRequest:" : "SvenVanCaekenberghe 5/16/2013 09:51", + "handlePostRequest:" : "SvenVanCaekenberghe 5/16/2013 09:54", + "handleRequest:" : "SvenVanCaekenberghe 5/16/2013 09:52", + "helpText" : "SvenVanCaekenberghe 5/15/2013 21:53", + "value:" : "SvenVanCaekenberghe 5/15/2013 13:44" } } diff --git a/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/properties.json b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/properties.json new file mode 100644 index 00000000..a6bc5aef --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnReadEvalPrintDelegate.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-HTTP-Client-Server", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnReadEvalPrintDelegate", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/^equals.st new file mode 100644 index 00000000..d5c0a96f --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/^equals.st @@ -0,0 +1,3 @@ +comparing += other + ^ super = other and: [ self requestLine = other requestLine ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/acceptsEncodingGzip.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/acceptsEncodingGzip.st new file mode 100644 index 00000000..dad6b6f4 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/acceptsEncodingGzip.st @@ -0,0 +1,5 @@ +testing +acceptsEncodingGzip + | value | + value := self headers at: 'Accept-Encoding' ifAbsent: [ ^ false ]. + ^ value includesSubstring: 'gzip' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/hash.st new file mode 100644 index 00000000..9d70e563 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ super hash bitXor: self requestLine hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/isHttp10.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/isHttp10.st index db6f2af3..40d53e18 100644 --- a/repository/Zinc-HTTP.package/ZnRequest.class/instance/isHttp10.st +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/isHttp10.st @@ -1,3 +1,3 @@ testing isHttp10 - ^ self requestLine isHttp10 \ No newline at end of file + ^ self requestLine isHttp10 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/method.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/method.st index aba1bbf2..7ffbb99d 100644 --- a/repository/Zinc-HTTP.package/ZnRequest.class/instance/method.st +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/method.st @@ -1,3 +1,3 @@ accessing method - ^ self requestLine method \ No newline at end of file + ^ self requestLine method \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/relativeUrl.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/relativeUrl.st index 53539a0f..3b3975d5 100644 --- a/repository/Zinc-HTTP.package/ZnRequest.class/instance/relativeUrl.st +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/relativeUrl.st @@ -1,3 +1,3 @@ accessing relativeUrl - ^ self url asRelativeUrl \ No newline at end of file + ^ self url asRelativeUrl \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/requestLine.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/requestLine.st index db286b88..52d68382 100644 --- a/repository/Zinc-HTTP.package/ZnRequest.class/instance/requestLine.st +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/requestLine.st @@ -1,3 +1,3 @@ accessing requestLine - ^ requestLine \ No newline at end of file + ^ requestLine \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/uri.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/uri.st index e4c78a86..f78faddf 100644 --- a/repository/Zinc-HTTP.package/ZnRequest.class/instance/uri.st +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/uri.st @@ -1,3 +1,3 @@ accessing uri - ^ self requestLine uri \ No newline at end of file + ^ self requestLine uri \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/url.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/url.st index bea105e8..cb17cb0c 100644 --- a/repository/Zinc-HTTP.package/ZnRequest.class/instance/url.st +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/url.st @@ -1,3 +1,3 @@ accessing url - ^ self uri \ No newline at end of file + ^ self uri \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnRequest.class/methodProperties.json index 57802535..3fe9b3ed 100644 --- a/repository/Zinc-HTTP.package/ZnRequest.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnRequest.class/methodProperties.json @@ -8,11 +8,14 @@ "post:" : "SvenVanCaekenberghe 9/21/2010 11:08", "put:" : "SvenVanCaekenberghe 9/21/2010 11:08" }, "instance" : { + "=" : "SvenVanCaekenberghe 5/22/2013 10:39", "absoluteUrl" : "SvenVanCaekenberghe 1/7/2013 09:06", "accept" : "SvenVanCaekenberghe 8/17/2011 16:28", + "acceptsEncodingGzip" : "SvenVanCaekenberghe 5/19/2013 20:35", "authorization" : "SvenVanCaekenberghe 2/23/2012 22:05", "basicAuthentication" : "SvenVanCaekenberghe 2/23/2012 22:12", "cookies" : "SvenVanCaekenberghe 8/30/2011 22:41", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:37", "host" : "SvenVanCaekenberghe 1/7/2013 11:44", "isHttp10" : "SvenVanCaekenberghe 12/14/2010 14:33", "isHttp11" : "SvenVanCaekenberghe 12/14/2010 14:33", diff --git a/repository/Zinc-HTTP.package/ZnRequestLine.class/class/empty.st b/repository/Zinc-HTTP.package/ZnRequestLine.class/class/empty.st index 901b2445..b596f9fd 100644 --- a/repository/Zinc-HTTP.package/ZnRequestLine.class/class/empty.st +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/class/empty.st @@ -2,4 +2,4 @@ instance creation empty ^ self new version: ZnConstants defaultHTTPVersion; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequestLine.class/class/method.uri..st b/repository/Zinc-HTTP.package/ZnRequestLine.class/class/method.uri..st index 4e577b3c..9ff00957 100644 --- a/repository/Zinc-HTTP.package/ZnRequestLine.class/class/method.uri..st +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/class/method.uri..st @@ -4,4 +4,4 @@ method: method uri: uri method: method; uri: uri; version: ZnConstants defaultHTTPVersion; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/^equals.st new file mode 100644 index 00000000..abc66841 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/^equals.st @@ -0,0 +1,6 @@ +comparing += other + self class = other class ifFalse: [ ^ false ]. + ^ self method = other method + and: [ self uri asRelativeUrl = other uri asRelativeUrl + and: [ self version = other version ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/hash.st new file mode 100644 index 00000000..5c2248b4 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ (self method hash bitXor: self uri hash) bitXor: self version hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/method..st b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/method..st index 2448a2d1..c4d6be98 100644 --- a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/method..st +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/method..st @@ -2,4 +2,4 @@ accessing method: string method := ZnConstants knownHTTPMethods detect: [ :each | each = string ] - ifNone: [ (ZnUnknownHttpMethod method: string) signal ] \ No newline at end of file + ifNone: [ (ZnUnknownHttpMethod method: string) signal ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/version..st b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/version..st index 48c7c4b7..4b94e77b 100644 --- a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/version..st +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/version..st @@ -2,4 +2,4 @@ accessing version: string version := ZnConstants knownHTTPVersions detect: [ :each | each = string ] - ifNone: [ (ZnUnknownHttpVersion version: string) signal ] \ No newline at end of file + ifNone: [ (ZnUnknownHttpVersion version: string) signal ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/writeOn..st index 8fe25f51..2a620081 100644 --- a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/writeOn..st @@ -6,4 +6,4 @@ writeOn: stream (ZnNetworkingUtils shouldProxyUrl: self uri) ifTrue: [ self uri printOn: writeStream ] ifFalse: [ self uri printPathQueryFragmentOn: writeStream ]. - writeStream space; nextPutAll: self version; nextPutAll: String crlf \ No newline at end of file + writeStream space; nextPutAll: self version; nextPutAll: String crlf \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequestLine.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnRequestLine.class/methodProperties.json index 797c11c1..07d11b2d 100644 --- a/repository/Zinc-HTTP.package/ZnRequestLine.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/methodProperties.json @@ -4,6 +4,8 @@ "method:uri:" : "SvenVanCaekenberghe 9/6/2010 15:18", "readFrom:" : "SvenVanCaekenberghe 9/6/2010 13:50" }, "instance" : { + "=" : "SvenVanCaekenberghe 5/22/2013 11:19", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:33", "isHttp10" : "SvenVanCaekenberghe 12/14/2010 14:30", "isHttp11" : "SvenVanCaekenberghe 12/14/2010 14:31", "method" : "SvenVanCaekenberghe 9/6/2010 13:45", diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/^equals.st new file mode 100644 index 00000000..f92f7594 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/^equals.st @@ -0,0 +1,3 @@ +comparing += other + ^ super = other and: [ self statusLine = other statusLine ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/hasContentEncoding.st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/hasContentEncoding.st new file mode 100644 index 00000000..b2864a96 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/hasContentEncoding.st @@ -0,0 +1,3 @@ +testing +hasContentEncoding + ^ self headers includesKey: 'Content-Encoding' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/hasTransferEncoding.st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/hasTransferEncoding.st new file mode 100644 index 00000000..d8400863 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/hasTransferEncoding.st @@ -0,0 +1,3 @@ +testing +hasTransferEncoding + ^ self headers includesKey: 'Transfer-Encoding' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/hash.st new file mode 100644 index 00000000..37d1460a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ super hash bitXor: self status hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/isAuthenticationRequired.st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/isAuthenticationRequired.st index ecdb7ecd..8c2857df 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/instance/isAuthenticationRequired.st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/isAuthenticationRequired.st @@ -1,3 +1,3 @@ testing isAuthenticationRequired - ^ self code = 401 \ No newline at end of file + ^ self code = 401 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/isNotFound.st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/isNotFound.st index 79587d9b..2536a9fc 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/instance/isNotFound.st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/isNotFound.st @@ -1,3 +1,3 @@ testing isNotFound - ^ self code = 404 \ No newline at end of file + ^ self code = 404 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/setContentEncodingGzip.st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/setContentEncodingGzip.st new file mode 100644 index 00000000..2fa95166 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/setContentEncodingGzip.st @@ -0,0 +1,3 @@ +accessing +setContentEncodingGzip + self headers at: 'Content-Encoding' put: 'gzip' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/setTransferEncodingChunked.st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/setTransferEncodingChunked.st new file mode 100644 index 00000000..574897d6 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/setTransferEncodingChunked.st @@ -0,0 +1,5 @@ +accessing +setTransferEncodingChunked + self headers + at: 'Transfer-Encoding' put: 'chunked'; + clearContentLength \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnResponse.class/methodProperties.json index f430aac9..6a655c39 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnResponse.class/methodProperties.json @@ -11,10 +11,14 @@ "unauthorized" : "MattKennedy 9/30/2010 15:46", "unauthorized:" : "SvenVanCaekenberghe 1/6/2013 22:48" }, "instance" : { + "=" : "SvenVanCaekenberghe 5/22/2013 10:39", "addCookie:" : "SvenVanCaekenberghe 8/30/2011 21:44", "code" : "SvenVanCaekenberghe 9/16/2010 20:44", "cookies" : "SvenVanCaekenberghe 8/30/2011 21:53", "entityReaderOn:" : "SvenVanCaekenberghe 5/1/2011 19:02", + "hasContentEncoding" : "SvenVanCaekenberghe 5/19/2013 21:08", + "hasTransferEncoding" : "SvenVanCaekenberghe 5/19/2013 21:09", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:37", "isAuthenticationRequired" : "SvenVanCaekenberghe 1/12/2011 10:03", "isCreated" : "SvenVanCaekenberghe 9/14/2011 14:43", "isError" : "SvenVanCaekenberghe 4/20/2012 10:26", @@ -28,8 +32,10 @@ "printOn:" : "SvenVanCaekenberghe 12/14/2010 12:54", "readEntityFrom:" : "SvenVanCaekenberghe 6/28/2011 10:36", "readHeaderFrom:" : "SvenVanCaekenberghe 9/21/2010 11:34", + "setContentEncodingGzip" : "SvenVanCaekenberghe 5/19/2013 20:24", "setKeepAliveFor:" : "SvenVanCaekenberghe 12/14/2010 14:34", "setLocation:" : "SvenVanCaekenberghe 9/17/2010 15:19", + "setTransferEncodingChunked" : "SvenVanCaekenberghe 5/20/2013 13:02", "setWWWAuthenticate:" : "SvenVanCaekenberghe 9/17/2010 15:19", "status" : "SvenVanCaekenberghe 9/7/2010 18:35", "statusLine" : "SvenVanCaekenberghe 9/6/2010 22:36", diff --git a/repository/Zinc-HTTP.package/ZnServer.class/README.md b/repository/Zinc-HTTP.package/ZnServer.class/README.md index cdfae533..58634e47 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/README.md +++ b/repository/Zinc-HTTP.package/ZnServer.class/README.md @@ -3,8 +3,8 @@ I am a facade for controlling a default server implementation. I delegate my public class protocol methods to #defaultServerClass. -ZnServer startDefaultOn: 1701. -ZnClient get: 'http://localhost:1701'. + ZnServer startDefaultOn: 1701. + ZnClient new get: 'http://localhost:1701'. Subclasses can register with me to have start/stop sent to them on System startUp/shutDown. The default server instance will be registered automatically when it is started. diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/defaultOn..st b/repository/Zinc-HTTP.package/ZnServer.class/class/defaultOn..st index 87ec86ad..d8dbe8f1 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/class/defaultOn..st +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/defaultOn..st @@ -7,4 +7,4 @@ defaultOn: portNumber if it was running stop it, change the port if necessary. Delegate to the default server class." - ^ self defaultServerClass defaultOn: portNumber \ No newline at end of file + ^ self defaultServerClass defaultOn: portNumber \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/defaultServerClass.st b/repository/Zinc-HTTP.package/ZnServer.class/class/defaultServerClass.st index 1314b199..6665e2f8 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/class/defaultServerClass.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/defaultServerClass.st @@ -2,4 +2,4 @@ accessing defaultServerClass "Return the default ZnServer subclass to use" - ^ ZnManagingMultiThreadedServer \ No newline at end of file + ^ ZnManagingMultiThreadedServer \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/on..st b/repository/Zinc-HTTP.package/ZnServer.class/class/on..st index 87e82df9..a1d11612 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/class/on..st +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/on..st @@ -4,4 +4,4 @@ on: portNumber send #start to it to start listening. Delegate to the default server class." - ^ self defaultServerClass on: portNumber \ No newline at end of file + ^ self defaultServerClass on: portNumber \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/startDefaultOn..st b/repository/Zinc-HTTP.package/ZnServer.class/class/startDefaultOn..st index 3eb76d98..8f592539 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/class/startDefaultOn..st +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/startDefaultOn..st @@ -9,4 +9,4 @@ startDefaultOn: portNumber Starting the default server will register it automatically. Delegate to the default server class." - ^ self defaultServerClass startDefaultOn: portNumber \ No newline at end of file + ^ self defaultServerClass startDefaultOn: portNumber \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/startOn..st b/repository/Zinc-HTTP.package/ZnServer.class/class/startOn..st index 47ed30f4..e679a75f 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/class/startOn..st +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/startOn..st @@ -3,4 +3,4 @@ startOn: portNumber "Instanciate and return a new listener on a given port and start listening. Delegate to the default server class." - ^ self defaultServerClass startOn: portNumber \ No newline at end of file + ^ self defaultServerClass startOn: portNumber \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/stopDefault.st b/repository/Zinc-HTTP.package/ZnServer.class/class/stopDefault.st index 6b2dfb9f..bddbea23 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/class/stopDefault.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/stopDefault.st @@ -4,4 +4,4 @@ stopDefault Return the stopped instance, if any. Delegate to the default server class." - ^ self defaultServerClass stopDefault \ No newline at end of file + ^ self defaultServerClass stopDefault \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/bindingAddress.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/bindingAddress.st index 52945902..92b02550 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/bindingAddress.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/bindingAddress.st @@ -3,4 +3,4 @@ bindingAddress "Return the interface address we are (or will be) listening on. Nil means that we are (or will be) listening on all/any interfaces." - ^ self optionAt: #bindAddress ifAbsent: [ nil ] \ No newline at end of file + ^ self optionAt: #bindAddress ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/debugMode.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/debugMode.st index 57193561..b53a35f8 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/debugMode.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/debugMode.st @@ -2,4 +2,4 @@ options debugMode "Return whether we are in debug mode, the default is false." - ^ self optionAt: #debugMode ifAbsent: [ false ] \ No newline at end of file + ^ self optionAt: #debugMode ifAbsent: [ false ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/isListening.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/isListening.st index f1a512d6..1d3d4a3b 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/isListening.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/isListening.st @@ -2,4 +2,4 @@ testing isListening "Return true when I have a valid server socket listening at the correct port" - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/isRunning.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/isRunning.st index 04f10155..95e26467 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/isRunning.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/isRunning.st @@ -2,4 +2,4 @@ testing isRunning "Return true when I am running" - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/logServerErrorDetails.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/logServerErrorDetails.st index 5d78ca42..c33ac610 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/logServerErrorDetails.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/logServerErrorDetails.st @@ -2,4 +2,4 @@ options logServerErrorDetails "Return whether we log server error details including a short strack trace, the default is true." - ^ self optionAt: #debugMode ifAbsent: [ true ] \ No newline at end of file + ^ self optionAt: #debugMode ifAbsent: [ true ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/port.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/port.st index e7f0d0c4..1203c5d7 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/port.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/port.st @@ -2,4 +2,4 @@ options port "Return the integer port number we are (or will be) listening on" - ^ self optionAt: #port ifAbsent: [ 1701 ] \ No newline at end of file + ^ self optionAt: #port ifAbsent: [ 1701 ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/process.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/process.st index d2650cf7..03806743 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/process.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/process.st @@ -3,4 +3,4 @@ process "Return the process that is running my main listening loop. Will be nil when I am not running" - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/serverSocket.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/serverSocket.st index 215bb0e7..e4889fb0 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/serverSocket.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/serverSocket.st @@ -3,4 +3,4 @@ serverSocket "Return the server socket that I am using. Will be nil when I am not running" - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/stop..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/stop..st index a0390254..95672400 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/stop..st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/stop..st @@ -4,4 +4,4 @@ stop: unregister If unregister is true, unregister me from the list of managed instances. Does nothing when I am not running" - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/stop.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/stop.st index 97805d13..f620b0e8 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/stop.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/stop.st @@ -3,4 +3,4 @@ stop "Stop me. I will stop listening on my port for incoming HTTP connections. Does nothing when I am not running" - self stop: true \ No newline at end of file + self stop: true \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/useGzipCompressionAndChunking..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/useGzipCompressionAndChunking..st new file mode 100644 index 00000000..515322a8 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/useGzipCompressionAndChunking..st @@ -0,0 +1,5 @@ +options +useGzipCompressionAndChunking: boolean + "Set whether we should try to use gzip content encoding and chunked transfer encoding, the default being false." + + self optionAt: #useGzipCompressionAndChunking put: boolean \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/useGzipCompressionAndChunking.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/useGzipCompressionAndChunking.st new file mode 100644 index 00000000..4b0cd89e --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/useGzipCompressionAndChunking.st @@ -0,0 +1,5 @@ +options +useGzipCompressionAndChunking + "Return whether we should try to use gzip content encoding and chunked transfer encoding, the default is false." + + ^ self optionAt: #useGzipCompressionAndChunking ifAbsent: [ false ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnServer.class/methodProperties.json index 13cc0214..2a4a2410 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnServer.class/methodProperties.json @@ -52,4 +52,6 @@ "stop" : "SvenVanCaekenberghe 12/22/2011 12:19", "stop:" : "SvenVanCaekenberghe 12/22/2011 12:19", "unregister" : "SvenVanCaekenberghe 6/19/2011 12:00", - "url" : "SvenVanCaekenberghe 1/4/2013 13:52" } } + "url" : "SvenVanCaekenberghe 1/4/2013 13:52", + "useGzipCompressionAndChunking" : "SvenVanCaekenberghe 5/19/2013 20:10", + "useGzipCompressionAndChunking:" : "SvenVanCaekenberghe 5/19/2013 20:11" } } diff --git a/repository/Zinc-HTTP.package/ZnServer.class/properties.json b/repository/Zinc-HTTP.package/ZnServer.class/properties.json index 5f2b233b..b7b778d7 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnServer.class/properties.json @@ -5,7 +5,7 @@ "classvars" : [ "AlwaysRestart", "ManagedServers" ], - "commentStamp" : "SvenVanCaekenberghe 12/22/2011 12:01", + "commentStamp" : "", "instvars" : [ "options", "sessionManager" ], diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/inactivity.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/inactivity.st index 034632b6..4e39c303 100644 --- a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/inactivity.st +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/inactivity.st @@ -1,3 +1,3 @@ accessing inactivity - ^ DateAndTime now - modified \ No newline at end of file + ^ DateAndTime now - modified \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/removeAttribute..st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/removeAttribute..st index 1b8185c7..53aaccc8 100644 --- a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/removeAttribute..st +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/removeAttribute..st @@ -1,3 +1,3 @@ accessing removeAttribute: key - attributes removeKey: key ifAbsent: [ ] \ No newline at end of file + attributes removeKey: key ifAbsent: [ ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/README.md b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/README.md index 312f3226..b5331b0f 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/README.md +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/README.md @@ -1,14 +1,12 @@ I am ZnSingleThreadedServer. I can be customized with a delegate (#handleRequest:) and an authenticator (#authenticateRequest:do:). -ZnSingleThreadedServer startDefaultOn: 1701. -ZnSingleThreadedServer default authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). -ZnClient get: 'http://localhost:1701' username: 'foo' password: 'secret'. + ZnSingleThreadedServer startDefaultOn: 1701. + ZnSingleThreadedServer default authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). + ZnClient new username: 'foo' password: 'secret'; get: 'http://localhost:1701'. I use ZnDefaultServerDelegate when no other delegate is set. I am single threaded, I run in a single process. I close connections after each request/response cycle. -Acknowledgement: basic design copied from Blackfoot. - Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/augmentResponse.forRequest..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/augmentResponse.forRequest..st new file mode 100644 index 00000000..83b707d0 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/augmentResponse.forRequest..st @@ -0,0 +1,10 @@ +request handling +augmentResponse: response forRequest: request + "Our handler has produced response for request, manipulate the response before writing it" + + (self useGzipCompressionAndChunking and: [ response contentType isBinary not ]) + ifTrue: [ + (request acceptsEncodingGzip and: [ response hasContentEncoding not ]) + ifTrue: [ response setContentEncodingGzip ]. + response hasTransferEncoding + ifFalse: [ response setTransferEncodingChunked ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/lastRequest.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/lastRequest.st index ecbbcbbf..5a394f2e 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/lastRequest.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/lastRequest.st @@ -3,4 +3,4 @@ lastRequest "The last request that I received. Will only be tracked when logging is enabled" - ^ lastRequest \ No newline at end of file + ^ lastRequest \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/lastResponse.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/lastResponse.st index 51de7f01..333279c5 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/lastResponse.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/lastResponse.st @@ -3,4 +3,4 @@ lastResponse "The last response that I sent. Will only be tracked when logging is enabled" - ^ lastResponse \ No newline at end of file + ^ lastResponse \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logToStandardOutput.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logToStandardOutput.st index 9a8915e5..2e453c11 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logToStandardOutput.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logToStandardOutput.st @@ -2,4 +2,4 @@ logging logToStandardOutput "Setup logging to the OS level standard output stream" - self log addListener: ZnStandardOutputLogger new \ No newline at end of file + self log addListener: ZnStandardOutputLogger new \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logToTranscript.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logToTranscript.st index 24bc331d..0e17969e 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logToTranscript.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logToTranscript.st @@ -2,4 +2,4 @@ logging logToTranscript "Setup logging to the Transcript" - self log addListener: ZnTranscriptLogger new \ No newline at end of file + self log addListener: ZnTranscriptLogger new \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/onRequestRespond..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/onRequestRespond..st index 29926cc9..fbe5d0b6 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/onRequestRespond..st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/onRequestRespond..st @@ -4,4 +4,4 @@ onRequestRespond: block On any incoming request, block will be executed with the request as argument to produce a valid response." - self delegate: (ZnValueDelegate with: block) \ No newline at end of file + self delegate: (ZnValueDelegate with: block) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/start.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/start.st index 9206c00f..a8324356 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/start.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/start.st @@ -8,4 +8,4 @@ start self class default = self ifTrue: [ self register ]. process := [ [ self listenLoop ] repeat ] forkAt: Processor highIOPriority - named: self serverProcessName \ No newline at end of file + named: self serverProcessName \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/writeResponse.on..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/writeResponse.on..st index 493fa766..b3b9427c 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/writeResponse.on..st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/writeResponse.on..st @@ -4,4 +4,4 @@ writeResponse: response on: stream response writeOn: stream. stream flush. - self logResponse: response \ No newline at end of file + self logResponse: response \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/methodProperties.json index b02f8d7f..c9dac95f 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/methodProperties.json @@ -9,6 +9,7 @@ "stopDefault" : "SvenVanCaekenberghe 12/22/2011 11:59" }, "instance" : { "acceptWaitTimeout" : "SvenVanCaekenberghe 12/31/2012 16:08", + "augmentResponse:forRequest:" : "SvenVanCaekenberghe 5/19/2013 21:12", "authenticateAndDelegateRequest:" : "SvenVanCaekenberghe 1/10/2013 15:12", "authenticateRequest:do:" : "SvenVanCaekenberghe 1/10/2013 15:13", "closeDelegate" : "SvenVanCaekenberghe 1/10/2013 15:14", diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/properties.json b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/properties.json index 126f02c4..5c4a711e 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/properties.json @@ -4,7 +4,7 @@ "Default" ], "classvars" : [ ], - "commentStamp" : "SvenVanCaekenberghe 12/15/2010 15:38", + "commentStamp" : "", "instvars" : [ "process", "serverSocket", diff --git a/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/^equals.st new file mode 100644 index 00000000..f8b148cd --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/^equals.st @@ -0,0 +1,6 @@ +comparing += other + self class = other class ifFalse: [ ^ false ]. + ^ self code = other code + and: [ self version = other version + and: [ self reason = other reason ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/hash.st new file mode 100644 index 00000000..43d6f494 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ (self code hash bitXor: self version hash) bitXor: self reason hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/version..st b/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/version..st index 767134b2..4cfbde6d 100644 --- a/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/version..st +++ b/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/version..st @@ -2,4 +2,4 @@ accessing version: string version := ZnConstants knownHTTPVersions detect: [ :each | each = string ] - ifNone: [ (ZnUnknownHttpVersion version: version) signal ] \ No newline at end of file + ifNone: [ (ZnUnknownHttpVersion version: version) signal ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/writeOn..st index 8e04da58..13e42cca 100644 --- a/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnStatusLine.class/instance/writeOn..st @@ -4,4 +4,4 @@ writeOn: stream writeStream := ZnBivalentWriteStream on: stream. writeStream nextPutAll: self version; space. self code printOn: writeStream. - writeStream space; nextPutAll: self reason; nextPutAll: String crlf \ No newline at end of file + writeStream space; nextPutAll: self reason; nextPutAll: String crlf \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStatusLine.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnStatusLine.class/methodProperties.json index 3a5ab45a..26b09143 100644 --- a/repository/Zinc-HTTP.package/ZnStatusLine.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnStatusLine.class/methodProperties.json @@ -17,8 +17,10 @@ "seeOther" : "NickAger 5/10/2011 09:07", "unauthorized" : "NickAger 5/10/2011 09:02" }, "instance" : { + "=" : "SvenVanCaekenberghe 5/22/2013 10:30", "code" : "SvenVanCaekenberghe 9/6/2010 15:49", "code:" : "DamienPollet 8/4/2011 14:04", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:33", "printCodeAndReasonOn:" : "SvenVanCaekenberghe 12/14/2010 10:57", "printOn:" : "SvenVanCaekenberghe 8/18/2011 14:34", "readFrom:" : "DamienPollet 8/4/2011 14:04", diff --git a/repository/Zinc-HTTP.package/ZnStreamingEntity.class/class/matches..st b/repository/Zinc-HTTP.package/ZnStreamingEntity.class/class/matches..st new file mode 100644 index 00000000..847245f0 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnStreamingEntity.class/class/matches..st @@ -0,0 +1,6 @@ +testing +matches: mimeType + "I have no designated mime type, I can handle all content. + See #concreteSubclassForType: " + + ^ false \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStreamingEntity.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnStreamingEntity.class/methodProperties.json index 014d2323..23088ac0 100644 --- a/repository/Zinc-HTTP.package/ZnStreamingEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnStreamingEntity.class/methodProperties.json @@ -1,6 +1,7 @@ { "class" : { "designatedMimeType" : "SvenVanCaekenberghe 9/15/2010 19:23", + "matches:" : "SvenVanCaekenberghe 6/4/2013 14:43", "readFrom:usingType:andLength:" : "SvenVanCaekenberghe 9/15/2010 17:13" }, "instance" : { "close" : "SvenVanCaekenberghe 8/18/2011 12:51", diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/README.md b/repository/Zinc-HTTP.package/ZnStringEntity.class/README.md index 8b41225c..502f7d1e 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/README.md +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/README.md @@ -5,4 +5,6 @@ I am a ZnEntity. Optionally, an encoding is used to convert to and from bytes. The default encoding it UTF-8. +Note that content length is the encoded byte count, not the number of characters in the string. + Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/class/matches..st b/repository/Zinc-HTTP.package/ZnStringEntity.class/class/matches..st new file mode 100644 index 00000000..fdc01e84 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/class/matches..st @@ -0,0 +1,6 @@ +testing +matches: mimeType + "I have no designated mime type, I can handle all non-binary content. + See #concreteSubclassForType: " + + ^ false \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/^equals.st b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/^equals.st new file mode 100644 index 00000000..227ddc48 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/^equals.st @@ -0,0 +1,3 @@ +comparing += other + ^ super = other and: [ self string = other string ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/computeContentLength.st b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/computeContentLength.st index bde0aa64..78101831 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/computeContentLength.st +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/computeContentLength.st @@ -1,5 +1,4 @@ private computeContentLength self string isNil ifTrue: [ ^ self ]. - self initializeEncoder. - contentLength := encoder encodedByteCountForString: string \ No newline at end of file + contentLength := self encoder encodedByteCountForString: string \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/hash.st b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/hash.st new file mode 100644 index 00000000..e25d331c --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ super hash bitXor: self string hash \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/isEmpty.st b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/isEmpty.st index bb30b2fc..1436f2a8 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/isEmpty.st +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/isEmpty.st @@ -1,3 +1,3 @@ testing isEmpty - ^ self string isNil or: [ self string isEmpty ] \ No newline at end of file + ^ self string isNil or: [ self string isEmpty ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readFrom..st b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readFrom..st index 9ce445c1..92c094cb 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readFrom..st +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readFrom..st @@ -1,5 +1,29 @@ initialize-release readFrom: stream - self contentLength isNil - ifTrue: [ self readUpToEndFrom: stream ] - ifFalse: [ self readLimitedFrom: stream ] \ No newline at end of file + | buffer totalRead read readStream stringStream total | + total := self contentLength. + readStream := total ifNotNil: [ ZnLimitedReadStream on: stream limit: total ] ifNil: [ stream ]. + buffer := String new: (ZnUtils streamingBufferSize min: (total ifNil: [ ZnUtils streamingBufferSize ])). + stringStream := nil. + totalRead := 0. + self initializeEncoder. + [ readStream atEnd ] whileFalse: [ + [ read := encoder readInto: buffer startingAt: 1 count: buffer size fromStream: readStream ] + on: ZnByteStringBecameWideString + do: [ :notification | + buffer := notification wideString. + stringStream ifNotNil: [ | wideString position | + position := stream position. + wideString := WideString from: stringStream originalContents. + stringStream on: wideString; setFrom: position + 1 to: position ]. + notification pass ]. + totalRead := totalRead + read. + totalRead > ZnConstants maximumEntitySize + ifTrue: [ ZnEntityTooLarge signal ]. + stringStream ifNil: [ + readStream atEnd + ifTrue: [ ^ self string: (buffer copyFrom: 1 to: read) ] + ifFalse: [ stringStream := (total ifNil: [ buffer species new ] ifNotNil: [ buffer species new: total ]) writeStream ] ]. + stringStream next: read putAll: buffer startingAt: 1. + ZnUtils signalProgress: totalRead total: total ]. + self string: (stringStream ifNil: [ String new ] ifNotNil: [ stringStream contents ]) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readLimitedFrom..st b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readLimitedFrom..st deleted file mode 100644 index bd03cab7..00000000 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readLimitedFrom..st +++ /dev/null @@ -1,15 +0,0 @@ -private -readLimitedFrom: stream - | readStream newString bufferSize index | - self contentLength > ZnConstants maximumEntitySize - ifTrue: [ ZnEntityTooLarge signal ]. - readStream := ZnLimitedReadStream on: stream limit: self contentLength. - self initializeEncoder. - bufferSize := ZnUtils streamingBufferSize. - index := 0. - newString := String new: self contentLength streamContents: [ :stringStream | - [ readStream atEnd ] whileFalse: [ - stringStream nextPut: (encoder nextFromStream: readStream). - ((index := index + 1) \\ bufferSize) = 0 - ifTrue: [ ZnUtils signalProgress: index total: self contentLength ] ] ]. - self string: newString \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readUpToEndFrom..st b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readUpToEndFrom..st deleted file mode 100644 index ea4ba721..00000000 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readUpToEndFrom..st +++ /dev/null @@ -1,15 +0,0 @@ -private -readUpToEndFrom: stream - | newString limit bufferSize index | - limit := ZnConstants maximumEntitySize. - self initializeEncoder. - bufferSize := ZnUtils streamingBufferSize. - index := 0. - newString := String streamContents: [ :stringStream | - [ [ stream atEnd or: [ stream peek isNil ] ] whileFalse: [ - stringStream nextPut: (encoder nextFromStream: stream). - (index := index + 1) < limit ifFalse: [ ZnEntityTooLarge signal ]. - (index \\ bufferSize) = 0 ifTrue: [ ZnUtils signalProgress: index total: nil ] ] ] - on: ConnectionClosed - do: [ :exception | exception return ] ]. - self string: newString \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/writeOn..st b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/writeOn..st index 9f7aa4db..e6da8f8c 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/writeOn..st @@ -1,9 +1,11 @@ writing writeOn: stream - | bufferSize | + | totalWritten toWrite total | self initializeEncoder. - bufferSize := ZnUtils streamingBufferSize. - self string doWithIndex: [ :each :index | - encoder nextPut: each toStream: stream. - (index \\ bufferSize) = 0 - ifTrue: [ ZnUtils signalProgress: index total: self contentLength ] ] \ No newline at end of file + totalWritten := 0. + total := string size. + [ totalWritten < total ] whileTrue: [ + toWrite := ZnUtils streamingBufferSize min: (total - totalWritten). + encoder next: toWrite putAll: string startingAt: totalWritten + 1 toStream: stream. + totalWritten := totalWritten + toWrite. + ZnUtils signalProgress: totalWritten total: total ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnStringEntity.class/methodProperties.json index 94915dee..853c29db 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/methodProperties.json @@ -2,23 +2,24 @@ "class" : { "designatedMimeType" : "SvenVanCaekenberghe 12/1/2010 20:58", "html:" : "SvenVanCaekenberghe 12/2/2010 12:22", + "matches:" : "SvenVanCaekenberghe 6/4/2013 14:44", "text:" : "SvenVanCaekenberghe 12/2/2010 12:22", "xml:" : "SvenVanCaekenberghe 12/11/2011 18:12" }, "instance" : { - "computeContentLength" : "SvenVanCaekenberghe 5/2/2012 16:19", + "=" : "SvenVanCaekenberghe 5/22/2013 10:44", + "computeContentLength" : "SvenVanCaekenberghe 5/23/2013 12:27", "contentLength" : "SvenVanCaekenberghe 1/27/2011 10:26", "contents" : "SvenVanCaekenberghe 12/1/2010 20:57", "encoder" : "SvenVanCaekenberghe 12/14/2010 11:59", "encoder:" : "SvenVanCaekenberghe 12/3/2010 15:11", "hasEncoder" : "SvenVanCaekenberghe 12/14/2010 12:09", + "hash" : "SvenVanCaekenberghe 5/22/2013 10:43", "initializeEncoder" : "SvenVanCaekenberghe 12/17/2012 15:41", "invalidateContentLength" : "SvenVanCaekenberghe 12/2/2010 12:20", "isEmpty" : "SvenVanCaekenberghe 5/1/2011 17:54", "printContentsOn:" : "SvenVanCaekenberghe 12/14/2010 11:20", - "readFrom:" : "SvenVanCaekenberghe 5/1/2011 13:03", - "readLimitedFrom:" : "SvenVanCaekenberghe 9/17/2012 15:40", + "readFrom:" : "SvenVanCaekenberghe 6/11/2013 15:34", "readStream" : "SvenVanCaekenberghe 12/1/2010 20:57", - "readUpToEndFrom:" : "SvenVanCaekenberghe 9/17/2012 15:48", "string" : "SvenVanCaekenberghe 12/1/2010 20:57", "string:" : "SvenVanCaekenberghe 12/3/2010 15:11", - "writeOn:" : "SvenVanCaekenberghe 9/17/2012 15:25" } } + "writeOn:" : "SvenVanCaekenberghe 5/22/2013 10:25" } } diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/properties.json b/repository/Zinc-HTTP.package/ZnStringEntity.class/properties.json index 4ae5e3e4..4cb867de 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "SvenVanCaekenberghe 1/18/2011 11:05", + "commentStamp" : "", "instvars" : [ "string", "encoder" ], diff --git a/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/README.md b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/README.md new file mode 100644 index 00000000..3b8fe0ee --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/README.md @@ -0,0 +1,13 @@ +I am ZnTestRunnerDelegate, a web service interface to run unit tests. + + ZnTestRunnerDelegate startInServerOn: 1701. + + ZnEasy get: 'http://localhost:1701/sunit/ZnUtilsTests'. + ZnEasy get: 'http://localhost:1701/sunit/ZnUtilsTests/testBase64'. + +Web Service API: + + GET /sunit/MyTestCase + GET /sunit/MyTestCase/testOne + +Part of Zinc HTTP Components \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/class/startInServerOn..st b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/class/startInServerOn..st new file mode 100644 index 00000000..bc2e61ba --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/class/startInServerOn..st @@ -0,0 +1,11 @@ +public +startInServerOn: port + "Start a new server bound to port on the local network running a test runner web service" + + "self startInServerOn: 1701" + + ^ (ZnServer on: port) + bindingAddress: NetNameResolver loopBackAddress; + delegate: self new; + start; + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/handleGetRequest..st b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/handleGetRequest..st new file mode 100644 index 00000000..6e48921c --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/handleGetRequest..st @@ -0,0 +1,19 @@ +request handling +handleGetRequest: request + | testCaseClass selector result | + testCaseClass := Smalltalk globals + at: request uri pathSegments second asSymbol + ifAbsent: [ ^ self notFoundResponse: 'No such class, ', request uri pathSegments second ]. + (testCaseClass inheritsFrom: TestCase) + ifFalse: [ ^ self notFoundResponse: testCaseClass printString, ' is not a TestCase subclass' ]. + selector := request uri pathSegments size = 3 + ifTrue: [ request uri pathSegments third asSymbol ] + ifFalse: [ nil ]. + (selector isNil or: [ testCaseClass canUnderstand: selector ]) + ifFalse: [ ^ self notFoundResponse: selector, ' is not a method of ', testCaseClass printString ]. + result := selector + ifNil: [ testCaseClass suite run ] + ifNotNil: [ testCaseClass run: selector ]. + ^ result runCount = result passedCount + ifTrue: [ ZnResponse ok: (ZnEntity textCRLF: result printString) ] + ifFalse: [ ZnResponse serverError: result printString ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/handleRequest..st b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/handleRequest..st new file mode 100644 index 00000000..e301e4db --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/handleRequest..st @@ -0,0 +1,10 @@ +public +handleRequest: request + (request method = #GET + and: [ + request uri firstPathSegment = #sunit + and: [ + request uri pathSegments size > 1 ] ]) + ifTrue: [ + ^ self handleGetRequest: request ]. + ^ ZnResponse notFound: request uri \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/notFoundResponse..st b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/notFoundResponse..st new file mode 100644 index 00000000..f1c766e6 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/notFoundResponse..st @@ -0,0 +1,7 @@ +request handling +notFoundResponse: message + ^ ZnResponse new + statusLine: ZnStatusLine notFound; + headers: ZnHeaders defaultResponseHeaders; + entity: (ZnEntity textCRLF: 'Not Found: ', message); + yourself. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/value..st b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/value..st new file mode 100644 index 00000000..17bc2c2a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/instance/value..st @@ -0,0 +1,5 @@ +public +value: request + "I implement the generic #value: message as equivalent to #handleRequest:" + + ^ self handleRequest: request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/methodProperties.json new file mode 100644 index 00000000..035c4529 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + "startInServerOn:" : "SvenVanCaekenberghe 5/27/2013 17:16" }, + "instance" : { + "handleGetRequest:" : "SvenVanCaekenberghe 5/28/2013 10:29", + "handleRequest:" : "SvenVanCaekenberghe 5/27/2013 17:20", + "notFoundResponse:" : "SvenVanCaekenberghe 5/28/2013 10:28", + "value:" : "SvenVanCaekenberghe 5/27/2013 17:16" } } diff --git a/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/properties.json b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/properties.json new file mode 100644 index 00000000..a6953db4 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnTestRunnerDelegate.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-HTTP-Client-Server", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnTestRunnerDelegate", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSession.class/instance/addCredential..st b/repository/Zinc-HTTP.package/ZnUserAgentSession.class/instance/addCredential..st index b44b7464..fddf648b 100644 --- a/repository/Zinc-HTTP.package/ZnUserAgentSession.class/instance/addCredential..st +++ b/repository/Zinc-HTTP.package/ZnUserAgentSession.class/instance/addCredential..st @@ -1,3 +1,3 @@ accessing addCredential: aCredential - self credentials at: aCredential domain, '@', aCredential realm put: aCredential \ No newline at end of file + self credentials at: aCredential domain, '@', aCredential realm put: aCredential \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/bufferedWriteStreamOn..st b/repository/Zinc-HTTP.package/ZnUtils.class/class/bufferedWriteStreamOn..st new file mode 100644 index 00000000..ef828ae6 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnUtils.class/class/bufferedWriteStreamOn..st @@ -0,0 +1,5 @@ +streaming +bufferedWriteStreamOn: stream + ^ (ZnBufferedWriteStream on: stream) + sizeBuffer: self streamingBufferSize; + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/decodeBase64..st b/repository/Zinc-HTTP.package/ZnUtils.class/class/decodeBase64..st index f3922306..f11ead7d 100644 --- a/repository/Zinc-HTTP.package/ZnUtils.class/class/decodeBase64..st +++ b/repository/Zinc-HTTP.package/ZnUtils.class/class/decodeBase64..st @@ -1,3 +1,3 @@ conversions decodeBase64: string - ^ string base64Decoded \ No newline at end of file + ^ string base64Decoded \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/nextPutAll.on..st b/repository/Zinc-HTTP.package/ZnUtils.class/class/nextPutAll.on..st new file mode 100644 index 00000000..a40a7299 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnUtils.class/class/nextPutAll.on..st @@ -0,0 +1,13 @@ +streaming +nextPutAll: collection on: stream + | totalWritten toWrite total | + total := collection size. + "Do not enter the loop for small sizes" + total < self streamingBufferSize + ifTrue: [ ^ stream nextPutAll: collection ]. + totalWritten := 0. + [ totalWritten < total ] whileTrue: [ + toWrite := self streamingBufferSize min: (total - totalWritten). + stream next: toWrite putAll: collection startingAt: totalWritten + 1. + totalWritten := totalWritten + toWrite. + self signalProgress: totalWritten total: total ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/readUpToEnd.limit..st b/repository/Zinc-HTTP.package/ZnUtils.class/class/readUpToEnd.limit..st index 0ca2ba48..cfd80b26 100644 --- a/repository/Zinc-HTTP.package/ZnUtils.class/class/readUpToEnd.limit..st +++ b/repository/Zinc-HTTP.package/ZnUtils.class/class/readUpToEnd.limit..st @@ -1,14 +1,20 @@ streaming readUpToEnd: inputStream limit: limit - | species bufferSize buffer totalRead | + | species bufferSize buffer totalRead outputStream | bufferSize := limit ifNil: [ self streamingBufferSize ] ifNotNil: [ self streamingBufferSize min: limit ]. species := inputStream isBinary ifTrue: [ ByteArray ] ifFalse: [ String ]. buffer := species new: bufferSize. totalRead := 0. - ^ species streamContents: [ :out | - [ inputStream atEnd ] whileFalse: [ | readCount | - readCount := inputStream readInto: buffer startingAt: 1 count: bufferSize. - (limit notNil and: [ (totalRead := totalRead + readCount) > limit ]) - ifTrue: [ ZnEntityTooLarge signal ]. - out next: readCount putAll: buffer startingAt: 1. - self signalProgress: totalRead total: limit ] ] \ No newline at end of file + outputStream := nil. + [ inputStream atEnd ] whileFalse: [ | readCount | + readCount := inputStream readInto: buffer startingAt: 1 count: bufferSize. + totalRead := totalRead + readCount. + (limit notNil and: [ totalRead > limit ]) + ifTrue: [ ZnEntityTooLarge signal ]. + outputStream ifNil: [ + inputStream atEnd + ifTrue: [ ^ buffer copyFrom: 1 to: readCount ] + ifFalse: [ outputStream := (species new: bufferSize) writeStream ] ]. + outputStream next: readCount putAll: buffer startingAt: 1. + self signalProgress: totalRead total: limit ]. + ^ outputStream ifNil: [ species new ] ifNotNil: [ outputStream contents ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnUtils.class/methodProperties.json index 5ce4029d..0e74a9f3 100644 --- a/repository/Zinc-HTTP.package/ZnUtils.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnUtils.class/methodProperties.json @@ -1,5 +1,6 @@ { "class" : { + "bufferedWriteStreamOn:" : "SvenVanCaekenberghe 5/18/2013 18:58", "capitalizeString:" : "SvenVanCaekenberghe 9/10/2010 20:14", "currentProcessID" : "SvenVanCaekenberghe 12/14/2010 13:10", "decodeBase64:" : "SvenVanCaekenberghe 3/21/2011 20:11", @@ -7,9 +8,9 @@ "httpDate" : "SvenVanCaekenberghe 9/16/2010 15:52", "httpDate:" : "SvenVanCaekenberghe 6/28/2011 10:55", "isCapitalizedString:" : "SvenVanCaekenberghe 8/18/2011 14:15", - "nextPutAll:on:chunked:" : "SvenVanCaekenberghe 8/18/2011 14:15", + "nextPutAll:on:" : "SvenVanCaekenberghe 5/28/2013 13:04", "parseHttpDate:" : "SeanDeNigris 5/10/2012 12:19", - "readUpToEnd:limit:" : "SvenVanCaekenberghe 9/17/2012 14:46", + "readUpToEnd:limit:" : "SvenVanCaekenberghe 6/11/2013 14:04", "signalProgress:total:" : "SvenVanCaekenberghe 1/15/2013 15:52", "streamFrom:to:" : "SvenVanCaekenberghe 9/17/2012 14:47", "streamFrom:to:size:" : "SvenVanCaekenberghe 9/17/2012 14:47", diff --git a/repository/Zinc-HTTP.package/monticello.meta/categories.st b/repository/Zinc-HTTP.package/monticello.meta/categories.st index 859af1db..d9af114e 100644 --- a/repository/Zinc-HTTP.package/monticello.meta/categories.st +++ b/repository/Zinc-HTTP.package/monticello.meta/categories.st @@ -1,7 +1,7 @@ +SystemOrganization addCategory: #'Zinc-HTTP'! SystemOrganization addCategory: #'Zinc-HTTP-Client-Server'! SystemOrganization addCategory: #'Zinc-HTTP-Core'! SystemOrganization addCategory: #'Zinc-HTTP-Deprecated'! -SystemOrganization addCategory: #'Zinc-HTTP-Dynamic-Variables'! SystemOrganization addCategory: #'Zinc-HTTP-Exceptions'! SystemOrganization addCategory: #'Zinc-HTTP-Logging'! SystemOrganization addCategory: #'Zinc-HTTP-Streaming'! diff --git a/repository/Zinc-HTTP.package/monticello.meta/version b/repository/Zinc-HTTP.package/monticello.meta/version index 63148f7f..2b6de5e8 100644 --- a/repository/Zinc-HTTP.package/monticello.meta/version +++ b/repository/Zinc-HTTP.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-HTTP-SvenVanCaekenberghe.343' message 'Bugfix in ZnSingleThreadedServer>>#logServerError:' id 'a6ebbdf3-96b6-48fd-82ca-663bddafeeea' date '1 February 2013' time '4:22:47.297 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.342' message 'ZnServer''s #handleRequestProtected: will now also do a #logServerError unless #logServerDetails is false - this gives exception, signaller context details and a stack trace of depth 8 when an unhandled error occurs.' id 'c2255d27-bd92-4e23-965c-7be405ac857e' date '31 January 2013' time '11:56:38.399 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.341' message 'Moving ZnMonticelloServerDelegate from Zinc-HTTP-Client-Server to Zinc-FileSystem and Zinc-FileSystem-Legacy' id '6459b7f2-49d1-4e4e-80cf-fff3f83a7969' date '30 January 2013' time '7:56:27.865 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.340' message 'Extended ZnClient>>#url: to accept the new user info (username and password) component of ZnUrl when present; ZnRequestLine>>#uri: now explicitely calls #enforceKnownScheme' id '46c6777e-07a4-41e9-8505-26f3db1f0438' date '30 January 2013' time '7:45:09.928 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.339' message 'Bugfix to ZnApplicationFormUrlEncodedEntity>>#readFrom: which failed when content-length was not specified (Thx Jan van de Sandt)' id '60911520-b3de-4382-89bb-aa6376640012' date '25 January 2013' time '2:46:15.698 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.338' message 'added ZnMessage>>#writeToTranscript' id '6fc88bfa-6111-4190-8ced-939a040c67ef' date '24 January 2013' time '10:07:31.979 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.337' message 'fix ZnUtils class>>#signalProgress:total: bug when total was nil: #format: index should be 1 not 0 (Thx Camillo Bruni !)' id '0cfbd214-abe9-4f6e-8a14-7184b312428b' date '15 January 2013' time '4:02:00.402 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.336' message 'Some internal ZnServer refactoring/cleanup; primary change is that ZnCurrentServer is now set over the whole request/response cycle including the reading/writing and not just the handleRequest (this was needed for WebSockets)' id 'd8ac8c4a-3914-4295-bcb3-e0ce7b22f745' date '10 January 2013' time '3:56:00.469 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.335' message 'ZnResponse class>>#redirect: and #created: now accept absolute URLs as well (thx Jan van de Sandt) New ZnRequest API (all suggested by Jan van de Sandt): #host to return the Host: header field as ZnUrl #relativeUrl to explicitely request the request line uri as a relative URL #absoluteUrl to combine the request line URL with the host URL into an absolute URL #mergedFields to return a multi value dictionary combining query fields and application url encoded form fields ZnClient>>#redirectUrl now uses ZnUrl>>#inContextOf: Reimplemented ZnApplicationUrlEncodedEntity>>#addAll: and ZnHeaders>>#addAll: using ZnMultiValueDictionary>>#addAllMulti: ' id '085c1ffd-3ce3-46a7-81ab-d504bd7f0dd8' date '7 January 2013' time '12:37:54.317 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.334' message 'Added ZnServer>>#url and the #serverUrl option, as well as #scheme. Now sorting all handlers in ZnDefaultServerDelegate>>#generateHelp ' id '4db52577-5ad9-4194-acf8-68abbcff67a3' date '4 January 2013' time '2:25:43.403 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.333' message 'refactored ZnSingleThreadedServer and subclasses (added #authenticateAndDelegateRequest: and protocol ''request handling''); added ZnServer #route option; extended ZnServerSessionManager>>#newSessionId to use the server route when set' id '2391f87a-1b49-4491-bd8f-722a1257d12e' date '31 December 2012' time '5:06:10.473 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.332' message 'fixed a typo/bug in ZnServerSessionManager>>#sessionFor: (expired sessions were not removed correctly)' id '89ca824f-fd84-4c63-aed7-d581dcca5a93' date '25 December 2012' time '9:28:10.255 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.331' message 'Backported a Pharo 2.0 patch: ZnNetworkingUtils>>#shouldProxyUrl: now takes the new NetworkSystemSettings class>>#isAnExceptionFor: API into account, when it is available (for pre 2.0 compatibility)' id 'b1ec8d0d-1367-4de3-94e6-c6e8fe1a8831' date '24 December 2012' time '2:30:59.718 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.330' message 'added ZnSingleThreadedServer>>#handleRequestProtected: with a general and global error handler that normally returns an HTTP server error unless the server is in #debugMode' id 'e049c94f-6d29-4d21-a235-7b4ce689b090' date '23 December 2012' time '6:27:48.552 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.329' message 'added ZnServerSession>>#attributeKeys and #removeAttribute:' id 'afc731a8-d1f6-4f5a-846d-c13ade5ab68a' date '21 December 2012' time '12:03:00.347 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.328' message 'Replaced ZnPercentEncodingWrong with ZnCharacterEncodingError; Using #beLenient ZnCharacterEncoder instanciation in ZnStringEntity>>#initializeEncoder since apparently even Google sends spurious Latin1 characters' id 'a6d2358e-3ca9-43c5-b4dc-8e885ad9895d' date '17 December 2012' time '4:22:16.061 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.327' message 'creation of Zinc-Character-Encoding-[Core|Tests] by moving various classes out of Zinc-HTTP' id '501cdb52-158d-4020-b01e-cab709a4cab6' date '16 December 2012' time '5:02:53.705 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.326' message 'introduction and usage of ZnCharacterEncodingError exception; rewrote ZnBufferedReadStream>>#upToEnd and ZnCharacterReadStream>>#upToEnd' id 'a384cd05-21fe-4e48-b5fd-1ed7e7c73cf4' date '16 December 2012' time '4:35:39.825 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.325' message 'fixed a typo in a ZnBase64Encoder class method' id '55fd39e4-2495-4a6b-8db3-135cc9ba6f3b' date '16 December 2012' time '12:59:27.354 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.324' message 'changed the implementation of ZnByteEncoder to correctly honor and dleal with holes in official mappings' id '50d334f7-91c4-479b-8d44-1e76a945754f' date '15 December 2012' time '10:02:55.944 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.323' message 'modified ZnByteEncoder to use its own byte to Unicode mapping tables; this includes the change that latin1 is no longer mapped to a null encoder' id '819adf4a-fa93-4994-9a80-640fdf069311' date '15 December 2012' time '8:09:25.224 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.322' message 'finished the implementation of ZnBase64Encoder' id '95c632af-ec48-489c-bb94-8d44cc989787' date '15 December 2012' time '2:11:13.178 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.321' message 'added empty ZnBase64Encoder' id 'cc44a426-3f95-4b1c-9e3c-095bba14632e' date '14 December 2012' time '7:53:38.399 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.320' message 'added ZnPercentEncoder' id 'a32bf1d1-469c-4274-9d5c-efeeb2443df4' date '13 December 2012' time '11:31:31.3 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.319' message 'reworked/simplified some ZnClient internals - removed the state concept and instance variable - removed the #resetRequestIfNeeded concept and method; added ZnClient>>#resetEntity; added ZnClient>>#isCreated and #isNotFound note: this might make some semantic differences for people heavily reusing ZnClient instances' id '0da03bdc-ec26-42c0-b04b-f1cd13f6f9bc' date '12 December 2012' time '10:40:34.575 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.318' message 'moved HierarchicalUrl>>#asZnUrl from Zinc-Resource-Meta-Core back to Zinc-HTTP' id 'b7c4b025-6901-428f-9a4d-04544f32b6dd' date '11 December 2012' time '10:15:27.849 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.317' message 'added ZnResponse>>#isNotFound' id 'c7b7a02b-2b16-4b98-9d41-1115e6fac2f9' date '10 December 2012' time '9:33:44.217 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.316' message 'moving ZnUrl, ZnMimeType and related support classes to a new, independent package Zinc-Resource-Meta-Core (and unit tests to Zinc-Resource-Meta-Tests); extended ZnUrl to allow for some simple file:// URLs' id '9e15776d-4fc6-4b0b-91be-8552bc8cfe29' date '8 December 2012' time '9:15:34.588 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.315' message 'added ZnServerSession>>#attributeAt:ifAbsentPut:' id '4790203a-4259-4a33-a31f-dc867a2a38ab' date '7 December 2012' time '1:27:17.159 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.314' message 'Improved performance of ZnUTF8Encoder #nextFromStream: and #nextPut:toStream: by making the ASCII path really fast and by unrolling the block closure creation and usage; Added ZnCharacterReadStream>>#peekFor:; FIxed ZnCharacterReadStream>>#encoding:' id 'edc26e38-09d5-4e60-9c66-3ff28fe9bdd1' date '3 December 2012' time '3:00:01.318 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.313' message 'Added ZnBufferedReadStream>>#peekFor: Added ZnBufferedReadStream class>>on:do: improved some comments' id 'ec815554-cc36-435d-805d-67a2ad49465f' date '2 December 2012' time '8:03:06.008 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.312' message 'added ZnBufferedReadStream (from STON); extended ZnBufferedWriteStream (with #next:putAll:startingAt: logic); added tests for these' id '6ac64f4c-3d4b-4d29-bfab-8b181d8668b6' date '30 November 2012' time '10:59:36.512 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.311' message 'initial version of optional server session management; ZnMessage and subclasses now implement #server and #session implemented via dynamic & process local variables respectively; moved ZnHTTPSocketFacaded to deprecated; started new category Zinc-HTTP-Variables; extended some default server delegate responses, added ''session'' response with counter test' id 'aa1d7f79-a906-4a72-a1f6-675ed32982f6' date '11 November 2012' time '8:14:30.261 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.310' message 'bugfix: ZnManagingMultiThreadedServer was overwriting the wrong #stop method (thx Pavel Krivanek)' id 'a50aebff-8910-4553-95d7-b89a9e97a8f4' date '10 October 2012' time '10:48:30.703 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.309' message 'merged with 305 (thx paul)' id '3da1e6fc-76e0-4efa-8abe-7f334d9644bc' date '2 October 2012' time '6:59:51.4 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.308' message 'added ZnClient>>#setAcceptEncodingGzip as well as ZnClient>>#isNotModified' id '25811184-aeab-4d41-88f0-59277712dac0' date '30 September 2012' time '9:03:35.529 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.307' message 'Modified ZnServer class>>#startUp: to use a deferred startup action to start all registered servers; this should allow for normal error handling when something goes wrong initializing server sockets (thanks Igor Stasenko for the fix; thanks Denis Kudriashov for the error report)' id '9387492b-daa2-4ebf-a49d-44950586bda3' date '29 September 2012' time '9:00:49.72 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.306' message 'extended ZnResponse>>isRedirect with 303 and 307' id '26b8c486-2b3b-46be-942e-d6ac67f0ac62' date '27 September 2012' time '10:07:25.394 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MarcusDenker.305' message 'Issue 6697: Zn+Zdc Update 2012-09-19 http://code.google.com/p/pharo/issues/detail?id=6697 Issue 6699: Share binding of metaclass methods http://code.google.com/p/pharo/issues/detail?id=6699 ' id '04e33e2c-1223-4626-87fb-3f4d73052504' date '21 September 2012' time '1:50:10.861 pm' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.304' message 'Added option ZnServer class>>#alwaysRestart: to fine tune the shutDown/startUp behavior, defaults to previous behavior' id 'dc02fe1f-869b-49a9-a281-f297b576181e' date '18 September 2012' time '1:51:37.424 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.303' message 'Refactored ZnNetworkingUtils>>#socketStreamToUrlDirectly: to honor/use the correct timeout both when doing a DNS lookup as well as during connect by using NetNameResolver directly as well as using #openConnectionToHost:port:timeout' id '9f5a3863-fc08-470d-b8a1-d44169952a66' date '18 September 2012' time '10:03:40.965 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.302' message 'Added HTTPProgress signalling to ZnByteArrayEntity, ZnStringEntity as well as ZnUtils class>>#readUpToEnd:limit: Refactored streaming and HTTPProgress signalling in ZnUtils by addition of ZnUtils class>>#[streamingBufferSize|signalProgress:total:]' id 'd3e6d62a-ed00-40c7-aa9a-476111595f2f' date '17 September 2012' time '4:08:37.913 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.301' message 'Fixed a bug where HTTPProgress notifications would trigger a retry. Thanks Camillo Bruni for finding this problem and suggesting a solution. Now, retries are only triggered by (NetworkError, ZnParseError), while the #ifFailBlock will be trigger on any Error. Furthermore, #noteRetrying: and noteIgnoringExceptionOnReusedConnection: will report on the actual exception. The default #ifFailBlock is now [ :exception | exception pass ] for some cleaner code. ' id '85632c09-a6c4-40e9-b29b-1c5e86d07ead' date '17 September 2012' time '10:10:49.096 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.300' message 'removal of all classes in Zinc-HTTP-Deprecated - ZnClientOld - ZnFixedClient - ZnExtendedFixedClient - ZnUserAgent - ZnHttpClient - ZnUserAgentSettings as well as all their unit test classes' id 'a09fb75e-0ba5-489c-bc1b-435481a08164' date '5 September 2012' time '1:59:02.586 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.299' message 'changed maximumEntitySize concept from a normal class variable on ZnConstants to a dynamic/process-specific variable ZnMaximumEntitySize; added the option #maximumEntitySize to ZnServer' id 'f16b9f44-38a7-403e-9743-57fe2e25e800' date '5 September 2012' time '1:21:19.536 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.298' message 'introduction of options in ZnServer; refactored port, bindingAddress, delegate, authenticator and reader as options' id '9f5f3ab5-6fc9-43f3-9815-579cb01d954c' date '5 September 2012' time '11:24:50.089 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.297' message '#includesSubString: becomes #includesSubstring:' id '1b207b45-8524-4e16-b2c4-64337eadb784' date '27 August 2012' time '9:41:58.935 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.296' message 'added [ZnDefaultServerDelegate|ZnMonticelloServerDelegate]>>#value:' id '8f44e26a-2144-48ce-8e30-6239fcf3d50d' date '22 August 2012' time '3:00:39.571 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.295' message 'fixed type (wws should be wss); patched ZnNetworkingUtils>>#socketStreamToUrlDirectly: to treat wss as needing a #connect' id '233bcdca-806d-4bce-b09f-13ab7b81c9b0' date '22 August 2012' time '11:15:01.137 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.294' message 'extended ZnMultithreadedServer>>#executeRequestResponseLoopOn: with two new features related to the response objects generated by delegates: - the response object now also can answer whether or not it #wantsConnectionClose - after a response is written (flushed and logged), the response objects gets a chance to continue using the connection in the current thread/process for its own custom purposes through #useConnection: ' id 'c0e261d1-ad93-46e1-8b01-c5eedc7d32af' date '21 August 2012' time '1:29:19.798 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.293' message 'changed ZnSingleThreadedServer>>#serveConnectionOn: to no longer fork a worker thread/process as this is against the key idea of the class (this in not really active code, so this cleanup in more theoretical)' id '03d30d07-c250-483b-8525-91f709584ce7' date '20 August 2012' time '2:10:54.485 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.292' message 'fixed an offset bug in ZnUtils>>#streamFrom:to: (thx again, Chris Bailey)' id '932b7c3b-0892-48e0-a156-87cd9c4661cf' date '3 August 2012' time '10:49:38.054 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.291' message 'various fixes to ZnChunkedReadStream>>#readInto:startingAt:count: (thx Chris Bailey for reporting the problem); added ZdcALimitedReadStream>>#nextInto: as it is used by Fuel' id '3d8c50cd-2d7b-459f-89f3-b77a23dccfdd' date '2 August 2012' time '11:26:02.302 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.290' message 'added ZnUtils class>>#streamFrom:to: to copy one stream to another using a buffer without knowing the size upfront and thus using #atEnd; patched ZnStreamingEntity>>#writeOn: to use the new method when the content-length is nil or 0' id 'b7c44798-970d-4ab0-9da4-e73a095c91c3' date '20 July 2012' time '1:11:50.126 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.289' message 'allow for the schemes ws and wss to be equivalent to http and https' id '894699cd-a923-4fe0-b71c-6c629dde4f89' date '20 July 2012' time '10:33:30.682 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.288' message 'removed usage of OS version from ZnUserAgentSettings class>>#platformDetails' id '9811cc67-6a03-4c46-a67a-952727699d1c' date '16 July 2012' time '11:49:14.402 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.287' message 'Changed ZnStreamingEntity>>#readFrom: to no longer switch to non-binary - this was wrong anyway since no encoding was used' id '285ffb16-c7b3-4f82-9c19-7db828769d6e' date '13 July 2012' time '8:30:16.337 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.286' message 'trying to restore ancestry and some lost changes: merged Zinc-HTTP-SvenVanCaekenberghe.282 and Zinc-HTTP-SvenVanCaekenberghe.283' id '55810020-2df7-4b64-9872-4eccb8db92da' date '12 July 2012' time '10:12:57.048 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.285' message 'enabled HTTPProgress signalling during streaming up/downloads. introduction of ZnSignalProgress with #enabled method' id 'e992fd76-efde-4b31-b4b4-bd468f8176f2' date '12 July 2012' time '9:58:00.055 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.284' message 'bugfix related to Pharo 2.0 - changed ZnClient>>#dowloadEntityTo: to use ZnFileSystemUtils class>>#newFileNamed:do: instead of #fileNamed:do:' id 'e71138c5-9577-4315-bbb9-19101b1a44cb' date '12 July 2012' time '1:23:15.488 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MarcusDenker.282' message 'Issue 6259: DataStream is still there http://code.google.com/p/pharo/issues/detail?id=6259 Issue 6255: Zinc Pharo Conference update with FileSystem support http://code.google.com/p/pharo/issues/detail?id=6255 Issue 6223: FileLocator and FileRerernce have extension from File Package http://code.google.com/p/pharo/issues/detail?id=6223' id '03911f2b-c422-4142-bedf-617d90674243' date '4 July 2012' time '4:16:25.831 pm' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.281' message 'introduction of the Zinc-FileSystem-Legacy package (including the new ZnFileSystemUtils class) to deal with pre/post FIleSystem introduction in Pharo 2.0 - this is the old code' id '1fcf9d84-c2c3-4e70-b45a-6c68a381329d' date '3 July 2012' time '1:48:02.791 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.280' message 'clean up ZnClient option setter methods to return self for easy chaining (thx Sean DeNigris)' id '00d1da5e-18a2-4f96-afe7-c7f7d6fe0c6c' date '30 May 2012' time '10:14:53 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.279' message 'added ZnMimeType class>>#applicationPdf as a convenience accessor as well .pdf as recognized file extension' id 'd636e0ff-907e-4299-bf7f-4328840ba225' date '27 May 2012' time '6:50:12.516 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.278' message 'added multiline/continuation header line parsing to ZnHeaders; added some extra guards to ZnDigestAuthenticator class>>#parseAuthRequest' id '5c5f70f9-0f04-4941-a09a-cbf28ba154e4' date '22 May 2012' time '10:48:12 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.277' message 'simplified the example in the class comment of ZnDispatcherDelegate' id 'c4263c43-acf8-44b7-a3cb-6731e8d1a125' date '21 May 2012' time '10:02:55 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.276' message 'minor fix to ZnStaticFileServerDelegate' id '388a9cd6-b0b8-41ee-a24a-00aae254fa48' date '15 May 2012' time '1:15:34 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.275' message 'refactored ZnStaticFileServerDelegate a bit: - store expiration times as seconds in #defaultMimeTypeExpiration & #mimeTypeExpiration map - add not only Cache-Control but Expires header as well - removed unused #responseForFile: fixed a bug in ZnMessage>>#clearEntity (didn''t #close streaming entities with HEAD requests) ' id '94f2451b-b7e0-4d74-866b-d55b01c98ed9' date '14 May 2012' time '10:59:51 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-PaulDeBruicker.274' message 'Added handling for If-Modified-Since and Not-Modified headers to the ZnStaticFileServerDelegate' id '3f7f92c3-1ae8-4bd4-b4e2-5421cf49614a' date '12 May 2012' time '10:15:58.122 am' author 'PaulDeBruicker' ancestors ((name 'Zinc-HTTP-PaulDeBruicker.273' message 'Added the ability to set expiration headers when serving static files with the ZnStaticFileServerDelegate. Can probably adapt it to work when returning files from a WAFileLibrary if there isn''t already a mechanism for that. ' id '7684ed9a-80b2-47bb-a165-6e7ef40d555e' date '11 May 2012' time '3:26:02.487 pm' author 'PaulDeBruicker' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.272' message 'updated ZnServer welcome page' id '1511b44d-a8f8-4a66-9ab7-0c5d3b0ca955' date '11 May 2012' time '3:22:56 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.271' message 'added ZnClient>>setIfModifiedSince: refactored #downloadTo: using #downloadEntityTo:' id 'deabc112-7505-4072-9116-16200a9ea513' date '10 May 2012' time '10:46:26 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.270' message 'merged ZnUtils class>>#parseHttpDate: improvements by Sean DeNigris' id 'eec865bb-4103-4a28-9e55-5d3c471f26c7' date '10 May 2012' time '8:30:06 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SeanDeNigris.269' message 'Fix the HTTP date parsing to comply with the HTTP/1.1 standard. See discussion at http://forum.world.st/Parsing-HTTP-dates-td4623688.html. Matching update to the tests (which all pass): Zinc-Tests-SeanDeNigris.140' id 'c7d98308-0259-4d69-a273-0572a06d9d0f' date '10 May 2012' time '12:25:56.375 pm' author 'SeanDeNigris' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.268' message 'added ZnClient>>#uploadEntityFrom: and #contentType: as a convencience to easier do a direct PUT or POST of a file.' id 'e4dabff1-c4ef-4630-85d3-f00afbb516e7' date '9 May 2012' time '9:57:01 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.267' message 'first, not yet integrated versions of ZnCharacter[Read|Write]Stream; added iso-8859-15 to known encodings in ZnByteEncoder; added some optimizations to ZnNullEncoder' id 'e25c20c3-e14a-493d-88fa-7c9717455beb' date '3 May 2012' time '10:15:14 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.266' message 'added #match: and #contents to ZnChunkedReadStream and ZnLimitedReadStream; added some convenience methods to ZnCharacterEncoder: #encodeString: #decodeBytes: and #encodedByteCountForString:' id '72b9579d-c272-417f-8949-2e66714574ba' date '2 May 2012' time '4:43:52 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.265' message 'finalized switch from ZnClient>>#downloadToFileNamed: to ZnClient>>#downloadTo: which also accepts directories and creates a file there like wget or curl can (as suggested by Sean P. DeNigris). Roll back FileSystem usage for now.' id '618f4d2b-35ee-4c05-a495-e74b8a793399' date '26 April 2012' time '4:45:21 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.264' message 'fixed ZnClient>>#downloadTo: using old school FileDirectory/FileStream' id '4d6a0d40-0927-4b6b-9c98-a583922b58b2' date '26 April 2012' time '2:34:09 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.263' message 'added experimental ZnClient>>#downloadTo:' id '2d0dd4da-87a0-44d5-b4aa-410041e67897' date '26 April 2012' time '2:19:23 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.262' message 'added ZnClient>>#downloadToFileNamed: ' id '483455c8-f370-40e8-8848-036044211929' date '25 April 2012' time '9:19:35 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.261' message 'timezone offsets should be Durations' id '070fd646-c4ee-451c-94f4-bf67010ada05' date '23 April 2012' time '3:41:34 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.260' message 'updated ZnEasy comment' id 'af3c61c1-498c-430a-9136-ddaf1d5537fe' date '21 April 2012' time '11:13:54 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.259' message 'Zinc-HTTP-PaulDeBruicker.257' id '67dd4881-a30f-4051-b052-f07774efec8c' date '20 April 2012' time '10:27:51 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.258' message 'merging forgotten 255 & 256 into 257' id '0c026aa8-59d1-42db-a714-8079feca26d3' date '16 April 2012' time '6:25:41 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.257' message 'minor allocation improvement to ZnStringEntity>>#readLimitedFrom:' id 'bc3d146e-dca8-4245-be9c-25f3fb76c1cb' date '15 April 2012' time '7:23:24 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.254' message 'ZnBivalentWriteStream has to forward #flush to its wrapped stream' id '3b82b4f5-a0ed-44b4-bcd1-a5ec129d9d42' date '4 April 2012' time '4:08:44 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.253' message 'modified the implementation of ZnUtils class>>#streamFrom:to:size: to use a larger buffer when necessary and to flush the output stream each time through the loop except for the last one (this is need because we use SocketStream with autoflush false and this results in internal buffer overflow on very large writes).' id '183dc82c-6011-45b4-8a56-2c8415d381fe' date '4 April 2012' time '1:46:20 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.252' message 'changed ZnDefaultServerDelegate>>generateDWBench to use a date/time timestamp with a constant space representation ' id '94aee4dc-7124-485c-a70d-2d8f2831b35f' date '18 March 2012' time '7:23:19 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.251' message 'added ZnServer>>#localUrl ' id 'c56ae9d6-6fb1-481c-94fe-fc9ee8fa59b9' date '12 March 2012' time '10:23:47 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.250' message 'added the option to restrict ZnServers to only listen on a specific interface; added Zn[SingleThreaded]Server>>interface[:]; added ZnNetworkingUtils [class]>>#serverSocketOn:interface' id '5097d852-2887-45ca-9f2f-5dc50ffc95f4' date '12 March 2012' time '7:50:44 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.249' message 'added some extra API to ZnMimeType to manipulate parameters and charSets' id '209986ca-144b-46d7-8449-f34b0e9c1864' date '6 March 2012' time '11:10:35 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.248' message 'Switched ZnServer class>>#defaultServerClass to ZnManagingMultiThreadedServer; Add ZnStandardOutputLogger and ZnSingleThreadedServer>>#logToStandardOutput' id 'aaab5645-ed48-4174-bdb5-53037fb297db' date '4 March 2012' time '8:25:19 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.247' message 'changed usage of #deprecated: to #deprecated:on:in:' id '5ae403b7-a4cb-4ca9-a49a-0e71b6bd036a' date '4 March 2012' time '10:35:23 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.246' message 'extended ZnDefaultServerDelegate>>#generateStatus' id 'e1714401-1e45-4d67-97cd-7b735be277a2' date '1 March 2012' time '1:58:26 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.245' message 'fixed a bug related to sending multiple cookies; fixed a bug related to receiving and sending cookies during redirects; thank you Sean DeNigris; ZnClient>>#prepareRedirect now receives and sends cookies; ZnClient>>#sendCookies now uses a single Set-Cookie header containing multiple cookies instead of multiple Set-Cookie headers; added ZnClient>>#resetCookies; extended ZnClient logging with #debug printing of headers and processed cookies; minor changes to ZnClient internal state variable' id '35bf1aac-cf81-479a-8683-8ad057b7566a' date '29 February 2012' time '8:10:13 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.244' message 'refactored/extended ZnRequest with authorization and basic authentication access' id 'b2397b7f-ec54-4461-999d-90bfa1fd517a' date '23 February 2012' time '10:17:43 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MarcusDenker.243' message 'Issue 5299: Yet another Zn update http://code.google.com/p/pharo/issues/detail?id=5299' id '583fa1ec-e230-4a83-8a67-12cb734c2bdb' date '17 February 2012' time '3:13 pm' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-StephaneDucasse.236' message '- Issue 5149: add line in comment of VirtualMachine class>>parameterAt:. ThanksLuc Fabresse and Mariano Martinez-Peck. http://code.google.com/p/pharo/issues/detail?id=5149 - Issue 5132: CommentReference SourcedMethodReference MethodReference are now deprecated http://code.google.com/p/pharo/issues/detail?id=5132 - Issue 2560: Convenient methods from Grease for Strings. Thanks Sven van Caekenberghe. Part one. http://code.google.com/p/pharo/issues/detail?id=2560' id 'f47fd8ea-3884-4572-9af9-d9f6eb4457c9' date '9 January 2012' time '5:23:41 pm' author 'StephaneDucasse' ancestors ((name 'Zinc-HTTP-StephaneDucasse.235' message '- Issue 5157: Finder > Class > right-click > Hierarchy opens not on Class but on FinderClassNode. Tx Benjamin van Ryseghem. http://code.google.com/p/pharo/issues/detail?id=5157 - Issue 5151: Recategorization of PanelMorph. Thanks Benjamin van Ryseghem. There is no useless cleans. Even small steps are cool and important. http://code.google.com/p/pharo/issues/detail?id=5151 - Issue 5154: It would be great to have a setting to allow the Debugger to open centered and be 3/4 of screen. Thanks Alain Plantec. http://code.google.com/p/pharo/issues/detail?id=5154 - Issue 5148: LimitNumberOfEntriesInZnMultiValueDictionary. Thanks Sven van Caekenberghe. http://code.google.com/p/pharo/issues/detail?id=5148 ' id 'c1c64007-e1ae-4347-b059-eb64071c1845' date '7 January 2012' time '7:13:20 pm' author 'StephaneDucasse' ancestors ((name 'Zinc-HTTP-ZincUpdate.234' message '- Issue 5127: Zinc update http://code.google.com/p/pharo/issues/detail?id=5127 - last bit of Issue 4688: progress bar disappears on image save http://code.google.com/p/pharo/issues/detail?id=4688' id '96fb41c6-6187-4572-82d5-88acaff58417' date '25 December 2011' time '11:01:50 pm' author 'ZincUpdate' ancestors ((name 'Zinc-HTTP-StephaneDucasse.233' message '- Issue 5117: MNU: Transcripter class>>open. Thanks vpnbecmann. http://code.google.com/p/pharo/issues/detail?id=5117 - Issue 5122: ZnUpdate-Dec-20. Thanks sven van caekenberghe. http://code.google.com/p/pharo/issues/detail?id=5120' id '49c87187-0e9e-41aa-a78d-f2eeba91da2f' date '25 December 2011' time '11:47:49 am' author 'StephaneDucasse' ancestors ((name 'Zinc-HTTP-MarcusDenker.227' message 'Issue 5063: Zinc uses default encoding of utf-8 when encoding url safe encoded strings http://code.google.com/p/pharo/issues/detail?id=5063' id '3a35f66b-1807-4525-be31-56999a7ec249' date '9 December 2011' time '1:17:57 pm' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-MarcusDenker.224' message 'Issue 5048: Move Transcript to Tools Package http://code.google.com/p/pharo/issues/detail?id=5048 Issue 5047: Stream should not print its contents in printOn: http://code.google.com/p/pharo/issues/detail?id=5047 Issue 5053: ZnChunkedReadStream doesNotUnderstand: #next:into: http://code.google.com/p/pharo/issues/detail?id=5053' id '545d1d37-4bce-4a96-a438-cc7ad16618f9' date '4 December 2011' time '1:38:23 pm' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-MarcusDenker.222' message 'Issue 4998: ContextPart>>#runUntilErrorOrReturnFrom: (for testing) http://code.google.com/p/pharo/issues/detail?id=4998 Issue 4994: Two failing test in ProcessTest http://code.google.com/p/pharo/issues/detail?id=4994 Issue 5014: zn updates http://code.google.com/p/pharo/issues/detail?id=5014' id '0eaf0a8a-f842-4a22-83d9-b1c65bf2b853' date '25 November 2011' time '4:03:18 pm' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-StephaneDucasse.221' message ' Issue 4903: New version of Zinc http://code.google.com/p/pharo/issues/detail?id=4903' id '37c68635-515f-43fb-8665-9d7674c0aee3' date '18 November 2011' time '3:18:42 pm' author 'StephaneDucasse' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.220' message 'added auto initialization of ZnNetworkingUtils>>#secureSocketStreamClass' id '147d6c42-b509-40e4-abb0-7c804d5df01d' date '13 November 2011' time '9:46:06 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.219' message 'reworked ZnNetworkingUtils to take over most if not all functionality of ZnZodiacNetworkingUtils so that HTTPS should work out of the box when Zodiac is loaded; small refactoring to ZnServer hierarchy: use #socketStreamOn: consistently' id 'f0eb7dbf-ae05-4daa-87da-84feb09ba23a' date '10 November 2011' time '2:09:21 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.218' message 'renamed ZnNeoClient -> ZnClient; added a better class comment' id '8c789ded-a882-4491-bdf9-e9ad45af69f2' date '8 November 2011' time '10:33:34 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.217' message 'renamed ZnClient -> ZnClientOld' id 'df12536b-7fa7-4e00-84eb-6de051894eb6' date '8 November 2011' time '10:14:35 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.216' message 'documented all public methods of ZnNeoClient; minor fixes: - #close sets state to nil - #contents return the stream when streaming - #headerAddAll: and #headerAt:add: now do a #resetRequestIfNeeded' id 'bfb5ff74-76f9-4689-a976-95ef34260531' date '8 November 2011' time '9:10:32 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.214' message 'moved deprecated classes to category Zinc-HTTP-Deprecated, noted deprecation in class comments' id '248c4eaf-ca0f-4584-99f4-d399438fd2ed' date '4 October 2011' time '7:11:17 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.213' message 'small fix to ZnUrl>>#inContextOf: (don''t take over the port when the scheme''s differ)' id '54792b4f-3ff6-479d-950f-91fb8052c960' date '4 October 2011' time '4:07:54 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.212' message 'deprecated instance creation (#new) of ZnFixedClient (and ZnExtendedFixedClient) and ZnUserAgent (and ZnHttpClient)' id '4fa83eba-2814-4b9c-8a71-5376eb1feaf5' date '4 October 2011' time '2:23:43 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.211' message 'added basic ZnNeoClient>>#signalProgress support' id '1f875569-9635-4039-bd9a-43b2ceb46400' date '4 October 2011' time '1:48:05 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.210' message 'added logging support to ZnNeoClient' id '6d7ff297-2967-413a-95d6-c0af0c0720d4' date '4 October 2011' time '12:53:36 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.209' message 'added some Pharo 1.2 compatibility (ZnMultiThreadedServer>>#exceptionSet:)' id 'b4d77e24-8821-4cac-b32d-f0f1412cf0f5' date '4 October 2011' time '9:57:30 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.208' message 'made ZnClient deprecations proceedable and added a test for this behavior' id '7990b131-582c-4c3b-8077-ef408ae802fb' date '3 October 2011' time '2:44:33 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.207' message 'added some logging to #closeDelegate' id '2900a3fc-3677-49d4-98c0-4b6b1ffe772b' date '27 September 2011' time '8:37:56 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.206' message 'added internal ZnNeoClient>>#resetRequestIfNeeded and ''state'' instance variable to try to properly reset after a first request is executed and a second one starts (the idea is to only keep using scheme/host/port and the connection)' id '9d23f62f-0d10-451a-ac95-ca8acd5b0780' date '23 September 2011' time '2:58:34 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.205' message 'modified ZnHeaders>>#contentLength to allow for the special case when there are multiple content-length headers, but only when they are identical; fixed some typos in ZnHTTPSocketFacade where some arguments where ignored (thx Olivier Auverlot for reporting this) ' id '135d43af-b715-45d4-bd28-85323f49999d' date '20 September 2011' time '1:58:59 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.204' message 'made ZnTooManyRedirects an Exception instead of an Error subclass so that it is resumable; fixed ZnNeoClient>>executeWithRedirectsRemaining: to allow for a resumed ZnTooManyRedirects exception' id '1183d199-1245-4e35-ac40-a0d52576deb3' date '19 September 2011' time '1:30:06 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.203' message 'added redirect support to ZnNeoClient (throws ZnTooManyRedirects when needed); reworked ZnEntity #entity: #resetEntity: to allow nil as argument (see ZnHeaders>>#acceptEntityDescription:) added #clearEntity as well' id '90d7081c-2bb7-4a94-b45c-58e28dadf242' date '19 September 2011' time '11:09:57 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.202' message 'added ZnNeoClient>>#setIfModifiedSince: and test' id 'f02072f8-e33a-429d-8e27-169372fbc7f6' date '17 September 2011' time '8:42:50 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.201' message 'added time limit to ZnNeoClient connection reuse; added ZnNeoClient>>#headerAddAll: and #queryAddAll:' id 'a5b92040-b404-4fca-951d-9d5253156cbb' date '17 September 2011' time '2:05:36 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.200' message 'added optional delegate #close-ing to ZnServer hierarchy' id '915cab3c-eddb-44f0-b38e-61a5e83185ff' date '16 September 2011' time '5:40:45 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.199' message 'patched ZnRequest>>#setBasicAuthenicationUsername:password: to allow nil arguments for clearing the Authorization header' id 'c8cce21a-86d4-4a8d-bd03-21ea97514ce1' date '16 September 2011' time '1:52:16 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.198' message 'introducing ZnEasy to take over the class side functionality of ZnClient; ZnClient class side protocol being deprecated' id '37a8ac41-bd8c-4d7d-9d8c-3ef5d0c2fc0a' date '15 September 2011' time '8:42:57 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.197' message 'Modifed ZnNeoClient>>#isContentTypeAcceptable to allways accept empty responses; Added ZnResponse>>#isCreated test' id 'efcd6b46-0332-4a34-8523-8470bcfa6764' date '14 September 2011' time '3:30:47 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.196' message 'added ZnUtils class>>#parseHttpDate: for use in ZnCookie>>#expiresTimeStamp' id '0f0b5286-c002-45f2-9ec6-9b21a7c8eb13' date '13 September 2011' time '11:51:12 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.195' message 'added extra guard to ZnLineReader>>#processNext for when #next returns nil' id 'cab4a65f-52f8-ce41-996c-a1c2a6b1bb95' date '12 September 2011' time '2:27:14 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.194' message 'added a nice example to ZnClient class>>#getPng: (Thx Lukas Renggli)' id 'f90ea18e-4d80-4d8d-aff1-ecb917f191ce' date '12 September 2011' time '9:32:07 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.193' message 'Changed ZnManagingMultiThreadedServer class comment' id '64e3aa90-0672-4f41-9093-6e5c97b16a79' date '6 September 2011' time '12:32:56 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.192' message 'pushed down the connection management functionality of ZnMultiThreadedServer to a new subclass called ZnManagingMultiThreadedServer' id '859098cb-28ff-453a-b8ec-dc41d10f7859' date '5 September 2011' time '2:24:54 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.191' message 'changed ZnMultiThreadServer''s lock and connections instance variable to be lazy initialized, removed the initialize code' id '9f394e71-7904-40bd-9551-03faf2f1be98' date '5 September 2011' time '12:06:45 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.190' message 'added a guard clause to ZnMultiThreadedServer>>#closeConnections so that nothing is done when there are no connections' id 'f7bdca17-3172-45cf-969d-531845cb9e35' date '5 September 2011' time '11:40:06 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.189' message 'Added some new internal functionality to ZnMultiThreadedServer: To keep track of all its open client connections (socket streams) (#socketStreamOn: and #closeSocketStream) so that they can all be force closed (#closeAllConnections) when the server stops (#stop). This is necessary because on image save the worker processes and socket streams are frozen and fail when they start up afterwards due to illegal socket handles. Note that #readRequestSafely: was extended and #writeResponseSafely:on: was introduced to handle several exceptions, most notably PrimitiveFailed, in the situation where a socket stream is force closed on a live process using that stream. This can be observed in #testTimeout. The timeouts on reading/writing socket streams take care of closing connections that are kept open too long. Maybe the server side timeouts should be even shorter to conserve resources. ' id 'b4f2d979-0097-4dc8-bde9-23edda15a3f9' date '4 September 2011' time '3:20:15 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.188' message 'some simplifications to ZnNeoClient removed some dead code from ZnUserAgent' id 'a81a6b6f-ad24-4c3f-aa91-120a404fa082' date '31 August 2011' time '10:06:26 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.187' message 'added basic cookie support to ZnNeoClient; refactored some cookie related code; ZnMessage subclasses ZnRequest and ZnResponse each implement #addCookie: and #cookies for different headers; removed ZnHeaders>>#cookies; replaced ZnCookie>>#asString with ZnCookie>>#nameValueString and ZnCookie>>#fullString; added ZnNeoClient>>#get: and friends as convenience protocol' id '13e276c0-e257-4004-ad61-2e2fc6b5d829' date '30 August 2011' time '10:53:17 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.186' message 'added contentReader/contentWriter options to ZnNeoClient to use in #contents and #contents: fixed general ZnNeoClient>>#execute result to be either #contents on success or the result of the #ifFailBlock on failure' id '09f5880c-8b8e-4de1-9cc2-0e3306c987a1' date '19 August 2011' time '5:27:35 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.185' message 'reimplemented ZnHTTPSocketFacade using ZnNeoClient' id 'c969791c-20ec-483d-b053-edc9c44c946b' date '19 August 2011' time '11:45:37 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.184' message 're-implemented ZnClient class side methods using ZnNeoClient; revised ZnConnectionTimeout handling to allow nesting/overriding by changing the default to nil (see ZnNeoClient>>#withTimeoutDo:); changed ZnUrl>>#authority to not return a default port; added basic authentication support to ZnNeoClient; added ZnNeoClient>>#entity[:]' id '2dea8f25-4226-476c-ad33-6108bad5183b' date '18 August 2011' time '11:11:28 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.183' message 'listening to the code critics (mostly formatting)' id 'a1062344-e54b-46b5-be1e-e12e39932a62' date '18 August 2011' time '2:50:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.182' message 'added empty ZnEntity>>#close added ZnStreamingEntity>>#close to close the underlying stream if any ZnMessage>>#resetEntity: now sends close to the enity being replaced if necessary added ZnResponse class>>#methodNotAllowed: ZnStaticFileServerDelegate now refuses not GET/HEAD requests ZnSingleThreadedServer>>#handleRequest: now does a #resetEntity: on HEAD requests implemented ZnNeoClient>>#head streamlined the responses of ZnNeoClient operations to return #contents, except for #head' id 'e9ce39cf-0dde-447a-af48-69d07048c9d1' date '18 August 2011' time '1:57:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.181' message 'added ZnMimeType wildcard constants #any and #text; added ZnHttpUnsuccessful and ZnUnexpectedContentType exceptions; extended ZnNeoClient with #ifFail:, #enforceHttpSuccess, #enforceAcceptContentType and retry behavior' id 'cfaa0963-4bb7-49d8-a3b1-f89527ee2bc2' date '17 August 2011' time '9:42:51 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.180' message 'added ZnMimePart class>>#fieldName:entity: and #fieldName:fileNamed: added ZnNeoClient timeout option, more url building api, support for applicationFormUrlEncoded and multiPartFormData encoded entities for post/put' id 'ea58662e-243e-4eff-ad90-7ac4ff58e9a3' date '17 August 2011' time '2:24:50 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.179' message 'added ZnUrl>>#inContextOf: extended ZnHeaders>>#request: to handle urls without a host added request url building to ZnNeoClient added oneShot option to ZnNeoClient' id '97d7e216-e0ff-4931-9dcf-498e2a938465' date '12 August 2011' time '1:52:04 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.178' message 'added code to throw a ZnMissingHost exception when a bogus ZnUrl is used to connect to a HTTP host' id '6b9c0a42-5a10-4b68-9c4c-efc33a7f52a4' date '11 August 2011' time '7:42:44 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.177' message 'added support for dealing with certain defaults in ZnUrl: - new ZnUrl class>>#fromString:defaultScheme: and ZnUrl>>#parseFrom:defaultScheme (while #readFrom: and #parseFrom: are still using nil as default scheme, like before) - new ZnUrl>>#asZnUrlWithDefaults (and private #setDefaults) - new ZnUrl>>#schemeOrDefault (along the lines of #portOrDefault) - improved support for parsing relative URLs' id '82463b1e-0ceb-494f-a9fd-ac7e043d1307' date '11 August 2011' time '3:29 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.176' message 'Merged Damien Pollet''s changes regarding the misspelling of ''Unknow[n]'' in exception class names (thx); First definition of ZnNeoClient; added support for better HTML Doc Types in some generated HTML pages of ZnDefaultServerDelegate' id '333bbc02-577c-44e3-9ef1-7489a5586f57' date '11 August 2011' time '10:33:51 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.175' message 'Changed ZnMimePart>>#fieldValueString to return an empty string instead of ''nil'' when the field is empty or absent (Thx Lukas Renggli)' id 'b95d0734-62d3-4de6-8a94-03816784d360' date '29 July 2011' time '2:23:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MarcusDenker.172' message 'Issue 4326: Connection timeout problem http://code.google.com/p/pharo/issues/detail?id=4326 Issue 4417: Zinc does not honour network proxy configuration http://code.google.com/p/pharo/issues/detail?id=4417 Issue 4428: New mechanism for Zinc servers start/stop handling after system startUp/shutDown http://code.google.com/p/pharo/issues/detail?id=4428' id '190ce930-79bf-4a7e-b0fa-60d1fbaecfe0' date '21 June 2011' time '4:08:49 pm' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.171' message 'removed some bogus class variable from ZnConnectionTimeout' id '11c76430-7cc0-4885-b4a0-709f3fbf4f57' date '20 June 2011' time '2:50:35 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.170' message 'fixed undeclared in ZnNetworkingUtils class>>#initialize (SocketStreamTimeout was renamed to DefaultSocketStreamTimeout)' id '15682e90-31ca-40e3-b26f-a4df4aab8814' date '19 June 2011' time '4:38:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.169' message 'implementation of a new mechanism for system #startUp/#shutDown handling by ZnServer(s): ZnServer holds a class variable ManagedServers, clients can #register/#unregister to receive #start/#stop when the system #startUp/#shutDown is sent; currently only the default server (of which there is only one instance per ZnServer subclass) is automatically registered/unregistered in #defaultOn: and #stopDefault, other instances must do this explicitely themselves ' id 'ebc443eb-7ce9-488c-92cb-05a67179c4f4' date '19 June 2011' time '2:21:38 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.168' message 'introduction of ZnConnectionTimeout which is used by ZnNetworkingUtils class>>#socketStreamTimeout and defaults to ZnNetworkingUtils class>>#defaultSocketStreamTimeout Now you can do ZnConnectionTimeout value: 60 seconds during: [ ZnClient get: ''http://slowhost.com/foo'' ]' id 'dbe15895-070d-4a2f-8d62-dd40c5ba028a' date '18 June 2011' time '11:12:18 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.167' message 'merged' id 'cb16cb7a-5fac-494d-ab2a-97d4261f04ae' date '17 June 2011' time '3:51:56 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.165' message 'modified #on: Error do: to #on: Exception do:' id 'ccb2d275-7dd3-44f4-ace4-12fc2217f9a3' date '17 June 2011' time '3:46:54 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.164' message 'implemented support for proxies that require authorization; ZnHeaders class>>#requestHeadersFor: will add a Proxy-Authorization header when needed; added public API ZnNetworkingUtils class>>#proxyAuthorizationHeaderValueToUrl: removed public API ZnNetworkingUtils class>>#httpProxy and #isProxySet; upgraded public API ZnNetworkingUtils class>>#shouldProxyUrl: to be a primary interface; refactored internals of ZnNetworkUtils to use NetworkSystemSettings directly instead of HTTPSocket; this code still has to be tested and validated with real world proxies ' id '90d57d3d-fc41-4548-a2fd-dcd7c22a3a1f' date '17 June 2011' time '9:16:22 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.163' message 'taking over a patch from Pharo (http://code.google.com/p/pharo/issues/detail?id=4326): adding SocketStreamTimeout as class variable to ZnNetworkingUtils to make this ''constant'' settable; the new default is now 30 seconds' id '3622d15d-b15a-4398-a9e6-0027e600a78a' date '9 June 2011' time '9:14:27 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.162' message 'extended ZnStringEntity>>#readUpToEndFrom: to deal with the weird SocketStream>>#atEnd issue by added an extra #peek; added ZnChunkedReadStream>>#peek; added chunk buffer reuse to ZnChunkedReadStream' id '0205b561-44a9-4434-b40b-976b5d9a65a6' date '19 May 2011' time '12:57:24 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.161' message 'a small change to improve Squeak compatibility' id '018ccd1d-2321-4dcb-b468-722a42b9d605' date '17 May 2011' time '9:34:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.160' message 'fixing support for HTTP proxies (thanks Alexandre Bergel for reporting this) requests to localhost are excluding from being proxied - ZnRequestLine>>#writeOn: now outputs absolute URLs when proxying - added ZnNetWorkingUtils class #isProxySet #shouldProxyUrl: and #httpProxy - added ZnUrl>>#isLocalHost - changed ZnUrl>>#host: to lowerCase its argument ' id '619a8697-4d71-4c1c-a99e-fe5e07f3dbb4' date '13 May 2011' time '11:07:48 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-NickAger.159' message 'minor refactoring to ZnDispatcherDelegate to use: ZnStatusLine ok rather than: ZnStatusLine code: 200 ' id 'e5ab93a6-b254-4ba2-bbd9-41ecf500f584' date '10 May 2011' time '3:53:33 pm' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.158' message 'refactored cookie support: ZnResponse>>#setCookie: has been renamed to ZnResponse>>#addCookie: ZnResponse>>#setCookies: has been removed ZnHeaders>>#cookies now returns a dictionary rather than a ZnCookieJar ZnCookieJar>>#cookieAt: a helper method I added, I''ve removed. The tests have been updated as required.' id '75f5dd45-9dcf-4491-a28c-4f8cbe8e784a' date '10 May 2011' time '11:39:41 am' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.157' message 'added ZnStatusLine creation constants and refactored ZnResponse to use the constants' id '3fa86243-d119-4ab5-b87d-3c8622aa9257' date '10 May 2011' time '9:13:37 am' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.156' message 'created ZnResponse>>#setCookie: and refactored ZnResponse>>#setCookies: to use #setCookie:' id 'ac85f148-5de7-4b04-8a81-d8e7222e1f78' date '10 May 2011' time '8:37:25 am' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.155' message 'added: Request cookie accessor Response cookie setter' id '41a8f7a2-dbda-45bd-a831-03b7c0d6ca37' date '10 May 2011' time '2:52:47 am' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.154' message 'added ZnDispatcherDelegate for straight-forward dispatching to mapped urls. Modelled after Ruby''s WEBrick API: server = WEBrick::HTTPServer.new(:Port => 2000) server.mount_proc("/heresy"){|req, res| Application.new.handle(req, res)} server.mount_proc("/favicon.ico"){|req,res| res.status = 404} ZnDispatcherDelegate API: server := (ZnServer startDefaultOn: 9090) delegate: (ZnDispatcherDelegate new map: ''/hello'' to: [ :request :response | response entity: (ZnStringEntity html: ''

hello server

'') ]; map: ''/counter'' to: [ :request :response | counterApplication handleRequest: request response: response ]).' id '87d63347-b4ab-4c50-86a4-8d7d89d24e32' date '9 May 2011' time '9:44:58 pm' author 'NickAger' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.153' message 'made ZnNetworkingUtils>>#socketStreamToHostNamed:port: private' id '44a98753-fe58-40bc-8a88-5887c0872212' date '9 May 2011' time '1:32:56 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.152' message 'extended ZnFixedClient with a scheme instance variable, adjusted the instance creation protocol, added a #baseUrl accessor for use in #newConnection; added ZnUrl class>>#defaultPortForScheme:; removed ZnNetworkingUtils class>>#socketStreamToHostNamed: to simplify the socket [stream] factory API' id '69fc77af-dddd-44c5-9119-11f9db4f85db' date '9 May 2011' time '10:23:58 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.151' message 'conversion of ZnNetworkingUtils into an instance socket[stream] factory and a class side API' id '6c95ba6b-65ec-47cb-b6dc-284fd95f3832' date '2 May 2011' time '10:46:36 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.150' message 'fixing a problem where responses without an explicit content-length but with an entity where not read as they should (thanks Esteban Lorenzano & Andy Burnett for reporting this): - ZnResponse>>#entityReaderOn: now extends the super entityReader with the #allowReadingUpToEnd option - ZnEntityReader>>#entityReader now swallows entities when they are #isEmpty (making them nil) - ZnStringEntity>>#readFrom: is split between #readLimitedFrom: and #readUpToEndFrom: where the last method has extra error handling to swallow ConnectionClosed exceptions (similar to what SocketStream>>#upToEnd does) - the ZnEntity hierarchy now implements #isEmpty' id '8fe0b470-7728-454d-bc90-fa42d8330817' date '1 May 2011' time '7:19:13 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.149' message 'rewrote ZnHTTPSocketFacade class>>#entendURL:withArguments: to be compatible with HTTPSocket class>>#argString: (Thanks Esteban Lorenzano)' id '3a49e678-fa7b-4c30-bdc6-0944c7637e7f' date '30 April 2011' time '8:55:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.148' message 'extended ZnDefaultServerDelegate with a configurable response to / (in the prefixMap the key ''/'' maps to another key that is used instead as prefix for another lookup)' id '309679c5-4d24-4741-b067-2adc9cc8f6c6' date '28 April 2011' time '10:27:32 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.147' message 'changed ZnServer class>>#initialize not to do a Smalltalk #addToStartUpList:after: but just use the plain #addToStartUpList: (we only depend on networking and multi-processing but those will probably be OK)' id 'b2b69990-95ff-40bc-9ff0-6cb11dc96a24' date '27 April 2011' time '7:42:51 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.146' message 'skipping over lost version: .145 fixed ZnUtils class>>#encodeBase64: to test whether Base64MimeConverter responds to #mimeEncode:multiLine:, fall back to #mimeEncode: and manually remove Character cr occurences; this should fix Pharo 1.1.1 compatibility (Thanks Esteban Lorenzano for reporting this) .144 added option to extend ZnDefaultServerDelegate''s prefixMap with block (taking request as argument, returning response); changed default welcome text to include reference to /help .143 added ZnUrl>>#postCopy; refactored ZnStaticFileServerDelegate and added the option to redirect for directories without an ending slash ' id '57e6d630-1045-413b-8938-1259024175f9' date '27 April 2011' time '4:22:32 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.145' message 'fixed ZnUtils class>>#encodeBase64: to test whether Base64MimeConverter responds to #mimeEncode:multiLine:, fall back to #mimeEncode: and manually remove Character cr occurences; this should fix Pharo 1.1.1 compatibility (Thanks Esteban Lorenzano for reporting this) ' id 'f9f0831d-5ffa-4a5c-a8ec-b276c9babc35' date '26 April 2011' time '7:01:32 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.144' message 'added option to extend ZnDefaultServerDelegate''s prefixMap with block (taking request as argument, returning response); changed default welcome text to include reference to /help' id '439b923a-997e-4f51-9b7d-90896f8dd97f' date '26 April 2011' time '1:44:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.143' message 'added ZnUrl>>#postCopy; refactored ZnStaticFileServerDelegate and added the option to redirect for directories without an ending slash' id '08a56e5b-3270-4231-9568-4e5beffb58ae' date '26 April 2011' time '1:24:30 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.142' message 'listening to the Code Critics' id 'c78b1867-b800-4b03-805a-004df5aa7556' date '20 April 2011' time '12:47:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.141' message 'small fix to ZnUrl>>#printPathOn: to deal with cases where forward slashes are encoded in URLs (Thanks, Jan van de Sandt for pointing this out); added ZnUrlTests>>#testEncodedSlash to cover these cases' id '88ca6bf6-ce11-447f-8a1d-be9c67e7db71' date '17 April 2011' time '10:33:32 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-PaulDeBruicker.140' message 'changed ByteArray declarations in ZnConstants>>#faviconBytes and ZnMultiPartFormDataEntity>>#parse:boundary: from square brackes to #() asByteArray so that the code loads with no problems into Pharo and Gemstone' id '9ac457ad-7824-4c0c-8d5d-e7ebe36f0280' date '10 April 2011' time '12:03:38 pm' author 'PaulDeBruicker' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.139' message 'added ZnDefaultServerDelegate /help & /status; updated framework version from 0.1 to 1.0 ;-)' id 'f960a4c5-2462-4cfb-81a9-9ee740d2e294' date '31 March 2011' time '10:17:16 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.138' message 'increased ZnSingleThreadedServer>>#acceptWaitTimeout from 60 to 300 seconds; added some infrastructure to use this looping for future periodic tasks' id '5ba796b1-d698-4595-8a48-1500029cc52e' date '30 March 2011' time '9:25:46 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.137' message 'added new logging framework in Zinc-HTTP-Logging, consisting of ZnLogEvent (an Announcment), ZnLogSupport and ZnLogListener and subclasses ZnTranscriptLogger, ZnMemoryLogger and ZnFileLogger; now using the new logging facilities in Zn[Single|Multi]ThreadedServer, ZnFixedClient and ZnUserAgent; introduced new subclass of ZnFixedClient, ZnExtendedFixedClient that adds various hooks for customization ' id 'bb85953b-e489-472d-997b-27e28941c052' date '29 March 2011' time '4:49:38 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.136' message 'added postProcessHook to ZnFixedClient; extended ZnFixedClient reuse logic so that it is limited to a maximum keep alive time (of 5s) so as not to bother running into an error anyway.' id '85d852c0-b357-42ca-95da-0ebaec1c78ad' date '28 March 2011' time '4:24:06 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.135' message 'added preProcessHook & newConnectionHook to ZnFixedClient' id '3bc47cd7-fae8-4e62-a80d-5d991de3c137' date '28 March 2011' time '2:24:04 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.134' message 'some Socket[Stream] options/parameters tweaking: - server socket listen backlog increased from 10 to 32 - socket buffer size decreased from 8192 to 4096 (these were refused anyway) - client socket streams now get the same treatment (#setSocketStreamParameters:) as accepted server socket streams (i.e. setting timeout to 10s and buffersize) ' id 'ee477f07-3703-4504-b62a-9e9905aec294' date '24 March 2011' time '11:01:18 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.133' message 'bugfix: it turns out that String>>#base64Encoded introduces newlines which we definitively do not want when doing Basic HTTP Encoding for example; introduced ZnUtils class>>#encodeBase64: to do the right thing and invoke Base64MimeConvertor with the #mimeEncode: multiLine: false; replaced all usages (added a #decodeBase64: for orthogonality); added a unit test to catch this ' id '8c6bc0e9-09b3-4b38-84dc-90b76ad30c94' date '21 March 2011' time '8:49:39 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.132' message 'added ZnResponse>>#isNotModified' id '9d915967-5593-4909-ad83-8ba8577f6cd7' date '21 March 2011' time '10:46:35 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.131' message 'introduced ZnUnknownScheme exception' id 'd4ee20cf-2166-4a40-98ee-3f89c21e4d2e' date '18 March 2011' time '1:31:43 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.130' message 'new categories: Zinc-HTTP-Exceptions and Zinc-HTTP-Streaming; added ZnParseError hiearchy to better handle illegal input; fixed a bug in dealing with percent encoding in ZnUrl paths; ZnMultiThreadedServer>>readRequestSafely: now closes on ZnParseErrors in the input' id 'ec9629aa-9c2a-45d2-aa2c-4988ab48b239' date '28 February 2011' time '3:59:37 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.129' message 'added ZnMultiPartFormDataEntity>>#partsDo:' id '5e8a1d68-ab52-4b98-80f5-4a75aa724b4f' date '27 February 2011' time '8:27:54 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.128' message 'added some extra allowed HTTP methods' id '5df00c70-8ce3-45a2-8991-770dcb04c480' date '24 February 2011' time '9:12:07 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.127' message 'implemented ZnLimitedReadStream>>#next:into:' id 'b99b13a8-0959-4e1e-a501-cf9ed2334d70' date '21 February 2011' time '11:32:04 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.126' message 'implemented ZnHTTPSocketFacade class>>#httpPostMultipart:args:accept:request: added ZnHTTPSocketFacade class>>#constructMultiPartFormDataEntity:' id 'fbc9bd8a-55fc-4bef-99b4-cd54bd89b0cf' date '7 February 2011' time '9:37:50 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.125' message 'added ZnResponse>>#serverError:' id 'f17a0fb7-5e9a-4188-885c-553e3a372d25' date '4 February 2011' time '11:03:51 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.124' message 'fixed a typo in the ZnMimePart instance creation methods (formdata should be form-data) (thx Cédrick Béler)' id 'af6dbddc-b5d8-482a-b2ef-4071fcbba787' date '31 January 2011' time '8:16:57 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.123' message 'added ZnUrl>>#queryDo: ZnApplicationForUrlEncodedEntity>>#fieldsDo: added ZnMessage>>#resetEntity: to allow overwriting content type and length when these are already set' id 'dffdb499-d272-4fca-9991-ad5c3ebdaad9' date '31 January 2011' time '1:58:47 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.122' message 'added proper content length computation to ZnMultiPartFormDataEntity (bugfix); some code cleanup to ZnEntity content length computation' id 'faea419a-c94d-4f44-b0ae-067b635f1c4e' date '27 January 2011' time '5:17:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.121' message 'added #textJavascript as a constant to ZnMimeType; added ZnByteEncoder to handle single byte encodings that do not map directly to the lower Unicode section (for example Latin2, ISO-8859-2) by reusing the mapping tables from ByteTextConverter; added #handlesEncoding: and #newForEncoding: protocol to class side of ZnCharacterEncoding hierarchy' id 'c040db5f-1548-45bb-9f9d-757b78a67d70' date '25 January 2011' time '1:48:40 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.120' message 'fixed ZnUserAgent>>#redirectUrl so that relative redirect urls are made absolute in reference to the (previous) request''s url instead of self url; changed ZnHttpClient>>#get and #head not to reference url as an inst var' id '4bf543a0-c919-4508-8703-d0a272e32691' date '20 January 2011' time '9:20:40 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.119' message 'fix ZnUserAgent>>#openConnection to honor its ZnUserAgentSettings>>#timeout' id '69b705b0-6b68-46f9-8ed0-ba43fe195768' date '20 January 2011' time '7:40:41 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.118' message 'Updated class comments' id 'acea0a40-8a21-4257-8191-72f399e4a2a4' date '18 January 2011' time '11:05:56 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.117' message 'more fixes to ZnUserAgent redirect following behavior: rewrote logic' id '39d2e9eb-9bdb-4ee4-8ca8-68c812abb3b7' date '14 January 2011' time '10:03:05 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.116' message 'changed the redirect behavior for POST/PUT requests: the common practice is to turn these into GET request, see ZnUserAgent>>#method:for:headers:data:imit: and ZnUserAgent>>#prepareRedirect:' id 'a102bbdc-8185-41b0-afa2-4d0af8f2557a' date '13 January 2011' time '1:39:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.115' message 'added an extra guard to ZnFixedClient>>#fixedUrl: when host is nil (thx, Cédrick Béler)' id 'ac2bcf63-4c24-4c6a-b696-2b8dff2eae4b' date '12 January 2011' time '4:15:06 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.114' message 'ZnUserAgent (and ZnClient) now can follow relative redirect locations; introduced ZnMultiValueDictionary to allow multiple values to be stored under one key as an array; using ZnMultiValueDictionary for queries and headers; ZnUrl now uses ZnUtils>>parseQueryFrom: again; various simplifications and cleanups which might help when reading the code in ZnUserAgent (and ZnClient); ZnUserAgent (and ZnClient) now handle parameter encoding differently ' id 'e1a49d00-d9f0-4800-8cd7-cb354e86d671' date '12 January 2011' time '2:03:44 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.113' message 'promoted ZnFixedClient>>#fixedUrl: and ZnClient>>#executeRequest: to public status (and added comments); changed ZnFixedClient>>#fixedUrl: to accept ZnUrl objects as well for more flexibility (allowing users to add query/fragment URL elements in addition to the path) ' id 'c3b62aa9-da90-4478-9ab3-ba2670411cb3' date '8 January 2011' time '8:36:28 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.112' message 'split of ZnNetworkingUtils from ZnUtils to separate related functionality (Thx S.Ducasses)' id '845f67f8-df1c-40cf-a644-4699f50bc3bb' date '7 January 2011' time '7:52:57 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.111' message 'fixed ZnClient class>>#getImageOfType:usingParser:fromUrl: to correctly report responses with unexpected mime types (Thx S.Ducasses) ' id 'd633bf09-4617-4e34-b6c7-0260dc759817' date '7 January 2011' time '7:35:18 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.110' message 'added ZnUrl>>#queryAddAll:' id 'ae2dbf13-b27d-4e45-ae66-24ee8687bb3a' date '5 January 2011' time '9:07:28 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.109' message 'added application/xml as a predefined constant to ZnMimeType' id 'eb18136d-284f-4501-81e3-8c18a0b0e503' date '5 January 2011' time '1:53:53 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.108' message 'various changes to reduce the (Lint) warning count' id 'e455691d-fadb-4303-a83f-680be600e875' date '4 January 2011' time '9:15:26 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.107' message 'introduced #asZnMimeType on ZnMimeType, MIMEType & String to replace ZnUtils class>>#asMimeType: which was removed' id '6008c428-e4d3-4767-9622-879979d4a9f9' date '4 January 2011' time '8:04:37 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.106' message 'more cleanup added ZnBivalentWriteStream>>next:putAll:startingAt: fixed ZnStaticFileServerDelegate example' id '2e02dc65-d058-4d72-94ff-309d005a7c16' date '4 January 2011' time '4:30:49 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.105' message 'removing unused extension methods' id '93d4f4d1-39de-40ca-9e38-6a8741df39c4' date '4 January 2011' time '4:11 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.104' message 'massive migration from builtin Url to ZnUrl; added asZnUrl to String and Url ' id '73cb3a10-8b68-4f91-96a4-80a4f8603695' date '4 January 2011' time '3:34:16 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.103' message 'first version of ZnUrl class' id '8e7d4ba7-f5d9-41e7-a489-e7bfa2804c8e' date '4 January 2011' time '12:22:49 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.102' message 'added an extra guard to ZnSingleThreadedServer>>#releaseServerSocket' id '8f40387c-7d98-4816-ad2b-35665b66b14b' date '19 December 2010' time '2:53:27 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.101' message 'added caching to ZnDefaultDelegate>>#bytes: to improve benchmarking performance: this make a huge difference (thx, Philippe Marschall); refactored ZnMultiThreadedServer>>#readRequestSafely: to use #, to concatenate exceptions into an exception set (how elegant) ' id 'ab05d220-caa7-4f39-9276-e71491ca9b78' date '19 December 2010' time '2:43:29 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.100' message 'added /bytes to ZnDefaultServerDelegate to measure the huge speed difference between binary and UTF-8 encoded data; added ZnServer>>#isListening' id '4c960061-613e-443b-82d6-268c144d5d52' date '15 December 2010' time '9:42:47 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.99' message 'refactored ZnServer hierarchy: - renamed old ZnServer to ZnSingleThreadedServer - renamed old ZnExperimentalServer to ZnMultiThreadedServer - added ZnServer as superclass and facade ZnServer class>>#defaultServerClass is now ZnMultiThreadedServer! ' id 'f1366cea-f241-4260-bd60-23b6747b537b' date '15 December 2010' time '3:56:59 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.98' message 'finally ''solved'' the ab (apachebench) concurrent load problem (ab -k does HTTP/1.0 with Connection:keep-alive and expects Connection:keep-alive back); added #isHttp10 and #isHttp11 to ZnRequest and ZnRequestLine; rewrote ZnMessage>>#isConnectionClose and #isConnectionKeepAlive; added ZnMessage>>#setConnectionKeepAlive; added ZnRequest>>#wantConnectionClose; added ZnResponse>>#setKeepAliveFor:; improved ZnServer logging with proper header (including PID); Zn[Experimental]Server>>#readRequest and #writeResponse:on: now do logging themselves #logRequest and logResponse now set lastRequest and lastResponse debugging instance variables ' id 'a463c5c8-a719-4d6e-b916-2b17116a8df0' date '14 December 2010' time '3:01:14 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.97' message 'revised #printOn: and helper methods of ZnMessage and ZnEntity hierarchy to support ZnServer>>#logRequest and #logResponse; fixed a bug in ZnStringEntity encoder initialization; extended ZnServer>>#acceptWaitTimeout to 60s; ' id 'f6ba0f3f-5b5a-4eb4-a54e-2c6c316ae95d' date '14 December 2010' time '12:23:09 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.96' message 'added #favicon: and #random: handlers to ZnDefaultServerDelegate' id '28d9458b-51e9-45e7-8ecf-3611b5039d2c' date '14 December 2010' time '10:54:06 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.95' message 'added #logger and #log: to Zn[Experimental]Server for extensive tracing' id '9a30d6f8-cd49-4ef4-8723-88d73ec297fe' date '14 December 2010' time '9:26:40 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.94' message 'made a number of socket related constants explicit in ZnUtils and ZnServer; ZnUtils class>>#socketStreamOn: now sets more options explicitely; improved process name in Zn[Experimental]Server; ZnDefaultServerDelegate>>#welcome: now replaces CR with LF in ZnConstants class>>#welcomePageHtml ' id 'b6740682-52d3-4cc6-af7a-8ce6f5a2dbfc' date '13 December 2010' time '5:02:18 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.93' message 'refactored ZnServer''s and ZnExperimentalServer''s #listenLoop and #serveConnection[s]On: with the introduction of #initializeServerSocket, #releaseServerSocket, #executeOneRequestResponseOn: and #executeRequestResponseLoopOn:' id '7308c60d-4aa0-4653-89eb-78c703dd047f' date '10 December 2010' time '4:17:17 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.92' message 'Simplified ZnServer by moving functionality to ZnDefaultServerDelegate, a new class handling echo, dw-bench, unicode and / welcome' id '3f058ee0-89a2-4999-bd25-f02bf68cf0ff' date '10 December 2010' time '3:54:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.91' message 'added ad improved ZnServer method comments' id '0a8191cc-e438-4345-bc9b-e42a11ef367e' date '10 December 2010' time '3:05:34 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.90' message 'added ZnBufferedWriteStream class>>#on:do: modeled after #fileNamed:do: a convenience method that makes sure #flush is a called' id 'b8d896bf-6688-41e0-8ca5-267326b29c2a' date '9 December 2010' time '6:26:21 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.89' message 'added ZnUtils>>#socketStreamToHostNamed:port: followed by some simplification and refactoring' id 'a00bab52-f57d-4d34-bc86-be0a4b2be3cc' date '8 December 2010' time '11:19:14 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.88' message 'added experimental ZnBufferWriteStream' id 'fd2dd63e-035b-4c72-a4d4-58933b890e13' date '8 December 2010' time '10:21:55 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.87' message 'added ZnValueDelegate that converts #handleRequest: to #value: on a wrapped object' id '34a705ac-c414-441f-a606-443e50f91449' date '7 December 2010' time '4:20:02 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.86' message 'some more comment improvements' id '6e89b08f-198b-4ccd-b334-801598105a9e' date '7 December 2010' time '3:23:09 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.85' message 'renamed ZnMagicCookie[Jar] to ZnCookie[Jar]' id '1885b80b-6dfc-4366-8f69-ba459de201ea' date '7 December 2010' time '12:02:25 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.84' message 'moved all classes from category ''Zinc-HTTP-New-*'' to ''Zinc-HTTP-*''' id 'fb5273fe-7cd7-4bf0-b4e4-a366bf735e65' date '6 December 2010' time '9:41:56 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.83' message 'removed all Zinc-HTTP-Old-* categorized classes from the Zinc-HTTP package (these will be moved to a new MC package called ''Zinc-Old'')' id '4123ffde-b6f7-4233-b9c8-ddfdac314c1f' date '6 December 2010' time '5:26:43 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.82' message 'removed #isBinary from ZnEntity (and subclasses) ''testing'' protocol' id '3b12b147-c0bb-447b-bac2-53d899b54703' date '6 December 2010' time '4:05:17 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.81' message 'ZnStringEntity>>#printContentsOn: now relies on #nextPutAll: instead of #print: to avoid quoting by String>>#storeOn:' id '83409534-1da5-4991-a7ba-eeed6de8b6c9' date '6 December 2010' time '3:16:22 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.80' message 'renamed class ZnNewStringEntity to ZnStringEntity' id 'ef1213ed-3501-4a47-b346-424edb8828c3' date '6 December 2010' time '1:50:02 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.79' message 'removed class ZnStringEntity' id '305134b7-e6f5-4930-b3ed-70ee5213bf01' date '6 December 2010' time '1:47:48 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.78' message 'ZnMessage>>#hasHeaders was wrong; ZnBivalentWriteStream class>>#on: will no longer instanciate a new wrapper if the wrapped stream is of its own type; went over all class comments and updated lots of them ' id '0ac22c19-d755-4abf-8271-701953203148' date '6 December 2010' time '1:12:57 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.77' message 'fixed ZnHTTPSocketFacade>>#httpPut:to:user:passwd: (apparently MC passed in a byte array instead of a string, luckily ZnEntity>>#with: can deal with this)' id '58c44c1f-02ea-40e3-a5bd-e54fcd38ffd3' date '4 December 2010' time '2:26:11 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.76' message 'large changeset: switch from ZnStringEntity to ZnNewStringEntity, now using binary socket streams on server, all with the goal of proper UTF-8 support; - ZnEntity and subclasses not do proper #printOn: using #printContentsOn: (this is used in ZnServer''s echo handler); - added ZnBivalentWriteStream>>#isBinary which caches the #isBinary property of the stream it wraps (added fallback when DNU #isBinary); - added ZnUtils>>#socketStreamOn: which is used by ZnServer>>#serveConnectionOn: to force a binary stream; - fixed ZnMessage>>#hasHeaders and ZnMimePart>>#hasHeaders; - debugged ZnNewStringEntity - in order to support both binary and character streams, ZnMessage, ZnStatusLine, ZnRequestLine and ZnHeaders now use a ZnBivalentWriteStream in their #writeOn: implementations; - fixed ZnUserAgent>>#processResponse: to only read headers and no entity when doing a HEAD request ' id 'c7354231-e350-4fa6-aee7-b3d7e68eae66' date '4 December 2010' time '2:11:32 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.75' message 'added instance creation and preferred subclass accessing protocol to ZnEntity to make it a facade; replace all direct references to ZnStringEntity and ZnByteArrayEntity with ZnEntity facade invocations ' id '38988dd8-c300-47cb-8aca-bf620c808fc3' date '3 December 2010' time '2:08:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.74' message 'added #isCharSetUTF8 and #setCharSetUTF8 to ZnMimeType; changed the defaults/constants #textPlain and #textHtml of ZnMimeType to use UTF-8 as charset; created new class ZnNewStringEntity that uses an encoder to write/read strings to/from a binary stream ' id 'b5a8d802-77ff-4880-9e20-3af6d16d14c4' date '2 December 2010' time '1:50:43 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.73' message 'ZnUTF8Encoder: introduced next block in #nextPut:toStream: to reduce code duplication; made #nextFrom: more compact' id 'b0852d58-48b1-48d8-8172-d54525449ef6' date '30 November 2010' time '1:49:46 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.72' message 'introduction of ZnCharacterEncoder, ZnNullEncoder and ZnUTF8Encoder' id '7cdd0747-637c-44a9-a835-8b055e0353b9' date '30 November 2010' time '12:28 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-pmm.71' message '- fix unit tests - see http://hudson.lukas-renggli.ch/job/Zinc/' id '3554a779-86fe-4c2b-a826-900044edbb67' date '25 October 2010' time '7:10:47 am' author 'pmm' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.70' message 'added ZnBufferedEntity (part 1 of a refactoring of entities)' id 'b703ca9b-f970-416a-bb28-c08a0246d585' date '20 October 2010' time '10:40:38 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.69' message 'ZnUtils>>socketStreamToUrl: meant to put the stream in binary mode but was using isBinary, fixed' id 'e85c3518-20bc-407b-9522-4cca9e0ce34d' date '14 October 2010' time '2:35:45 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MattKennedy.68' message 'Added isComplete testing message to the ZnCredential classes to answer true if all required fields are set. Updated ZnUserAgent>>prepareCredentials:for:method to use ZnCredential>>isComplete test. Updated ZnUserAgent>>defaultErrorHandler to raise exceptions again.' id '25b31f4c-23b2-458e-939d-557bce7e1e71' date '6 October 2010' time '5:24:46 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.67' message 'removed another String>>#trimBoth usage from ZnMimePart>>#contentDispositionValues; reimplemented ZnUserAgentSettings class>>#platform more elegantly ' id '72a2d1b8-f68a-4c85-84c6-e7f515f1879b' date '6 October 2010' time '9:34:33 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MattKennedy.66' message 'Reverted ZnUserAgent>>defaultErrorHandler change. Wasn''t passing all tests correctly.' id '6a148c14-5451-4ca5-8180-767e1c376f08' date '5 October 2010' time '5:39:08 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.65' message 'ZnUserAgent default error handler raises exceptions to the debugger again. Added ZnHttpClient>>parameterAt:add:' id '433b8d17-912b-46dd-9a52-3888f753fdc4' date '5 October 2010' time '5:33:49 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.64' message 'added ZnUtils class>>#trimString: until String>>#trimBoth is available everywhere; fixed usage in ZnMimeType>>#contentDispositionValues ' id 'd25e7ffe-691e-43c1-9607-842b9225d5a8' date '5 October 2010' time '9:26:53 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.63' message 'first complete/working version of ZnMultiPartFormDataEntity and ZnMimePart (reading/writing/instance creation/accessing); added ZnMimeType>>#parameterAt:[ifAbsent:] ' id '5c9658b2-329f-4197-b9a5-d25751435191' date '5 October 2010' time '8:33:32 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.62' message 'first rough and unfinished implementation of ZnMultiPartFormDataEntity; started extending ZnMimePart to allow field handling; introduced ZnBivalentWriteStream ' id '19b39ff5-631f-4e08-bda2-370466c52bae' date '4 October 2010' time '9:24:15 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MattKennedy.61' message 'Added ZnHttpClient which subclasses ZnUserAgent to implement a high level API. Updated ZnUserAgent>>prepareCredentials:for:method: to handle credentials stored on the session before the client receives a 401 from the server. ' id '70e0bcdb-0b42-4f13-9c9b-c7d1b8a01815' date '1 October 2010' time '10:31:54 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.60' message 'Expanded options for MD5 hash mechanisms in ZnDigestAuthenticator. Added test method to ZnDigestAuthenticator to answer if MD5 support is available.' id '7b1d4f73-febb-4e32-86ca-8af7b3e610e5' date '1 October 2010' time '5:44:52.598 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-svc.59' message 'OK, even more fixes after testing in Squeak 4.1 (MD5 is still missing though)' id '44a8cccf-1470-4fa8-9e15-344cba9e6411' date '1 October 2010' time '9:56:22.612 pm' author 'svc' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.58' message 'OK, some more fixes after testing in Pharo 1.2' id '93d5f2cc-330a-4931-8163-599c21f80253' date '1 October 2010' time '9:44:24 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.57' message 'reimplemented ZnUserAgentSettings class>>#platform to deal with Pharo 1.1/1.2 portability issues (introduction of OSPlatform class); modified ZnUserAgent>>#prepareHeaders:for: to use ZnHeaders>>#addAll: ' id 'bf8f9509-4a6c-4fed-9575-3202a9627d2e' date '1 October 2010' time '9:37:10 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MattKennedy.56' message 'Added .errorHandler to ZnUserAgent' id 'ae9aa81f-770d-40cc-859d-d1316d3a12cd' date '1 October 2010' time '2:44:47 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.55' message 'merging' id '3cae8f4c-33ca-44ab-85e9-c7e5e8f6a84d' date '1 October 2010' time '9:43:18 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.54' message 'introducing ZnMimePart (has maybe to much implementation in common with ZnMessage, but in use they are less similar) ' id '8888796c-9303-408d-b6c0-30310fee5ab6' date '1 October 2010' time '9:41:57 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MattKennedy.53' message 'Removed trimBoth: sender from ZnDigestCredential>>parseAuthRequest:' id '5d0dfdae-b927-4634-a4a9-272e3d78aeb0' date '30 September 2010' time '12:28:40 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.52' message 'changed the required protocol for a ZnServer delegate from #value: to #handleRequest: ' id '6f652f18-f202-4ce8-b139-a47c687d36f1' date '30 September 2010' time '6:15:10 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.51' message 'changed ZnServer authenticator protocol from #value:value to #authenticateRequest:do: introduction of ZnBasicAuthenticator class as a first plugin ' id '49469b61-5c90-45cb-8253-5483f43f79e1' date '30 September 2010' time '4:35:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-LukasRenggli.50' message '- removed the sender of #trimBoth: that removes $" before and after the basic-autentication string, as #trimBoth: is not part of PharoCore - this fixes 2 breaking tests, but maybe introduces a regression on certain we browsers?' id 'a991e99b-b085-4cf0-ae5a-1d9addb5d83a' date '30 September 2010' time '8:33:20 am' author 'lr' ancestors ((name 'Zinc-HTTP-MattKennedy.49' message 'ZnDigestCredential now implements working Digest authentication support for client requests in ZnUserAgent.' id '4fb9842a-9138-4567-b15a-0136611d6ce8' date '29 September 2010' time '5:18:28 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.48' message 'Handling authentication credentials for ZnUserAgent with ZnCredentials and ZnUserAgentSession implemented, currently with support only for Basic authentication.' id '40c5bd87-c830-4b93-97d7-4f6b4a52b0de' date '29 September 2010' time '12:57:02 am' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.47' message 'Added ZnCredential and subclasses for Basic and Digest auth. Only stubs right now, next step to flesh out with test cases. Updated ZnUserAgentSession for storing credential objects. Added ZnMagicCookieJar>>cookieAt:forUrl: and ZnUserAgent>>cookieAt:' id '45c35930-c60a-48b8-b2b5-68a29e905ca4' date '28 September 2010' time '4:38:54 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.46' message 'Added ZnMagicCookie, ZnMagicCookieJar, ZnUserAgentSession. ZnUserAgent now accepts and sends cookies. Modified ZnHeaders>>readOneHeaderFrom: to add items with ZnHeaders>>at:add: instead of ZnHeaders>>at:put: to handle requests and responses with multiple Set-Cookie or Cookie headers.' id 'baf796cb-154c-454c-9ebd-c4f2d412a64c' date '28 September 2010' time '1:56:36 pm' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.45' message 'added ZnMessage>>#contents and ZnResponse>>#isSuccess; added ZnStreamingEntity>>#contents (non-repeatable); extended ZnFixedClient (added #isConnected and reimplemented #executeRequest error handling logic)' id '3831115e-48cf-466f-81e0-752247f6aefc' date '28 September 2010' time '2:17:57 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.44' message 'Merging Matt Kenedy''s code: Added ZnUserAgent and ZnUserAgentSettings' id '527f4690-0c3e-4e62-8482-de4bb3f76b0b' date '27 September 2010' time '11:36:10 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.43' message 'introduced ZnExperimentalServer to test server side connection keepalive/reuse; added ZnMessage>>#isConnectionClose; refactored ZnFixedClient with #preProcessRequest and #postProcessResponse (which handles server side connection close now) ' id 'bc799fbc-48ab-45c3-8cde-38fd1dd418bb' date '27 September 2010' time '11:25:06 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.42' message 'extended ZnEntityReader with the ability to read Gzip content encoded entities; added ZnRequest>>#setAcceptEncodingGzip; we now use socket streams in binary mode by default (see ZnUtils>>#socketStreamToUrl:); we''re now using ZnLineReader to read CRLF delimited lines (handles bivalent access); ZnEntities set content length in #readFrom: when reading upToEnd; refactored ZnLimitedReadStream to track position explicitely (added #position); added #position to ZnChunkedReadStream; fixed ZnMessage>>#readStreamingFrom: ' id 'c60def04-29e9-4bb0-95d2-dad31539c4cc' date '27 September 2010' time '7:55:43 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.41' message 'extended ZnEntityReader with ability to read chunked transfer encoded content (see #readEntity); created helper class ZnChunkedReadStream wrapping a chunked transfer encoded stream, hiding the encoding from clients; all ZnEntities'' #readFrom: methods now work either with defined #contentLength (as before) or with undetermined #contentLength (doing #upToEnd); added ZnHeaders>>#keysAndValuesDo: ' id '3a023d61-98e4-4eaa-9c60-e7826ce05fbf' date '26 September 2010' time '8:10:27 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.40' message 'introduction of ZnEntityReader helper object; added some more operations to ZnFixedClient; some API cleanup' id 'c076371b-1e6b-48ad-ad3e-78a678785484' date '25 September 2010' time '11:16:35 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.39' message 'first version of ZnFixedClient for talking to one host:port combination and trying for connection reuse; added ZnMimeType>>#applicationJson (as non-binary!) ' id '784a8e5d-f9ef-4b96-838c-86d330aeec7b' date '25 September 2010' time '9:14:28 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.38' message 'replace #crlf with nextPutAll: String crlf to improve stream compatibility; added #url accessor to ZnRequest (alias to #uri)' id '12cb56a0-a124-4e23-bded-52ad0bbecf87' date '21 September 2010' time '10:06:40 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.37' message 'try to use MIMEDocument without referencing MIMEType' id '5b008ad4-0e12-4218-995a-635d765fa653' date '21 September 2010' time '4:15:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.36' message 'introduced ZnUtils>>#ipAddressToString:' id '6f149459-e4bf-4eca-a3c6-a20ede32ac0a' date '21 September 2010' time '4:01:10 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.35' message 'implemented a complete set of ZnClient methods (GET,PUT,POST,DELETE,HEAD) with basic authentication variants; introduced ZnClient>>#executeOneShot:on:; refactored ZnMessage and subclasses reading (#readFrom: #readStreamingFrom: #readHeaderFrom:) to support asymmetric head requests and remove code duplication; cleaned up ZnMessage and ZnHeaders #contentType and #contentLength access improved some ZnHeaders methods to better deal with missing headers dictionary (lazy initialization); added ZnServer>>#printOn:; renamed some older classes' id '71e40771-0e1a-477c-b999-94ac5537668c' date '21 September 2010' time '12:59:31 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.34' message 'added #printOn: to ZnStatusLine, ZnRequestLine, ZnHeaders and ZnEntity; some bug fixes and added robustness' id '58cafaad-d422-458a-9f26-57b801613e83' date '20 September 2010' time '7:40:27 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.33' message 'Renamed all categories with old code to Zinc-HTTP-Old-*' id '56666b16-26a2-4785-a7b0-69934e9f5a1b' date '19 September 2010' time '6:44:52 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.32' message 'various changes suggested by Code critics' id 'b9a81c31-f509-4443-b5ab-5d0980ba1f1b' date '17 September 2010' time '8:54:02 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.31' message 'first working implementation of ZnMonticelloServerDelegate; added ZnResponse #setLocation and #setWWWAuthenticate; added ZnResponse convencience instance creation methods #created: and #badRequest:; ZnResponse convencience instance creation methods now pass their uri through ZnUtils>>#urlPathQueryFragmentOf:; ZnUtils>>#httpDate: now does an #asUTC conversion; added ZnUtils>>#streamFrom:to:size: fast stream copier; added ZnUtils>>isSlash:' id 'e3e6a58f-52f3-4474-b700-132198106c9d' date '17 September 2010' time '3:45:38 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.30' message '1st working version of ZnStaticFileServerDelegate (on 1 directory with 1 prefix); extended ZnResponse with #notFound: and #redirect instance creation methods; added ZnUtils>>#httpDate: (and implemented #httpDate using it); extended ZnMimeType with MimeTypes and ExtensionsMap class variables for faster constant access and file extension to mime type mapping; ZnStreamingEntity>>#writeOn: now closes its stream after using it ' id '6074fdf3-5027-46f8-9e5b-9629d0ef5074' date '16 September 2010' time '8:50:45 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.29' message 'ZnStatusLine and ZnRequestLine now handle their own crlf line ending (see #readFrom: and #writeTo:); Experimental introduction of ZnStreamingEntity (see #readStreamingFrom:) ZnLimitedReadStream is now used in ZnApplicationFormUrlEncodedEntity>>#readFrom: ' id '4fae956f-e1d3-4307-90d0-eae856459f18' date '15 September 2010' time '8:24:23 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.28' message 'fixed ZnMimeType parser dependency on Grease #trimBoth; added serverSocket as inst var to ZnServer' id 'd09f0956-371c-442a-aeab-0eed4d433a3e' date '15 September 2010' time '9:59:36 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.27' message 'fixing ZnHTTPSocketFacade>>#httpPut:to:user:passwd: semantics; added ZnMessage #head: #post and #put; added ZnHeaders>>#removeKey:[ifAbsent:] ; allowed for missing content-type when reading entities; enforcing content-length header to be string in #acceptEntityDescription: ' id 'cb4bffd1-218f-4103-8679-b81e5e51dc7a' date '14 September 2010' time '3:15:59 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.26' message 'ZnHTTPSocketFacade: adjusting semantics; implemented some missing methods; some refactoring (#execute:on) ' id '541ca458-55fa-404a-a317-9a5801a6322b' date '14 September 2010' time '1:27:39 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.25' message 'some code reformatting in ZnHTTPSocketFacade; added more strings to ZnConstants; ZnServer now returns a nice default welcome page (the echo handler now only runs when the path starts with ''echo'')' id '7c2531d4-acde-449a-8c98-ed0d3affe342' date '14 September 2010' time '11:07:31 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.24' message 'first complete implementation of (new) ZnHTTPSocketFacade (incomplete tests); added #contents to ZnEntity; added #addAll: and #withAll to ZnHeaders and ZnApplicationFormUrlEncodedEntity; store remoteAddress as dotted IP string instead of printed byte array' id 'd30509ad-79a7-4410-9507-0a34a6639fc2' date '13 September 2010' time '10:31:18 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.23' message 'reorganized categories (Zinc-HTTP-New-Core, Zinc-HTTP-New-Client-Server, Zinc-HTTP-New-Support); started new implementation of ZnHTTPSocketFacade (renamed old one to ZnOldHTTPSocketFacade) with image access methods; refactored image access methods in ZnClient (introduced ZnClient>>#getImageOfType:usingParser:fromUrl:); changed ZnEntity>>#contentType: to only allow assigning mime types compatible with an entity''s designated mime type (if any) ' id 'eb6683ed-f103-46af-aa28-4d1c0d6689f3' date '13 September 2010' time '4:17:53 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.22' message 'added support for server side basic authentication' id '55c0e0fa-9e16-428f-800a-0ed87537fb45' date '13 September 2010' time '1:54:44 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.21' message 'added support for client side basic authentication' id 'f61af145-d04a-4c18-b8a9-4dc9c904c636' date '12 September 2010' time '8:34:56 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.20' message 'added simple http client proxy support using the system settings (untested though) ' id 'bae5ca73-9f54-4b2b-bfa2-3eb66228c7e1' date '12 September 2010' time '11:55:51 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.19' message 'refactored ZnEntity hierarchy with new instance creation framework; implementation of ZnApplicationFormUrlEncodedEntity; created mock ZnMultiPartFormDataEntity; added ZnUtils>>#parseQueryFrom: ZnMimeType>>#printOn: now simply prints the RFC string ' id '10746c52-3fcb-4b36-895f-a5fc34b8dd04' date '12 September 2010' time '11:28:17 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.18' message 'added header name normalization; added optional multi-valued header values; added optional header value merging' id '1e65b930-7310-4677-b5cf-b779a38bf759' date '10 September 2010' time '9:06:19 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-pmm.17' message 'use aStream print: anObject instead of aStream nextPutAll: anObject printString' id '4b6b2702-4ec3-4314-b712-ccc1d9da802c' date '10 September 2010' time '12:40:03 pm' author 'pmm' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.16' message 'replaced usage of #displayString with #printString; renamed ZnMimeType>>#greaseString to #asRFCString' id '10c584eb-c842-4aa1-8ac7-60d2ca426265' date '10 September 2010' time '12:22:15 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.15' message 'added #at:ifAbsent: to ZnHeaders; added #headersDo: to ZnMessage; added #isRunning to ZnServer; ZnServer now sets a (ZnConstants remoteAddressHeader) header with the client''s remote IP address; extended ZnServer with a general purpose delegate mechanism ' id 'b3fa69a2-3f1a-4ea5-94db-47447fcab5a6' date '9 September 2010' time '8:53:14 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.14' message '1st primitive but working ZnServer' id '996b6601-b412-48ae-a64c-7dc78dac058d' date '8 September 2010' time '11:06:03 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.13' message 'ZnClient #get: and #getJpeg: now work for normal situations' id 'cbbe9f1e-39a9-4b3a-a6f1-e08e11c4c5cf' date '7 September 2010' time '8:04:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.12' message 'Started the Zinc-HTTP-New implementation; not much to see yet' id 'de2cead7-a4dd-4a3c-ac68-69e4cef2964d' date '6 September 2010' time '11:05:54 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.11' message 'some more recategorizations' id '7b109f45-7460-4edc-9983-3a201efa0815' date '5 September 2010' time '11:10:46 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.10' message 'refactoring for a cleaner #executeMethod: introducing #allHeadersFor:on: #generateRequestOn: #sendContentTo: removed #noContentLength: renamed #MIMEDocument to #getResponseAsMIMEDocument ; renamed some post method classes' id '0e5bf523-5aa9-40f3-be02-17abc7a18d6b' date '3 September 2010' time '11:29:04 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.9' message 'forgot one usage of #page' id 'd56be428-7eed-4712-ab04-2094e3808c3a' date '2 September 2010' time '8:16:21 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.8' message 'fixed wrong header case in #mimeTypeHeaderOn: ; refactored the extension protocol on HierarchicalUrl using new method names (using the concept of path directory and adding the String suffix for conversion methods)' id '28ab58db-ba2b-4db5-a473-2cd613cca92b' date '2 September 2010' time '8:10:41 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.7' message 'using code critics to remove some dead code and obvious problems (but may issues are left open); more method categorizations' id '1c64f23b-0156-41d4-bc9b-72d9c52d0227' date '2 September 2010' time '4:36:45 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.6' message 'did an initial method categorization in the core classes ZnHTTPClient and ZnHTTMethod (and its subclasses); removed one no-op #initialize' id '45e8c7be-7a6e-4aa3-8c8d-6f30c0e26bf5' date '2 September 2010' time '12:41:10 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.5' message 'introduced ZnConnectNew, a plugin replacement for ZnConnection.The old code was using its own SocketStream, now we''re using the system supplied SocketStream. Some backwards compatibility protocol was added, could be cleaned up later. It is probably also possible to use SocketStream directly; added ZnHTTPClientFacade with 2 get methods' id '2d453fab-9a2f-4743-8ce5-d7879bbc14a1' date '2 September 2010' time '11:47:13 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.4' message 'reduced some dependencies on extensions' id 'e3317890-f543-461c-a2de-d32ba48b2af0' date '1 September 2010' time '9:02:15 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.3' message 'Some cleanup of ZnHTTPSocketFacade''s class methods' id '58105dc7-a59a-4e9b-add7-1ae71a212e3c' date '1 September 2010' time '7:59:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.2' message 'Renamed HC HTTP Client to Zinc HTTP Components; Renamed all classes to use Zn namespace prefix; Renamed all extension protocols to *zinc-http; Renamed Facade to HTTPSocketFacade' id '42475f7f-909f-4292-90d2-78b2fe48c9a2' date '1 September 2010' time '7:13:12 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.1' message 'Renamed HC HTTP Client to Zinc HTTP Components; Renamed all classes to use Zn namespace prefix; Renamed all extension protocols to *zinc-http; Renamed Facade to HTTPSocketFacade' id '4b0032ae-27eb-462c-b0db-29800c2cc647' date '1 September 2010' time '5:29:24 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-MattKennedy.43' message 'Added ZnUserAgent and ZnUserAgentSettings.' id '217daf1b-07d3-4c49-bdf1-7b00262c5f70' date '27 September 2010' time '3:10:26 pm' author 'MattKennedy' ancestors ((id 'c60def04-29e9-4bb0-95d2-dad31539c4cc')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-MattKennedy.54' message 'Modifed ZnResponse so that the WWW-Authenticate response is no longer hard coded. ZnBasicAuthenticator supports optional custom realm settings. Added ZnDigestAuthenticator.' id '88223dbc-9831-4746-a680-f2eff6720e76' date '30 September 2010' time '5:36:25 pm' author 'MattKennedy' ancestors ((id '5d0dfdae-b927-4634-a4a9-272e3d78aeb0')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-MarcoSchmidt.166' message 'Patch to work behind firewall with basic authorization' id 'acb7f2fc-d621-5d4b-983f-25d217623f11' date '17 June 2011' time '3:31:11 pm' author 'MarcoSchmidt' ancestors ((name 'Zinc-HTTP-MarcoSchmidt.165' message 'Corrected wrong method send in NetworkUtils' id '4290066c-4367-794e-bb95-c058f1a268a0' date '17 June 2011' time '3:26:54 pm' author 'MarcoSchmidt' ancestors ((id '90d57d3d-fc41-4548-a2fd-dcd7c22a3a1f')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-DamienPollet.175' message 'Fix typo in exception names.' id '82fd6138-b87e-4e81-93ff-4c874ff72e03' date '4 August 2011' time '2:22:04 pm' author 'DamienPollet' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.174' message 'ZnDefaultServerDelegate>>#echoRequest: added option to delay the response to /echo with a specified number of seconds, as in echo?delay=60' id 'bec35859-b638-42c1-9689-3f1d7a540c8b' date '14 July 2011' time '9:54:57 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.173' message 'added ZnSingleThreadedServer>>#onRequestRespond: convenience method' id '75b3a711-a7ff-430d-a049-95a5dd1a1c3c' date '1 July 2011' time '2:17:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.172' message 'implemented client side support for If-Modified-Since and Not Modified: - added ZnRequest>>#setIfModifiedSince: - refactored ZnMessage>>#readFrom to call #readEntityFrom: - overwritten ZnResponse>>#readEntityFrom: to take special no content response into account - extended ZnUtils class>>#httpDate: to accept any argument that understands #asTimeStamp ' id '64fe262e-fd77-4b45-8f6a-f874995d07ec' date '28 June 2011' time '11:05:10 am' author 'SvenVanCaekenberghe' ancestors ((id '11c76430-7cc0-4885-b4a0-709f3fbf4f57')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.221' message 'added new #followsRedirects boolean option to ZnClient because setting #maxNumberOfRedirects to 0 did not work well for an example see the ZnClientTests>>#testRedirectDontFollow Thx Jan van de Sandt for reporting this' id '4df9982e-63e1-49ea-bfb0-2f9cb43f6f0b' date '23 November 2011' time '5:30:09 pm' author 'SvenVanCaekenberghe' ancestors ((id '147d6c42-b509-40e4-abb0-7c804d5df01d')) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.215' message 'modified ZnNeoClient>>#contents to return the stream when streaming is requested (more specifically: do not call #contents on the ZnStreamingEntity by default as this would defeat the whole idea of streaming; note that when there is a #contentReader it should do the right thing)' id 'c94ae1c2-5cc3-4ce6-9f04-28155f6834c9' date '26 October 2011' time '2:45:52 pm' author 'SvenVanCaekenberghe' ancestors ((id '248c4eaf-ca0f-4584-99f4-d399438fd2ed')) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.223' message 'added missing ZnChunkedReadStream>>#next:into: that was used by ZnEntityReader when reading a ZnByteArrayEntity fix to Pharo issue 5053 (http://code.google.com/p/pharo/issues/detail?id=5053) thanks Laurent Laffont for reporting' id '19ce4497-786a-46a7-bd6c-55fa682dba56' date '3 December 2011' time '5:51:17 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.222' message 'small fix to ZnEntityReader>>#readEntityFromStream added an extra guard copying extraHeaders from a chunked stream since these are missing when reading a streaming entity' id 'a1b1d190-4690-4cc0-b9b5-eab77cc5153b' date '1 December 2011' time '10:40:29 am' author 'SvenVanCaekenberghe' ancestors ((id '4df9982e-63e1-49ea-bfb0-2f9cb43f6f0b')) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.226' message 'changed ZnMimeType such that the ''constants'' returned by the methods in the class side convenience protocol can now be freely modified by returning a copy; implemented ZnMimeType>>#postCopy; ZnMimeType>>#parameters will now lazy initialize to a SmallDictionary instead of a regular Dictionary' id '52cc1692-4d4f-4c43-813c-21b61e386eaf' date '6 December 2011' time '8:56:22 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-NorbertHartl.225' message 'changed ZnApplicationFormUrlEncodedEntity to check encoding of contentType. If an encoding is present to presentation is written using the specified encoding' id '18a28639-5e95-4594-937c-268df69987ec' date '6 December 2011' time '6:30:33 pm' author 'NorbertHartl' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.224' message 'added ZnLimitedReadStream>>#peek' id '4f9dffc5-3af2-4adc-a0c9-0bc22d1de76e' date '4 December 2011' time '8:10:11 pm' author 'SvenVanCaekenberghe' ancestors ((id '19ce4497-786a-46a7-bd6c-55fa682dba56')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.232' message 'changed ZnClient>>#executeWithTimeout to use an explicit and selective #exceptionSetForIfFail so that only network, http parsing, http unsuccessful and unexpected content type exceptions trigger the #ifFailBlock; this fixes the problem where HTTPProgress exceptions triggered the ifFail block; thx Camillo Bruni ' id '3ca78fe3-4355-46ee-9ba3-5e0f540b9ec0' date '20 December 2011' time '2:24:53 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.231' message 'Extended the ZnHttpUnsuccessful and ZnUnexpectedContentType exceptions to contain the repsonse respectively the two content types so as to produce better error messages (thx Camillo Bruni for suggesting this)' id 'c94e86a8-3b1a-4c26-bae5-3aebc90764b2' date '20 December 2011' time '1:26:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.230' message 'Changed ZnClient>>#timeout to use the global ZnNetworkingUtils defaultSocketStreamTimeout as default' id 'fb0c7c07-a6dd-4105-bdd4-a65860b4b452' date '14 December 2011' time '2:07:42 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.229' message 'expanded the ZnUrl class comment' id 'b239edd4-c432-4139-a71a-d27618beef91' date '14 December 2011' time '1:45:28 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.228' message 'added ZnUrl>>#queryKeys' id 'f979e877-6dfa-4167-b159-ec322a629c98' date '13 December 2011' time '2:21:02 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.227' message 'added the WebDAV methods to ZnConstants class>>#knownHTTPMethods; added convenience constructor #xml: to ZnStringEntity and ZnEntity' id 'd8262a06-7f5b-4a88-9fdb-cc4bb05ed422' date '11 December 2011' time '7:47:11 pm' author 'SvenVanCaekenberghe' ancestors ((id '52cc1692-4d4f-4c43-813c-21b61e386eaf')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.233' message 'Rewrote ZnServer and subclasses''s class methods #startDefaultOn: and #defaultOn: to treat the default instance like a singleton by reusing/restarting/reconfiguring existing instances; expanded comments; Changed the implementation of ZnServer>>#start to automagically register the default instance; Changed the implementation of ZnServer>>#stop to always unregister; added ZnServer>>#stop: with an option to control the unregistering so that it does not happen when shutting down the image ' id '8dd541c9-2890-4a8f-b5cb-d6ac2e9341af' date '22 December 2011' time '12:54:05 pm' author 'SvenVanCaekenberghe' ancestors ((id '3ca78fe3-4355-46ee-9ba3-5e0f540b9ec0')) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.234' message 'changed the implementation of ZnHeaders to use ZnMultiValueDictionary; ZnLineReader now uses ZnConstants class>>#maximumLineLength (4096) as default for signaling a ZnLineTooLong exception; added a limit option to ZnMultiValueDictionary that defaults to ZnConstants class>>#maximumNumberOfDictionaryEntries (256) for signaling a ZnTooManyDictionaryEntries exception; added new ZnTooManyDictionaryEntries error; changed parent of ZnTooManyRedirects from Exception to Error and added a #isResumable true method; extended ZnMultiThreadedServer>>#readRequestSafely: to also catch ZnTooManyDictionaryEntries' id 'add34728-015e-46b6-9aeb-eda8f63e1f03' date '3 January 2012' time '3:42:40 pm' author 'SvenVanCaekenberghe' ancestors ((id '8dd541c9-2890-4a8f-b5cb-d6ac2e9341af')) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.235' message 'now using #trimBoth instead of #withBlanksTrimmed' id 'bc327259-a3d3-4829-a24a-504b08ab8cbf' date '8 January 2012' time '2:20:02 pm' author 'SvenVanCaekenberghe' ancestors ((id 'add34728-015e-46b6-9aeb-eda8f63e1f03')) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.242' message 'added ZnEntityTooLarge to the exceptions silently catched by ZnMultiThreadedServer>>#readRequestSafely:' id '8c18da8d-4ec0-40a7-92ea-01e7c09b9929' date '1 February 2012' time '11:26:10 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.241' message 'simplified and optimized implementation of ZnChunkedReadStream' id '36d5243f-deb3-4689-9315-d3d4c5393da7' date '31 January 2012' time '9:21 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.240' message 'added some speed improvements to the implementation of ZnLimitedReadStream' id '24874b38-2c00-4d0c-b3b3-cec7c4f91d71' date '31 January 2012' time '9:08:09 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.239' message 'fixed the implementation of ZnLimitedReadStream to honor EOF on the underlying stream' id '16a06aa4-34ec-4c81-87ca-701823088ac2' date '31 January 2012' time '8:55:24 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.238' message 'introduction of a resource limit to the size of entities read from a stream; added ZnConstants class>>#maximumEntitySize[:] added ZnEntityTooLarge resumable exception added ZnUtils class>>#readUpToEnd:limit: #readFrom: logic of Zn[String|ByteArray|MultiPartFormData]Entity now take the limit into account extended ZnChunkedReadStream and ZnLimitedReadStream with #readInto:startingAt:count: as a first step to improve their performance' id '4af222aa-e05c-458b-a1ce-2d62b2d23d2d' date '31 January 2012' time '2:02:43 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.237' message 'changed ZnMimePart class>>#fieldName:value: to use ZnEntity>>#with: on the value so that Strings become ZnStringEntities and others become ZnByteArrayEntities; changed ZnUrl>>#queryAt: to signal a KeyNotFound error when there is no query' id '37e466f7-592f-4f15-a016-f2689b56f3fb' date '29 January 2012' time '7:43:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.236' message 'added ZnUrl>>#retrieveContents convenience method' id 'b5d081c0-6b4f-40a2-8e4c-5b58c4a02de5' date '24 January 2012' time '11:59:43 am' author 'SvenVanCaekenberghe' ancestors ((id 'bc327259-a3d3-4829-a24a-504b08ab8cbf')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.256' message 'renamed ZnServer>>#interface[:] to ZnServer>>#bindingAddress[:] following a suggestion by Norbert Hartl, Thx!' id 'a3d6638c-d5c4-4c20-a6c1-566e00b752fb' date '13 April 2012' time '1:20:15 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.255' message 'added technology to allow entities to be read binary even when they are textual, thus disabling Zn''s normal decoding behavior; this is what Seaside expects (as Seaside does its own conversions); added ZnEntityReader>>#[is]Binary; added ZnMessage[class]>>#readBinaryFrom: added ZnEntity class>>#readBinaryFrom:usingType:andLength: added ZnSingleThreadedServer>>#reader[:] to allow customizing entity reading' id 'e0d6d894-7fbb-41dd-8376-f87e4ca9da32' date '7 April 2012' time '6:29:44 pm' author 'SvenVanCaekenberghe' ancestors ((id '3b82b4f5-a0ed-44b4-bcd1-a5ec129d9d42')) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-PaulDeBruicker.257' message ' Added ZnResponse>>#isError which checks if the ZnStatusLine code is >399. ' id '63eca7f3-2b5b-4112-b91e-b76ddcf0453c' date '19 April 2012' time '5:05:46.274 pm' author 'PaulDeBruicker' ancestors ((id 'a3d6638c-d5c4-4c20-a6c1-566e00b752fb')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.282' message 'killed a (comment) reference to mac.com' id 'de6f7d59-22da-4612-937b-07111df60678' date '4 July 2012' time '5:56:31.754 pm' author 'SvenVanCaekenberghe' ancestors ((id '1fcf9d84-c2c3-4e70-b45a-6c68a381329d')) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.283' message 'added an efficiency improvement to ZnMultiPartFormDataEntity>>#parse:boundary: added convenience protocol to ZnUrl: - #withPathSegment[s]: #/ - #withQuery: #? #&' id '51351ae8-99a9-44cc-856a-976fcd55e2cf' date '9 July 2012' time '4:38:29.98 pm' author 'SvenVanCaekenberghe' ancestors ((id '03911f2b-c422-4142-bedf-617d90674243')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.305' message 'added extra guards to prevent ZnClent options #beOneShot and #streaming: true to be used at the same time because that would result in the stream being closed too soon; added ZnMimeType class>>#imageSvg (thx Paul DeBruicker)' id '3e1c02b0-b966-4d0d-96fb-ab90e7c1dc44' date '27 September 2012' time '2:45:26.233 pm' author 'SvenVanCaekenberghe' ancestors ((id 'dc02fe1f-869b-49a9-a281-f297b576181e')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-HTTP-SvenVanCaekenberghe.371' message 'Added an optimalization to ZnUTF8Encoder>>#readInto:startingAt:count:fromStream: to avoid the price of #becomeForward: when a ByteString to WideString conversion happens' id 'ef28893e-9902-4f96-bd30-1c97796df7f5' date '06/11/2013' time '04:34:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.370' message 'Two optimalizations: ZnStringEntity>>#readFrom: and ZnUtils class>>#readUpToEnd:limit: (if all contents read fits in the first buffer, take a fast path) - bis' id '78ad6f26-8414-47d1-980e-f1df75d91b2b' date '06/11/2013' time '02:06:42' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.369' message 'Two optimalizations: ZnStringEntity>>#readFrom: and ZnUtils class>>#readUpToEnd:limit: (if all contents read fits in the first buffer, take a fast path)' id '6ad9e454-799e-4d99-bd39-92f12cc41bef' date '06/11/2013' time '01:59:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.368' message 'Added/refactored some ZnHeaderTests Fixed ZnClientTests>>#testGetGeoIP' id '313a504c-dee4-49c8-8541-bdcdda740273' date '06/11/2013' time '11:41:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.367' message 'Introduction of ZnEntity class>>#matches: to fix ZnEntity class>>#concreteSubclassForType:binary: and ZnEntity>>#contentType: (Thanks Andy Kellens)' id '04dcc6f1-361f-46c1-a734-746b71460eb2' date '06/04/2013' time '04:28:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.366' message 'Updated some class comments' id 'ab163d28-d657-479b-90e3-b12566dfcb34' date '06/04/2013' time '01:52:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.365' message 'Further performance tuning of ZnEntity reading/writing' id '42e083e5-cad8-4800-b439-18bdb755909b' date '05/28/2013' time '01:25:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.364' message 'Optimized ZnHeaders>>#normalizeHeaderKey: using a CommonHeaders set' id '5564fa6a-bcde-4cfd-817c-3fd49f51d34d' date '05/28/2013' time '12:09:48' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.363' message 'Implemented ZnTestRunnerDelegate (original idea by Norbert Hartl - Thx) Minor optimalization to ZnUtils class>>#nextPutAll:on:' id 'a1fa8795-eb44-4812-81e7-3da28fa9bda9' date '05/28/2013' time '10:38:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.362' message 'Changed ZnMultiThreadedServer>>#readRequestTerminationSet to a more sane value (this was probably forgotten in the last refactoring) Added a CRLF to /echo in ZnDefaultServerDelegate' id '0ec0f1da-d41f-4b7a-9911-7111341cad51' date '05/27/2013' time '04:21:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.361' message 'A new implementation of ZnStringEntity>>#readFrom: based on buffer wise delegation to ZnCharacterEncoder>>#readInto:startingAt:count:fromStream' id '109ed743-caf5-410c-9162-72933240fa53' date '05/23/2013' time '12:37:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.360' message 'Performance enhancement in ZnMessage/ZnEntity writing (more intelligent buffering, more intelligent encoding) Implemented #= and #hash for all Zn Core objects Tracking ZnMimeType>>#= and #match: changes Added new tests and benchmarks ' id '9ee5d56f-fd93-4115-976f-371df43dd56d' date '05/22/2013' time '04:35:36' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.359' message 'Fixed a typo in ZnNetworkingUtils>>#initialize' id '455db906-7f02-4451-80e5-1efb8573609a' date '05/20/2013' time '03:31:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.358' message 'FIx ZnResponse>>#setTransferEncodingChuked to send a #clearContentLength' id 'd4a01cc3-c7b5-440c-8cfd-7f10b395816e' date '05/20/2013' time '03:02:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.357' message 'Added ZnServer>>#useGzipCompressionAndChunking[:] option and implementation (disabled by default)' id '3586cb96-51a2-4c00-b120-1ec622e2505a' date '05/19/2013' time '09:25:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.356' message 'Refactored ZnEntity subclasses #writeOn: to use the newly introduced ZnUtils class>>#nextPutAll:on: ZnEntityWriter now uses a buffered stream when there is chunking without gzip compression for text (otherwise each character would become a chunk) Switched ZnNetworkingUtils to use ZdcSocketStream when it is available' id '3c079a63-a106-4254-aa8c-81bc9a64aa69' date '05/19/2013' time '11:49:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.355' message 'Introduction of ZnEntityWriter with support for gzip/chunked encoding' id '69d9f0c8-d113-41e9-ab0d-8ba97e296597' date '05/18/2013' time '02:06:11' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.354' message 'Added #chunkCount to ZnChunked[Read|Write]Stream Added #position to ZnChunkedWriteStream' id '9dcbc597-fb19-4469-937f-9dc504b5d02d' date '05/18/2013' time '12:42:31' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.353' message 'Optimized ZnChunkedReadStream>>#upToEnd' id '79dce0bc-490e-4364-b138-584728356cc6' date '05/17/2013' time '11:57:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.352' message 'Added ZnChunkedWriteStream Reorganized ZnChunkedStreamTests' id '2ac8bc6d-5fdd-408b-8212-93df128a777a' date '05/17/2013' time '05:06:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.351' message 'Improved and simplified ZnReadEvalPrintDelegate.' id 'a4a8cbaf-2c42-485b-b442-8f982d8e08a4' date '05/16/2013' time '01:16:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.350' message 'Added ZnReadEvalPrintDelegate, a REPL Web Service.' id 'd18e631a-94e4-4803-9549-beff989ff14b' date '05/15/2013' time '10:46:07' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.349' message 'Changed exception handling in ZnMultiThreadedServer: parse errors while reading an incoming request now result in a bad request response ' id 'b77fabc9-a1e3-462a-8c1a-e18b4b017f25' date '05/14/2013' time '01:42:46' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.348' message 'Added ZnClient>>#curl debugging utility which generates a curl command line invocation from the current request' id 'c238e1b9-84f9-4960-bca4-6c0fae43db50' date '05/07/2013' time '05:05:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.347' message 'Extended ZnClient>>#noteRedirect to take the target URL as argument and log it' id '145d12ff-c4af-446a-9666-db575fcb7ff8' date '04/19/2013' time '01:24:07' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.346' message 'Bugfix to ZnApplicationFormUrlEncodedEntity>>#addAll: (#invalidateRepresentation was no longer called after a recent refactoring) - Thanks Paul DeBruicker' id 'fe87820c-7859-4abe-8258-2e93c9b2611b' date '02/24/2013' time '11:07:46' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.345' message 'Added a #prepareRequestHook to ZnClient (see #prepareRequest: to set, #prepareRequestHook to access and #prepareRequest for the invocation); the request preparation hook is an object conforming to the #value: protocol that gets the final chance to change a request right before it gets executed. Typically used to sign requests.' id '5429a096-2d7d-4bc6-9b41-ab845c52a2c7' date '02/21/2013' time '05:10:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.344' message 'Switch the internal lastUsed instance variable of ZnClient from using full TimeStamp to Time totalSeconds' id 'b241e90f-e64d-4a16-89f7-b484d9a21ca8' date '02/11/2013' time '11:53:16' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.343' message 'Bugfix in ZnSingleThreadedServer>>#logServerError:' id 'a6ebbdf3-96b6-48fd-82ca-663bddafeeea' date '02/01/2013' time '04:22:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.342' message 'ZnServer''s #handleRequestProtected: will now also do a #logServerError unless #logServerDetails is false - this gives exception, signaller context details and a stack trace of depth 8 when an unhandled error occurs.' id 'c2255d27-bd92-4e23-965c-7be405ac857e' date '01/31/2013' time '11:56:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.341' message 'Moving ZnMonticelloServerDelegate from Zinc-HTTP-Client-Server to Zinc-FileSystem and Zinc-FileSystem-Legacy' id '6459b7f2-49d1-4e4e-80cf-fff3f83a7969' date '01/30/2013' time '07:56:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.340' message 'Extended ZnClient>>#url: to accept the new user info (username and password) component of ZnUrl when present; ZnRequestLine>>#uri: now explicitely calls #enforceKnownScheme' id '46c6777e-07a4-41e9-8505-26f3db1f0438' date '01/30/2013' time '07:45:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.339' message 'Bugfix to ZnApplicationFormUrlEncodedEntity>>#readFrom: which failed when content-length was not specified (Thx Jan van de Sandt)' id '60911520-b3de-4382-89bb-aa6376640012' date '01/25/2013' time '02:46:15' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.338' message 'added ZnMessage>>#writeToTranscript' id '6fc88bfa-6111-4190-8ced-939a040c67ef' date '01/24/2013' time '10:07:31' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.337' message 'fix ZnUtils class>>#signalProgress:total: bug when total was nil: #format: index should be 1 not 0 (Thx Camillo Bruni !)' id '0cfbd214-abe9-4f6e-8a14-7184b312428b' date '01/15/2013' time '04:02:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.336' message 'Some internal ZnServer refactoring/cleanup; primary change is that ZnCurrentServer is now set over the whole request/response cycle including the reading/writing and not just the handleRequest (this was needed for WebSockets)' id 'd8ac8c4a-3914-4295-bcb3-e0ce7b22f745' date '01/10/2013' time '03:56:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.335' message 'ZnResponse class>>#redirect: and #created: now accept absolute URLs as well (thx Jan van de Sandt) New ZnRequest API (all suggested by Jan van de Sandt): #host to return the Host: header field as ZnUrl #relativeUrl to explicitely request the request line uri as a relative URL #absoluteUrl to combine the request line URL with the host URL into an absolute URL #mergedFields to return a multi value dictionary combining query fields and application url encoded form fields ZnClient>>#redirectUrl now uses ZnUrl>>#inContextOf: Reimplemented ZnApplicationUrlEncodedEntity>>#addAll: and ZnHeaders>>#addAll: using ZnMultiValueDictionary>>#addAllMulti: ' id '085c1ffd-3ce3-46a7-81ab-d504bd7f0dd8' date '01/07/2013' time '12:37:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.334' message 'Added ZnServer>>#url and the #serverUrl option, as well as #scheme. Now sorting all handlers in ZnDefaultServerDelegate>>#generateHelp ' id '4db52577-5ad9-4194-acf8-68abbcff67a3' date '01/04/2013' time '02:25:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.333' message 'refactored ZnSingleThreadedServer and subclasses (added #authenticateAndDelegateRequest: and protocol ''request handling''); added ZnServer #route option; extended ZnServerSessionManager>>#newSessionId to use the server route when set' id '2391f87a-1b49-4491-bd8f-722a1257d12e' date '12/31/2012' time '05:06:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.332' message 'fixed a typo/bug in ZnServerSessionManager>>#sessionFor: (expired sessions were not removed correctly)' id '89ca824f-fd84-4c63-aed7-d581dcca5a93' date '12/25/2012' time '09:28:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.331' message 'Backported a Pharo 2.0 patch: ZnNetworkingUtils>>#shouldProxyUrl: now takes the new NetworkSystemSettings class>>#isAnExceptionFor: API into account, when it is available (for pre 2.0 compatibility)' id 'b1ec8d0d-1367-4de3-94e6-c6e8fe1a8831' date '12/24/2012' time '02:30:59' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.330' message 'added ZnSingleThreadedServer>>#handleRequestProtected: with a general and global error handler that normally returns an HTTP server error unless the server is in #debugMode' id 'e049c94f-6d29-4d21-a235-7b4ce689b090' date '12/23/2012' time '06:27:48' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.329' message 'added ZnServerSession>>#attributeKeys and #removeAttribute:' id 'afc731a8-d1f6-4f5a-846d-c13ade5ab68a' date '12/21/2012' time '12:03:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.328' message 'Replaced ZnPercentEncodingWrong with ZnCharacterEncodingError; Using #beLenient ZnCharacterEncoder instanciation in ZnStringEntity>>#initializeEncoder since apparently even Google sends spurious Latin1 characters' id 'a6d2358e-3ca9-43c5-b4dc-8e885ad9895d' date '12/17/2012' time '04:22:16' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.327' message 'creation of Zinc-Character-Encoding-[Core|Tests] by moving various classes out of Zinc-HTTP' id '501cdb52-158d-4020-b01e-cab709a4cab6' date '12/16/2012' time '05:02:53' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.326' message 'introduction and usage of ZnCharacterEncodingError exception; rewrote ZnBufferedReadStream>>#upToEnd and ZnCharacterReadStream>>#upToEnd' id 'a384cd05-21fe-4e48-b5fd-1ed7e7c73cf4' date '12/16/2012' time '04:35:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.325' message 'fixed a typo in a ZnBase64Encoder class method' id '55fd39e4-2495-4a6b-8db3-135cc9ba6f3b' date '12/16/2012' time '12:59:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.324' message 'changed the implementation of ZnByteEncoder to correctly honor and dleal with holes in official mappings' id '50d334f7-91c4-479b-8d44-1e76a945754f' date '12/15/2012' time '10:02:55' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.323' message 'modified ZnByteEncoder to use its own byte to Unicode mapping tables; this includes the change that latin1 is no longer mapped to a null encoder' id '819adf4a-fa93-4994-9a80-640fdf069311' date '12/15/2012' time '08:09:25' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.322' message 'finished the implementation of ZnBase64Encoder' id '95c632af-ec48-489c-bb94-8d44cc989787' date '12/15/2012' time '02:11:13' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.321' message 'added empty ZnBase64Encoder' id 'cc44a426-3f95-4b1c-9e3c-095bba14632e' date '12/14/2012' time '07:53:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.320' message 'added ZnPercentEncoder' id 'a32bf1d1-469c-4274-9d5c-efeeb2443df4' date '12/13/2012' time '11:31:31' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.319' message 'reworked/simplified some ZnClient internals - removed the state concept and instance variable - removed the #resetRequestIfNeeded concept and method; added ZnClient>>#resetEntity; added ZnClient>>#isCreated and #isNotFound note: this might make some semantic differences for people heavily reusing ZnClient instances' id '0da03bdc-ec26-42c0-b04b-f1cd13f6f9bc' date '12/12/2012' time '10:40:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.318' message 'moved HierarchicalUrl>>#asZnUrl from Zinc-Resource-Meta-Core back to Zinc-HTTP' id 'b7c4b025-6901-428f-9a4d-04544f32b6dd' date '12/11/2012' time '10:15:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.317' message 'added ZnResponse>>#isNotFound' id 'c7b7a02b-2b16-4b98-9d41-1115e6fac2f9' date '12/10/2012' time '09:33:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.316' message 'moving ZnUrl, ZnMimeType and related support classes to a new, independent package Zinc-Resource-Meta-Core (and unit tests to Zinc-Resource-Meta-Tests); extended ZnUrl to allow for some simple file:// URLs' id '9e15776d-4fc6-4b0b-91be-8552bc8cfe29' date '12/08/2012' time '09:15:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.315' message 'added ZnServerSession>>#attributeAt:ifAbsentPut:' id '4790203a-4259-4a33-a31f-dc867a2a38ab' date '12/07/2012' time '01:27:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.314' message 'Improved performance of ZnUTF8Encoder #nextFromStream: and #nextPut:toStream: by making the ASCII path really fast and by unrolling the block closure creation and usage; Added ZnCharacterReadStream>>#peekFor:; FIxed ZnCharacterReadStream>>#encoding:' id 'edc26e38-09d5-4e60-9c66-3ff28fe9bdd1' date '12/03/2012' time '03:00:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.313' message 'Added ZnBufferedReadStream>>#peekFor: Added ZnBufferedReadStream class>>on:do: improved some comments' id 'ec815554-cc36-435d-805d-67a2ad49465f' date '12/02/2012' time '08:03:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.312' message 'added ZnBufferedReadStream (from STON); extended ZnBufferedWriteStream (with #next:putAll:startingAt: logic); added tests for these' id '6ac64f4c-3d4b-4d29-bfab-8b181d8668b6' date '11/30/2012' time '10:59:36' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.311' message 'initial version of optional server session management; ZnMessage and subclasses now implement #server and #session implemented via dynamic & process local variables respectively; moved ZnHTTPSocketFacaded to deprecated; started new category Zinc-HTTP-Variables; extended some default server delegate responses, added ''session'' response with counter test' id 'aa1d7f79-a906-4a72-a1f6-675ed32982f6' date '11/11/2012' time '08:14:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.310' message 'bugfix: ZnManagingMultiThreadedServer was overwriting the wrong #stop method (thx Pavel Krivanek)' id 'a50aebff-8910-4553-95d7-b89a9e97a8f4' date '10/10/2012' time '10:48:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.309' message 'merged with 305 (thx paul)' id '3da1e6fc-76e0-4efa-8abe-7f334d9644bc' date '10/02/2012' time '06:59:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.308' message 'added ZnClient>>#setAcceptEncodingGzip as well as ZnClient>>#isNotModified' id '25811184-aeab-4d41-88f0-59277712dac0' date '09/30/2012' time '09:03:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.307' message 'Modified ZnServer class>>#startUp: to use a deferred startup action to start all registered servers; this should allow for normal error handling when something goes wrong initializing server sockets (thanks Igor Stasenko for the fix; thanks Denis Kudriashov for the error report)' id '9387492b-daa2-4ebf-a49d-44950586bda3' date '09/29/2012' time '09:00:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.306' message 'extended ZnResponse>>isRedirect with 303 and 307' id '26b8c486-2b3b-46be-942e-d6ac67f0ac62' date '09/27/2012' time '10:07:25' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MarcusDenker.305' message 'Issue 6697: Zn+Zdc Update 2012-09-19 http://code.google.com/p/pharo/issues/detail?id=6697 Issue 6699: Share binding of metaclass methods http://code.google.com/p/pharo/issues/detail?id=6699 ' id '04e33e2c-1223-4626-87fb-3f4d73052504' date '09/21/2012' time '01:50:10' author 'MarcusDenker' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.305' message 'added extra guards to prevent ZnClent options #beOneShot and #streaming: true to be used at the same time because that would result in the stream being closed too soon; added ZnMimeType class>>#imageSvg (thx Paul DeBruicker)' id '3e1c02b0-b966-4d0d-96fb-ab90e7c1dc44' date '09/27/2012' time '02:45:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.304' message 'Added option ZnServer class>>#alwaysRestart: to fine tune the shutDown/startUp behavior, defaults to previous behavior' id 'dc02fe1f-869b-49a9-a281-f297b576181e' date '09/18/2012' time '01:51:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.303' message 'Refactored ZnNetworkingUtils>>#socketStreamToUrlDirectly: to honor/use the correct timeout both when doing a DNS lookup as well as during connect by using NetNameResolver directly as well as using #openConnectionToHost:port:timeout' id '9f5a3863-fc08-470d-b8a1-d44169952a66' date '09/18/2012' time '10:03:40' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.302' message 'Added HTTPProgress signalling to ZnByteArrayEntity, ZnStringEntity as well as ZnUtils class>>#readUpToEnd:limit: Refactored streaming and HTTPProgress signalling in ZnUtils by addition of ZnUtils class>>#[streamingBufferSize|signalProgress:total:]' id 'd3e6d62a-ed00-40c7-aa9a-476111595f2f' date '09/17/2012' time '04:08:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.301' message 'Fixed a bug where HTTPProgress notifications would trigger a retry. Thanks Camillo Bruni for finding this problem and suggesting a solution. Now, retries are only triggered by (NetworkError, ZnParseError), while the #ifFailBlock will be trigger on any Error. Furthermore, #noteRetrying: and noteIgnoringExceptionOnReusedConnection: will report on the actual exception. The default #ifFailBlock is now [ :exception | exception pass ] for some cleaner code. ' id '85632c09-a6c4-40e9-b29b-1c5e86d07ead' date '09/17/2012' time '10:10:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.300' message 'removal of all classes in Zinc-HTTP-Deprecated - ZnClientOld - ZnFixedClient - ZnExtendedFixedClient - ZnUserAgent - ZnHttpClient - ZnUserAgentSettings as well as all their unit test classes' id 'a09fb75e-0ba5-489c-bc1b-435481a08164' date '09/05/2012' time '01:59:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.299' message 'changed maximumEntitySize concept from a normal class variable on ZnConstants to a dynamic/process-specific variable ZnMaximumEntitySize; added the option #maximumEntitySize to ZnServer' id 'f16b9f44-38a7-403e-9743-57fe2e25e800' date '09/05/2012' time '01:21:19' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.298' message 'introduction of options in ZnServer; refactored port, bindingAddress, delegate, authenticator and reader as options' id '9f5f3ab5-6fc9-43f3-9815-579cb01d954c' date '09/05/2012' time '11:24:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.297' message '#includesSubString: becomes #includesSubstring:' id '1b207b45-8524-4e16-b2c4-64337eadb784' date '08/27/2012' time '09:41:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.296' message 'added [ZnDefaultServerDelegate|ZnMonticelloServerDelegate]>>#value:' id '8f44e26a-2144-48ce-8e30-6239fcf3d50d' date '08/22/2012' time '03:00:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.295' message 'fixed type (wws should be wss); patched ZnNetworkingUtils>>#socketStreamToUrlDirectly: to treat wss as needing a #connect' id '233bcdca-806d-4bce-b09f-13ab7b81c9b0' date '08/22/2012' time '11:15:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.294' message 'extended ZnMultithreadedServer>>#executeRequestResponseLoopOn: with two new features related to the response objects generated by delegates: - the response object now also can answer whether or not it #wantsConnectionClose - after a response is written (flushed and logged), the response objects gets a chance to continue using the connection in the current thread/process for its own custom purposes through #useConnection: ' id 'c0e261d1-ad93-46e1-8b01-c5eedc7d32af' date '08/21/2012' time '01:29:19' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.293' message 'changed ZnSingleThreadedServer>>#serveConnectionOn: to no longer fork a worker thread/process as this is against the key idea of the class (this in not really active code, so this cleanup in more theoretical)' id '03d30d07-c250-483b-8525-91f709584ce7' date '08/20/2012' time '02:10:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.292' message 'fixed an offset bug in ZnUtils>>#streamFrom:to: (thx again, Chris Bailey)' id '932b7c3b-0892-48e0-a156-87cd9c4661cf' date '08/03/2012' time '10:49:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.291' message 'various fixes to ZnChunkedReadStream>>#readInto:startingAt:count: (thx Chris Bailey for reporting the problem); added ZdcALimitedReadStream>>#nextInto: as it is used by Fuel' id '3d8c50cd-2d7b-459f-89f3-b77a23dccfdd' date '08/02/2012' time '11:26:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.290' message 'added ZnUtils class>>#streamFrom:to: to copy one stream to another using a buffer without knowing the size upfront and thus using #atEnd; patched ZnStreamingEntity>>#writeOn: to use the new method when the content-length is nil or 0' id 'b7c44798-970d-4ab0-9da4-e73a095c91c3' date '07/20/2012' time '01:11:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.289' message 'allow for the schemes ws and wss to be equivalent to http and https' id '894699cd-a923-4fe0-b71c-6c629dde4f89' date '07/20/2012' time '10:33:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.288' message 'removed usage of OS version from ZnUserAgentSettings class>>#platformDetails' id '9811cc67-6a03-4c46-a67a-952727699d1c' date '07/16/2012' time '11:49:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.287' message 'Changed ZnStreamingEntity>>#readFrom: to no longer switch to non-binary - this was wrong anyway since no encoding was used' id '285ffb16-c7b3-4f82-9c19-7db828769d6e' date '07/13/2012' time '08:30:16' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.286' message 'trying to restore ancestry and some lost changes: merged Zinc-HTTP-SvenVanCaekenberghe.282 and Zinc-HTTP-SvenVanCaekenberghe.283' id '55810020-2df7-4b64-9872-4eccb8db92da' date '07/12/2012' time '10:12:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.285' message 'enabled HTTPProgress signalling during streaming up/downloads. introduction of ZnSignalProgress with #enabled method' id 'e992fd76-efde-4b31-b4b4-bd468f8176f2' date '07/12/2012' time '09:58:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.284' message 'bugfix related to Pharo 2.0 - changed ZnClient>>#dowloadEntityTo: to use ZnFileSystemUtils class>>#newFileNamed:do: instead of #fileNamed:do:' id 'e71138c5-9577-4315-bbb9-19101b1a44cb' date '07/12/2012' time '01:23:15' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.282' message 'killed a (comment) reference to mac.com' id 'de6f7d59-22da-4612-937b-07111df60678' date '07/04/2012' time '05:56:31' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.281' message 'introduction of the Zinc-FileSystem-Legacy package (including the new ZnFileSystemUtils class) to deal with pre/post FIleSystem introduction in Pharo 2.0 - this is the old code' id '1fcf9d84-c2c3-4e70-b45a-6c68a381329d' date '07/03/2012' time '01:48:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.280' message 'clean up ZnClient option setter methods to return self for easy chaining (thx Sean DeNigris)' id '00d1da5e-18a2-4f96-afe7-c7f7d6fe0c6c' date '05/30/2012' time '22:14:53' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.279' message 'added ZnMimeType class>>#applicationPdf as a convenience accessor as well .pdf as recognized file extension' id 'd636e0ff-907e-4299-bf7f-4328840ba225' date '05/27/2012' time '06:50:12' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.278' message 'added multiline/continuation header line parsing to ZnHeaders; added some extra guards to ZnDigestAuthenticator class>>#parseAuthRequest' id '5c5f70f9-0f04-4941-a09a-cbf28ba154e4' date '05/22/2012' time '10:48:12' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.277' message 'simplified the example in the class comment of ZnDispatcherDelegate' id 'c4263c43-acf8-44b7-a3cb-6731e8d1a125' date '05/21/2012' time '10:02:55' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.276' message 'minor fix to ZnStaticFileServerDelegate' id '388a9cd6-b0b8-41ee-a24a-00aae254fa48' date '05/15/2012' time '13:15:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.275' message 'refactored ZnStaticFileServerDelegate a bit: - store expiration times as seconds in #defaultMimeTypeExpiration & #mimeTypeExpiration map - add not only Cache-Control but Expires header as well - removed unused #responseForFile: fixed a bug in ZnMessage>>#clearEntity (didn''t #close streaming entities with HEAD requests) ' id '94f2451b-b7e0-4d74-866b-d55b01c98ed9' date '05/14/2012' time '10:59:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-PaulDeBruicker.274' message 'Added handling for If-Modified-Since and Not-Modified headers to the ZnStaticFileServerDelegate' id '3f7f92c3-1ae8-4bd4-b4e2-5421cf49614a' date '05/12/2012' time '10:15:58' author 'PaulDeBruicker' ancestors ((name 'Zinc-HTTP-PaulDeBruicker.273' message 'Added the ability to set expiration headers when serving static files with the ZnStaticFileServerDelegate. Can probably adapt it to work when returning files from a WAFileLibrary if there isn''t already a mechanism for that. ' id '7684ed9a-80b2-47bb-a165-6e7ef40d555e' date '05/11/2012' time '03:26:02' author 'PaulDeBruicker' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.272' message 'updated ZnServer welcome page' id '1511b44d-a8f8-4a66-9ab7-0c5d3b0ca955' date '05/11/2012' time '15:22:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.271' message 'added ZnClient>>setIfModifiedSince: refactored #downloadTo: using #downloadEntityTo:' id 'deabc112-7505-4072-9116-16200a9ea513' date '05/10/2012' time '22:46:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.270' message 'merged ZnUtils class>>#parseHttpDate: improvements by Sean DeNigris' id 'eec865bb-4103-4a28-9e55-5d3c471f26c7' date '05/10/2012' time '20:30:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SeanDeNigris.269' message 'Fix the HTTP date parsing to comply with the HTTP/1.1 standard. See discussion at http://forum.world.st/Parsing-HTTP-dates-td4623688.html. Matching update to the tests (which all pass): Zinc-Tests-SeanDeNigris.140' id 'c7d98308-0259-4d69-a273-0572a06d9d0f' date '05/10/2012' time '12:25:56' author 'SeanDeNigris' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.268' message 'added ZnClient>>#uploadEntityFrom: and #contentType: as a convencience to easier do a direct PUT or POST of a file.' id 'e4dabff1-c4ef-4630-85d3-f00afbb516e7' date '05/09/2012' time '09:57:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.267' message 'first, not yet integrated versions of ZnCharacter[Read|Write]Stream; added iso-8859-15 to known encodings in ZnByteEncoder; added some optimizations to ZnNullEncoder' id 'e25c20c3-e14a-493d-88fa-7c9717455beb' date '05/03/2012' time '22:15:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.266' message 'added #match: and #contents to ZnChunkedReadStream and ZnLimitedReadStream; added some convenience methods to ZnCharacterEncoder: #encodeString: #decodeBytes: and #encodedByteCountForString:' id '72b9579d-c272-417f-8949-2e66714574ba' date '05/02/2012' time '16:43:52' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.265' message 'finalized switch from ZnClient>>#downloadToFileNamed: to ZnClient>>#downloadTo: which also accepts directories and creates a file there like wget or curl can (as suggested by Sean P. DeNigris). Roll back FileSystem usage for now.' id '618f4d2b-35ee-4c05-a495-e74b8a793399' date '04/26/2012' time '16:45:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.264' message 'fixed ZnClient>>#downloadTo: using old school FileDirectory/FileStream' id '4d6a0d40-0927-4b6b-9c98-a583922b58b2' date '04/26/2012' time '14:34:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.263' message 'added experimental ZnClient>>#downloadTo:' id '2d0dd4da-87a0-44d5-b4aa-410041e67897' date '04/26/2012' time '14:19:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.262' message 'added ZnClient>>#downloadToFileNamed: ' id '483455c8-f370-40e8-8848-036044211929' date '04/25/2012' time '21:19:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.261' message 'timezone offsets should be Durations' id '070fd646-c4ee-451c-94f4-bf67010ada05' date '04/23/2012' time '15:41:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.260' message 'updated ZnEasy comment' id 'af3c61c1-498c-430a-9136-ddaf1d5537fe' date '04/21/2012' time '11:13:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.259' message 'Zinc-HTTP-PaulDeBruicker.257' id '67dd4881-a30f-4051-b052-f07774efec8c' date '04/20/2012' time '10:27:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.258' message 'merging forgotten 255 & 256 into 257' id '0c026aa8-59d1-42db-a714-8079feca26d3' date '04/16/2012' time '06:25:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.257' message 'minor allocation improvement to ZnStringEntity>>#readLimitedFrom:' id 'bc3d146e-dca8-4245-be9c-25f3fb76c1cb' date '04/15/2012' time '19:23:24' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())(name 'Zinc-HTTP-PaulDeBruicker.257' message ' Added ZnResponse>>#isError which checks if the ZnStatusLine code is >399. ' id '63eca7f3-2b5b-4112-b91e-b76ddcf0453c' date '04/19/2012' time '05:05:46' author 'PaulDeBruicker' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.256' message 'renamed ZnServer>>#interface[:] to ZnServer>>#bindingAddress[:] following a suggestion by Norbert Hartl, Thx!' id 'a3d6638c-d5c4-4c20-a6c1-566e00b752fb' date '04/13/2012' time '13:20:15' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.255' message 'added technology to allow entities to be read binary even when they are textual, thus disabling Zn''s normal decoding behavior; this is what Seaside expects (as Seaside does its own conversions); added ZnEntityReader>>#[is]Binary; added ZnMessage[class]>>#readBinaryFrom: added ZnEntity class>>#readBinaryFrom:usingType:andLength: added ZnSingleThreadedServer>>#reader[:] to allow customizing entity reading' id 'e0d6d894-7fbb-41dd-8376-f87e4ca9da32' date '04/07/2012' time '18:29:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.254' message 'ZnBivalentWriteStream has to forward #flush to its wrapped stream' id '3b82b4f5-a0ed-44b4-bcd1-a5ec129d9d42' date '04/04/2012' time '16:08:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.253' message 'modified the implementation of ZnUtils class>>#streamFrom:to:size: to use a larger buffer when necessary and to flush the output stream each time through the loop except for the last one (this is need because we use SocketStream with autoflush false and this results in internal buffer overflow on very large writes).' id '183dc82c-6011-45b4-8a56-2c8415d381fe' date '04/04/2012' time '13:46:20' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.252' message 'changed ZnDefaultServerDelegate>>generateDWBench to use a date/time timestamp with a constant space representation ' id '94aee4dc-7124-485c-a70d-2d8f2831b35f' date '03/18/2012' time '19:23:19' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.251' message 'added ZnServer>>#localUrl ' id 'c56ae9d6-6fb1-481c-94fe-fc9ee8fa59b9' date '03/12/2012' time '22:23:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.250' message 'added the option to restrict ZnServers to only listen on a specific interface; added Zn[SingleThreaded]Server>>interface[:]; added ZnNetworkingUtils [class]>>#serverSocketOn:interface' id '5097d852-2887-45ca-9f2f-5dc50ffc95f4' date '03/12/2012' time '19:50:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.249' message 'added some extra API to ZnMimeType to manipulate parameters and charSets' id '209986ca-144b-46d7-8449-f34b0e9c1864' date '03/06/2012' time '11:10:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.248' message 'Switched ZnServer class>>#defaultServerClass to ZnManagingMultiThreadedServer; Add ZnStandardOutputLogger and ZnSingleThreadedServer>>#logToStandardOutput' id 'aaab5645-ed48-4174-bdb5-53037fb297db' date '03/04/2012' time '20:25:19' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.247' message 'changed usage of #deprecated: to #deprecated:on:in:' id '5ae403b7-a4cb-4ca9-a49a-0e71b6bd036a' date '03/04/2012' time '10:35:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.246' message 'extended ZnDefaultServerDelegate>>#generateStatus' id 'e1714401-1e45-4d67-97cd-7b735be277a2' date '03/01/2012' time '13:58:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.245' message 'fixed a bug related to sending multiple cookies; fixed a bug related to receiving and sending cookies during redirects; thank you Sean DeNigris; ZnClient>>#prepareRedirect now receives and sends cookies; ZnClient>>#sendCookies now uses a single Set-Cookie header containing multiple cookies instead of multiple Set-Cookie headers; added ZnClient>>#resetCookies; extended ZnClient logging with #debug printing of headers and processed cookies; minor changes to ZnClient internal state variable' id '35bf1aac-cf81-479a-8683-8ad057b7566a' date '02/29/2012' time '20:10:13' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.244' message 'refactored/extended ZnRequest with authorization and basic authentication access' id 'b2397b7f-ec54-4461-999d-90bfa1fd517a' date '02/23/2012' time '22:17:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MarcusDenker.243' message 'Issue 5299: Yet another Zn update http://code.google.com/p/pharo/issues/detail?id=5299' id '583fa1ec-e230-4a83-8a67-12cb734c2bdb' date '02/17/2012' time '15:13:00' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-StephaneDucasse.236' message '- Issue 5149: add line in comment of VirtualMachine class>>parameterAt:. ThanksLuc Fabresse and Mariano Martinez-Peck. http://code.google.com/p/pharo/issues/detail?id=5149 - Issue 5132: CommentReference SourcedMethodReference MethodReference are now deprecated http://code.google.com/p/pharo/issues/detail?id=5132 - Issue 2560: Convenient methods from Grease for Strings. Thanks Sven van Caekenberghe. Part one. http://code.google.com/p/pharo/issues/detail?id=2560' id 'f47fd8ea-3884-4572-9af9-d9f6eb4457c9' date '01/09/2012' time '17:23:41' author 'StephaneDucasse' ancestors ((name 'Zinc-HTTP-StephaneDucasse.235' message '- Issue 5157: Finder > Class > right-click > Hierarchy opens not on Class but on FinderClassNode. Tx Benjamin van Ryseghem. http://code.google.com/p/pharo/issues/detail?id=5157 - Issue 5151: Recategorization of PanelMorph. Thanks Benjamin van Ryseghem. There is no useless cleans. Even small steps are cool and important. http://code.google.com/p/pharo/issues/detail?id=5151 - Issue 5154: It would be great to have a setting to allow the Debugger to open centered and be 3/4 of screen. Thanks Alain Plantec. http://code.google.com/p/pharo/issues/detail?id=5154 - Issue 5148: LimitNumberOfEntriesInZnMultiValueDictionary. Thanks Sven van Caekenberghe. http://code.google.com/p/pharo/issues/detail?id=5148 ' id 'c1c64007-e1ae-4347-b059-eb64071c1845' date '01/07/2012' time '19:13:20' author 'StephaneDucasse' ancestors ((name 'Zinc-HTTP-ZincUpdate.234' message '- Issue 5127: Zinc update http://code.google.com/p/pharo/issues/detail?id=5127 - last bit of Issue 4688: progress bar disappears on image save http://code.google.com/p/pharo/issues/detail?id=4688' id '96fb41c6-6187-4572-82d5-88acaff58417' date '12/25/2011' time '23:01:50' author 'ZincUpdate' ancestors ((name 'Zinc-HTTP-StephaneDucasse.233' message '- Issue 5117: MNU: Transcripter class>>open. Thanks vpnbecmann. http://code.google.com/p/pharo/issues/detail?id=5117 - Issue 5122: ZnUpdate-Dec-20. Thanks sven van caekenberghe. http://code.google.com/p/pharo/issues/detail?id=5120' id '49c87187-0e9e-41aa-a78d-f2eeba91da2f' date '12/25/2011' time '11:47:49' author 'StephaneDucasse' ancestors ((name 'Zinc-HTTP-MarcusDenker.227' message 'Issue 5063: Zinc uses default encoding of utf-8 when encoding url safe encoded strings http://code.google.com/p/pharo/issues/detail?id=5063' id '3a35f66b-1807-4525-be31-56999a7ec249' date '12/09/2011' time '13:17:57' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-MarcusDenker.224' message 'Issue 5048: Move Transcript to Tools Package http://code.google.com/p/pharo/issues/detail?id=5048 Issue 5047: Stream should not print its contents in printOn: http://code.google.com/p/pharo/issues/detail?id=5047 Issue 5053: ZnChunkedReadStream doesNotUnderstand: #next:into: http://code.google.com/p/pharo/issues/detail?id=5053' id '545d1d37-4bce-4a96-a438-cc7ad16618f9' date '12/04/2011' time '13:38:23' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-MarcusDenker.222' message 'Issue 4998: ContextPart>>#runUntilErrorOrReturnFrom: (for testing) http://code.google.com/p/pharo/issues/detail?id=4998 Issue 4994: Two failing test in ProcessTest http://code.google.com/p/pharo/issues/detail?id=4994 Issue 5014: zn updates http://code.google.com/p/pharo/issues/detail?id=5014' id '0eaf0a8a-f842-4a22-83d9-b1c65bf2b853' date '11/25/2011' time '16:03:18' author 'MarcusDenker' ancestors ((name 'Zinc-HTTP-StephaneDucasse.221' message ' Issue 4903: New version of Zinc http://code.google.com/p/pharo/issues/detail?id=4903' id '37c68635-515f-43fb-8665-9d7674c0aee3' date '11/18/2011' time '15:18:42' author 'StephaneDucasse' ancestors () stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.215' message 'modified ZnNeoClient>>#contents to return the stream when streaming is requested (more specifically: do not call #contents on the ZnStreamingEntity by default as this would defeat the whole idea of streaming; note that when there is a #contentReader it should do the right thing)' id 'c94ae1c2-5cc3-4ce6-9f04-28155f6834c9' date '10/26/2011' time '14:45:52' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.214' message 'moved deprecated classes to category Zinc-HTTP-Deprecated, noted deprecation in class comments' id '248c4eaf-ca0f-4584-99f4-d399438fd2ed' date '10/04/2011' time '19:11:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.213' message 'small fix to ZnUrl>>#inContextOf: (don''t take over the port when the scheme''s differ)' id '54792b4f-3ff6-479d-950f-91fb8052c960' date '10/04/2011' time '16:07:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.212' message 'deprecated instance creation (#new) of ZnFixedClient (and ZnExtendedFixedClient) and ZnUserAgent (and ZnHttpClient)' id '4fa83eba-2814-4b9c-8a71-5376eb1feaf5' date '10/04/2011' time '14:23:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.211' message 'added basic ZnNeoClient>>#signalProgress support' id '1f875569-9635-4039-bd9a-43b2ceb46400' date '10/04/2011' time '13:48:05' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.210' message 'added logging support to ZnNeoClient' id '6d7ff297-2967-413a-95d6-c0af0c0720d4' date '10/04/2011' time '12:53:36' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.209' message 'added some Pharo 1.2 compatibility (ZnMultiThreadedServer>>#exceptionSet:)' id 'b4d77e24-8821-4cac-b32d-f0f1412cf0f5' date '10/04/2011' time '09:57:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.208' message 'made ZnClient deprecations proceedable and added a test for this behavior' id '7990b131-582c-4c3b-8077-ef408ae802fb' date '10/03/2011' time '14:44:33' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.207' message 'added some logging to #closeDelegate' id '2900a3fc-3677-49d4-98c0-4b6b1ffe772b' date '09/27/2011' time '20:37:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.206' message 'added internal ZnNeoClient>>#resetRequestIfNeeded and ''state'' instance variable to try to properly reset after a first request is executed and a second one starts (the idea is to only keep using scheme/host/port and the connection)' id '9d23f62f-0d10-451a-ac95-ca8acd5b0780' date '09/23/2011' time '14:58:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.205' message 'modified ZnHeaders>>#contentLength to allow for the special case when there are multiple content-length headers, but only when they are identical; fixed some typos in ZnHTTPSocketFacade where some arguments where ignored (thx Olivier Auverlot for reporting this) ' id '135d43af-b715-45d4-bd28-85323f49999d' date '09/20/2011' time '13:58:59' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.204' message 'made ZnTooManyRedirects an Exception instead of an Error subclass so that it is resumable; fixed ZnNeoClient>>executeWithRedirectsRemaining: to allow for a resumed ZnTooManyRedirects exception' id '1183d199-1245-4e35-ac40-a0d52576deb3' date '09/19/2011' time '13:30:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.203' message 'added redirect support to ZnNeoClient (throws ZnTooManyRedirects when needed); reworked ZnEntity #entity: #resetEntity: to allow nil as argument (see ZnHeaders>>#acceptEntityDescription:) added #clearEntity as well' id '90d7081c-2bb7-4a94-b45c-58e28dadf242' date '09/19/2011' time '11:09:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.202' message 'added ZnNeoClient>>#setIfModifiedSince: and test' id 'f02072f8-e33a-429d-8e27-169372fbc7f6' date '09/17/2011' time '20:42:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.201' message 'added time limit to ZnNeoClient connection reuse; added ZnNeoClient>>#headerAddAll: and #queryAddAll:' id 'a5b92040-b404-4fca-951d-9d5253156cbb' date '09/17/2011' time '14:05:36' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.200' message 'added optional delegate #close-ing to ZnServer hierarchy' id '915cab3c-eddb-44f0-b38e-61a5e83185ff' date '09/16/2011' time '17:40:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.199' message 'patched ZnRequest>>#setBasicAuthenicationUsername:password: to allow nil arguments for clearing the Authorization header' id 'c8cce21a-86d4-4a8d-bd03-21ea97514ce1' date '09/16/2011' time '13:52:16' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.198' message 'introducing ZnEasy to take over the class side functionality of ZnClient; ZnClient class side protocol being deprecated' id '37a8ac41-bd8c-4d7d-9d8c-3ef5d0c2fc0a' date '09/15/2011' time '20:42:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.197' message 'Modifed ZnNeoClient>>#isContentTypeAcceptable to allways accept empty responses; Added ZnResponse>>#isCreated test' id 'efcd6b46-0332-4a34-8523-8470bcfa6764' date '09/14/2011' time '15:30:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.196' message 'added ZnUtils class>>#parseHttpDate: for use in ZnCookie>>#expiresTimeStamp' id '0f0b5286-c002-45f2-9ec6-9b21a7c8eb13' date '09/13/2011' time '11:51:12' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.195' message 'added extra guard to ZnLineReader>>#processNext for when #next returns nil' id 'cab4a65f-52f8-ce41-996c-a1c2a6b1bb95' date '09/12/2011' time '14:27:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.194' message 'added a nice example to ZnClient class>>#getPng: (Thx Lukas Renggli)' id 'f90ea18e-4d80-4d8d-aff1-ecb917f191ce' date '09/12/2011' time '09:32:07' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.193' message 'Changed ZnManagingMultiThreadedServer class comment' id '64e3aa90-0672-4f41-9093-6e5c97b16a79' date '09/06/2011' time '12:32:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.192' message 'pushed down the connection management functionality of ZnMultiThreadedServer to a new subclass called ZnManagingMultiThreadedServer' id '859098cb-28ff-453a-b8ec-dc41d10f7859' date '09/05/2011' time '14:24:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.191' message 'changed ZnMultiThreadServer''s lock and connections instance variable to be lazy initialized, removed the initialize code' id '9f394e71-7904-40bd-9551-03faf2f1be98' date '09/05/2011' time '12:06:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.190' message 'added a guard clause to ZnMultiThreadedServer>>#closeConnections so that nothing is done when there are no connections' id 'f7bdca17-3172-45cf-969d-531845cb9e35' date '09/05/2011' time '11:40:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.189' message 'Added some new internal functionality to ZnMultiThreadedServer: To keep track of all its open client connections (socket streams) (#socketStreamOn: and #closeSocketStream) so that they can all be force closed (#closeAllConnections) when the server stops (#stop). This is necessary because on image save the worker processes and socket streams are frozen and fail when they start up afterwards due to illegal socket handles. Note that #readRequestSafely: was extended and #writeResponseSafely:on: was introduced to handle several exceptions, most notably PrimitiveFailed, in the situation where a socket stream is force closed on a live process using that stream. This can be observed in #testTimeout. The timeouts on reading/writing socket streams take care of closing connections that are kept open too long. Maybe the server side timeouts should be even shorter to conserve resources. ' id 'b4f2d979-0097-4dc8-bde9-23edda15a3f9' date '09/04/2011' time '15:20:15' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.188' message 'some simplifications to ZnNeoClient removed some dead code from ZnUserAgent' id 'a81a6b6f-ad24-4c3f-aa91-120a404fa082' date '08/31/2011' time '22:06:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.187' message 'added basic cookie support to ZnNeoClient; refactored some cookie related code; ZnMessage subclasses ZnRequest and ZnResponse each implement #addCookie: and #cookies for different headers; removed ZnHeaders>>#cookies; replaced ZnCookie>>#asString with ZnCookie>>#nameValueString and ZnCookie>>#fullString; added ZnNeoClient>>#get: and friends as convenience protocol' id '13e276c0-e257-4004-ad61-2e2fc6b5d829' date '08/30/2011' time '22:53:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.186' message 'added contentReader/contentWriter options to ZnNeoClient to use in #contents and #contents: fixed general ZnNeoClient>>#execute result to be either #contents on success or the result of the #ifFailBlock on failure' id '09f5880c-8b8e-4de1-9cc2-0e3306c987a1' date '08/19/2011' time '17:27:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.185' message 'reimplemented ZnHTTPSocketFacade using ZnNeoClient' id 'c969791c-20ec-483d-b053-edc9c44c946b' date '08/19/2011' time '11:45:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.184' message 're-implemented ZnClient class side methods using ZnNeoClient; revised ZnConnectionTimeout handling to allow nesting/overriding by changing the default to nil (see ZnNeoClient>>#withTimeoutDo:); changed ZnUrl>>#authority to not return a default port; added basic authentication support to ZnNeoClient; added ZnNeoClient>>#entity[:]' id '2dea8f25-4226-476c-ad33-6108bad5183b' date '08/18/2011' time '23:11:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.183' message 'listening to the code critics (mostly formatting)' id 'a1062344-e54b-46b5-be1e-e12e39932a62' date '08/18/2011' time '14:50:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.182' message 'added empty ZnEntity>>#close added ZnStreamingEntity>>#close to close the underlying stream if any ZnMessage>>#resetEntity: now sends close to the enity being replaced if necessary added ZnResponse class>>#methodNotAllowed: ZnStaticFileServerDelegate now refuses not GET/HEAD requests ZnSingleThreadedServer>>#handleRequest: now does a #resetEntity: on HEAD requests implemented ZnNeoClient>>#head streamlined the responses of ZnNeoClient operations to return #contents, except for #head' id 'e9ce39cf-0dde-447a-af48-69d07048c9d1' date '08/18/2011' time '13:57:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.181' message 'added ZnMimeType wildcard constants #any and #text; added ZnHttpUnsuccessful and ZnUnexpectedContentType exceptions; extended ZnNeoClient with #ifFail:, #enforceHttpSuccess, #enforceAcceptContentType and retry behavior' id 'cfaa0963-4bb7-49d8-a3b1-f89527ee2bc2' date '08/17/2011' time '21:42:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.180' message 'added ZnMimePart class>>#fieldName:entity: and #fieldName:fileNamed: added ZnNeoClient timeout option, more url building api, support for applicationFormUrlEncoded and multiPartFormData encoded entities for post/put' id 'ea58662e-243e-4eff-ad90-7ac4ff58e9a3' date '08/17/2011' time '14:24:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.179' message 'added ZnUrl>>#inContextOf: extended ZnHeaders>>#request: to handle urls without a host added request url building to ZnNeoClient added oneShot option to ZnNeoClient' id '97d7e216-e0ff-4931-9dcf-498e2a938465' date '08/12/2011' time '13:52:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.178' message 'added code to throw a ZnMissingHost exception when a bogus ZnUrl is used to connect to a HTTP host' id '6b9c0a42-5a10-4b68-9c4c-efc33a7f52a4' date '08/11/2011' time '19:42:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.177' message 'added support for dealing with certain defaults in ZnUrl: - new ZnUrl class>>#fromString:defaultScheme: and ZnUrl>>#parseFrom:defaultScheme (while #readFrom: and #parseFrom: are still using nil as default scheme, like before) - new ZnUrl>>#asZnUrlWithDefaults (and private #setDefaults) - new ZnUrl>>#schemeOrDefault (along the lines of #portOrDefault) - improved support for parsing relative URLs' id '82463b1e-0ceb-494f-a9fd-ac7e043d1307' date '08/11/2011' time '15:29:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.176' message 'Merged Damien Pollet''s changes regarding the misspelling of ''Unknow[n]'' in exception class names (thx); First definition of ZnNeoClient; added support for better HTML Doc Types in some generated HTML pages of ZnDefaultServerDelegate' id '333bbc02-577c-44e3-9ef1-7489a5586f57' date '08/11/2011' time '10:33:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.175' message 'Changed ZnMimePart>>#fieldValueString to return an empty string instead of ''nil'' when the field is empty or absent (Thx Lukas Renggli)' id 'b95d0734-62d3-4de6-8a94-03816784d360' date '07/29/2011' time '14:23:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MarcusDenker.172' message 'Issue 4326: Connection timeout problem http://code.google.com/p/pharo/issues/detail?id=4326 Issue 4417: Zinc does not honour network proxy configuration http://code.google.com/p/pharo/issues/detail?id=4417 Issue 4428: New mechanism for Zinc servers start/stop handling after system startUp/shutDown http://code.google.com/p/pharo/issues/detail?id=4428' id '190ce930-79bf-4a7e-b0fa-60d1fbaecfe0' date '06/21/2011' time '16:08:49' author 'MarcusDenker' ancestors () stepChildren ())) stepChildren ())(name 'Zinc-HTTP-DamienPollet.175' message 'Fix typo in exception names.' id '82fd6138-b87e-4e81-93ff-4c874ff72e03' date '08/04/2011' time '14:22:04' author 'DamienPollet' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.174' message 'ZnDefaultServerDelegate>>#echoRequest: added option to delay the response to /echo with a specified number of seconds, as in echo?delay=60' id 'bec35859-b638-42c1-9689-3f1d7a540c8b' date '07/14/2011' time '09:54:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.173' message 'added ZnSingleThreadedServer>>#onRequestRespond: convenience method' id '75b3a711-a7ff-430d-a049-95a5dd1a1c3c' date '07/01/2011' time '14:17:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.172' message 'implemented client side support for If-Modified-Since and Not Modified: - added ZnRequest>>#setIfModifiedSince: - refactored ZnMessage>>#readFrom to call #readEntityFrom: - overwritten ZnResponse>>#readEntityFrom: to take special no content response into account - extended ZnUtils class>>#httpDate: to accept any argument that understands #asTimeStamp ' id '64fe262e-fd77-4b45-8f6a-f874995d07ec' date '06/28/2011' time '11:05:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.171' message 'removed some bogus class variable from ZnConnectionTimeout' id '11c76430-7cc0-4885-b4a0-709f3fbf4f57' date '06/20/2011' time '14:50:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.170' message 'fixed undeclared in ZnNetworkingUtils class>>#initialize (SocketStreamTimeout was renamed to DefaultSocketStreamTimeout)' id '15682e90-31ca-40e3-b26f-a4df4aab8814' date '06/19/2011' time '16:38:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.169' message 'implementation of a new mechanism for system #startUp/#shutDown handling by ZnServer(s): ZnServer holds a class variable ManagedServers, clients can #register/#unregister to receive #start/#stop when the system #startUp/#shutDown is sent; currently only the default server (of which there is only one instance per ZnServer subclass) is automatically registered/unregistered in #defaultOn: and #stopDefault, other instances must do this explicitely themselves ' id 'ebc443eb-7ce9-488c-92cb-05a67179c4f4' date '06/19/2011' time '14:21:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.168' message 'introduction of ZnConnectionTimeout which is used by ZnNetworkingUtils class>>#socketStreamTimeout and defaults to ZnNetworkingUtils class>>#defaultSocketStreamTimeout Now you can do ZnConnectionTimeout value: 60 seconds during: [ ZnClient get: ''http://slowhost.com/foo'' ]' id 'dbe15895-070d-4a2f-8d62-dd40c5ba028a' date '06/18/2011' time '23:12:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.167' message 'merged' id 'cb16cb7a-5fac-494d-ab2a-97d4261f04ae' date '06/17/2011' time '15:51:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.165' message 'modified #on: Error do: to #on: Exception do:' id 'ccb2d275-7dd3-44f4-ace4-12fc2217f9a3' date '06/17/2011' time '15:46:54' author 'SvenVanCaekenberghe' ancestors () stepChildren ())(name 'Zinc-HTTP-MarcoSchmidt.166' message 'Patch to work behind firewall with basic authorization' id 'acb7f2fc-d621-5d4b-983f-25d217623f11' date '06/17/2011' time '15:31:11' author 'MarcoSchmidt' ancestors ((name 'Zinc-HTTP-MarcoSchmidt.165' message 'Corrected wrong method send in NetworkUtils' id '4290066c-4367-794e-bb95-c058f1a268a0' date '06/17/2011' time '15:26:54' author 'MarcoSchmidt' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.164' message 'implemented support for proxies that require authorization; ZnHeaders class>>#requestHeadersFor: will add a Proxy-Authorization header when needed; added public API ZnNetworkingUtils class>>#proxyAuthorizationHeaderValueToUrl: removed public API ZnNetworkingUtils class>>#httpProxy and #isProxySet; upgraded public API ZnNetworkingUtils class>>#shouldProxyUrl: to be a primary interface; refactored internals of ZnNetworkUtils to use NetworkSystemSettings directly instead of HTTPSocket; this code still has to be tested and validated with real world proxies ' id '90d57d3d-fc41-4548-a2fd-dcd7c22a3a1f' date '06/17/2011' time '09:16:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.163' message 'taking over a patch from Pharo (http://code.google.com/p/pharo/issues/detail?id=4326): adding SocketStreamTimeout as class variable to ZnNetworkingUtils to make this ''constant'' settable; the new default is now 30 seconds' id '3622d15d-b15a-4398-a9e6-0027e600a78a' date '06/09/2011' time '21:14:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.162' message 'extended ZnStringEntity>>#readUpToEndFrom: to deal with the weird SocketStream>>#atEnd issue by added an extra #peek; added ZnChunkedReadStream>>#peek; added chunk buffer reuse to ZnChunkedReadStream' id '0205b561-44a9-4434-b40b-976b5d9a65a6' date '05/19/2011' time '12:57:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.161' message 'a small change to improve Squeak compatibility' id '018ccd1d-2321-4dcb-b468-722a42b9d605' date '05/17/2011' time '21:34:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.160' message 'fixing support for HTTP proxies (thanks Alexandre Bergel for reporting this) requests to localhost are excluding from being proxied - ZnRequestLine>>#writeOn: now outputs absolute URLs when proxying - added ZnNetWorkingUtils class #isProxySet #shouldProxyUrl: and #httpProxy - added ZnUrl>>#isLocalHost - changed ZnUrl>>#host: to lowerCase its argument ' id '619a8697-4d71-4c1c-a99e-fe5e07f3dbb4' date '05/13/2011' time '11:07:48' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-NickAger.159' message 'minor refactoring to ZnDispatcherDelegate to use: ZnStatusLine ok rather than: ZnStatusLine code: 200 ' id 'e5ab93a6-b254-4ba2-bbd9-41ecf500f584' date '05/10/2011' time '15:53:33' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.158' message 'refactored cookie support: ZnResponse>>#setCookie: has been renamed to ZnResponse>>#addCookie: ZnResponse>>#setCookies: has been removed ZnHeaders>>#cookies now returns a dictionary rather than a ZnCookieJar ZnCookieJar>>#cookieAt: a helper method I added, I''ve removed. The tests have been updated as required.' id '75f5dd45-9dcf-4491-a28c-4f8cbe8e784a' date '05/10/2011' time '11:39:41' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.157' message 'added ZnStatusLine creation constants and refactored ZnResponse to use the constants' id '3fa86243-d119-4ab5-b87d-3c8622aa9257' date '05/10/2011' time '09:13:37' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.156' message 'created ZnResponse>>#setCookie: and refactored ZnResponse>>#setCookies: to use #setCookie:' id 'ac85f148-5de7-4b04-8a81-d8e7222e1f78' date '05/10/2011' time '08:37:25' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.155' message 'added: Request cookie accessor Response cookie setter' id '41a8f7a2-dbda-45bd-a831-03b7c0d6ca37' date '05/10/2011' time '02:52:47' author 'NickAger' ancestors ((name 'Zinc-HTTP-NickAger.154' message 'added ZnDispatcherDelegate for straight-forward dispatching to mapped urls. Modelled after Ruby''s WEBrick API: server = WEBrick::HTTPServer.new(:Port => 2000) server.mount_proc("/heresy"){|req, res| Application.new.handle(req, res)} server.mount_proc("/favicon.ico"){|req,res| res.status = 404} ZnDispatcherDelegate API: server := (ZnServer startDefaultOn: 9090) delegate: (ZnDispatcherDelegate new map: ''/hello'' to: [ :request :response | response entity: (ZnStringEntity html: ''

hello server

'') ]; map: ''/counter'' to: [ :request :response | counterApplication handleRequest: request response: response ]).' id '87d63347-b4ab-4c50-86a4-8d7d89d24e32' date '05/09/2011' time '21:44:58' author 'NickAger' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.153' message 'made ZnNetworkingUtils>>#socketStreamToHostNamed:port: private' id '44a98753-fe58-40bc-8a88-5887c0872212' date '05/09/2011' time '13:32:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.152' message 'extended ZnFixedClient with a scheme instance variable, adjusted the instance creation protocol, added a #baseUrl accessor for use in #newConnection; added ZnUrl class>>#defaultPortForScheme:; removed ZnNetworkingUtils class>>#socketStreamToHostNamed: to simplify the socket [stream] factory API' id '69fc77af-dddd-44c5-9119-11f9db4f85db' date '05/09/2011' time '10:23:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.151' message 'conversion of ZnNetworkingUtils into an instance socket[stream] factory and a class side API' id '6c95ba6b-65ec-47cb-b6dc-284fd95f3832' date '05/02/2011' time '22:46:36' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.150' message 'fixing a problem where responses without an explicit content-length but with an entity where not read as they should (thanks Esteban Lorenzano & Andy Burnett for reporting this): - ZnResponse>>#entityReaderOn: now extends the super entityReader with the #allowReadingUpToEnd option - ZnEntityReader>>#entityReader now swallows entities when they are #isEmpty (making them nil) - ZnStringEntity>>#readFrom: is split between #readLimitedFrom: and #readUpToEndFrom: where the last method has extra error handling to swallow ConnectionClosed exceptions (similar to what SocketStream>>#upToEnd does) - the ZnEntity hierarchy now implements #isEmpty' id '8fe0b470-7728-454d-bc90-fa42d8330817' date '05/01/2011' time '19:19:13' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.149' message 'rewrote ZnHTTPSocketFacade class>>#entendURL:withArguments: to be compatible with HTTPSocket class>>#argString: (Thanks Esteban Lorenzano)' id '3a49e678-fa7b-4c30-bdc6-0944c7637e7f' date '04/30/2011' time '20:55:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.148' message 'extended ZnDefaultServerDelegate with a configurable response to / (in the prefixMap the key ''/'' maps to another key that is used instead as prefix for another lookup)' id '309679c5-4d24-4741-b067-2adc9cc8f6c6' date '04/28/2011' time '22:27:32' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.147' message 'changed ZnServer class>>#initialize not to do a Smalltalk #addToStartUpList:after: but just use the plain #addToStartUpList: (we only depend on networking and multi-processing but those will probably be OK)' id 'b2b69990-95ff-40bc-9ff0-6cb11dc96a24' date '04/27/2011' time '19:42:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.146' message 'skipping over lost version: .145 fixed ZnUtils class>>#encodeBase64: to test whether Base64MimeConverter responds to #mimeEncode:multiLine:, fall back to #mimeEncode: and manually remove Character cr occurences; this should fix Pharo 1.1.1 compatibility (Thanks Esteban Lorenzano for reporting this) .144 added option to extend ZnDefaultServerDelegate''s prefixMap with block (taking request as argument, returning response); changed default welcome text to include reference to /help .143 added ZnUrl>>#postCopy; refactored ZnStaticFileServerDelegate and added the option to redirect for directories without an ending slash ' id '57e6d630-1045-413b-8938-1259024175f9' date '04/27/2011' time '16:22:32' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.145' message 'fixed ZnUtils class>>#encodeBase64: to test whether Base64MimeConverter responds to #mimeEncode:multiLine:, fall back to #mimeEncode: and manually remove Character cr occurences; this should fix Pharo 1.1.1 compatibility (Thanks Esteban Lorenzano for reporting this) ' id 'f9f0831d-5ffa-4a5c-a8ec-b276c9babc35' date '04/26/2011' time '19:01:32' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.144' message 'added option to extend ZnDefaultServerDelegate''s prefixMap with block (taking request as argument, returning response); changed default welcome text to include reference to /help' id '439b923a-997e-4f51-9b7d-90896f8dd97f' date '04/26/2011' time '13:44:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.143' message 'added ZnUrl>>#postCopy; refactored ZnStaticFileServerDelegate and added the option to redirect for directories without an ending slash' id '08a56e5b-3270-4231-9568-4e5beffb58ae' date '04/26/2011' time '13:24:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.142' message 'listening to the Code Critics' id 'c78b1867-b800-4b03-805a-004df5aa7556' date '04/20/2011' time '12:47:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.141' message 'small fix to ZnUrl>>#printPathOn: to deal with cases where forward slashes are encoded in URLs (Thanks, Jan van de Sandt for pointing this out); added ZnUrlTests>>#testEncodedSlash to cover these cases' id '88ca6bf6-ce11-447f-8a1d-be9c67e7db71' date '04/17/2011' time '10:33:32' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-PaulDeBruicker.140' message 'changed ByteArray declarations in ZnConstants>>#faviconBytes and ZnMultiPartFormDataEntity>>#parse:boundary: from square brackes to #() asByteArray so that the code loads with no problems into Pharo and Gemstone' id '9ac457ad-7824-4c0c-8d5d-e7ebe36f0280' date '04/10/2011' time '12:03:38' author 'PaulDeBruicker' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.139' message 'added ZnDefaultServerDelegate /help & /status; updated framework version from 0.1 to 1.0 ;-)' id 'f960a4c5-2462-4cfb-81a9-9ee740d2e294' date '03/31/2011' time '10:17:16' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.138' message 'increased ZnSingleThreadedServer>>#acceptWaitTimeout from 60 to 300 seconds; added some infrastructure to use this looping for future periodic tasks' id '5ba796b1-d698-4595-8a48-1500029cc52e' date '03/30/2011' time '21:25:46' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.137' message 'added new logging framework in Zinc-HTTP-Logging, consisting of ZnLogEvent (an Announcment), ZnLogSupport and ZnLogListener and subclasses ZnTranscriptLogger, ZnMemoryLogger and ZnFileLogger; now using the new logging facilities in Zn[Single|Multi]ThreadedServer, ZnFixedClient and ZnUserAgent; introduced new subclass of ZnFixedClient, ZnExtendedFixedClient that adds various hooks for customization ' id 'bb85953b-e489-472d-997b-27e28941c052' date '03/29/2011' time '16:49:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.136' message 'added postProcessHook to ZnFixedClient; extended ZnFixedClient reuse logic so that it is limited to a maximum keep alive time (of 5s) so as not to bother running into an error anyway.' id '85d852c0-b357-42ca-95da-0ebaec1c78ad' date '03/28/2011' time '16:24:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.135' message 'added preProcessHook & newConnectionHook to ZnFixedClient' id '3bc47cd7-fae8-4e62-a80d-5d991de3c137' date '03/28/2011' time '14:24:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.134' message 'some Socket[Stream] options/parameters tweaking: - server socket listen backlog increased from 10 to 32 - socket buffer size decreased from 8192 to 4096 (these were refused anyway) - client socket streams now get the same treatment (#setSocketStreamParameters:) as accepted server socket streams (i.e. setting timeout to 10s and buffersize) ' id 'ee477f07-3703-4504-b62a-9e9905aec294' date '03/24/2011' time '11:01:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.133' message 'bugfix: it turns out that String>>#base64Encoded introduces newlines which we definitively do not want when doing Basic HTTP Encoding for example; introduced ZnUtils class>>#encodeBase64: to do the right thing and invoke Base64MimeConvertor with the #mimeEncode: multiLine: false; replaced all usages (added a #decodeBase64: for orthogonality); added a unit test to catch this ' id '8c6bc0e9-09b3-4b38-84dc-90b76ad30c94' date '03/21/2011' time '20:49:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.132' message 'added ZnResponse>>#isNotModified' id '9d915967-5593-4909-ad83-8ba8577f6cd7' date '03/21/2011' time '10:46:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.131' message 'introduced ZnUnknownScheme exception' id 'd4ee20cf-2166-4a40-98ee-3f89c21e4d2e' date '03/18/2011' time '13:31:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.130' message 'new categories: Zinc-HTTP-Exceptions and Zinc-HTTP-Streaming; added ZnParseError hiearchy to better handle illegal input; fixed a bug in dealing with percent encoding in ZnUrl paths; ZnMultiThreadedServer>>readRequestSafely: now closes on ZnParseErrors in the input' id 'ec9629aa-9c2a-45d2-aa2c-4988ab48b239' date '02/28/2011' time '15:59:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.129' message 'added ZnMultiPartFormDataEntity>>#partsDo:' id '5e8a1d68-ab52-4b98-80f5-4a75aa724b4f' date '02/27/2011' time '20:27:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.128' message 'added some extra allowed HTTP methods' id '5df00c70-8ce3-45a2-8991-770dcb04c480' date '02/24/2011' time '09:12:07' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.127' message 'implemented ZnLimitedReadStream>>#next:into:' id 'b99b13a8-0959-4e1e-a501-cf9ed2334d70' date '02/21/2011' time '23:32:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.126' message 'implemented ZnHTTPSocketFacade class>>#httpPostMultipart:args:accept:request: added ZnHTTPSocketFacade class>>#constructMultiPartFormDataEntity:' id 'fbc9bd8a-55fc-4bef-99b4-cd54bd89b0cf' date '02/07/2011' time '09:37:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.125' message 'added ZnResponse>>#serverError:' id 'f17a0fb7-5e9a-4188-885c-553e3a372d25' date '02/04/2011' time '23:03:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.124' message 'fixed a typo in the ZnMimePart instance creation methods (formdata should be form-data) (thx Cédrick Béler)' id 'af6dbddc-b5d8-482a-b2ef-4071fcbba787' date '01/31/2011' time '20:16:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.123' message 'added ZnUrl>>#queryDo: ZnApplicationForUrlEncodedEntity>>#fieldsDo: added ZnMessage>>#resetEntity: to allow overwriting content type and length when these are already set' id 'dffdb499-d272-4fca-9991-ad5c3ebdaad9' date '01/31/2011' time '13:58:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.122' message 'added proper content length computation to ZnMultiPartFormDataEntity (bugfix); some code cleanup to ZnEntity content length computation' id 'faea419a-c94d-4f44-b0ae-067b635f1c4e' date '01/27/2011' time '17:17:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.121' message 'added #textJavascript as a constant to ZnMimeType; added ZnByteEncoder to handle single byte encodings that do not map directly to the lower Unicode section (for example Latin2, ISO-8859-2) by reusing the mapping tables from ByteTextConverter; added #handlesEncoding: and #newForEncoding: protocol to class side of ZnCharacterEncoding hierarchy' id 'c040db5f-1548-45bb-9f9d-757b78a67d70' date '01/25/2011' time '13:48:40' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.120' message 'fixed ZnUserAgent>>#redirectUrl so that relative redirect urls are made absolute in reference to the (previous) request''s url instead of self url; changed ZnHttpClient>>#get and #head not to reference url as an inst var' id '4bf543a0-c919-4508-8703-d0a272e32691' date '01/20/2011' time '21:20:40' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.119' message 'fix ZnUserAgent>>#openConnection to honor its ZnUserAgentSettings>>#timeout' id '69b705b0-6b68-46f9-8ed0-ba43fe195768' date '01/20/2011' time '19:40:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.118' message 'Updated class comments' id 'acea0a40-8a21-4257-8191-72f399e4a2a4' date '01/18/2011' time '11:05:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.117' message 'more fixes to ZnUserAgent redirect following behavior: rewrote logic' id '39d2e9eb-9bdb-4ee4-8ca8-68c812abb3b7' date '01/14/2011' time '22:03:05' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.116' message 'changed the redirect behavior for POST/PUT requests: the common practice is to turn these into GET request, see ZnUserAgent>>#method:for:headers:data:imit: and ZnUserAgent>>#prepareRedirect:' id 'a102bbdc-8185-41b0-afa2-4d0af8f2557a' date '01/13/2011' time '13:39:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.115' message 'added an extra guard to ZnFixedClient>>#fixedUrl: when host is nil (thx, Cédrick Béler)' id 'ac2bcf63-4c24-4c6a-b696-2b8dff2eae4b' date '01/12/2011' time '16:15:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.114' message 'ZnUserAgent (and ZnClient) now can follow relative redirect locations; introduced ZnMultiValueDictionary to allow multiple values to be stored under one key as an array; using ZnMultiValueDictionary for queries and headers; ZnUrl now uses ZnUtils>>parseQueryFrom: again; various simplifications and cleanups which might help when reading the code in ZnUserAgent (and ZnClient); ZnUserAgent (and ZnClient) now handle parameter encoding differently ' id 'e1a49d00-d9f0-4800-8cd7-cb354e86d671' date '01/12/2011' time '14:03:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.113' message 'promoted ZnFixedClient>>#fixedUrl: and ZnClient>>#executeRequest: to public status (and added comments); changed ZnFixedClient>>#fixedUrl: to accept ZnUrl objects as well for more flexibility (allowing users to add query/fragment URL elements in addition to the path) ' id 'c3b62aa9-da90-4478-9ab3-ba2670411cb3' date '01/08/2011' time '20:36:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.112' message 'split of ZnNetworkingUtils from ZnUtils to separate related functionality (Thx S.Ducasses)' id '845f67f8-df1c-40cf-a644-4699f50bc3bb' date '01/07/2011' time '19:52:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.111' message 'fixed ZnClient class>>#getImageOfType:usingParser:fromUrl: to correctly report responses with unexpected mime types (Thx S.Ducasses) ' id 'd633bf09-4617-4e34-b6c7-0260dc759817' date '01/07/2011' time '19:35:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.110' message 'added ZnUrl>>#queryAddAll:' id 'ae2dbf13-b27d-4e45-ae66-24ee8687bb3a' date '01/05/2011' time '21:07:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.109' message 'added application/xml as a predefined constant to ZnMimeType' id 'eb18136d-284f-4501-81e3-8c18a0b0e503' date '01/05/2011' time '13:53:53' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.108' message 'various changes to reduce the (Lint) warning count' id 'e455691d-fadb-4303-a83f-680be600e875' date '01/04/2011' time '21:15:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.107' message 'introduced #asZnMimeType on ZnMimeType, MIMEType & String to replace ZnUtils class>>#asMimeType: which was removed' id '6008c428-e4d3-4767-9622-879979d4a9f9' date '01/04/2011' time '20:04:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.106' message 'more cleanup added ZnBivalentWriteStream>>next:putAll:startingAt: fixed ZnStaticFileServerDelegate example' id '2e02dc65-d058-4d72-94ff-309d005a7c16' date '01/04/2011' time '16:30:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.105' message 'removing unused extension methods' id '93d4f4d1-39de-40ca-9e38-6a8741df39c4' date '01/04/2011' time '16:11:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.104' message 'massive migration from builtin Url to ZnUrl; added asZnUrl to String and Url ' id '73cb3a10-8b68-4f91-96a4-80a4f8603695' date '01/04/2011' time '15:34:16' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.103' message 'first version of ZnUrl class' id '8e7d4ba7-f5d9-41e7-a489-e7bfa2804c8e' date '01/04/2011' time '12:22:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.102' message 'added an extra guard to ZnSingleThreadedServer>>#releaseServerSocket' id '8f40387c-7d98-4816-ad2b-35665b66b14b' date '12/19/2010' time '14:53:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.101' message 'added caching to ZnDefaultDelegate>>#bytes: to improve benchmarking performance: this make a huge difference (thx, Philippe Marschall); refactored ZnMultiThreadedServer>>#readRequestSafely: to use #, to concatenate exceptions into an exception set (how elegant) ' id 'ab05d220-caa7-4f39-9276-e71491ca9b78' date '12/19/2010' time '14:43:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.100' message 'added /bytes to ZnDefaultServerDelegate to measure the huge speed difference between binary and UTF-8 encoded data; added ZnServer>>#isListening' id '4c960061-613e-443b-82d6-268c144d5d52' date '12/15/2010' time '21:42:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.99' message 'refactored ZnServer hierarchy: - renamed old ZnServer to ZnSingleThreadedServer - renamed old ZnExperimentalServer to ZnMultiThreadedServer - added ZnServer as superclass and facade ZnServer class>>#defaultServerClass is now ZnMultiThreadedServer! ' id 'f1366cea-f241-4260-bd60-23b6747b537b' date '12/15/2010' time '15:56:59' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.98' message 'finally ''solved'' the ab (apachebench) concurrent load problem (ab -k does HTTP/1.0 with Connection:keep-alive and expects Connection:keep-alive back); added #isHttp10 and #isHttp11 to ZnRequest and ZnRequestLine; rewrote ZnMessage>>#isConnectionClose and #isConnectionKeepAlive; added ZnMessage>>#setConnectionKeepAlive; added ZnRequest>>#wantConnectionClose; added ZnResponse>>#setKeepAliveFor:; improved ZnServer logging with proper header (including PID); Zn[Experimental]Server>>#readRequest and #writeResponse:on: now do logging themselves #logRequest and logResponse now set lastRequest and lastResponse debugging instance variables ' id 'a463c5c8-a719-4d6e-b916-2b17116a8df0' date '12/14/2010' time '15:01:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.97' message 'revised #printOn: and helper methods of ZnMessage and ZnEntity hierarchy to support ZnServer>>#logRequest and #logResponse; fixed a bug in ZnStringEntity encoder initialization; extended ZnServer>>#acceptWaitTimeout to 60s; ' id 'f6ba0f3f-5b5a-4eb4-a54e-2c6c316ae95d' date '12/14/2010' time '12:23:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.96' message 'added #favicon: and #random: handlers to ZnDefaultServerDelegate' id '28d9458b-51e9-45e7-8ecf-3611b5039d2c' date '12/14/2010' time '10:54:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.95' message 'added #logger and #log: to Zn[Experimental]Server for extensive tracing' id '9a30d6f8-cd49-4ef4-8723-88d73ec297fe' date '12/14/2010' time '09:26:40' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.94' message 'made a number of socket related constants explicit in ZnUtils and ZnServer; ZnUtils class>>#socketStreamOn: now sets more options explicitely; improved process name in Zn[Experimental]Server; ZnDefaultServerDelegate>>#welcome: now replaces CR with LF in ZnConstants class>>#welcomePageHtml ' id 'b6740682-52d3-4cc6-af7a-8ce6f5a2dbfc' date '12/13/2010' time '17:02:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.93' message 'refactored ZnServer''s and ZnExperimentalServer''s #listenLoop and #serveConnection[s]On: with the introduction of #initializeServerSocket, #releaseServerSocket, #executeOneRequestResponseOn: and #executeRequestResponseLoopOn:' id '7308c60d-4aa0-4653-89eb-78c703dd047f' date '12/10/2010' time '16:17:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.92' message 'Simplified ZnServer by moving functionality to ZnDefaultServerDelegate, a new class handling echo, dw-bench, unicode and / welcome' id '3f058ee0-89a2-4999-bd25-f02bf68cf0ff' date '12/10/2010' time '15:54:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.91' message 'added ad improved ZnServer method comments' id '0a8191cc-e438-4345-bc9b-e42a11ef367e' date '12/10/2010' time '15:05:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.90' message 'added ZnBufferedWriteStream class>>#on:do: modeled after #fileNamed:do: a convenience method that makes sure #flush is a called' id 'b8d896bf-6688-41e0-8ca5-267326b29c2a' date '12/09/2010' time '18:26:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.89' message 'added ZnUtils>>#socketStreamToHostNamed:port: followed by some simplification and refactoring' id 'a00bab52-f57d-4d34-bc86-be0a4b2be3cc' date '12/08/2010' time '11:19:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.88' message 'added experimental ZnBufferWriteStream' id 'fd2dd63e-035b-4c72-a4d4-58933b890e13' date '12/08/2010' time '10:21:55' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.87' message 'added ZnValueDelegate that converts #handleRequest: to #value: on a wrapped object' id '34a705ac-c414-441f-a606-443e50f91449' date '12/07/2010' time '16:20:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.86' message 'some more comment improvements' id '6e89b08f-198b-4ccd-b334-801598105a9e' date '12/07/2010' time '15:23:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.85' message 'renamed ZnMagicCookie[Jar] to ZnCookie[Jar]' id '1885b80b-6dfc-4366-8f69-ba459de201ea' date '12/07/2010' time '00:02:25' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.84' message 'moved all classes from category ''Zinc-HTTP-New-*'' to ''Zinc-HTTP-*''' id 'fb5273fe-7cd7-4bf0-b4e4-a366bf735e65' date '12/06/2010' time '21:41:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.83' message 'removed all Zinc-HTTP-Old-* categorized classes from the Zinc-HTTP package (these will be moved to a new MC package called ''Zinc-Old'')' id '4123ffde-b6f7-4233-b9c8-ddfdac314c1f' date '12/06/2010' time '17:26:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.82' message 'removed #isBinary from ZnEntity (and subclasses) ''testing'' protocol' id '3b12b147-c0bb-447b-bac2-53d899b54703' date '12/06/2010' time '16:05:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.81' message 'ZnStringEntity>>#printContentsOn: now relies on #nextPutAll: instead of #print: to avoid quoting by String>>#storeOn:' id '83409534-1da5-4991-a7ba-eeed6de8b6c9' date '12/06/2010' time '15:16:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.80' message 'renamed class ZnNewStringEntity to ZnStringEntity' id 'ef1213ed-3501-4a47-b346-424edb8828c3' date '12/06/2010' time '13:50:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.79' message 'removed class ZnStringEntity' id '305134b7-e6f5-4930-b3ed-70ee5213bf01' date '12/06/2010' time '13:47:48' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.78' message 'ZnMessage>>#hasHeaders was wrong; ZnBivalentWriteStream class>>#on: will no longer instanciate a new wrapper if the wrapped stream is of its own type; went over all class comments and updated lots of them ' id '0ac22c19-d755-4abf-8271-701953203148' date '12/06/2010' time '13:12:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.77' message 'fixed ZnHTTPSocketFacade>>#httpPut:to:user:passwd: (apparently MC passed in a byte array instead of a string, luckily ZnEntity>>#with: can deal with this)' id '58c44c1f-02ea-40e3-a5bd-e54fcd38ffd3' date '12/04/2010' time '14:26:11' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.76' message 'large changeset: switch from ZnStringEntity to ZnNewStringEntity, now using binary socket streams on server, all with the goal of proper UTF-8 support; - ZnEntity and subclasses not do proper #printOn: using #printContentsOn: (this is used in ZnServer''s echo handler); - added ZnBivalentWriteStream>>#isBinary which caches the #isBinary property of the stream it wraps (added fallback when DNU #isBinary); - added ZnUtils>>#socketStreamOn: which is used by ZnServer>>#serveConnectionOn: to force a binary stream; - fixed ZnMessage>>#hasHeaders and ZnMimePart>>#hasHeaders; - debugged ZnNewStringEntity - in order to support both binary and character streams, ZnMessage, ZnStatusLine, ZnRequestLine and ZnHeaders now use a ZnBivalentWriteStream in their #writeOn: implementations; - fixed ZnUserAgent>>#processResponse: to only read headers and no entity when doing a HEAD request ' id 'c7354231-e350-4fa6-aee7-b3d7e68eae66' date '12/04/2010' time '14:11:32' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.75' message 'added instance creation and preferred subclass accessing protocol to ZnEntity to make it a facade; replace all direct references to ZnStringEntity and ZnByteArrayEntity with ZnEntity facade invocations ' id '38988dd8-c300-47cb-8aca-bf620c808fc3' date '12/03/2010' time '14:08:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.74' message 'added #isCharSetUTF8 and #setCharSetUTF8 to ZnMimeType; changed the defaults/constants #textPlain and #textHtml of ZnMimeType to use UTF-8 as charset; created new class ZnNewStringEntity that uses an encoder to write/read strings to/from a binary stream ' id 'b5a8d802-77ff-4880-9e20-3af6d16d14c4' date '12/02/2010' time '13:50:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.73' message 'ZnUTF8Encoder: introduced next block in #nextPut:toStream: to reduce code duplication; made #nextFrom: more compact' id 'b0852d58-48b1-48d8-8172-d54525449ef6' date '11/30/2010' time '13:49:46' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.72' message 'introduction of ZnCharacterEncoder, ZnNullEncoder and ZnUTF8Encoder' id '7cdd0747-637c-44a9-a835-8b055e0353b9' date '11/30/2010' time '12:28:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-pmm.71' message '- fix unit tests - see http://hudson.lukas-renggli.ch/job/Zinc/' id '3554a779-86fe-4c2b-a826-900044edbb67' date '10/25/2010' time '07:10:47' author 'pmm' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.70' message 'added ZnBufferedEntity (part 1 of a refactoring of entities)' id 'b703ca9b-f970-416a-bb28-c08a0246d585' date '10/20/2010' time '10:40:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.69' message 'ZnUtils>>socketStreamToUrl: meant to put the stream in binary mode but was using isBinary, fixed' id 'e85c3518-20bc-407b-9522-4cca9e0ce34d' date '10/14/2010' time '14:35:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MattKennedy.68' message 'Added isComplete testing message to the ZnCredential classes to answer true if all required fields are set. Updated ZnUserAgent>>prepareCredentials:for:method to use ZnCredential>>isComplete test. Updated ZnUserAgent>>defaultErrorHandler to raise exceptions again.' id '25b31f4c-23b2-458e-939d-557bce7e1e71' date '10/06/2010' time '17:24:46' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.67' message 'removed another String>>#trimBoth usage from ZnMimePart>>#contentDispositionValues; reimplemented ZnUserAgentSettings class>>#platform more elegantly ' id '72a2d1b8-f68a-4c85-84c6-e7f515f1879b' date '10/06/2010' time '09:34:33' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MattKennedy.66' message 'Reverted ZnUserAgent>>defaultErrorHandler change. Wasn''t passing all tests correctly.' id '6a148c14-5451-4ca5-8180-767e1c376f08' date '10/05/2010' time '17:39:08' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.65' message 'ZnUserAgent default error handler raises exceptions to the debugger again. Added ZnHttpClient>>parameterAt:add:' id '433b8d17-912b-46dd-9a52-3888f753fdc4' date '10/05/2010' time '17:33:49' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.64' message 'added ZnUtils class>>#trimString: until String>>#trimBoth is available everywhere; fixed usage in ZnMimeType>>#contentDispositionValues ' id 'd25e7ffe-691e-43c1-9607-842b9225d5a8' date '10/05/2010' time '21:26:53' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.63' message 'first complete/working version of ZnMultiPartFormDataEntity and ZnMimePart (reading/writing/instance creation/accessing); added ZnMimeType>>#parameterAt:[ifAbsent:] ' id '5c9658b2-329f-4197-b9a5-d25751435191' date '10/05/2010' time '20:33:32' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.62' message 'first rough and unfinished implementation of ZnMultiPartFormDataEntity; started extending ZnMimePart to allow field handling; introduced ZnBivalentWriteStream ' id '19b39ff5-631f-4e08-bda2-370466c52bae' date '10/04/2010' time '21:24:15' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MattKennedy.61' message 'Added ZnHttpClient which subclasses ZnUserAgent to implement a high level API. Updated ZnUserAgent>>prepareCredentials:for:method: to handle credentials stored on the session before the client receives a 401 from the server. ' id '70e0bcdb-0b42-4f13-9c9b-c7d1b8a01815' date '10/01/2010' time '22:31:54' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.60' message 'Expanded options for MD5 hash mechanisms in ZnDigestAuthenticator. Added test method to ZnDigestAuthenticator to answer if MD5 support is available.' id '7b1d4f73-febb-4e32-86ca-8af7b3e610e5' date '10/01/2010' time '05:44:52' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-svc.59' message 'OK, even more fixes after testing in Squeak 4.1 (MD5 is still missing though)' id '44a8cccf-1470-4fa8-9e15-344cba9e6411' date '10/01/2010' time '09:56:22' author 'svc' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.58' message 'OK, some more fixes after testing in Pharo 1.2' id '93d5f2cc-330a-4931-8163-599c21f80253' date '10/01/2010' time '21:44:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.57' message 'reimplemented ZnUserAgentSettings class>>#platform to deal with Pharo 1.1/1.2 portability issues (introduction of OSPlatform class); modified ZnUserAgent>>#prepareHeaders:for: to use ZnHeaders>>#addAll: ' id 'bf8f9509-4a6c-4fed-9575-3202a9627d2e' date '10/01/2010' time '21:37:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MattKennedy.56' message 'Added .errorHandler to ZnUserAgent' id 'ae9aa81f-770d-40cc-859d-d1316d3a12cd' date '10/01/2010' time '14:44:47' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.55' message 'merging' id '3cae8f4c-33ca-44ab-85e9-c7e5e8f6a84d' date '10/01/2010' time '09:43:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.54' message 'introducing ZnMimePart (has maybe to much implementation in common with ZnMessage, but in use they are less similar) ' id '8888796c-9303-408d-b6c0-30310fee5ab6' date '10/01/2010' time '09:41:57' author 'SvenVanCaekenberghe' ancestors () stepChildren ())(name 'Zinc-HTTP-MattKennedy.54' message 'Modifed ZnResponse so that the WWW-Authenticate response is no longer hard coded. ZnBasicAuthenticator supports optional custom realm settings. Added ZnDigestAuthenticator.' id '88223dbc-9831-4746-a680-f2eff6720e76' date '09/30/2010' time '17:36:25' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.53' message 'Removed trimBoth: sender from ZnDigestCredential>>parseAuthRequest:' id '5d0dfdae-b927-4634-a4a9-272e3d78aeb0' date '09/30/2010' time '12:28:40' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.52' message 'changed the required protocol for a ZnServer delegate from #value: to #handleRequest: ' id '6f652f18-f202-4ce8-b139-a47c687d36f1' date '09/30/2010' time '18:15:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.51' message 'changed ZnServer authenticator protocol from #value:value to #authenticateRequest:do: introduction of ZnBasicAuthenticator class as a first plugin ' id '49469b61-5c90-45cb-8253-5483f43f79e1' date '09/30/2010' time '16:35:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-LukasRenggli.50' message '- removed the sender of #trimBoth: that removes $" before and after the basic-autentication string, as #trimBoth: is not part of PharoCore - this fixes 2 breaking tests, but maybe introduces a regression on certain we browsers?' id 'a991e99b-b085-4cf0-ae5a-1d9addb5d83a' date '09/30/2010' time '08:33:20' author 'lr' ancestors ((name 'Zinc-HTTP-MattKennedy.49' message 'ZnDigestCredential now implements working Digest authentication support for client requests in ZnUserAgent.' id '4fb9842a-9138-4567-b15a-0136611d6ce8' date '09/29/2010' time '17:18:28' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.48' message 'Handling authentication credentials for ZnUserAgent with ZnCredentials and ZnUserAgentSession implemented, currently with support only for Basic authentication.' id '40c5bd87-c830-4b93-97d7-4f6b4a52b0de' date '09/29/2010' time '00:57:02' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.47' message 'Added ZnCredential and subclasses for Basic and Digest auth. Only stubs right now, next step to flesh out with test cases. Updated ZnUserAgentSession for storing credential objects. Added ZnMagicCookieJar>>cookieAt:forUrl: and ZnUserAgent>>cookieAt:' id '45c35930-c60a-48b8-b2b5-68a29e905ca4' date '09/28/2010' time '16:38:54' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-MattKennedy.46' message 'Added ZnMagicCookie, ZnMagicCookieJar, ZnUserAgentSession. ZnUserAgent now accepts and sends cookies. Modified ZnHeaders>>readOneHeaderFrom: to add items with ZnHeaders>>at:add: instead of ZnHeaders>>at:put: to handle requests and responses with multiple Set-Cookie or Cookie headers.' id 'baf796cb-154c-454c-9ebd-c4f2d412a64c' date '09/28/2010' time '13:56:36' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.45' message 'added ZnMessage>>#contents and ZnResponse>>#isSuccess; added ZnStreamingEntity>>#contents (non-repeatable); extended ZnFixedClient (added #isConnected and reimplemented #executeRequest error handling logic)' id '3831115e-48cf-466f-81e0-752247f6aefc' date '09/28/2010' time '14:17:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.44' message 'Merging Matt Kenedy''s code: Added ZnUserAgent and ZnUserAgentSettings' id '527f4690-0c3e-4e62-8482-de4bb3f76b0b' date '09/27/2010' time '23:36:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.43' message 'introduced ZnExperimentalServer to test server side connection keepalive/reuse; added ZnMessage>>#isConnectionClose; refactored ZnFixedClient with #preProcessRequest and #postProcessResponse (which handles server side connection close now) ' id 'bc799fbc-48ab-45c3-8cde-38fd1dd418bb' date '09/27/2010' time '23:25:06' author 'SvenVanCaekenberghe' ancestors () stepChildren ())(name 'Zinc-HTTP-MattKennedy.43' message 'Added ZnUserAgent and ZnUserAgentSettings.' id '217daf1b-07d3-4c49-bdf1-7b00262c5f70' date '09/27/2010' time '15:10:26' author 'MattKennedy' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.42' message 'extended ZnEntityReader with the ability to read Gzip content encoded entities; added ZnRequest>>#setAcceptEncodingGzip; we now use socket streams in binary mode by default (see ZnUtils>>#socketStreamToUrl:); we''re now using ZnLineReader to read CRLF delimited lines (handles bivalent access); ZnEntities set content length in #readFrom: when reading upToEnd; refactored ZnLimitedReadStream to track position explicitely (added #position); added #position to ZnChunkedReadStream; fixed ZnMessage>>#readStreamingFrom: ' id 'c60def04-29e9-4bb0-95d2-dad31539c4cc' date '09/27/2010' time '19:55:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.41' message 'extended ZnEntityReader with ability to read chunked transfer encoded content (see #readEntity); created helper class ZnChunkedReadStream wrapping a chunked transfer encoded stream, hiding the encoding from clients; all ZnEntities'' #readFrom: methods now work either with defined #contentLength (as before) or with undetermined #contentLength (doing #upToEnd); added ZnHeaders>>#keysAndValuesDo: ' id '3a023d61-98e4-4eaa-9c60-e7826ce05fbf' date '09/26/2010' time '20:10:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.40' message 'introduction of ZnEntityReader helper object; added some more operations to ZnFixedClient; some API cleanup' id 'c076371b-1e6b-48ad-ad3e-78a678785484' date '09/25/2010' time '23:16:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.39' message 'first version of ZnFixedClient for talking to one host:port combination and trying for connection reuse; added ZnMimeType>>#applicationJson (as non-binary!) ' id '784a8e5d-f9ef-4b96-838c-86d330aeec7b' date '09/25/2010' time '21:14:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.38' message 'replace #crlf with nextPutAll: String crlf to improve stream compatibility; added #url accessor to ZnRequest (alias to #uri)' id '12cb56a0-a124-4e23-bded-52ad0bbecf87' date '09/21/2010' time '22:06:40' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.37' message 'try to use MIMEDocument without referencing MIMEType' id '5b008ad4-0e12-4218-995a-635d765fa653' date '09/21/2010' time '16:15:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.36' message 'introduced ZnUtils>>#ipAddressToString:' id '6f149459-e4bf-4eca-a3c6-a20ede32ac0a' date '09/21/2010' time '16:01:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.35' message 'implemented a complete set of ZnClient methods (GET,PUT,POST,DELETE,HEAD) with basic authentication variants; introduced ZnClient>>#executeOneShot:on:; refactored ZnMessage and subclasses reading (#readFrom: #readStreamingFrom: #readHeaderFrom:) to support asymmetric head requests and remove code duplication; cleaned up ZnMessage and ZnHeaders #contentType and #contentLength access improved some ZnHeaders methods to better deal with missing headers dictionary (lazy initialization); added ZnServer>>#printOn:; renamed some older classes' id '71e40771-0e1a-477c-b999-94ac5537668c' date '09/21/2010' time '12:59:31' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.34' message 'added #printOn: to ZnStatusLine, ZnRequestLine, ZnHeaders and ZnEntity; some bug fixes and added robustness' id '58cafaad-d422-458a-9f26-57b801613e83' date '09/20/2010' time '19:40:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.33' message 'Renamed all categories with old code to Zinc-HTTP-Old-*' id '56666b16-26a2-4785-a7b0-69934e9f5a1b' date '09/19/2010' time '18:44:52' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.32' message 'various changes suggested by Code critics' id 'b9a81c31-f509-4443-b5ab-5d0980ba1f1b' date '09/17/2010' time '20:54:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.31' message 'first working implementation of ZnMonticelloServerDelegate; added ZnResponse #setLocation and #setWWWAuthenticate; added ZnResponse convencience instance creation methods #created: and #badRequest:; ZnResponse convencience instance creation methods now pass their uri through ZnUtils>>#urlPathQueryFragmentOf:; ZnUtils>>#httpDate: now does an #asUTC conversion; added ZnUtils>>#streamFrom:to:size: fast stream copier; added ZnUtils>>isSlash:' id 'e3e6a58f-52f3-4474-b700-132198106c9d' date '09/17/2010' time '15:45:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.30' message '1st working version of ZnStaticFileServerDelegate (on 1 directory with 1 prefix); extended ZnResponse with #notFound: and #redirect instance creation methods; added ZnUtils>>#httpDate: (and implemented #httpDate using it); extended ZnMimeType with MimeTypes and ExtensionsMap class variables for faster constant access and file extension to mime type mapping; ZnStreamingEntity>>#writeOn: now closes its stream after using it ' id '6074fdf3-5027-46f8-9e5b-9629d0ef5074' date '09/16/2010' time '20:50:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.29' message 'ZnStatusLine and ZnRequestLine now handle their own crlf line ending (see #readFrom: and #writeTo:); Experimental introduction of ZnStreamingEntity (see #readStreamingFrom:) ZnLimitedReadStream is now used in ZnApplicationFormUrlEncodedEntity>>#readFrom: ' id '4fae956f-e1d3-4307-90d0-eae856459f18' date '09/15/2010' time '20:24:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.28' message 'fixed ZnMimeType parser dependency on Grease #trimBoth; added serverSocket as inst var to ZnServer' id 'd09f0956-371c-442a-aeab-0eed4d433a3e' date '09/15/2010' time '09:59:36' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.27' message 'fixing ZnHTTPSocketFacade>>#httpPut:to:user:passwd: semantics; added ZnMessage #head: #post and #put; added ZnHeaders>>#removeKey:[ifAbsent:] ; allowed for missing content-type when reading entities; enforcing content-length header to be string in #acceptEntityDescription: ' id 'cb4bffd1-218f-4103-8679-b81e5e51dc7a' date '09/14/2010' time '15:15:59' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.26' message 'ZnHTTPSocketFacade: adjusting semantics; implemented some missing methods; some refactoring (#execute:on) ' id '541ca458-55fa-404a-a317-9a5801a6322b' date '09/14/2010' time '13:27:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.25' message 'some code reformatting in ZnHTTPSocketFacade; added more strings to ZnConstants; ZnServer now returns a nice default welcome page (the echo handler now only runs when the path starts with ''echo'')' id '7c2531d4-acde-449a-8c98-ed0d3affe342' date '09/14/2010' time '11:07:31' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.24' message 'first complete implementation of (new) ZnHTTPSocketFacade (incomplete tests); added #contents to ZnEntity; added #addAll: and #withAll to ZnHeaders and ZnApplicationFormUrlEncodedEntity; store remoteAddress as dotted IP string instead of printed byte array' id 'd30509ad-79a7-4410-9507-0a34a6639fc2' date '09/13/2010' time '22:31:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.23' message 'reorganized categories (Zinc-HTTP-New-Core, Zinc-HTTP-New-Client-Server, Zinc-HTTP-New-Support); started new implementation of ZnHTTPSocketFacade (renamed old one to ZnOldHTTPSocketFacade) with image access methods; refactored image access methods in ZnClient (introduced ZnClient>>#getImageOfType:usingParser:fromUrl:); changed ZnEntity>>#contentType: to only allow assigning mime types compatible with an entity''s designated mime type (if any) ' id 'eb6683ed-f103-46af-aa28-4d1c0d6689f3' date '09/13/2010' time '16:17:53' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.22' message 'added support for server side basic authentication' id '55c0e0fa-9e16-428f-800a-0ed87537fb45' date '09/13/2010' time '13:54:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.21' message 'added support for client side basic authentication' id 'f61af145-d04a-4c18-b8a9-4dc9c904c636' date '09/12/2010' time '20:34:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.20' message 'added simple http client proxy support using the system settings (untested though) ' id 'bae5ca73-9f54-4b2b-bfa2-3eb66228c7e1' date '09/12/2010' time '11:55:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.19' message 'refactored ZnEntity hierarchy with new instance creation framework; implementation of ZnApplicationFormUrlEncodedEntity; created mock ZnMultiPartFormDataEntity; added ZnUtils>>#parseQueryFrom: ZnMimeType>>#printOn: now simply prints the RFC string ' id '10746c52-3fcb-4b36-895f-a5fc34b8dd04' date '09/12/2010' time '11:28:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.18' message 'added header name normalization; added optional multi-valued header values; added optional header value merging' id '1e65b930-7310-4677-b5cf-b779a38bf759' date '09/10/2010' time '21:06:19' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-pmm.17' message 'use aStream print: anObject instead of aStream nextPutAll: anObject printString' id '4b6b2702-4ec3-4314-b712-ccc1d9da802c' date '09/10/2010' time '12:40:03' author 'pmm' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.16' message 'replaced usage of #displayString with #printString; renamed ZnMimeType>>#greaseString to #asRFCString' id '10c584eb-c842-4aa1-8ac7-60d2ca426265' date '09/10/2010' time '12:22:15' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.15' message 'added #at:ifAbsent: to ZnHeaders; added #headersDo: to ZnMessage; added #isRunning to ZnServer; ZnServer now sets a (ZnConstants remoteAddressHeader) header with the client''s remote IP address; extended ZnServer with a general purpose delegate mechanism ' id 'b3fa69a2-3f1a-4ea5-94db-47447fcab5a6' date '09/09/2010' time '20:53:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.14' message '1st primitive but working ZnServer' id '996b6601-b412-48ae-a64c-7dc78dac058d' date '09/08/2010' time '11:06:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.13' message 'ZnClient #get: and #getJpeg: now work for normal situations' id 'cbbe9f1e-39a9-4b3a-a6f1-e08e11c4c5cf' date '09/07/2010' time '20:04:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.12' message 'Started the Zinc-HTTP-New implementation; not much to see yet' id 'de2cead7-a4dd-4a3c-ac68-69e4cef2964d' date '09/06/2010' time '23:05:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.11' message 'some more recategorizations' id '7b109f45-7460-4edc-9983-3a201efa0815' date '09/05/2010' time '11:10:46' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.10' message 'refactoring for a cleaner #executeMethod: introducing #allHeadersFor:on: #generateRequestOn: #sendContentTo: removed #noContentLength: renamed #MIMEDocument to #getResponseAsMIMEDocument ; renamed some post method classes' id '0e5bf523-5aa9-40f3-be02-17abc7a18d6b' date '09/03/2010' time '23:29:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.9' message 'forgot one usage of #page' id 'd56be428-7eed-4712-ab04-2094e3808c3a' date '09/02/2010' time '20:16:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.8' message 'fixed wrong header case in #mimeTypeHeaderOn: ; refactored the extension protocol on HierarchicalUrl using new method names (using the concept of path directory and adding the String suffix for conversion methods)' id '28ab58db-ba2b-4db5-a473-2cd613cca92b' date '09/02/2010' time '20:10:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.7' message 'using code critics to remove some dead code and obvious problems (but may issues are left open); more method categorizations' id '1c64f23b-0156-41d4-bc9b-72d9c52d0227' date '09/02/2010' time '16:36:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.6' message 'did an initial method categorization in the core classes ZnHTTPClient and ZnHTTMethod (and its subclasses); removed one no-op #initialize' id '45e8c7be-7a6e-4aa3-8c8d-6f30c0e26bf5' date '09/02/2010' time '12:41:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.5' message 'introduced ZnConnectNew, a plugin replacement for ZnConnection.The old code was using its own SocketStream, now we''re using the system supplied SocketStream. Some backwards compatibility protocol was added, could be cleaned up later. It is probably also possible to use SocketStream directly; added ZnHTTPClientFacade with 2 get methods' id '2d453fab-9a2f-4743-8ce5-d7879bbc14a1' date '09/02/2010' time '11:47:13' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.4' message 'reduced some dependencies on extensions' id 'e3317890-f543-461c-a2de-d32ba48b2af0' date '09/01/2010' time '21:02:15' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.3' message 'Some cleanup of ZnHTTPSocketFacade''s class methods' id '58105dc7-a59a-4e9b-add7-1ae71a212e3c' date '09/01/2010' time '19:59:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.2' message 'Renamed HC HTTP Client to Zinc HTTP Components; Renamed all classes to use Zn namespace prefix; Renamed all extension protocols to *zinc-http; Renamed Facade to HTTPSocketFacade' id '42475f7f-909f-4292-90d2-78b2fe48c9a2' date '09/01/2010' time '19:13:12' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.1' message 'Renamed HC HTTP Client to Zinc HTTP Components; Renamed all classes to use Zn namespace prefix; Renamed all extension protocols to *zinc-http; Renamed Facade to HTTPSocketFacade' id '4b0032ae-27eb-462c-b0db-29800c2cc647' date '09/01/2010' time '17:29:24' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.242' message 'added ZnEntityTooLarge to the exceptions silently catched by ZnMultiThreadedServer>>#readRequestSafely:' id '8c18da8d-4ec0-40a7-92ea-01e7c09b9929' date '02/01/2012' time '11:26:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.241' message 'simplified and optimized implementation of ZnChunkedReadStream' id '36d5243f-deb3-4689-9315-d3d4c5393da7' date '01/31/2012' time '21:21:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.240' message 'added some speed improvements to the implementation of ZnLimitedReadStream' id '24874b38-2c00-4d0c-b3b3-cec7c4f91d71' date '01/31/2012' time '21:08:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.239' message 'fixed the implementation of ZnLimitedReadStream to honor EOF on the underlying stream' id '16a06aa4-34ec-4c81-87ca-701823088ac2' date '01/31/2012' time '20:55:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.238' message 'introduction of a resource limit to the size of entities read from a stream; added ZnConstants class>>#maximumEntitySize[:] added ZnEntityTooLarge resumable exception added ZnUtils class>>#readUpToEnd:limit: #readFrom: logic of Zn[String|ByteArray|MultiPartFormData]Entity now take the limit into account extended ZnChunkedReadStream and ZnLimitedReadStream with #readInto:startingAt:count: as a first step to improve their performance' id '4af222aa-e05c-458b-a1ce-2d62b2d23d2d' date '01/31/2012' time '14:02:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.237' message 'changed ZnMimePart class>>#fieldName:value: to use ZnEntity>>#with: on the value so that Strings become ZnStringEntities and others become ZnByteArrayEntities; changed ZnUrl>>#queryAt: to signal a KeyNotFound error when there is no query' id '37e466f7-592f-4f15-a016-f2689b56f3fb' date '01/29/2012' time '19:43:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.236' message 'added ZnUrl>>#retrieveContents convenience method' id 'b5d081c0-6b4f-40a2-8e4c-5b58c4a02de5' date '01/24/2012' time '11:59:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.235' message 'now using #trimBoth instead of #withBlanksTrimmed' id 'bc327259-a3d3-4829-a24a-504b08ab8cbf' date '01/08/2012' time '14:20:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.234' message 'changed the implementation of ZnHeaders to use ZnMultiValueDictionary; ZnLineReader now uses ZnConstants class>>#maximumLineLength (4096) as default for signaling a ZnLineTooLong exception; added a limit option to ZnMultiValueDictionary that defaults to ZnConstants class>>#maximumNumberOfDictionaryEntries (256) for signaling a ZnTooManyDictionaryEntries exception; added new ZnTooManyDictionaryEntries error; changed parent of ZnTooManyRedirects from Exception to Error and added a #isResumable true method; extended ZnMultiThreadedServer>>#readRequestSafely: to also catch ZnTooManyDictionaryEntries' id 'add34728-015e-46b6-9aeb-eda8f63e1f03' date '01/03/2012' time '15:42:40' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.233' message 'Rewrote ZnServer and subclasses''s class methods #startDefaultOn: and #defaultOn: to treat the default instance like a singleton by reusing/restarting/reconfiguring existing instances; expanded comments; Changed the implementation of ZnServer>>#start to automagically register the default instance; Changed the implementation of ZnServer>>#stop to always unregister; added ZnServer>>#stop: with an option to control the unregistering so that it does not happen when shutting down the image ' id '8dd541c9-2890-4a8f-b5cb-d6ac2e9341af' date '12/22/2011' time '12:54:05' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.232' message 'changed ZnClient>>#executeWithTimeout to use an explicit and selective #exceptionSetForIfFail so that only network, http parsing, http unsuccessful and unexpected content type exceptions trigger the #ifFailBlock; this fixes the problem where HTTPProgress exceptions triggered the ifFail block; thx Camillo Bruni ' id '3ca78fe3-4355-46ee-9ba3-5e0f540b9ec0' date '12/20/2011' time '14:24:53' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.231' message 'Extended the ZnHttpUnsuccessful and ZnUnexpectedContentType exceptions to contain the repsonse respectively the two content types so as to produce better error messages (thx Camillo Bruni for suggesting this)' id 'c94e86a8-3b1a-4c26-bae5-3aebc90764b2' date '12/20/2011' time '13:26:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.230' message 'Changed ZnClient>>#timeout to use the global ZnNetworkingUtils defaultSocketStreamTimeout as default' id 'fb0c7c07-a6dd-4105-bdd4-a65860b4b452' date '12/14/2011' time '14:07:42' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.229' message 'expanded the ZnUrl class comment' id 'b239edd4-c432-4139-a71a-d27618beef91' date '12/14/2011' time '13:45:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.228' message 'added ZnUrl>>#queryKeys' id 'f979e877-6dfa-4167-b159-ec322a629c98' date '12/13/2011' time '14:21:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.227' message 'added the WebDAV methods to ZnConstants class>>#knownHTTPMethods; added convenience constructor #xml: to ZnStringEntity and ZnEntity' id 'd8262a06-7f5b-4a88-9fdb-cc4bb05ed422' date '12/11/2011' time '19:47:11' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.226' message 'changed ZnMimeType such that the ''constants'' returned by the methods in the class side convenience protocol can now be freely modified by returning a copy; implemented ZnMimeType>>#postCopy; ZnMimeType>>#parameters will now lazy initialize to a SmallDictionary instead of a regular Dictionary' id '52cc1692-4d4f-4c43-813c-21b61e386eaf' date '12/06/2011' time '20:56:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-NorbertHartl.225' message 'changed ZnApplicationFormUrlEncodedEntity to check encoding of contentType. If an encoding is present to presentation is written using the specified encoding' id '18a28639-5e95-4594-937c-268df69987ec' date '12/06/2011' time '18:30:33' author 'NorbertHartl' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.224' message 'added ZnLimitedReadStream>>#peek' id '4f9dffc5-3af2-4adc-a0c9-0bc22d1de76e' date '12/04/2011' time '20:10:11' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.223' message 'added missing ZnChunkedReadStream>>#next:into: that was used by ZnEntityReader when reading a ZnByteArrayEntity fix to Pharo issue 5053 (http://code.google.com/p/pharo/issues/detail?id=5053) thanks Laurent Laffont for reporting' id '19ce4497-786a-46a7-bd6c-55fa682dba56' date '12/03/2011' time '17:51:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.222' message 'small fix to ZnEntityReader>>#readEntityFromStream added an extra guard copying extraHeaders from a chunked stream since these are missing when reading a streaming entity' id 'a1b1d190-4690-4cc0-b9b5-eab77cc5153b' date '12/01/2011' time '10:40:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.221' message 'added new #followsRedirects boolean option to ZnClient because setting #maxNumberOfRedirects to 0 did not work well for an example see the ZnClientTests>>#testRedirectDontFollow Thx Jan van de Sandt for reporting this' id '4df9982e-63e1-49ea-bfb0-2f9cb43f6f0b' date '11/23/2011' time '17:30:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.220' message 'added auto initialization of ZnNetworkingUtils>>#secureSocketStreamClass' id '147d6c42-b509-40e4-abb0-7c804d5df01d' date '11/13/2011' time '21:46:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.219' message 'reworked ZnNetworkingUtils to take over most if not all functionality of ZnZodiacNetworkingUtils so that HTTPS should work out of the box when Zodiac is loaded; small refactoring to ZnServer hierarchy: use #socketStreamOn: consistently' id 'f0eb7dbf-ae05-4daa-87da-84feb09ba23a' date '11/10/2011' time '14:09:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.218' message 'renamed ZnNeoClient -> ZnClient; added a better class comment' id '8c789ded-a882-4491-bdf9-e9ad45af69f2' date '11/08/2011' time '22:33:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.217' message 'renamed ZnClient -> ZnClientOld' id 'df12536b-7fa7-4e00-84eb-6de051894eb6' date '11/08/2011' time '22:14:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-SvenVanCaekenberghe.216' message 'documented all public methods of ZnNeoClient; minor fixes: - #close sets state to nil - #contents return the stream when streaming - #headerAddAll: and #headerAt:add: now do a #resetRequestIfNeeded' id 'bfb5ff74-76f9-4689-a976-95ef34260531' date '11/08/2011' time '21:10:32' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-HTTP-SvenVanCaekenberghe.283' message 'added an efficiency improvement to ZnMultiPartFormDataEntity>>#parse:boundary: added convenience protocol to ZnUrl: - #withPathSegment[s]: #/ - #withQuery: #? #&' id '51351ae8-99a9-44cc-856a-976fcd55e2cf' date '07/09/2012' time '04:38:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-HTTP-MarcusDenker.282' message 'Issue 6259: DataStream is still there http://code.google.com/p/pharo/issues/detail?id=6259 Issue 6255: Zinc Pharo Conference update with FileSystem support http://code.google.com/p/pharo/issues/detail?id=6255 Issue 6223: FileLocator and FileRerernce have extension from File Package http://code.google.com/p/pharo/issues/detail?id=6223' id '03911f2b-c422-4142-bedf-617d90674243' date '07/04/2012' time '04:16:25' author 'MarcusDenker' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.accept..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.accept..st index 476d3955..55a48b63 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.accept..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.accept..st @@ -4,4 +4,4 @@ httpGet: url accept: mimeType self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. - ^ ZnHTTPSocketFacade httpGet: url accept: mimeType \ No newline at end of file + ^ ZnHTTPSocketFacade httpGet: url accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.accept..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.accept..st index b773d487..d4ee92f7 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.accept..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.accept..st @@ -4,4 +4,4 @@ httpGet: url args: queryArguments accept: mimeType self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. - ^ ZnHTTPSocketFacade httpGet: url args: queryArguments accept: mimeType \ No newline at end of file + ^ ZnHTTPSocketFacade httpGet: url args: queryArguments accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.accept.request..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.accept.request..st index 754f788f..b1d166e1 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.accept.request..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.accept.request..st @@ -4,4 +4,4 @@ httpGet: url args: queryArguments accept: mimeType request: extraHeaders self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. - ^ ZnHTTPSocketFacade httpGet: url args: queryArguments accept: mimeType request: extraHeaders \ No newline at end of file + ^ ZnHTTPSocketFacade httpGet: url args: queryArguments accept: mimeType request: extraHeaders \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.accept..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.accept..st index c4a49b0e..b6e0ed9c 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.accept..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.accept..st @@ -4,4 +4,4 @@ httpGetDocument: url accept: mimeType self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. - ^ ZnHTTPSocketFacade httpGetDocument: url accept: mimeType \ No newline at end of file + ^ ZnHTTPSocketFacade httpGetDocument: url accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/monticello.meta/version b/repository/Zinc-Patch-HTTPSocket.package/monticello.meta/version index 4dc7f1f0..e386499d 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/monticello.meta/version +++ b/repository/Zinc-Patch-HTTPSocket.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-Patch-HTTPSocket-MarcusDenker.4' message 'Issue 6757: Nuke HTTPClient and HTTPSocket and deprecated ZnHTTPSocketFacade http://code.google.com/p/pharo/issues/detail?id=6757 Remove HTTPClient completely. Remove all methods from HTTPSocket, instance and class side, as well as all instance and class variables. Keep the methods on the class side delegating to ZnHTTPSocketFacade as they constitute a working API that might be used by legacy code. Deprecate all class side methods on HTTPSocket that were delegating to ZnHTTPSocketFacade, as defined by the special Zinc-Patch-HTTPSocket package. Remove HTTPSocketTests' id '08761d24-c63a-46cd-9a6b-d861546fda5a' date '4 October 2012' time '9:33:42.215 am' author 'MarcusDenker' ancestors ((name 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.3' message 'Remove HTTPClient completely. Remove all methods from HTTPSocket, instance and class side, as well as all instance and class variables. Keep the methods on the class side delegating to ZnHTTPSocketFacade as they constitute a working API that might be used by legacy code. Deprecate all class side methods on HTTPSocket that were delegating to ZnHTTPSocketFacade, as defined by the special Zinc-Patch-HTTPSocket package. Remove HTTPSocketTests.Remove HTTPClient completely. Remove all methods from HTTPSocket, instance and class side, as well as all instance and class variables. Keep the methods on the class side delegating to ZnHTTPSocketFacade as they constitute a working API that might be used by legacy code. Deprecate all class side methods on HTTPSocket that were delegating to ZnHTTPSocketFacade, as defined by the special Zinc-Patch-HTTPSocket package. Remove HTTPSocketTests.' id '6223e6e6-609e-4669-b28e-99dc452ea143' date '3 October 2012' time '8:25:23.282 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Patch-HTTPSocket-StephaneDucasse.2' message '- Issue 4130: Zinc should be added to core. Thanks sven van caekenberghe.' id '350b396c-21ad-4282-bf61-b8b236d49183' date '12 May 2011' time '6:51:57 pm' author 'StephaneDucasse' ancestors ((name 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1' message 'This package patches (overwrites) class methods in HTTPSocket, redirecting them to ZnHTTPSocketFacade, effectively steering all HTTP client access in your Smalltalk image through Zinc HTTP Components. To revert, reload the Network-Protocols package from your local MC package-cache. WARNING: make sure that you understand what you are doing when loading this package!! ' id '9ce74b45-8b95-4240-88fa-290f471d3b5c' date '14 September 2010' time '3:25:48 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-Patch-HTTPSocket-MarcusDenker.4' message 'Issue 6757: Nuke HTTPClient and HTTPSocket and deprecated ZnHTTPSocketFacade http://code.google.com/p/pharo/issues/detail?id=6757 Remove HTTPClient completely. Remove all methods from HTTPSocket, instance and class side, as well as all instance and class variables. Keep the methods on the class side delegating to ZnHTTPSocketFacade as they constitute a working API that might be used by legacy code. Deprecate all class side methods on HTTPSocket that were delegating to ZnHTTPSocketFacade, as defined by the special Zinc-Patch-HTTPSocket package. Remove HTTPSocketTests' id '08761d24-c63a-46cd-9a6b-d861546fda5a' date '10/04/2012' time '09:33:42' author 'MarcusDenker' ancestors ((name 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.3' message 'Remove HTTPClient completely. Remove all methods from HTTPSocket, instance and class side, as well as all instance and class variables. Keep the methods on the class side delegating to ZnHTTPSocketFacade as they constitute a working API that might be used by legacy code. Deprecate all class side methods on HTTPSocket that were delegating to ZnHTTPSocketFacade, as defined by the special Zinc-Patch-HTTPSocket package. Remove HTTPSocketTests.Remove HTTPClient completely. Remove all methods from HTTPSocket, instance and class side, as well as all instance and class variables. Keep the methods on the class side delegating to ZnHTTPSocketFacade as they constitute a working API that might be used by legacy code. Deprecate all class side methods on HTTPSocket that were delegating to ZnHTTPSocketFacade, as defined by the special Zinc-Patch-HTTPSocket package. Remove HTTPSocketTests.' id '6223e6e6-609e-4669-b28e-99dc452ea143' date '10/03/2012' time '08:25:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Patch-HTTPSocket-StephaneDucasse.2' message '- Issue 4130: Zinc should be added to core. Thanks sven van caekenberghe.' id '350b396c-21ad-4282-bf61-b8b236d49183' date '05/12/2011' time '18:51:57' author 'StephaneDucasse' ancestors ((name 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1' message 'This package patches (overwrites) class methods in HTTPSocket, redirecting them to ZnHTTPSocketFacade, effectively steering all HTTP client access in your Smalltalk image through Zinc HTTP Components. To revert, reload the Network-Protocols package from your local MC package-cache. WARNING: make sure that you understand what you are doing when loading this package!! ' id '9ce74b45-8b95-4240-88fa-290f471d3b5c' date '09/14/2010' time '15:25:48' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/.filetree b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet..st new file mode 100644 index 00000000..536387c3 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGet: url + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGet: url \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.accept..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.accept..st new file mode 100644 index 00000000..afe582f3 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.accept..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGet: url accept: mimeType + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGet: url accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.args.accept..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.args.accept..st new file mode 100644 index 00000000..ab4582c5 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.args.accept..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGet: url args: queryArguments accept: mimeType + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGet: url args: queryArguments accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.args.accept.request..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.args.accept.request..st new file mode 100644 index 00000000..7f90abe3 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.args.accept.request..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGet: url args: queryArguments accept: mimeType request: extraHeaders + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGet: url args: queryArguments accept: mimeType request: extraHeaders \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.args.user.passwd..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.args.user.passwd..st new file mode 100644 index 00000000..5cd5e91e --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGet.args.user.passwd..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGet: url args: queryArguments user: username passwd: password + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGet: url args: queryArguments user: username passwd: password \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument..st new file mode 100644 index 00000000..4aaaf166 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGetDocument: url + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGetDocument: url \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.accept..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.accept..st new file mode 100644 index 00000000..724e954b --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.accept..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGetDocument: url accept: mimeType + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGetDocument: url accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.args..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.args..st new file mode 100644 index 00000000..cf1f6bda --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.args..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGetDocument: url args: queryArguments + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGetDocument: url args: queryArguments \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.args.accept..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.args.accept..st new file mode 100644 index 00000000..3fef6cbc --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.args.accept..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGetDocument: url args: queryArguments accept: mimeType + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGetDocument: url args: queryArguments accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.args.accept.request..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.args.accept.request..st new file mode 100644 index 00000000..83d519c0 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGetDocument.args.accept.request..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGetDocument: url args: queryArguments accept: mimeType request: extraHeaders + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGetDocument: url args: queryArguments accept: mimeType request: extraHeaders \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGif..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGif..st new file mode 100644 index 00000000..640f1a65 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpGif..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpGif: url + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpGif: url \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpJpeg..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpJpeg..st new file mode 100644 index 00000000..524eb136 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpJpeg..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpJpeg: url + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpJpeg: url \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPng..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPng..st new file mode 100644 index 00000000..93692af2 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPng..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpPng: url + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpPng: url \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPost.args.accept..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPost.args.accept..st new file mode 100644 index 00000000..9c976d05 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPost.args.accept..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpPost: url args: arguments accept: mimeType + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpPost: url args: arguments accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPost.args.user.passwd..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPost.args.user.passwd..st new file mode 100644 index 00000000..de55c628 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPost.args.user.passwd..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpPost: url args: arguments user: username passwd: password + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpPost: url args: arguments user: username passwd: password \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostDocument.args..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostDocument.args..st new file mode 100644 index 00000000..70efd13a --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostDocument.args..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpPostDocument: url args: arguments + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpPostDocument: url args: arguments \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostDocument.args.accept..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostDocument.args.accept..st new file mode 100644 index 00000000..a6707960 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostDocument.args.accept..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpPostDocument: url args: arguments accept: mimeType + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpPostDocument: url args: arguments accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostDocument.args.accept.request..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostDocument.args.accept.request..st new file mode 100644 index 00000000..c1de1547 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostDocument.args.accept.request..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpPostDocument: url args: arguments accept: mimeType request: extraHeaders + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpPostDocument: url args: arguments accept: mimeType request: extraHeaders \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostMultipart.args.accept.request..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostMultipart.args.accept.request..st new file mode 100644 index 00000000..b6dfe58f --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPostMultipart.args.accept.request..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpPostMultipart: url args: arguments accept: mimeType request: extraHeaders + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpPostMultipart: url args: arguments accept: mimeType request: extraHeaders \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPut.to.user.passwd..st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPut.to.user.passwd..st new file mode 100644 index 00000000..e1eda2ad --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/class/httpPut.to.user.passwd..st @@ -0,0 +1,5 @@ +*Zinc-Patch-HTTPSocket +httpPut: stream to: url user: username passwd: password + "Forward to Zinc HTTP Components" + + ^ ZnHTTPSocketFacade httpPut: stream to: url user: username passwd: password \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/methodProperties.json b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/methodProperties.json new file mode 100644 index 00000000..e89e2955 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/methodProperties.json @@ -0,0 +1,24 @@ +{ + "class" : { + "httpGet:" : "SvenVanCaekenberghe 9/14/2010 11:44", + "httpGet:accept:" : "SvenVanCaekenberghe 9/14/2010 11:44", + "httpGet:args:accept:" : "SvenVanCaekenberghe 9/14/2010 11:45", + "httpGet:args:accept:request:" : "SvenVanCaekenberghe 9/14/2010 11:45", + "httpGet:args:user:passwd:" : "SvenVanCaekenberghe 9/14/2010 11:45", + "httpGetDocument:" : "SvenVanCaekenberghe 9/14/2010 11:46", + "httpGetDocument:accept:" : "SvenVanCaekenberghe 9/14/2010 11:46", + "httpGetDocument:args:" : "SvenVanCaekenberghe 9/14/2010 11:46", + "httpGetDocument:args:accept:" : "SvenVanCaekenberghe 9/14/2010 11:46", + "httpGetDocument:args:accept:request:" : "SvenVanCaekenberghe 9/14/2010 11:46", + "httpGif:" : "SvenVanCaekenberghe 9/14/2010 11:46", + "httpJpeg:" : "SvenVanCaekenberghe 9/14/2010 11:46", + "httpPng:" : "SvenVanCaekenberghe 9/14/2010 11:46", + "httpPost:args:accept:" : "SvenVanCaekenberghe 9/14/2010 11:47", + "httpPost:args:user:passwd:" : "SvenVanCaekenberghe 9/14/2010 11:47", + "httpPostDocument:args:" : "SvenVanCaekenberghe 9/14/2010 11:47", + "httpPostDocument:args:accept:" : "SvenVanCaekenberghe 9/14/2010 11:47", + "httpPostDocument:args:accept:request:" : "SvenVanCaekenberghe 9/14/2010 11:47", + "httpPostMultipart:args:accept:request:" : "SvenVanCaekenberghe 9/14/2010 11:47", + "httpPut:to:user:passwd:" : "SvenVanCaekenberghe 9/14/2010 11:47" }, + "instance" : { + } } diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/properties.json b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/properties.json new file mode 100644 index 00000000..2eed1df4 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/HTTPSocket.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "HTTPSocket" } diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/monticello.meta/initializers.st b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/monticello.meta/package b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/monticello.meta/package new file mode 100644 index 00000000..b79f2571 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-Patch-HTTPSocket') \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/monticello.meta/version b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/monticello.meta/version new file mode 100644 index 00000000..ff7f3df1 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-Patch-HTTPSocket.pharo1x-SvenVanCaekenberghe.1' message 'create phar1x branch for Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1, so both pharo20 package and pharo10 packages can co-exist in same git repo' id '3f8093f9-f425-4843-9e2d-b007a7a9f818' date '07/02/2013' time '22:42:43' author 'dkh' ancestors ((name 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1' message 'This package patches (overwrites) class methods in HTTPSocket, redirecting them to ZnHTTPSocketFacade, effectively steering all HTTP client access in your Smalltalk image through Zinc HTTP Components. To revert, reload the Network-Protocols package from your local MC package-cache. WARNING: make sure that you understand what you are doing when loading this package!! ' id '9ce74b45-8b95-4240-88fa-290f471d3b5c' date '09/14/2010' time '15:25:48' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.pharo1x.package/properties.json b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.pharo1x.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/isAbstract.st b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/isAbstract.st index 1ac0e050..2671dbfa 100644 --- a/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/isAbstract.st +++ b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/isAbstract.st @@ -1,3 +1,3 @@ accessing isAbstract - ^ self = ZnAutoMatchedRestCall \ No newline at end of file + ^ self = ZnAutoMatchedRestCall \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/match..st b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/match..st index a77d9ba6..a0ae6254 100644 --- a/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/match..st +++ b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/match..st @@ -3,4 +3,4 @@ match: request self isAbstract ifTrue: [ ^ nil ]. ^ ZnRestServerUtils matchPath: request uri pathSegments - pattern: self pattern \ No newline at end of file + pattern: self pattern \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/pattern.st b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/pattern.st index 593e9d40..c3ebf935 100644 --- a/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/pattern.st +++ b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/pattern.st @@ -1,3 +1,3 @@ accessing pattern - ^ self subclassResponsibility \ No newline at end of file + ^ self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/instance/match..st b/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/instance/match..st index 1a0dc75d..5b9d9ef3 100644 --- a/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/instance/match..st +++ b/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/instance/match..st @@ -6,4 +6,4 @@ match: request ^ each new variables: variables; yourself ] ]. - ^ nil \ No newline at end of file + ^ nil \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/put.st b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/put.st index 1e0de2f2..ce7a4913 100644 --- a/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/put.st +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/put.st @@ -6,4 +6,4 @@ put data := self jsonRequest. data at: #'object-uri' put: objectUri. self delegate storage at: objectUri put: data. - self emptyOkResponse \ No newline at end of file + self emptyOkResponse \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/class/isAbstract.st b/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/class/isAbstract.st index ed058330..fb4edf38 100644 --- a/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/class/isAbstract.st +++ b/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/class/isAbstract.st @@ -1,3 +1,3 @@ accessing isAbstract - ^ self = ZnExampleStorageRestCall \ No newline at end of file + ^ self = ZnExampleStorageRestCall \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testCreate.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testCreate.st index 5ecf08ca..92a8842c 100644 --- a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testCreate.st +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testCreate.st @@ -25,4 +25,4 @@ testCreate self assert: client isSuccess. data keysAndValuesDo: [ :key :value | (client contents at: key) = value ]. - self assert: (client contents at: #'object-uri') equals: objectUri \ No newline at end of file + self assert: (client contents at: #'object-uri') equals: objectUri \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCall.class/class/match..st b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/class/match..st index bf5f6c1a..6a7024fd 100644 --- a/repository/Zinc-REST.package/ZnExampleSumRestCall.class/class/match..st +++ b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/class/match..st @@ -2,4 +2,4 @@ public match: request ^ request uri firstPathSegment = 'sum' ifTrue: [ request uri pathSegments allButFirst ] - ifFalse: [ nil ] \ No newline at end of file + ifFalse: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/class/isAbstract.st b/repository/Zinc-REST.package/ZnJSONRestCall.class/class/isAbstract.st index 09b85571..493a0776 100644 --- a/repository/Zinc-REST.package/ZnJSONRestCall.class/class/isAbstract.st +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/class/isAbstract.st @@ -1,3 +1,3 @@ accessing isAbstract - ^ self = ZnJSONRestCall \ No newline at end of file + ^ self = ZnJSONRestCall \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestCall.class/instance/execute.st b/repository/Zinc-REST.package/ZnRestCall.class/instance/execute.st index 695b4d38..e3fd2f25 100644 --- a/repository/Zinc-REST.package/ZnRestCall.class/instance/execute.st +++ b/repository/Zinc-REST.package/ZnRestCall.class/instance/execute.st @@ -2,4 +2,4 @@ public execute ^ (self respondsTo: self method) ifTrue: [ (self perform: self method) response ] - ifFalse: [ self delegate wrongMethod: request ] \ No newline at end of file + ifFalse: [ self delegate wrongMethod: request ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestCall.class/instance/isAuthorized.st b/repository/Zinc-REST.package/ZnRestCall.class/instance/isAuthorized.st index cf5399c9..953bd02a 100644 --- a/repository/Zinc-REST.package/ZnRestCall.class/instance/isAuthorized.st +++ b/repository/Zinc-REST.package/ZnRestCall.class/instance/isAuthorized.st @@ -1,3 +1,3 @@ testing isAuthorized - ^ true \ No newline at end of file + ^ true \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestCall.class/instance/method.st b/repository/Zinc-REST.package/ZnRestCall.class/instance/method.st index b6fdb8a9..73508886 100644 --- a/repository/Zinc-REST.package/ZnRestCall.class/instance/method.st +++ b/repository/Zinc-REST.package/ZnRestCall.class/instance/method.st @@ -1,3 +1,3 @@ accessing method - ^ request method asLowercase asSymbol \ No newline at end of file + ^ request method asLowercase asSymbol \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/authenticate..st b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/authenticate..st index bf621fe7..05178701 100644 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/authenticate..st +++ b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/authenticate..st @@ -9,4 +9,4 @@ authenticate: call principal: authorization key; credentials: authorization value ]. call isAuthorized ] - ifFalse: [ false ] \ No newline at end of file + ifFalse: [ false ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/handleRequest..st b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/handleRequest..st index b01c97d7..af3bb33e 100644 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/handleRequest..st +++ b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/handleRequest..st @@ -10,4 +10,6 @@ handleRequest: request do: [ :exception | request server debugMode ifTrue: [ exception pass ] - ifFalse: [ self serverError: request exception: exception ] ] \ No newline at end of file + ifFalse: [ + request server logServerError: exception. + self serverError: request exception: exception ] ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/methodProperties.json b/repository/Zinc-REST.package/ZnRestServerDelegate.class/methodProperties.json index f2eacc0e..6f659516 100644 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/methodProperties.json +++ b/repository/Zinc-REST.package/ZnRestServerDelegate.class/methodProperties.json @@ -6,7 +6,7 @@ "callUnauthorized:" : "SvenVanCaekenberghe 6/16/2011 21:10", "errorResponse:code:message:" : "SvenVanCaekenberghe 6/16/2011 14:01", "execute:" : "SvenVanCaekenberghe 6/16/2011 15:19", - "handleRequest:" : "SvenVanCaekenberghe 1/10/2013 14:07", + "handleRequest:" : "SvenVanCaekenberghe 6/21/2013 22:49", "isAuthorizationValid:" : "SvenVanCaekenberghe 6/16/2011 15:20", "match:" : "SvenVanCaekenberghe 6/15/2011 17:34", "noHandlerFound:" : "SvenVanCaekenberghe 6/16/2011 21:10", diff --git a/repository/Zinc-REST.package/ZnRestUriSpace.class/instance/match..st b/repository/Zinc-REST.package/ZnRestUriSpace.class/instance/match..st index 20889a1b..e3b1420d 100644 --- a/repository/Zinc-REST.package/ZnRestUriSpace.class/instance/match..st +++ b/repository/Zinc-REST.package/ZnRestUriSpace.class/instance/match..st @@ -1,3 +1,3 @@ public match: request - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-REST.package/monticello.meta/categories.st b/repository/Zinc-REST.package/monticello.meta/categories.st index 82ef692f..43ba04bc 100644 --- a/repository/Zinc-REST.package/monticello.meta/categories.st +++ b/repository/Zinc-REST.package/monticello.meta/categories.st @@ -1,2 +1,3 @@ +SystemOrganization addCategory: #'Zinc-REST'! SystemOrganization addCategory: #'Zinc-REST-Server'! SystemOrganization addCategory: #'Zinc-REST-Tests'! diff --git a/repository/Zinc-REST.package/monticello.meta/version b/repository/Zinc-REST.package/monticello.meta/version index 3925fcca..062b3bbe 100644 --- a/repository/Zinc-REST.package/monticello.meta/version +++ b/repository/Zinc-REST.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-REST-SvenVanCaekenberghe.10' message 'remove ZnRestServerDelegate #debug and #server now using the new request server debugMode in #handleRequest' id 'fbbd8a10-ccca-4a5d-9589-5585010ea4be' date '10 January 2013' time '3:57:49.13 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.9' message 'added a class comment' id '85d90f74-b94c-488f-a8f3-4614a7f14471' date '23 December 2012' time '6:24:46.16 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.8' message 'tracking new ZnClient API' id '0e9babe6-b26b-44e1-b78f-ebe9ffe6c08c' date '12 December 2012' time '10:41:11.361 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.7' message 'created ZnJSONRestCall and ZnJSONRestServerDelegate (based on an internal project); added ZnExampleStorage full CRUD JSON Rest example with tests; improved comments' id '398013cb-b25e-4ca9-949f-5c3d62b1c463' date '10 December 2012' time '9:35:55.577 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.6' message 'first example/test in new Zinc-REST-Tests, ZnExampleSumRestCall[Test]; modified ZnAutoMatchedRestCall to look at all subclasses including the root (which can be excluded with the new #isAbstract)' id '2989f3a0-160b-470a-bb14-20d14d241ba4' date '9 December 2012' time '7:59:52.471 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.5' message 'allow Strings as exceptions in ZnRestServerDelegate>>#serverError:exception:' id '9a035465-aea9-4b02-bd4b-d172dda21d23' date '21 June 2011' time '1:54:50 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.4' message 'modified #on: Error do: to #on: Exception do:' id '51230c65-bbe8-4df8-8c96-a40af0739591' date '17 June 2011' time '3:48:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.3' message 'code formatting' id '7af200f1-5069-4396-b289-06f741171373' date '16 June 2011' time '9:53:45 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.2' message 'fleshing out the initial design' id '72125502-95af-47d7-9654-8c69de4d1b71' date '16 June 2011' time '3:24:42 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.1' message 'Start of Zinc-REST-Server sub project; initial design/architecture' id '083c761d-83de-413c-ae2b-b0cca9ab96af' date '15 June 2011' time '4:35:54 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-REST-SvenVanCaekenberghe.11' message 'Added better error logging when not in debug mode' id '64196d64-8689-4ece-b584-63ce2dff0097' date '06/21/2013' time '10:50:33' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.10' message 'remove ZnRestServerDelegate #debug and #server now using the new request server debugMode in #handleRequest' id 'fbbd8a10-ccca-4a5d-9589-5585010ea4be' date '01/10/2013' time '03:57:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.9' message 'added a class comment' id '85d90f74-b94c-488f-a8f3-4614a7f14471' date '12/23/2012' time '06:24:46' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.8' message 'tracking new ZnClient API' id '0e9babe6-b26b-44e1-b78f-ebe9ffe6c08c' date '12/12/2012' time '10:41:11' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.7' message 'created ZnJSONRestCall and ZnJSONRestServerDelegate (based on an internal project); added ZnExampleStorage full CRUD JSON Rest example with tests; improved comments' id '398013cb-b25e-4ca9-949f-5c3d62b1c463' date '12/10/2012' time '09:35:55' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.6' message 'first example/test in new Zinc-REST-Tests, ZnExampleSumRestCall[Test]; modified ZnAutoMatchedRestCall to look at all subclasses including the root (which can be excluded with the new #isAbstract)' id '2989f3a0-160b-470a-bb14-20d14d241ba4' date '12/09/2012' time '07:59:52' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.5' message 'allow Strings as exceptions in ZnRestServerDelegate>>#serverError:exception:' id '9a035465-aea9-4b02-bd4b-d172dda21d23' date '06/21/2011' time '13:54:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.4' message 'modified #on: Error do: to #on: Exception do:' id '51230c65-bbe8-4df8-8c96-a40af0739591' date '06/17/2011' time '15:48:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.3' message 'code formatting' id '7af200f1-5069-4396-b289-06f741171373' date '06/16/2011' time '21:53:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.2' message 'fleshing out the initial design' id '72125502-95af-47d7-9654-8c69de4d1b71' date '06/16/2011' time '15:24:42' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-REST-SvenVanCaekenberghe.1' message 'Start of Zinc-REST-Server sub project; initial design/architecture' id '083c761d-83de-413c-ae2b-b0cca9ab96af' date '06/15/2011' time '16:35:54' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/Collection.extension/instance/addedToZnUrl..st b/repository/Zinc-Resource-Meta-Core.package/Collection.extension/instance/addedToZnUrl..st new file mode 100644 index 00000000..3362e47d --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/Collection.extension/instance/addedToZnUrl..st @@ -0,0 +1,3 @@ +*zinc-resource-meta-core +addedToZnUrl: url + ^ url withPathSegments: self \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/Collection.extension/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/Collection.extension/methodProperties.json new file mode 100644 index 00000000..24287e34 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/Collection.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "addedToZnUrl:" : "SvenVanCaekenberghe 3/16/2013 20:24" } } diff --git a/repository/Zinc-Resource-Meta-Core.package/Collection.extension/properties.json b/repository/Zinc-Resource-Meta-Core.package/Collection.extension/properties.json new file mode 100644 index 00000000..93b0dc32 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/Collection.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "Collection" } diff --git a/repository/Zinc-Resource-Meta-Core.package/String.extension/instance/addedToZnUrl..st b/repository/Zinc-Resource-Meta-Core.package/String.extension/instance/addedToZnUrl..st new file mode 100644 index 00000000..c235cdf2 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/String.extension/instance/addedToZnUrl..st @@ -0,0 +1,5 @@ +*zinc-resource-meta-core +addedToZnUrl: url + | segments | + segments := self findTokens: '/'. + ^ url withPathSegments: segments \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/String.extension/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/String.extension/methodProperties.json index 5e84871a..79029114 100644 --- a/repository/Zinc-Resource-Meta-Core.package/String.extension/methodProperties.json +++ b/repository/Zinc-Resource-Meta-Core.package/String.extension/methodProperties.json @@ -2,5 +2,6 @@ "class" : { }, "instance" : { + "addedToZnUrl:" : "SvenVanCaekenberghe 3/16/2013 20:23", "asZnMimeType" : "SvenVanCaekenberghe 1/4/2011 19:47", "asZnUrl" : "SvenVanCaekenberghe 1/4/2011 13:03" } } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/default.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/default.st index 58daf00e..f7964df0 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/default.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/default.st @@ -1,3 +1,3 @@ convenience default - ^ self applicationOctetStream \ No newline at end of file + ^ self applicationOctetStream \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/^equals.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/^equals.st index 31557555..6075eafe 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/^equals.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/^equals.st @@ -1,5 +1,9 @@ comparing = other + "#matches should be used instead of #= to ignore parameters." + ^ (self class == other class) and: [ self main = other main - and: [ self sub = other sub ] ] \ No newline at end of file + and: [ self sub = other sub + and: [ self hasParameters not & other hasParameters not + or: [ self parameters = other parameters ] ] ] ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/hasParameters.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/hasParameters.st new file mode 100644 index 00000000..10dd48f9 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/hasParameters.st @@ -0,0 +1,3 @@ +testing +hasParameters + ^ parameters notNil and: [ parameters isEmpty not ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/hash.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/hash.st index f9e6b63b..30d7765b 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/hash.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/hash.st @@ -1,3 +1,7 @@ comparing hash - ^ self main hash bitXor: self sub hash \ No newline at end of file + | hash | + hash := self main hash bitXor: self sub hash. + self hasParameters + ifTrue: [ hash := hash bitXor: self parameters hash ]. + ^ hash \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isBinary.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isBinary.st index de276d69..2ae90915 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isBinary.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isBinary.st @@ -3,7 +3,7 @@ isBinary "answers whether the contents of a document of the receiving mime type are binary" | subTypes | self main = 'text' ifTrue: [ ^ false ]. - self = self class applicationJson ifTrue: [ ^ false ]. + (self matches: self class applicationJson) ifTrue: [ ^ false ]. self main = 'application' ifFalse: [ ^ true ]. subTypes := self sub subStrings: '+'. ^ subTypes noneSatisfy: [ :each | diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/main..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/main..st index 577ab72d..8be00614 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/main..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/main..st @@ -1,3 +1,3 @@ accessing main: aString - main := aString \ No newline at end of file + main := aString asLowercase \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/matches..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/matches..st index 1ab2fd68..38affd10 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/matches..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/matches..st @@ -1,6 +1,8 @@ testing matches: aMimeType - "aMimeType is the pattern to match, it is a normal instance where main or sub can be wildcards" + "Compare the receiver to aMimeType, which is the pattern to match, + it is a normal instance where main or sub can be wildcards. + Matches should be used instead of #= to ignore parameters." ^ (aMimeType main = '*' or: [ aMimeType main = self main ]) diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/sub..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/sub..st index 46e39ee8..4eb8f34e 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/sub..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/sub..st @@ -1,3 +1,3 @@ accessing sub: aString - sub := aString \ No newline at end of file + sub := aString asLowercase \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/methodProperties.json index fb0b3f2e..303da584 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/methodProperties.json +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/methodProperties.json @@ -28,19 +28,20 @@ "textJavascript" : "SvenVanCaekenberghe 12/6/2011 20:01", "textPlain" : "SvenVanCaekenberghe 12/6/2011 20:01" }, "instance" : { - "=" : "SvenVanCaekenberghe 8/18/2011 14:22", + "=" : "SvenVanCaekenberghe 6/7/2013 11:54", "asZnMimeType" : "SvenVanCaekenberghe 1/4/2011 19:47", "charSet" : "SvenVanCaekenberghe 8/18/2011 14:21", "charSet:" : "SvenVanCaekenberghe 12/2/2010 11:24", "clearCharSet" : "SvenVanCaekenberghe 3/6/2012 10:54", - "hash" : "SvenVanCaekenberghe 8/18/2011 14:22", - "isBinary" : "SvenVanCaekenberghe 8/18/2011 14:22", + "hasParameters" : "SvenVanCaekenberghe 5/21/2013 20:24", + "hash" : "SvenVanCaekenberghe 5/21/2013 20:32", + "isBinary" : "SvenVanCaekenberghe 6/7/2013 11:02", "isCharSetUTF8" : "SvenVanCaekenberghe 12/2/2010 11:19", "isNonStandard" : "SvenVanCaekenberghe 8/18/2011 14:22", "isVendorSpecific" : "SvenVanCaekenberghe 8/18/2011 14:45", "main" : "SvenVanCaekenberghe 9/7/2010 14:47", - "main:" : "SvenVanCaekenberghe 9/7/2010 14:47", - "matches:" : "SvenVanCaekenberghe 12/8/2012 13:14", + "main:" : "SvenVanCaekenberghe 6/11/2013 10:51", + "matches:" : "SvenVanCaekenberghe 6/7/2013 11:53", "parameterAt:" : "SvenVanCaekenberghe 3/6/2012 11:00", "parameterAt:ifAbsent:" : "SvenVanCaekenberghe 3/6/2012 10:53", "parameterAt:put:" : "SvenVanCaekenberghe 9/7/2010 14:50", @@ -51,4 +52,4 @@ "removeParameter:" : "SvenVanCaekenberghe 3/6/2012 10:53", "setCharSetUTF8" : "SvenVanCaekenberghe 12/2/2010 11:20", "sub" : "SvenVanCaekenberghe 9/7/2010 14:47", - "sub:" : "SvenVanCaekenberghe 9/7/2010 14:47" } } + "sub:" : "SvenVanCaekenberghe 6/11/2013 10:51" } } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/initialize..st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/initialize..st new file mode 100644 index 00000000..d596e3ae --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/initialize..st @@ -0,0 +1,4 @@ +initialize-release +initialize: n + super initialize: n. + limit := self defaultLimit \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit..st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit..st index 3c84457f..b4f65f3e 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit..st @@ -1,3 +1,3 @@ initialize-release limit: numberOfEntries - limit := numberOfEntries \ No newline at end of file + limit := numberOfEntries \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit.st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit.st index ff417ecb..79aef1eb 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit.st @@ -1,3 +1,3 @@ accessing limit - ^ limit ifNil: [ limit := self defaultLimit ] \ No newline at end of file + ^ limit \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/methodProperties.json index 26264d47..3548035e 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/methodProperties.json +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/methodProperties.json @@ -8,7 +8,8 @@ "at:put:" : "KenTreis 01/19/2013 10:41", "checkLimitForKey:" : "KenTreis 01/19/2013 10:42", "defaultLimit" : "SvenVanCaekenberghe 12/8/2012 19:49", + "initialize:" : "SvenVanCaekenberghe 5/14/2013 12:50", "keysAndValuesDo:" : "SvenVanCaekenberghe 1/12/2011 11:10", - "limit" : "SvenVanCaekenberghe 12/8/2012 19:50", + "limit" : "SvenVanCaekenberghe 5/14/2013 12:38", "limit:" : "SvenVanCaekenberghe 1/2/2012 19:35", "unlimited" : "SvenVanCaekenberghe 1/2/2012 19:36" } } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/writeQueryFields.on..st b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/writeQueryFields.on..st index 234168da..3618033b 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/writeQueryFields.on..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/writeQueryFields.on..st @@ -1,3 +1,3 @@ conversions writeQueryFields: dictionary on: stream - self writeQueryFields: dictionary withTextEncoding: 'utf-8' on: stream \ No newline at end of file + self writeQueryFields: dictionary withTextEncoding: 'utf-8' on: stream \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString..st index e65697e6..9bf92da6 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString..st @@ -2,4 +2,4 @@ instance creation fromString: string ^ (self new) parseFrom: string; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString.defaultScheme..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString.defaultScheme..st index aa0b848d..5d15dc06 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString.defaultScheme..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString.defaultScheme..st @@ -2,4 +2,4 @@ instance creation fromString: string defaultScheme: defaultScheme ^ (self new) parseFrom: string defaultScheme: defaultScheme; - yourself \ No newline at end of file + yourself \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^and.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^and.st index 56b1c38f..094e8b97 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^and.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^and.st @@ -1,3 +1,3 @@ convenience & association - ^ self withQuery: association \ No newline at end of file + ^ self withQuery: association \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^slash.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^slash.st index 2b7047f2..8df66c83 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^slash.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^slash.st @@ -1,3 +1,3 @@ convenience -/ segment - ^ self withPathSegment: segment \ No newline at end of file +/ object + ^ object addedToZnUrl: self \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^wat.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^wat.st index 09c6329c..bd131502 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^wat.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^wat.st @@ -1,3 +1,3 @@ convenience ? association - ^ self withQuery: association \ No newline at end of file + ^ self withQuery: association \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/addedToZnUrl..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/addedToZnUrl..st new file mode 100644 index 00000000..38e070b8 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/addedToZnUrl..st @@ -0,0 +1,3 @@ +convenience +addedToZnUrl: url + ^ url withPathSegments: self pathSegments \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/clearPath.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/clearPath.st index ba0aeb94..1c9c5fa1 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/clearPath.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/clearPath.st @@ -1,4 +1,4 @@ accessing-path clearPath - segments isEmpty - ifFalse: [ segments removeAll ] \ No newline at end of file + self hasPath + ifTrue: [ segments removeAll ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/directory.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/directory.st index f1110b9c..48f73152 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/directory.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/directory.st @@ -2,4 +2,8 @@ accessing-path directory ^ self isDirectoryPath ifTrue: [ self path ] - ifFalse: [ self joinSegments: segments allButLast ] \ No newline at end of file + ifFalse: [ + String streamContents: [ :stream | + segments allButLast + do: [ :each | stream nextPutAll: each ] + separatedBy: [ stream nextPut: $/ ] ] ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/file.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/file.st index 2c567443..72a74cd2 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/file.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/file.st @@ -1,5 +1,5 @@ accessing-path file ^ self isDirectoryPath - ifTrue: [ '' ] + ifTrue: [ String new ] ifFalse: [ segments last ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/joinSegments..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/joinSegments..st deleted file mode 100644 index a5a23956..00000000 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/joinSegments..st +++ /dev/null @@ -1,6 +0,0 @@ -private -joinSegments: collection - ^ String streamContents: [ :stream | - collection - do: [ :each | stream nextPutAll: each ] - separatedBy: [ stream nextPut: $/ ] ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseHostPort..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseHostPort..st index 63731d60..c73dd0cb 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseHostPort..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseHostPort..st @@ -1,9 +1,12 @@ parsing parseHostPort: stream | hostString | - (hostString := stream upTo: $:) isEmpty - ifFalse: [ - self host: (self decodePercent: hostString) ]. - stream atEnd + self isFile + ifTrue: [ + (hostString := stream upTo: $/) isEmpty + ifFalse: [ self host: (self decodePercent: hostString) ] ] ifFalse: [ - self port: (Integer readFrom: stream ifFail: [ ZnPortNotANumber signal ]) ] \ No newline at end of file + (hostString := stream upTo: $:) isEmpty + ifFalse: [ self host: (self decodePercent: hostString) ]. + stream atEnd + ifFalse: [ self port: (Integer readFrom: stream ifFail: [ ZnPortNotANumber signal ]) ] ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/path.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/path.st index a08fa5c1..04c35532 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/path.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/path.st @@ -1,3 +1,9 @@ accessing-path path - ^ self joinSegments: segments \ No newline at end of file + self hasPath ifFalse: [ ^ String new ]. + ^ String streamContents: [ :stream | + segments + do: [ :each | + each == #/ + ifFalse: [ stream nextPutAll: each ] ] + separatedBy: [ stream nextPut: $/ ] ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printPathOn..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printPathOn..st index 37363049..f9188dc9 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printPathOn..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printPathOn..st @@ -1,8 +1,8 @@ printing printPathOn: stream - segments isNil ifTrue: [ ^ stream nextPut: $/ ]. + self hasPath ifFalse: [ ^ stream nextPut: $/ ]. segments do: [ :each | stream nextPut: $/. each == #/ ifFalse: [ - self encode: each on: stream ] ] \ No newline at end of file + self encode: each on: stream ] ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeFirstPathSegment.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeFirstPathSegment.st index 0eeb8990..15f2a56d 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeFirstPathSegment.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeFirstPathSegment.st @@ -1,4 +1,4 @@ accessing-path removeFirstPathSegment - segments isEmpty - ifFalse: [ segments removeFirst ] \ No newline at end of file + self hasPath + ifTrue: [ segments removeFirst ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeLastPathSegment.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeLastPathSegment.st index 561f0166..1adbadd6 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeLastPathSegment.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeLastPathSegment.st @@ -1,4 +1,4 @@ accessing-path removeLastPathSegment - segments isEmpty - ifFalse: [ segments removeLast ] \ No newline at end of file + self hasPath + ifTrue: [ segments removeLast ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/schemeOrDefault.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/schemeOrDefault.st index fa0e131e..7ec44dc0 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/schemeOrDefault.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/schemeOrDefault.st @@ -2,4 +2,4 @@ accessing schemeOrDefault ^ self hasScheme ifTrue: [ self scheme ] - ifFalse: [ #http ] \ No newline at end of file + ifFalse: [ #http ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/setDefaults.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/setDefaults.st index 49280856..34655355 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/setDefaults.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/setDefaults.st @@ -3,4 +3,4 @@ setDefaults self hasScheme ifFalse: [ self scheme: self schemeOrDefault ]. self hasPort - ifFalse: [ self port: self portOrDefault ] \ No newline at end of file + ifFalse: [ self port: self portOrDefault ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/methodProperties.json index bf99cf78..ac23b2a6 100644 --- a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/methodProperties.json +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/methodProperties.json @@ -5,23 +5,24 @@ "fromString:defaultScheme:" : "SvenVanCaekenberghe 8/11/2011 14:47" }, "instance" : { "&" : "SvenVanCaekenberghe 7/9/2012 16:27", - "/" : "SvenVanCaekenberghe 7/9/2012 16:26", + "/" : "SvenVanCaekenberghe 3/16/2013 20:22", "=" : "SvenVanCaekenberghe 1/4/2011 11:00", "?" : "SvenVanCaekenberghe 7/9/2012 16:27", "addPathSegment:" : "SvenVanCaekenberghe 7/9/2012 16:18", "addPathSegments:" : "SvenVanCaekenberghe 7/9/2012 16:18", + "addedToZnUrl:" : "SvenVanCaekenberghe 3/16/2013 20:39", "asRelativeUrl" : "SvenVanCaekenberghe 1/6/2013 19:21", "asZnUrl" : "SvenVanCaekenberghe 1/4/2011 11:24", "asZnUrlWithDefaults" : "SvenVanCaekenberghe 8/11/2011 12:05", "authority" : "SvenVanCaekenberghe 8/18/2011 21:01", - "clearPath" : "SvenVanCaekenberghe 1/6/2013 19:16", + "clearPath" : "SvenVanCaekenberghe 3/16/2013 19:32", "closePath" : "SvenVanCaekenberghe 1/4/2011 11:56", "decodePercent:" : "SvenVanCaekenberghe 1/30/2013 16:27", - "directory" : "SvenVanCaekenberghe 1/14/2013 11:38", + "directory" : "SvenVanCaekenberghe 3/16/2013 19:55", "encode:on:" : "SvenVanCaekenberghe 12/17/2012 13:10", "enforceKnownScheme" : "SvenVanCaekenberghe 1/30/2013 17:23", "equals:" : "SvenVanCaekenberghe 1/4/2011 10:59", - "file" : "SvenVanCaekenberghe 1/14/2013 11:38", + "file" : "SvenVanCaekenberghe 3/16/2013 19:39", "firstPathSegment" : "SvenVanCaekenberghe 1/4/2011 14:46", "fragment" : "SvenVanCaekenberghe 1/3/2011 15:51", "fragment:" : "SvenVanCaekenberghe 1/3/2011 15:51", @@ -48,17 +49,16 @@ "isLocalHost" : "SvenVanCaekenberghe 5/13/2011 10:41", "isRelative" : "SvenVanCaekenberghe 1/3/2011 15:55", "isSlash" : "SvenVanCaekenberghe 1/4/2011 10:54", - "joinSegments:" : "SvenVanCaekenberghe 8/18/2011 14:11", "lastPathSegment" : "SvenVanCaekenberghe 1/4/2011 14:51", "parseAuthority:from:to:" : "SvenVanCaekenberghe 1/30/2013 16:41", "parseFrom:" : "SvenVanCaekenberghe 8/11/2011 14:47", "parseFrom:defaultScheme:" : "SvenVanCaekenberghe 1/30/2013 16:39", - "parseHostPort:" : "SvenVanCaekenberghe 1/30/2013 16:28", + "parseHostPort:" : "SvenVanCaekenberghe 2/6/2013 18:20", "parsePath:" : "SvenVanCaekenberghe 1/30/2013 16:28", "parseUserInfo:" : "SvenVanCaekenberghe 1/30/2013 16:28", "password" : "SvenVanCaekenberghe 1/30/2013 16:42", "password:" : "SvenVanCaekenberghe 1/30/2013 16:19", - "path" : "SvenVanCaekenberghe 1/3/2011 22:21", + "path" : "SvenVanCaekenberghe 3/16/2013 19:43", "pathPrintString" : "SvenVanCaekenberghe 1/4/2011 11:16", "pathQueryFragmentPrintString" : "SvenVanCaekenberghe 1/4/2011 11:17", "pathSegments" : "SvenVanCaekenberghe 1/4/2011 14:51", @@ -68,7 +68,7 @@ "postCopy" : "SvenVanCaekenberghe 4/26/2011 12:34", "printAuthorityOn:" : "SvenVanCaekenberghe 1/30/2013 16:21", "printOn:" : "SvenVanCaekenberghe 1/14/2013 09:39", - "printPathOn:" : "SvenVanCaekenberghe 4/17/2011 10:27", + "printPathOn:" : "SvenVanCaekenberghe 3/16/2013 19:30", "printPathQueryFragmentOn:" : "SvenVanCaekenberghe 8/18/2011 14:34", "printQueryOn:" : "SvenVanCaekenberghe 12/8/2012 21:02", "query" : "SvenVanCaekenberghe 1/3/2011 16:26", @@ -82,8 +82,8 @@ "queryKeys" : "SvenVanCaekenberghe 12/13/2011 14:07", "queryRemoveAll" : "SvenVanCaekenberghe 1/6/2013 19:13", "queryRemoveKey:" : "KenTreis 01/19/2013 12:22", - "removeFirstPathSegment" : "SvenVanCaekenberghe 1/6/2013 19:16", - "removeLastPathSegment" : "SvenVanCaekenberghe 1/4/2011 11:55", + "removeFirstPathSegment" : "SvenVanCaekenberghe 3/16/2013 18:43", + "removeLastPathSegment" : "SvenVanCaekenberghe 3/16/2013 18:42", "scheme" : "SvenVanCaekenberghe 1/3/2011 15:09", "scheme:" : "SvenVanCaekenberghe 1/30/2013 17:18", "schemeOrDefault" : "SvenVanCaekenberghe 8/11/2011 11:05", diff --git a/repository/Zinc-Resource-Meta-Core.package/monticello.meta/version b/repository/Zinc-Resource-Meta-Core.package/monticello.meta/version index e91a645d..71a4cfb0 100644 --- a/repository/Zinc-Resource-Meta-Core.package/monticello.meta/version +++ b/repository/Zinc-Resource-Meta-Core.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.9' message 'Extended ZnUrl to support the optional user info (username and optional password) component; Modified ZnUrl to allow any scheme, added #enforceKnownScheme' id '9c2126e3-8881-49f5-8d59-38efbb6d796d' date '30 January 2013' time '7:41:44.793 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.8' message 'bump' id 'b2c44e19-feda-4c61-b2e2-807843da0239' date '21 January 2013' time '4:35:48.543 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.7' message 'merging in some Gemstone portability changes by Ken Treis; made ZnMultiValueDictionary more independent from its superclass; treat ZnUrl query keys and values with #asString; do explicit #asSymbol conversion in ZnUrl>>#scheme:' id 'ccdcf193-dbca-475a-8bca-981eb7203ce8' date '21 January 2013' time '4:33:13.167 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.7' message 'forgot to remove the branch name' id '278017c3-0ef2-4710-a09e-95eb3e2a581b' date '21 January 2013' time '4:22:06.163 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.53' message 'merging in some Gemstone portability changes by Ken Treis; made ZnMultiValueDictionary more independent from its superclass; treat ZnUrl query keys and values with #asString; do explicit #asSymbol conversion in ZnUrl>>#scheme:' id 'f7dd6842-7c1b-4468-ab6d-15e4163ec7e7' date '21 January 2013' time '2:05:53.287 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.6' message 'Removed ZnUrl>>#authorityPrintString; Renamed ZnUrl>>#isFile to #isFilePath; Renamed ZnUrl>>#isDirectory to #isDirectoryPath; Added ZnUrl>>#isFile to test for the #file scheme; Fixed ZnUrl printing to always print :// when there is a scheme ' id 'cbd9b5ca-dc59-40e7-be86-e906a26fcbee' date '14 January 2013' time '1:17:31.287 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.5' message 'Added ZnMultiValueDictionary>>#addAllMulti: and used in in ZnUrl>>#queryAddAll: Changed ZnUrl>>#isAbsolute to require a host as well as a scheme' id '54d58984-5522-45cf-8687-a72c71bca32f' date '7 January 2013' time '12:26:08.387 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.4' message 'Extended ZnUrl API with: #asRelativeUrl #clearPath #queryRemoveAll #removeFirstPathSegment #removeLastPathSegment' id 'ef8d9316-f105-4ae6-b3e5-b9742f609bc8' date '6 January 2013' time '8:56:18.267 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.3' message 'now using ZnPercentEncoder instead of #encodeForHTTP[WithTextEncoding:], #unescapePercents' id 'eb57a1ca-683c-472e-a038-17cd1af1b558' date '17 December 2012' time '4:10:52.783 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.2' message 'moved HierarchicalUrl>>#asZnUrl from Zinc-Resource-Meta-Core back to Zinc-HTTP' id '75e8cb5b-3682-451f-839d-9d79515f7500' date '11 December 2012' time '10:14:50.297 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.1' message 'moving ZnUrl, ZnMimeType and related support classes to a new, independent package Zinc-Resource-Meta-Core (and unit tests to Zinc-Resource-Meta-Tests); extended ZnUrl to allow for some simple file:// URLs' id 'a5a2bf53-0ccf-4e90-b6e2-8166a795988b' date '8 December 2012' time '9:14:29.919 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-Resource-Meta-Core-KenTreis.52' message 'More Refactoring for GemStone Compatibility: * Changed ZnUrl to coerce queries to Strings (for both keys and values). * Implemented ZnUrl>>asString. This should perhaps move to Zinc-GemStone but won''t hurt anything for now (other than triggering a lint check for duplicate code)' id '3ce9187c-5a7d-4d23-a113-f7307183f99e' date '19 January 2013' time '12:51:02 pm' author 'KenTreis' ancestors ((name 'Zinc-Resource-Meta-Core-KenTreis.5.1' message 'Changes for GemStone compatibility (work in progress): * In ZnMimeType>>parameters, use Dictionary instead of SmallDictionary * Refactoring in ZnMultiValueDictionary for less dependence on super implementation * In ZnUrl>>scheme:, coerce the argument to a symbol' id 'd86cfdbc-e4d9-422c-b4b2-7fdca6ac5374' date '19 January 2013' time '11:40:21 am' author 'KenTreis' ancestors ((id '54d58984-5522-45cf-8687-a72c71bca32f')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.17' message 'Force ZnMimeType main/sub to be lowercase' id '1176acb1-cdff-48dc-9c0f-93b48a8cebf3' date '06/11/2013' time '11:36:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.16' message 'Added some comments and unit tests to clarify ZnMimeType>>#= vs ZnMimeType>>#matches as well as ZnMimeType>>#isBinary' id '57ba37f8-6eeb-4c89-ae25-1d56e6b02bcb' date '06/07/2013' time '11:55:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.15' message 'Fixed a bug in ZnMimeType>>#isBinary (thx Sabine K for reporting this)' id 'b1059f61-d7a1-44b0-bb0a-f558fbbec3c8' date '06/07/2013' time '11:18:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.14' message 'Changed ZnMimeType>>#= and #hash to take parameters into account (#match: can be used to compare without parameters)' id 'a2cb38cf-feb2-4387-923b-6e3736974d9a' date '05/22/2013' time '04:24:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.13' message 'Bugfix: changed ZnMultiValueDictionary initialization from lazy to explicit (unlimted did not work)' id 'ebe5c9c4-24d8-4bfb-b99c-258481e68aff' date '05/14/2013' time '01:39:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.12' message 'Change the implementation of ZnUrl>>#/ to do a double-dispatch on its argument using #addedToZnUrl: Implemented #addedToZnUrl: on Collection, String and ZnUrl with the added feature that a String is split into path elements on $/ using #findTokens: - Do note that this is an internal path representation, not an encoded external representation. Extended unit tests to cover the new functionality' id 'd571a909-0d2b-4e26-b219-89d1bb5f2640' date '03/17/2013' time '04:21:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.11' message 'Bugfix: parsing /../../../ gave an Error; Internal cleanup in ZnUrl (empty path tests); Added ZnUrlTests>>#testBogusBackups' id '8f87f562-b936-4c23-a008-ad65cfd9d19d' date '03/16/2013' time '08:03:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.10' message 'improve the ZnUrl parser (specifically ZnUrl>>#parseHostPort:) to allow Windows drive specifiers (they were confused with the port number that does not occur in File URLs). ' id 'd8217aa6-eeed-4a85-998b-2efb22a6ddb7' date '02/06/2013' time '06:29:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.9' message 'Extended ZnUrl to support the optional user info (username and optional password) component; Modified ZnUrl to allow any scheme, added #enforceKnownScheme' id '9c2126e3-8881-49f5-8d59-38efbb6d796d' date '01/30/2013' time '07:41:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.8' message 'bump' id 'b2c44e19-feda-4c61-b2e2-807843da0239' date '01/21/2013' time '04:35:48' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.7' message 'merging in some Gemstone portability changes by Ken Treis; made ZnMultiValueDictionary more independent from its superclass; treat ZnUrl query keys and values with #asString; do explicit #asSymbol conversion in ZnUrl>>#scheme:' id 'ccdcf193-dbca-475a-8bca-981eb7203ce8' date '01/21/2013' time '04:33:13' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.7' message 'forgot to remove the branch name' id '278017c3-0ef2-4710-a09e-95eb3e2a581b' date '01/21/2013' time '04:22:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.53' message 'merging in some Gemstone portability changes by Ken Treis; made ZnMultiValueDictionary more independent from its superclass; treat ZnUrl query keys and values with #asString; do explicit #asSymbol conversion in ZnUrl>>#scheme:' id 'f7dd6842-7c1b-4468-ab6d-15e4163ec7e7' date '01/21/2013' time '02:05:53' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.6' message 'Removed ZnUrl>>#authorityPrintString; Renamed ZnUrl>>#isFile to #isFilePath; Renamed ZnUrl>>#isDirectory to #isDirectoryPath; Added ZnUrl>>#isFile to test for the #file scheme; Fixed ZnUrl printing to always print :// when there is a scheme ' id 'cbd9b5ca-dc59-40e7-be86-e906a26fcbee' date '01/14/2013' time '01:17:31' author 'SvenVanCaekenberghe' ancestors () stepChildren ())(name 'Zinc-Resource-Meta-Core-KenTreis.52' message 'More Refactoring for GemStone Compatibility: * Changed ZnUrl to coerce queries to Strings (for both keys and values). * Implemented ZnUrl>>asString. This should perhaps move to Zinc-GemStone but won''t hurt anything for now (other than triggering a lint check for duplicate code)' id '3ce9187c-5a7d-4d23-a113-f7307183f99e' date '01/19/2013' time '12:51:02' author 'KenTreis' ancestors ((name 'Zinc-Resource-Meta-Core-KenTreis.5.1' message 'Changes for GemStone compatibility (work in progress): * In ZnMimeType>>parameters, use Dictionary instead of SmallDictionary * Refactoring in ZnMultiValueDictionary for less dependence on super implementation * In ZnUrl>>scheme:, coerce the argument to a symbol' id 'd86cfdbc-e4d9-422c-b4b2-7fdca6ac5374' date '01/19/2013' time '11:40:21' author 'KenTreis' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.5' message 'Added ZnMultiValueDictionary>>#addAllMulti: and used in in ZnUrl>>#queryAddAll: Changed ZnUrl>>#isAbsolute to require a host as well as a scheme' id '54d58984-5522-45cf-8687-a72c71bca32f' date '01/07/2013' time '12:26:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.4' message 'Extended ZnUrl API with: #asRelativeUrl #clearPath #queryRemoveAll #removeFirstPathSegment #removeLastPathSegment' id 'ef8d9316-f105-4ae6-b3e5-b9742f609bc8' date '01/06/2013' time '08:56:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.3' message 'now using ZnPercentEncoder instead of #encodeForHTTP[WithTextEncoding:], #unescapePercents' id 'eb57a1ca-683c-472e-a038-17cd1af1b558' date '12/17/2012' time '04:10:52' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.2' message 'moved HierarchicalUrl>>#asZnUrl from Zinc-Resource-Meta-Core back to Zinc-HTTP' id '75e8cb5b-3682-451f-839d-9d79515f7500' date '12/11/2012' time '10:14:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.1' message 'moving ZnUrl, ZnMimeType and related support classes to a new, independent package Zinc-Resource-Meta-Core (and unit tests to Zinc-Resource-Meta-Tests); extended ZnUrl to allow for some simple file:// URLs' id 'a5a2bf53-0ccf-4e90-b6e2-8166a795988b' date '12/08/2012' time '09:14:29' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testAsMimeType.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testAsMimeType.st index d1229727..75cf0200 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testAsMimeType.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testAsMimeType.st @@ -1,4 +1,4 @@ testing testAsMimeType - self assert: 'text/plain' asZnMimeType = ZnMimeType textPlain. - self assert: ZnMimeType applicationOctetStream asZnMimeType = ZnMimeType applicationOctetStream \ No newline at end of file + self assert: 'text/plain;charset=utf-8' asZnMimeType equals: ZnMimeType textPlain. + self assert: ZnMimeType applicationOctetStream asZnMimeType equals: ZnMimeType applicationOctetStream \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testCopying.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testCopying.st index 455a00ae..02977208 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testCopying.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testCopying.st @@ -9,7 +9,7 @@ testCopying self assert: mimeType1 charSet = 'utf-8'. mimeType2 charSet: 'latin1'. self assert: mimeType2 charSet = 'latin1'. - self assert: mimeType1 = mimeType2. + self assert: (mimeType1 matches: mimeType2). self deny: mimeType1 parameters = mimeType2 parameters. self deny: mimeType1 charSet = mimeType2 charSet. \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testIsBinary.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testIsBinary.st new file mode 100644 index 00000000..86d9c512 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testIsBinary.st @@ -0,0 +1,10 @@ +testing +testIsBinary + self assert: ZnMimeType applicationOctetStream isBinary. + self assert: ZnMimeType imagePng isBinary. + self deny: ZnMimeType textPlain isBinary. + self deny: ZnMimeType textHtml isBinary. + self deny: ZnMimeType textJavascript isBinary. + self deny: ZnMimeType applicationJson isBinary. + #( 'text/plain;charset=ascii' 'application/json;charset=utf-8' ) do: [ :each | + self deny: each asZnMimeType isBinary ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testMatches.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testMatches.st new file mode 100644 index 00000000..2a7be800 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testMatches.st @@ -0,0 +1,10 @@ +testing +testMatches + #( + ( 'text/plain' 'text/*' ) + ( 'text/plain' '*/*' ) + ( 'text/plain;charset=utf-8' 'text/*' ) + ( 'text/plain;charset=utf-8' 'text/plain' ) + ( 'text/plain' 'text/plain;charset=utf-8' ) + ( 'text/plain;charset=utf-8' 'text/plain;charset=ascii' ) ) do: [ :each | + self assert: (each first asZnMimeType matches: each second asZnMimeType) ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/methodProperties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/methodProperties.json index 6910bf5d..2d440baf 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/methodProperties.json +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/methodProperties.json @@ -2,11 +2,13 @@ "class" : { }, "instance" : { - "testAsMimeType" : "SvenVanCaekenberghe 1/4/2011 19:59", + "testAsMimeType" : "SvenVanCaekenberghe 5/21/2013 20:30", "testCharset" : "SvenVanCaekenberghe 3/6/2012 11:05", - "testCopying" : "SvenVanCaekenberghe 12/6/2011 20:51", + "testCopying" : "SvenVanCaekenberghe 5/21/2013 20:28", "testDefault" : "SvenVanCaekenberghe 12/6/2011 20:44", "testIdentity" : "SvenVanCaekenberghe 12/6/2011 20:44", + "testIsBinary" : "SvenVanCaekenberghe 6/7/2013 11:46", + "testMatches" : "SvenVanCaekenberghe 6/7/2013 11:52", "testParameters" : "SvenVanCaekenberghe 3/6/2012 11:02", "testReading" : "SvenVanCaekenberghe 12/2/2010 11:29", "testWriting" : "SvenVanCaekenberghe 12/2/2010 11:29" } } diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testDecodePercent.st b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testDecodePercent.st index 623b045f..e593da04 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testDecodePercent.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testDecodePercent.st @@ -1,4 +1,4 @@ testing testDecodePercent self assert: (ZnResourceMetaUtils decodePercent: 'foo%20bar') equals: 'foo bar'. - self should: [ ZnResourceMetaUtils decodePercent: 'foo%%bar' ] raise: ZnCharacterEncodingError \ No newline at end of file + self should: [ ZnResourceMetaUtils decodePercent: 'foo%%bar' ] raise: ZnCharacterEncodingError \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testBogusBackups.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testBogusBackups.st new file mode 100644 index 00000000..a35d37c8 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testBogusBackups.st @@ -0,0 +1,3 @@ +testing +testBogusBackups + self assert: '/../../../' asZnUrl isSlash \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testConvenienceMethods.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testConvenienceMethods.st index 751cf54c..cb00d240 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testConvenienceMethods.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testConvenienceMethods.st @@ -6,7 +6,16 @@ testConvenienceMethods assert: baseUrl equals: 'http://api.host.com' asZnUrl. self - assert: (baseUrl / 'doc' / 'file.html') + assert: baseUrl / 'doc' / 'file.html' + equals: 'http://api.host.com/doc/file.html' asZnUrl. + self + assert: baseUrl / 'doc/file.html' + equals: 'http://api.host.com/doc/file.html' asZnUrl. + self + assert: baseUrl / #( 'doc' 'file.html' ) + equals: 'http://api.host.com/doc/file.html' asZnUrl. + self + assert: baseUrl / 'doc/file.html' asZnUrl equals: 'http://api.host.com/doc/file.html' asZnUrl. self assert: (baseUrl / 'search' ? (#q -> 'Smalltalk') & (#lang -> #en)) diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testFileUrl.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testFileUrl.st index 50af4b8a..56820b0d 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testFileUrl.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testFileUrl.st @@ -4,4 +4,4 @@ testFileUrl url := 'file://localhost/users/Sven/Desktop/foo.txt' asZnUrl. self assert: url isFile. self assert: url host equals: 'localhost'. - self assert: url pathSegments equals: #( 'users' 'Sven' 'Desktop' 'foo.txt' ) asOrderedCollection \ No newline at end of file + self assert: url pathSegments equals: #( 'users' 'Sven' 'Desktop' 'foo.txt' ) asOrderedCollection \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsePathOnly.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsePathOnly.st index 37edc751..59854e94 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsePathOnly.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsePathOnly.st @@ -12,4 +12,4 @@ testParsePathOnly self assert: url hasQuery. self assert: (url queryAt: 'size') = 'large'. self assert: url hasFragment. - self assert: url fragment = 'center' \ No newline at end of file + self assert: url fragment = 'center' \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscape.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscape.st index f691215f..159fd0ef 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscape.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscape.st @@ -1,3 +1,3 @@ testing testParsingWrongEscape - self should: [ ZnUrl fromString: 'http://foo:8080/foo%%bar' ] raise: ZnCharacterEncodingError \ No newline at end of file + self should: [ ZnUrl fromString: 'http://foo:8080/foo%%bar' ] raise: ZnCharacterEncodingError \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscapeQuery.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscapeQuery.st index b592279f..87a0eca1 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscapeQuery.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscapeQuery.st @@ -1,3 +1,3 @@ testing testParsingWrongEscapeQuery - self should: [ ZnUrl fromString: 'http://foo:8080/foo?%%bar=1' ] raise: ZnCharacterEncodingError \ No newline at end of file + self should: [ ZnUrl fromString: 'http://foo:8080/foo?%%bar=1' ] raise: ZnCharacterEncodingError \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongPort.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongPort.st index f701b87f..da483881 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongPort.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongPort.st @@ -1,3 +1,3 @@ testing testParsingWrongPort - self should: [ ZnUrl fromString: 'http://foo:bar' ] raise: ZnPortNotANumber \ No newline at end of file + self should: [ ZnUrl fromString: 'http://foo:bar' ] raise: ZnPortNotANumber \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongScheme.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongScheme.st index ee92ef4f..617641d3 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongScheme.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongScheme.st @@ -6,4 +6,4 @@ testParsingWrongScheme self assert: url username equals: 'user'. self assert: url host equals: 'foo.com'. self assert: url path equals: 'bar'. - self should: [ url enforceKnownScheme ] raise: ZnUnknownScheme \ No newline at end of file + self should: [ url enforceKnownScheme ] raise: ZnUnknownScheme \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testWindowsFileUrl.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testWindowsFileUrl.st new file mode 100644 index 00000000..0cc2374c --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testWindowsFileUrl.st @@ -0,0 +1,7 @@ +testing +testWindowsFileUrl + | url | + url := 'file://localhost/C:/users/Sven/Desktop/foo.txt' asZnUrl. + self assert: url isFile. + self assert: url host equals: 'localhost'. + self assert: url pathSegments equals: #( 'C:' 'users' 'Sven' 'Desktop' 'foo.txt' ) asOrderedCollection \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/methodProperties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/methodProperties.json index 1172bd98..c2b68a2b 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/methodProperties.json +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/methodProperties.json @@ -4,7 +4,8 @@ "instance" : { "testAsRelativeUrl" : "SvenVanCaekenberghe 1/6/2013 20:43", "testAuthority" : "SvenVanCaekenberghe 1/4/2011 13:05", - "testConvenienceMethods" : "SvenVanCaekenberghe 7/9/2012 16:33", + "testBogusBackups" : "SvenVanCaekenberghe 3/16/2013 18:41", + "testConvenienceMethods" : "SvenVanCaekenberghe 3/16/2013 20:41", "testDefaultScheme" : "SvenVanCaekenberghe 8/11/2011 15:13", "testDefaultSchemeAndPort" : "SvenVanCaekenberghe 8/11/2011 15:14", "testDefaults" : "SvenVanCaekenberghe 8/11/2011 15:14", @@ -30,4 +31,5 @@ "testRelative" : "SvenVanCaekenberghe 8/11/2011 15:10", "testRetrieveContents" : "SvenVanCaekenberghe 1/24/2012 11:44", "testUserInfo" : "SvenVanCaekenberghe 1/30/2013 16:45", + "testWindowsFileUrl" : "SvenVanCaekenberghe 2/6/2013 18:21", "testWriteUrlPathQueryFragmentOfOn" : "SvenVanCaekenberghe 1/4/2011 13:57" } } diff --git a/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/version b/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/version index c2235856..bb5c4c5a 100644 --- a/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/version +++ b/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.6' message 'Extended ZnUrl to support the optional user info (username and optional password) component; Modified ZnUrl to allow any scheme, added #enforceKnownScheme' id '0f33e55d-6cd6-4cdb-afc4-d2e8df04f80d' date '30 January 2013' time '7:42:22.125 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.5' message 'tracking API changes' id 'b0eeff9b-0a8a-41b0-8692-b356c186fe84' date '14 January 2013' time '1:18:06.254 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.4' message 'Tests for extended ZnUrl API: #asRelativeUrl #clearPath #queryRemoveAll #removeFirstPathSegment #removeLastPathSegment' id '83e0fb6d-6cd5-4b43-bf2f-5b4b037cdbec' date '6 January 2013' time '8:57:03.266 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.3' message 'now using ZnPercentEncoder instead of #encodeForHTTP[WithTextEncoding:], #unescapePercents' id '62717bcc-f9fa-4c0f-817c-013757ae3d9a' date '17 December 2012' time '4:13:09.155 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.2' message 'moved HierarchicalUrl>>#asZnUrl from Zinc-Resource-Meta-Core back to Zinc-HTTP' id 'f15ec40a-c378-4250-a698-55ce0174c86a' date '11 December 2012' time '10:21:52.725 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.1' message 'moving ZnUrl, ZnMimeType and related support classes to a new, independent package Zinc-Resource-Meta-Core (and unit tests to Zinc-Resource-Meta-Tests); extended ZnUrl to allow for some simple file:// URLs' id '2e31f8f6-777f-4bea-b3d6-55e5b89bfbce' date '8 December 2012' time '9:14:59.834 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.10' message 'Added some comments and unit tests to clarify ZnMimeType>>#= vs ZnMimeType>>#matches as well as ZnMimeType>>#isBinary' id 'a2d39d1e-c5c2-4985-9cf1-ce584d671938' date '06/07/2013' time '11:56:05' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.9' message 'Changed ZnMimeType>>#= and #hash to take parameters into account (#match: can be used to compare without parameters)' id '54f211b7-346a-40db-a0d7-62d5e529a042' date '05/22/2013' time '04:23:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.8' message 'Bugfix: parsing /../../../ gave an Error; Internal cleanup in ZnUrl (empty path tests); Added ZnUrlTests>>#testBogusBackups Change the implementation of ZnUrl>>#/ to do a double-dispatch on its argument using #addedToZnUrl: Implemented #addedToZnUrl: on Collection, String and ZnUrl with the added feature that a String is split into path elements on $/ using #findTokens: - Do note that this is an internal path representation, not an encoded external representation. Extended unit tests to cover the new functionality' id 'aee46c39-5c83-46e5-a7bc-c661f0bc5782' date '03/17/2013' time '04:24:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.7' message 'improve the ZnUrl parser (specifically ZnUrl>>#parseHostPort:) to allow Windows drive specifiers (they were confused with the port number that does not occur in File URLs). ' id '7f858734-21b2-4a5c-a191-43fe686ed009' date '02/06/2013' time '06:31:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.6' message 'Extended ZnUrl to support the optional user info (username and optional password) component; Modified ZnUrl to allow any scheme, added #enforceKnownScheme' id '0f33e55d-6cd6-4cdb-afc4-d2e8df04f80d' date '01/30/2013' time '07:42:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.5' message 'tracking API changes' id 'b0eeff9b-0a8a-41b0-8692-b356c186fe84' date '01/14/2013' time '01:18:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.4' message 'Tests for extended ZnUrl API: #asRelativeUrl #clearPath #queryRemoveAll #removeFirstPathSegment #removeLastPathSegment' id '83e0fb6d-6cd5-4b43-bf2f-5b4b037cdbec' date '01/06/2013' time '08:57:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.3' message 'now using ZnPercentEncoder instead of #encodeForHTTP[WithTextEncoding:], #unescapePercents' id '62717bcc-f9fa-4c0f-817c-013757ae3d9a' date '12/17/2012' time '04:13:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.2' message 'moved HierarchicalUrl>>#asZnUrl from Zinc-Resource-Meta-Core back to Zinc-HTTP' id 'f15ec40a-c378-4250-a698-55ce0174c86a' date '12/11/2012' time '10:21:52' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.1' message 'moving ZnUrl, ZnMimeType and related support classes to a new, independent package Zinc-Resource-Meta-Core (and unit tests to Zinc-Resource-Meta-Tests); extended ZnUrl to allow for some simple file:// URLs' id '2e31f8f6-777f-4bea-b3d6-55e5b89bfbce' date '12/08/2012' time '09:14:59' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/README.md index e69de29b..ad6b0d37 100644 --- a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/README.md +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/README.md @@ -0,0 +1,4 @@ +I am ZnOAuth1DropboxUserAccess, an implementation of part of the DropBox API. +I am a ZnOAuth1UserAccess. + +See https://www.dropbox.com/developers/reference \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getAccountInfo.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getAccountInfo.st index 2d538779..a5decc9c 100644 --- a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getAccountInfo.st +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getAccountInfo.st @@ -1,10 +1,6 @@ api getAccountInfo - | url response json | - + | url response | url := ZnUrl fromString: 'https://api.dropbox.com/1/account/info'. - response := self oauth1Service httpGet: url using: self accessToken. - json := NeoJSONReader fromString: response. - - ^ json + ^ NeoJSONReader fromString: response \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getFile..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getFile..st new file mode 100644 index 00000000..1a316869 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getFile..st @@ -0,0 +1,7 @@ +api +getFile: pathSegments + | url response | + url := ZnUrl fromString: 'https://api-content.dropbox.com/1/files/sandbox'. + url addPathSegments: pathSegments. + response := self oauth1Service httpGet: url using: self accessToken. + ^ response \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getMetaData..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getMetaData..st new file mode 100644 index 00000000..304c1f54 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getMetaData..st @@ -0,0 +1,8 @@ +api +getMetaData: pathSegments + | url response | + url := ZnUrl fromString: 'https://api.dropbox.com/1/metadata/sandbox'. + url addPathSegments: pathSegments. + url queryAt: #list put: #true. + response := self oauth1Service httpGet: url using: self accessToken. + ^ NeoJSONReader fromString: response \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getRootInfo.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getRootInfo.st index 8eec6f83..595a45ad 100644 --- a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getRootInfo.st +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getRootInfo.st @@ -1,11 +1,3 @@ api getRootInfo - | url response json | - - url := ZnUrl fromString: 'https://api.dropbox.com/1/metadata/sandbox/'. - url queryAt: #list put: #true. - - response := self oauth1Service httpGet: url using: self accessToken. - json := NeoJSONReader fromString: response. - - ^ json + ^ self getMetaData: #( #/ ) \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/putFile.data..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/putFile.data..st new file mode 100644 index 00000000..d0ecae3e --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/putFile.data..st @@ -0,0 +1,7 @@ +api +putFile: pathSegments data: entity + | url response | + url := ZnUrl fromString: 'https://api-content.dropbox.com/1/files_put/sandbox'. + url addPathSegments: pathSegments. + response := self oauth1Service httpPut: url with: entity using: self accessToken. + ^ NeoJSONReader fromString: response \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/methodProperties.json index 72659d22..5631d80e 100644 --- a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/methodProperties.json +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/methodProperties.json @@ -2,5 +2,8 @@ "class" : { }, "instance" : { - "getAccountInfo" : "SvenVanCaekenberghe 1/27/2013 13:03", - "getRootInfo" : "SvenVanCaekenberghe 1/27/2013 13:03" } } + "getAccountInfo" : "SvenVanCaekenberghe 2/4/2013 10:11", + "getFile:" : "SvenVanCaekenberghe 2/4/2013 11:28", + "getMetaData:" : "SvenVanCaekenberghe 2/4/2013 11:31", + "getRootInfo" : "SvenVanCaekenberghe 2/4/2013 11:27", + "putFile:data:" : "SvenVanCaekenberghe 2/4/2013 11:28" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/properties.json index c1520e8a..229521f2 100644 --- a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/properties.json +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "", "instvars" : [ ], "name" : "ZnOAuth1DropboxUserAccess", diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getAccessToken.verifier..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getAccessToken.verifier..st index 9c0c388e..b8c924aa 100644 --- a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getAccessToken.verifier..st +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getAccessToken.verifier..st @@ -27,4 +27,4 @@ getAccessToken: aToken verifier: aVerifier responseProperties isString ifTrue: [ responseProperties := self resourceMetaUtils parseQueryFrom: responseProperties readStream ]. - ^self providerAccount accessTokenClass newFromDictionary: responseProperties \ No newline at end of file + ^self providerAccount accessTokenClass newFromDictionary: responseProperties \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpDelete.using..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpDelete.using..st new file mode 100644 index 00000000..ad45d7d9 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpDelete.using..st @@ -0,0 +1,10 @@ +actions +httpDelete: anUrl using: aToken + + | response | + + response := self executeRequest: (ZnRequest delete: anUrl) token: aToken. + response isSuccess + ifFalse: [ self error: 'httpDelete failed' ]. + + ^response contents \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpPost.with.using..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpPost.with.using..st new file mode 100644 index 00000000..fa6fda98 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpPost.with.using..st @@ -0,0 +1,13 @@ +actions +httpPost: anUrl with: anEntity using: aToken + + | response request | + + request := ZnRequest post: anUrl. + request entity: anEntity. + + response := self executeRequest: request token: aToken. + response isSuccess + ifFalse: [ self error: 'httpPost failed' ]. + + ^ response contents \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpPut.with.using..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpPut.with.using..st new file mode 100644 index 00000000..040d880a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpPut.with.using..st @@ -0,0 +1,13 @@ +actions +httpPut: anUrl with: anEntity using: aToken + + | response request | + + request := ZnRequest put: anUrl. + request entity: anEntity. + + response := self executeRequest: request token: aToken. + response isSuccess + ifFalse: [ self error: 'httpPut failed' ]. + + ^ response contents \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/methodProperties.json index 66a0a4b3..246dfad6 100644 --- a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/methodProperties.json +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/methodProperties.json @@ -11,7 +11,10 @@ "getRequestTokenFor:with:" : "JanVanDeSandt 1/26/2013 14:09", "hasKeys" : "jvds 2/13/2011 22:22", "httpClient" : "JanVanDeSandt 12/23/2012 16:11", + "httpDelete:using:" : "SvenVanCaekenberghe 2/4/2013 09:41", "httpGet:using:" : "JanVanDeSandt 12/23/2012 17:20", + "httpPost:with:using:" : "SvenVanCaekenberghe 2/4/2013 09:41", + "httpPut:with:using:" : "SvenVanCaekenberghe 2/4/2013 09:41", "loginUrlFor:" : "JanVanDeSandt 12/27/2012 10:41", "loginUrlFor:callbackUrl:" : "JanVanDeSandt 1/26/2013 12:45", "providerAccount" : "jvds 1/2/2011 14:57", diff --git a/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/version b/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/version index 156fd7d4..0f86499d 100644 --- a/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/version +++ b/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.12' message 'added ZnOAuth1DropboxUserAccess>>#getRootInfo as an example of really using the Dropbox API for listing the contents of Apps/Zinc-SSO' id '730e6f3a-41e4-4874-9fd4-8fd3bba01793' date '27 January 2013' time '1:12:56.414 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.11' message 'Add support for OAuth 1.0 besides the current support for version 1.0a ' id '6918bbc6-da07-8a43-b1f6-1967b3f5c082' date '26 January 2013' time '2:13:05.402 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.10' message 'started adding dropbox support' id 'deb02ffc-1149-4fc8-97fd-260d04413cd8' date '23 January 2013' time '8:05:28.608 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.9' message 'SmallLint fixes' id '6319cfbd-4d49-4e97-89d2-0d4f9d7228aa' date '16 January 2013' time '10:30:55.797 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.8' message 'Use the new ZnRequest>>#mergedFields to calculate the Authorization header' id '607b7563-1167-41c6-b39c-627bebfaa2e5' date '7 January 2013' time '9:10:59.138 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.7' message 'Removed dependency on ZnSSOMessage, this class was moved to Zinc-SSO-OpenID-Core' id '64ded1ca-8427-410d-b817-6322683fe98a' date '4 January 2013' time '11:21:30.191 am' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.6' message 'Replaced ZnOAuth1Parameters with ZnOAuth1AuthorizationCalculator. This class is responsible for "calculating" the correct Authorization header for OAuth1 requests.' id 'e2d0c864-7d27-4398-a752-a17c25e4fe02' date '27 December 2012' time '11:35:45.347 am' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.5' message 'Renamed ZnOAuth1Provider to ZnOAuth1ConsumerData' id '459ce0ee-30ea-4d0f-acb8-1549755782bb' date '24 December 2012' time '11:59:24.461 am' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.4' message 'Small fixes' id '8d4c75b2-6af7-46c1-b5a0-543fbfa3568f' date '24 December 2012' time '10:33:52.744 am' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.3' message 'Now works directly with ZnClient' id '8c6f4b83-c5c0-244d-b096-566684e70989' date '23 December 2012' time '9:29:04.598 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.2' message 'Removed dependency on CFUserAccess' id 'd6d84cdc-8a6d-234f-b561-714a0dd8bef9' date '23 December 2012' time '3:32:25.517 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.1' message 'Initial version. Straight port from Cloudfork' id '2cd9d066-36cc-bc41-812d-18f2347f4e24' date '23 December 2012' time '3:27:06.425 pm' author 'JanVanDeSandt' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.13' message 'extended ZnOAuth1Service with #httpDelete:using: #httpPost:with:using: #httpPut:with:using: extended ZnOAuth1DropboxUserAccess with #getFile: and #putFile:data: some refactoring in ZnOAuth1DropboxUserAccess' id '3d78a965-462e-4a4e-94aa-1779369aecb8' date '02/04/2013' time '12:27:12' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.12' message 'added ZnOAuth1DropboxUserAccess>>#getRootInfo as an example of really using the Dropbox API for listing the contents of Apps/Zinc-SSO' id '730e6f3a-41e4-4874-9fd4-8fd3bba01793' date '01/27/2013' time '01:12:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.11' message 'Add support for OAuth 1.0 besides the current support for version 1.0a ' id '6918bbc6-da07-8a43-b1f6-1967b3f5c082' date '01/26/2013' time '02:13:05' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-SvenVanCaekenberghe.10' message 'started adding dropbox support' id 'deb02ffc-1149-4fc8-97fd-260d04413cd8' date '01/23/2013' time '08:05:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.9' message 'SmallLint fixes' id '6319cfbd-4d49-4e97-89d2-0d4f9d7228aa' date '01/16/2013' time '10:30:55' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.8' message 'Use the new ZnRequest>>#mergedFields to calculate the Authorization header' id '607b7563-1167-41c6-b39c-627bebfaa2e5' date '01/07/2013' time '09:10:59' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.7' message 'Removed dependency on ZnSSOMessage, this class was moved to Zinc-SSO-OpenID-Core' id '64ded1ca-8427-410d-b817-6322683fe98a' date '01/04/2013' time '11:21:30' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.6' message 'Replaced ZnOAuth1Parameters with ZnOAuth1AuthorizationCalculator. This class is responsible for "calculating" the correct Authorization header for OAuth1 requests.' id 'e2d0c864-7d27-4398-a752-a17c25e4fe02' date '12/27/2012' time '11:35:45' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.5' message 'Renamed ZnOAuth1Provider to ZnOAuth1ConsumerData' id '459ce0ee-30ea-4d0f-acb8-1549755782bb' date '12/24/2012' time '11:59:24' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.4' message 'Small fixes' id '8d4c75b2-6af7-46c1-b5a0-543fbfa3568f' date '12/24/2012' time '10:33:52' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.3' message 'Now works directly with ZnClient' id '8c6f4b83-c5c0-244d-b096-566684e70989' date '12/23/2012' time '09:29:04' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.2' message 'Removed dependency on CFUserAccess' id 'd6d84cdc-8a6d-234f-b561-714a0dd8bef9' date '12/23/2012' time '03:32:25' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.1' message 'Initial version. Straight port from Cloudfork' id '2cd9d066-36cc-bc41-812d-18f2347f4e24' date '12/23/2012' time '03:27:06' author 'JanVanDeSandt' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/README.md b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/README.md index 71a11073..9a00c4b1 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/README.md +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/README.md @@ -1,4 +1,8 @@ I am ZnGoogleOAuth2Session. I am a ZnOAuthSession. -Google OAuth2 docs: https://developers.google.com/accounts/docs/OAuth2WebServer \ No newline at end of file +Google OAuth2 docs: https://developers.google.com/accounts/docs/OAuth2WebServer. + +accessType - hold the access type value described by the Google OAuth2 docs. The value can be: "online" or "offline". + +approvalPrompt - hold the approval_prompt value described by the Google OAuth2 docs. The value can be: "auto" or "force". It is useful to use "force" when in "offline" mode, because a refresh_token is sent only once after user consent is obtained. If the refresh_token is lost, then the user must be re-prompted for consent (which won't happen with the default "auto" setting). diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/accessType..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/accessType..st new file mode 100644 index 00000000..4806699c --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/accessType..st @@ -0,0 +1,3 @@ +accessing +accessType: anObject + accessType := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/accessType.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/accessType.st new file mode 100644 index 00000000..a164d4dd --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/accessType.st @@ -0,0 +1,3 @@ +accessing +accessType + ^ accessType \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/approvalPrompt..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/approvalPrompt..st new file mode 100644 index 00000000..d9dda245 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/approvalPrompt..st @@ -0,0 +1,3 @@ +accessing +approvalPrompt: anObject + approvalPrompt := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/approvalPrompt.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/approvalPrompt.st new file mode 100644 index 00000000..4451f351 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/approvalPrompt.st @@ -0,0 +1,3 @@ +accessing +approvalPrompt + ^ approvalPrompt \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/authenticationUrlWithState..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/authenticationUrlWithState..st index aaf19f3b..16b02d4c 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/authenticationUrlWithState..st +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/authenticationUrlWithState..st @@ -9,7 +9,10 @@ authenticationUrlWithState: aStateString queryAt: 'redirect_uri' put: self redirectUrl ; queryAt: 'scope' put: self scopeParameter ; queryAt: 'state' put: aStateString ; - queryAt: 'access_type' put: 'online' ; + queryAt: 'access_type' put: self accessType ; yourself. + + self isForceApprovalPrompt + ifTrue: [ authUrl queryAt: 'approval_prompt' put: 'force' ]. ^authUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/beOfflineAccessType.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/beOfflineAccessType.st new file mode 100644 index 00000000..274e5149 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/beOfflineAccessType.st @@ -0,0 +1,3 @@ +accessing +beOfflineAccessType + self accessType: 'offline' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/beOnlineAccessType.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/beOnlineAccessType.st new file mode 100644 index 00000000..3240631d --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/beOnlineAccessType.st @@ -0,0 +1,3 @@ +accessing +beOnlineAccessType + self accessType: 'online' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/forceApprovalPrompt.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/forceApprovalPrompt.st new file mode 100644 index 00000000..17b2c7c5 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/forceApprovalPrompt.st @@ -0,0 +1,3 @@ +accessing +forceApprovalPrompt + self approvalPrompt: 'force' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/handleAuthenticationCallback..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/handleAuthenticationCallback..st index 1c44153f..3d131601 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/handleAuthenticationCallback..st +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/handleAuthenticationCallback..st @@ -20,4 +20,7 @@ handleAuthenticationCallback: aParameterDictionary post. tokenData := NeoJSONReader fromString: tokenResponse. - accessToken := tokenData at: 'access_token'. \ No newline at end of file + accessToken := tokenData at: 'access_token'. + tokenType := tokenData at: 'token_type'. + (tokenData includesKey: 'refresh_token') + ifTrue: [ refreshToken := tokenData at: 'refresh_token' ]. diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/handleTokenRefresh.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/handleTokenRefresh.st new file mode 100644 index 00000000..9a5a0bd2 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/handleTokenRefresh.st @@ -0,0 +1,23 @@ +public +handleTokenRefresh + | tokenRequest tokenResponse tokenData | + + tokenRequest := (ZnRequest post: (ZnUrl fromString: 'https://accounts.google.com/o/oauth2/token')) + entity: (ZnApplicationFormUrlEncodedEntity new + at: 'client_id' put: self consumerData key ; + at: 'client_secret' put: self consumerData secret ; + at: 'grant_type' put: 'refresh_token' ; + at: 'refresh_token' put: self refreshToken ; + yourself) ; + yourself. + + tokenResponse := ZnClient new + request: tokenRequest ; + post. + + tokenData := NeoJSONReader fromString: tokenResponse. + (tokenData includesKey: 'error') + ifTrue: [ Error signal: (tokenData at: 'error') asString ]. + + accessToken := tokenData at: 'access_token'. + tokenType := tokenData at: 'token_type'. diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/initialize.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/initialize.st new file mode 100644 index 00000000..2f6d1fc3 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + self beOnlineAccessType. diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/isForceApprovalPrompt.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/isForceApprovalPrompt.st new file mode 100644 index 00000000..9aab5c83 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/isForceApprovalPrompt.st @@ -0,0 +1,3 @@ +testing +isForceApprovalPrompt + ^ self approvalPrompt notNil and: [ self approvalPrompt = 'force' ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/isOfflineAccessType.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/isOfflineAccessType.st new file mode 100644 index 00000000..53cd337b --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/isOfflineAccessType.st @@ -0,0 +1,3 @@ +testing +isOfflineAccessType + ^ self accessType = 'offline' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/methodProperties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/methodProperties.json index 88f3a611..dffc5d81 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/methodProperties.json +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/methodProperties.json @@ -4,7 +4,18 @@ "scopeUserinfoProfile" : "JanVanDeSandt 12/23/2012 23:00", "ssoScopes" : "JanVanDeSandt 12/23/2012 23:25" }, "instance" : { + "accessType" : "YanniChiu 1/31/2013 19:32", + "accessType:" : "YanniChiu 1/31/2013 19:32", + "approvalPrompt" : "YanniChiu 2/7/2013 10:17", + "approvalPrompt:" : "YanniChiu 2/7/2013 10:17", "authenticationUrl" : "JanVanDeSandt 12/7/2012 16:11", - "authenticationUrlWithState:" : "JanVanDeSandt 12/23/2012 23:35", + "authenticationUrlWithState:" : "YanniChiu 2/7/2013 10:21", + "beOfflineAccessType" : "YanniChiu 1/31/2013 19:31", + "beOnlineAccessType" : "YanniChiu 1/31/2013 19:32", + "forceApprovalPrompt" : "YanniChiu 2/7/2013 10:18", "getUserData" : "JanVanDeSandt 10/7/2012 15:27", - "handleAuthenticationCallback:" : "JanVanDeSandt 12/7/2012 16:58" } } + "handleAuthenticationCallback:" : "YanniChiu 2/7/2013 11:55", + "handleTokenRefresh" : "YanniChiu 2/7/2013 11:54", + "initialize" : "YanniChiu 1/31/2013 19:34", + "isForceApprovalPrompt" : "YanniChiu 2/7/2013 10:19", + "isOfflineAccessType" : "YanniChiu 2/5/2013 15:04" } } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/properties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/properties.json index b87d7ab8..a3266dba 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/properties.json +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "", "instvars" : [ - ], + "accessType", + "approvalPrompt" ], "name" : "ZnGoogleOAuth2Session", "pools" : [ ], diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/redirectUrl.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/redirectUrl.st index 61ed01f4..f46a0230 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/redirectUrl.st +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/redirectUrl.st @@ -1,4 +1,4 @@ accessing redirectUrl - ^ redirectUrl \ No newline at end of file + ^ redirectUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/setKey.andSecret..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/setKey.andSecret..st index 236231e3..06cd5aed 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/setKey.andSecret..st +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/setKey.andSecret..st @@ -2,4 +2,4 @@ initialize-release setKey: aKey andSecret: aSecret key := aKey. - secret := aSecret \ No newline at end of file + secret := aSecret \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/README.md b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/README.md index 33e2684e..9d469282 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/README.md +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/README.md @@ -7,7 +7,13 @@ accessToken - the result of a successful authentication scopes - - collection of strings representing the permissions + - collection of strings representing the permissions redirectUrl - the URL needed by the provider to get back to us + +tokenType + - Indicates the type of token returned (not really used yet). + +refreshToken + - a token that may be used to obtain a new access token. This field is only present if access_type=offline is included in the authorization code request (currently only used by Google). \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/accessToken..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/accessToken..st new file mode 100644 index 00000000..768e530d --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/accessToken..st @@ -0,0 +1,3 @@ +accessing +accessToken: anObject + accessToken := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/addScope..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/addScope..st new file mode 100644 index 00000000..ddfc3f73 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/addScope..st @@ -0,0 +1,3 @@ +accessing +addScope: aScopeString + self scopes add: aScopeString \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/handleAuthenticationCallback..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/handleAuthenticationCallback..st index b3c7aa87..07f0a130 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/handleAuthenticationCallback..st +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/handleAuthenticationCallback..st @@ -1,4 +1,4 @@ public handleAuthenticationCallback: aParameterDictionary - self subclassResponsibility \ No newline at end of file + self subclassResponsibility \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/initialize.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/initialize.st index 57c13355..675781ab 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/initialize.st +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/initialize.st @@ -3,4 +3,4 @@ initialize super initialize. - scopes := self class ssoScopes \ No newline at end of file + scopes := OrderedCollection withAll: self class ssoScopes \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/refreshToken..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/refreshToken..st new file mode 100644 index 00000000..81ce4a0b --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/refreshToken..st @@ -0,0 +1,3 @@ +accessing +refreshToken: anObject + refreshToken := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/refreshToken.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/refreshToken.st new file mode 100644 index 00000000..55170550 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/refreshToken.st @@ -0,0 +1,3 @@ +accessing +refreshToken + ^ refreshToken \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/setConsumerData..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/setConsumerData..st index 6efd4238..c20c0d8a 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/setConsumerData..st +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/setConsumerData..st @@ -2,4 +2,5 @@ initialize-release setConsumerData: aConsumerData consumerData := aConsumerData. - redirectUrl := aConsumerData redirectUrl \ No newline at end of file + redirectUrl := aConsumerData redirectUrl. + refreshToken := aConsumerData refreshToken. diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/tokenType.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/tokenType.st new file mode 100644 index 00000000..0978a1f3 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/tokenType.st @@ -0,0 +1,3 @@ +accessing +tokenType + ^ tokenType \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/methodProperties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/methodProperties.json index 6dd1c475..c83c1a1e 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/methodProperties.json +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/methodProperties.json @@ -6,14 +6,19 @@ "ssoScopes" : "JanVanDeSandt 12/23/2012 23:42" }, "instance" : { "accessToken" : "JanVanDeSandt 10/7/2012 14:04", + "accessToken:" : "YanniChiu 2/6/2013 14:21", + "addScope:" : "YanniChiu 1/31/2013 19:20", "authenticationUrl" : "JanVanDeSandt 10/7/2012 15:32", "consumerData" : "JanVanDeSandt 10/7/2012 14:04", "fieldDictionaryFrom:" : "JanVanDeSandt 10/7/2012 14:17", "handleAuthenticationCallback:" : "JanVanDeSandt 12/7/2012 14:38", - "initialize" : "JanVanDeSandt 12/23/2012 23:40", + "initialize" : "YanniChiu 1/31/2013 19:17", "redirectUrl" : "JanVanDeSandt 12/7/2012 15:34", "redirectUrl:" : "JanVanDeSandt 12/7/2012 15:34", + "refreshToken" : "YanniChiu 2/5/2013 15:14", + "refreshToken:" : "YanniChiu 2/6/2013 14:21", "scopeParameter" : "JanVanDeSandt 12/23/2012 23:32", "scopes" : "JanVanDeSandt 12/23/2012 23:32", "scopes:" : "JanVanDeSandt 12/23/2012 23:30", - "setConsumerData:" : "JanVanDeSandt 12/7/2012 15:34" } } + "setConsumerData:" : "YanniChiu 2/6/2013 17:30", + "tokenType" : "YanniChiu 2/5/2013 15:26" } } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/properties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/properties.json index 62d7c35f..6e77b932 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/properties.json +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/properties.json @@ -9,7 +9,9 @@ "consumerData", "redirectUrl", "scopes", - "accessToken" ], + "accessToken", + "tokenType", + "refreshToken" ], "name" : "ZnOAuth2Session", "pools" : [ ], diff --git a/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/version b/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/version index 96a8e172..1672d375 100644 --- a/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/version +++ b/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.13' message 'Moved ZnSSOServerDelegate to new package Zinc-SSO-Demo and added OpenID providers' id '028088c4-3162-4b80-860f-29d29a944234' date '5 January 2013' time '9:23:55.799 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.12' message 'ZnSSOServerDelegate>>#ssoTwitter: now uses ZnServer>>#url ZnSSOServerDelegate>>#ssoDemo: now shows Twitter as well' id '8bcbed34-dea7-49d7-8e38-316ca62906b8' date '4 January 2013' time '2:25:41.472 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.11' message 'Expanded Twitter example in ZnSSOServerDelegate' id '73764d7b-f03d-45c7-bf05-16e7db574400' date '27 December 2012' time '11:47:18.884 am' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.10' message 'Added a Twitter option to ZnSSOServerDelegate. ZnSSOServerDelegate is not OAuth2 specific any more and should be moved to another Zinc-SSO package.' id '108abddb-b96f-4635-a204-b66490f11274' date '24 December 2012' time '12:01:46.187 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.9' message 'Make it possible to customize the OAuth2 scope parameter ' id 'f8e376eb-0ff9-478c-91ff-265c6f6cea44' date '24 December 2012' time '10:20:04.96 am' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.8' message 'Updated class comment of ZnSSOServerDelegate' id 'c4dcb596-d512-45dc-ac10-31cbafe34024' date '23 December 2012' time '10:30:40.266 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.7' message 'changed the sso*Callback: handlers to redirect to newly added sso*Data: handlers ' id '25ada05b-8250-4ef5-8b5d-0aa39272ef1d' date '23 December 2012' time '7:31:58.224 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.6' message 'refactored some HTML generation code in ZnSSOServerDelegate; #ssoDemo now calls logins directly' id '0f16e600-1c3c-42dc-b5c1-136150397b36' date '22 December 2012' time '7:22:40.322 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.5' message 'extended ZnSSOServerDelegate demo code adding switch, reset, microsoft' id '6622cdb1-1ea5-4d55-be1a-98d9a1c548ee' date '21 December 2012' time '12:04:31.118 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.4' message 'moved the setting of #redirectUrl: out of the demo code so that it can and now must be set externally in ZnOAuth2ConsumerData; refactored #ssoGoogle: to use #googleSessionFor:' id '728f187e-a056-4476-a39a-d92e75a8c1d7' date '20 December 2012' time '10:45:50.106 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.3' message '- refactored ZnOAuth2Session classes so they are also usable from Seaside - added ZnMicrosoftOAuth2Session' id '1d7cc33d-d9bf-e04f-b20c-65cc43802916' date '9 December 2012' time '2:46:10.827 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.2' message 'Use the new Zinc server session support to store oauth session data.' id '62af24c2-84fa-da4a-b02e-6e95ddabecf3' date '7 December 2012' time '11:57:19.287 am' author 'JanVanDeSandt' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.15' message '- Removed refreshToken instance variable from ZnOAuth2ConsumerData class. This token should be saved somewhere elde.' id 'f76e4ebd-ddc3-4f2b-bcbd-c79dc6ac4aac' date '02/22/2013' time '04:02:08' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-YanniChiu.14' message 'Add OAuth2 refresh token functionality. Add "offline" access mode for Google OAuth2.' id '4bccfbde-b390-48f6-a9d7-1862055ab3e6' date '02/07/2013' time '08:29:05' author 'YanniChiu' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.13' message 'Moved ZnSSOServerDelegate to new package Zinc-SSO-Demo and added OpenID providers' id '028088c4-3162-4b80-860f-29d29a944234' date '01/05/2013' time '09:23:55' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.12' message 'ZnSSOServerDelegate>>#ssoTwitter: now uses ZnServer>>#url ZnSSOServerDelegate>>#ssoDemo: now shows Twitter as well' id '8bcbed34-dea7-49d7-8e38-316ca62906b8' date '01/04/2013' time '02:25:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.11' message 'Expanded Twitter example in ZnSSOServerDelegate' id '73764d7b-f03d-45c7-bf05-16e7db574400' date '12/27/2012' time '11:47:18' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.10' message 'Added a Twitter option to ZnSSOServerDelegate. ZnSSOServerDelegate is not OAuth2 specific any more and should be moved to another Zinc-SSO package.' id '108abddb-b96f-4635-a204-b66490f11274' date '12/24/2012' time '12:01:46' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.9' message 'Make it possible to customize the OAuth2 scope parameter ' id 'f8e376eb-0ff9-478c-91ff-265c6f6cea44' date '12/24/2012' time '10:20:04' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.8' message 'Updated class comment of ZnSSOServerDelegate' id 'c4dcb596-d512-45dc-ac10-31cbafe34024' date '12/23/2012' time '10:30:40' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.7' message 'changed the sso*Callback: handlers to redirect to newly added sso*Data: handlers ' id '25ada05b-8250-4ef5-8b5d-0aa39272ef1d' date '12/23/2012' time '07:31:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.6' message 'refactored some HTML generation code in ZnSSOServerDelegate; #ssoDemo now calls logins directly' id '0f16e600-1c3c-42dc-b5c1-136150397b36' date '12/22/2012' time '07:22:40' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.5' message 'extended ZnSSOServerDelegate demo code adding switch, reset, microsoft' id '6622cdb1-1ea5-4d55-be1a-98d9a1c548ee' date '12/21/2012' time '12:04:31' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-SvenVanCaekenberghe.4' message 'moved the setting of #redirectUrl: out of the demo code so that it can and now must be set externally in ZnOAuth2ConsumerData; refactored #ssoGoogle: to use #googleSessionFor:' id '728f187e-a056-4476-a39a-d92e75a8c1d7' date '12/20/2012' time '10:45:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.3' message '- refactored ZnOAuth2Session classes so they are also usable from Seaside - added ZnMicrosoftOAuth2Session' id '1d7cc33d-d9bf-e04f-b20c-65cc43802916' date '12/09/2012' time '02:46:10' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.2' message 'Use the new Zinc server session support to store oauth session data.' id '62af24c2-84fa-da4a-b02e-6e95ddabecf3' date '12/07/2012' time '11:57:19' author 'JanVanDeSandt' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/forServer..st b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/forServer..st index 55aa32e4..1c8156d2 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/forServer..st +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/forServer..st @@ -4,4 +4,4 @@ forServer: znServer adaptor := ZnZincServerAdaptor new. adaptor unregister. adaptor server: znServer. - ^ self with: adaptor \ No newline at end of file + ^ self with: adaptor \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/adaptor..st b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/adaptor..st index 6cbf041c..79a2a1e3 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/adaptor..st +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/adaptor..st @@ -1,3 +1,3 @@ accessing adaptor: aSeasideServerAdaptor - adaptor := aSeasideServerAdaptor \ No newline at end of file + adaptor := aSeasideServerAdaptor \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/adaptor.st b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/adaptor.st index 76e6ddc3..a103e81b 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/adaptor.st +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/adaptor.st @@ -1,3 +1,3 @@ accessing adaptor - ^ adaptor \ No newline at end of file + ^ adaptor \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/handleRequest..st b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/handleRequest..st index bcc1ea16..aa2a640c 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/handleRequest..st +++ b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/handleRequest..st @@ -5,6 +5,6 @@ handleRequest: znRequest | response | response := self adaptor process: znRequest. - response isError - ifFalse: [ ^ response ]. - ^ self staticDelegate handleRequest: znRequest \ No newline at end of file + ^ (response isError and: [ response isAuthenticationRequired not ]) + ifTrue: [ self staticDelegate handleRequest: znRequest ] + ifFalse: [ response ]. \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/methodProperties.json b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/methodProperties.json index 78d44ead..ef76eab2 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/methodProperties.json +++ b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "handleRequest:" : "SvenVanCaekenberghe 8/28/2012 21:19", + "handleRequest:" : "SeanDeNigris 2/12/2013 15:23", "initializeStaticDelegate" : "PaulDeBruicker 4/19/2012 16:28", "serveFilesFrom:" : "SvenVanCaekenberghe 8/28/2012 21:18", "staticDelegate" : "PaulDeBruicker 4/19/2012 16:26", diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/isStarting.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/isStarting.st index aa5c5c49..9f74a15a 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/isStarting.st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/isStarting.st @@ -1,3 +1,3 @@ testing isStarting - ^ false \ No newline at end of file + ^ false \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/isStopping.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/isStopping.st index a4d0e1b7..a0c287c8 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/isStopping.st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/isStopping.st @@ -1,3 +1,3 @@ testing isStopping - ^ false \ No newline at end of file + ^ false \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/requestBodyFor..st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/requestBodyFor..st index b51bd45c..08766573 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/requestBodyFor..st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/requestBodyFor..st @@ -3,8 +3,8 @@ requestBodyFor: aZincRequest ^ (aZincRequest method ~= #TRACE and: [ aZincRequest hasEntity and: [ aZincRequest entity isEmpty not - and: [ aZincRequest entity contentType ~= ZnMimeType applicationFormUrlEncoded - and: [ aZincRequest entity contentType ~= ZnMimeType multiPartFormData ] ] ] ]) + and: [ (aZincRequest entity contentType matches: ZnMimeType applicationFormUrlEncoded) not + and: [ (aZincRequest entity contentType matches: ZnMimeType multiPartFormData) not ] ] ] ]) ifTrue: [ "Seaside wants to do its own text conversions" aZincRequest entity bytes asString ] diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/requestFieldsFor..st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/requestFieldsFor..st index 55303f01..1c80661d 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/requestFieldsFor..st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/requestFieldsFor..st @@ -4,11 +4,10 @@ requestFieldsFor: aZincRequest fields := WARequestFields new. (aZincRequest method = #POST and: [ aZincRequest hasEntity ]) ifTrue: [ - aZincRequest entity contentType = ZnMimeType applicationFormUrlEncoded + (aZincRequest entity contentType matches: ZnMimeType applicationFormUrlEncoded) ifTrue: [ fields addAll: aZincRequest entity fields ]. - aZincRequest entity contentType = ZnMimeType multiPartFormData + (aZincRequest entity contentType matches: ZnMimeType multiPartFormData) ifTrue: [ fields addAll: (self convertMultipart: aZincRequest entity) ] ]. - ^ fields - \ No newline at end of file + ^ fields \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/methodProperties.json b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/methodProperties.json index f6a8f34c..d8fbfdfb 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/methodProperties.json +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/methodProperties.json @@ -17,9 +17,9 @@ "isStopping" : "pmm 9/8/2010 16:52", "printOn:" : "SvenVanCaekenberghe 1/5/2013 16:21", "requestAddressFor:" : "pmm 9/9/2010 22:08", - "requestBodyFor:" : "SvenVanCaekenberghe 4/7/2012 18:12", + "requestBodyFor:" : "SvenVanCaekenberghe 6/4/2013 14:57", "requestCookiesFor:" : "SvenVanCaekenberghe 2/27/2011 20:23", - "requestFieldsFor:" : "SvenVanCaekenberghe 1/3/2012 15:47", + "requestFieldsFor:" : "SvenVanCaekenberghe 6/4/2013 14:36", "requestHeadersFor:" : "SvenVanCaekenberghe 9/12/2010 10:58", "requestMethodFor:" : "pmm 9/8/2010 17:15", "requestUrlFor:" : "PaulDeBruicker 04/14/2011 12:13", diff --git a/repository/Zinc-Seaside.package/monticello.meta/version b/repository/Zinc-Seaside.package/monticello.meta/version index 628c73c5..f082ebc0 100644 --- a/repository/Zinc-Seaside.package/monticello.meta/version +++ b/repository/Zinc-Seaside.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-Seaside-SvenVanCaekenberghe.37' message 'Now trying to merge for real' id '6dd8730d-b9e0-48b3-bda3-dd417c66b207' date '12 January 2013' time '10:53:11.01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.36.3' message 'Merging in Ken Treis'' streaming server adaptor code (Thx Ken!); Updated some class comments' id '82cb393b-caa7-44ab-9184-b704a5ed9016' date '12 January 2013' time '10:31:55.745 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-KenTreis.36.2' message 'Moved streaming behavior to ZnZincStreamingServerAdaptor. Renamed ZnSeasideResponse to ZnDeferredResponse.' id '985913b2-8906-4c5e-a1d6-3b4f178e7f4d' date '11 January 2013' time '3:33:31.078 pm' author 'KenTreis' ancestors ((name 'Zinc-Seaside-KenTreis.36.1' message 'Hackish attempt to marry Zinc and WAComboResponse' id 'e4f08d48-734a-4617-a9cf-bfb0958b3217' date '10 January 2013' time '9:43:40.077 pm' author 'KenTreis' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.36' message 'using some newer Zn API' id '5fc04a6d-7eff-405b-a952-e523d1eb3fc4' date '7 January 2013' time '1:19:12.46 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.35' message 'fixed ZnSeasideServerAdaptorDelegate class>>#installInServer:underPrefix: by added a global Seaside #serverPath (thx Norbert Hartl)' id '2282944c-c7ad-482a-8f5b-1b96f04935a3' date '6 January 2013' time '4:06:14.622 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.34' message 'Refactored ZnZincServerAdaptor in an attempt to make it possible to use it with a pre-existing server: - changed the semantics of #basicStart by moving all but the actual server start to #server - added new #configureDelegate and #configureServerForBinaryReading helper methods - renamed #delegate to #defaultDelegate because that is what it does - changed #shutDown and #startUp to check #isRunning first - added a #printOn: to aid in debugging - #server: now takes over the port to avoid confusion Extended ZnSeasideServerAdaptorDelegate - added #value: as a synonym for #handleRequest: - added class side #forServer: to instanciate a delegate for an existing server, that is automatically sent #unregister to remove it from WAManager control - added #installInServer:underPrefix: and friends (unfinished) ' id 'fe02183e-29a3-4015-a88a-98bcfd7c5c24' date '6 January 2013' time '2:27:25.912 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.33' message 'now using ZnFileSystemUtils class>>#directory:' id '4378d6dc-feb4-4a71-9b04-6623c4ed11b6' date '28 August 2012' time '9:27:11.582 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.32' message 'changed ZnZincServerAdaptor>>#startUp not to do a basicStart and the create and start a new server when there is no server (i.e. when the adaptor was previously stopped) [Thx Julian Fitzell for explaining the semantics]' id 'b279c0ac-88d6-4ee9-9885-786a90bc2628' date '2 July 2012' time '6:43:41 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.31' message 'bring some sanity to how #server lazy initialization was handled; changed semantics of #startUp to do a #basicStart when the server was stopped' id '540e70b1-fd93-42d8-b05b-18f15c9ae5b4' date '2 July 2012' time '1:55:58 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.30' message 'Picked up Svens change from #mimeTypeMaxAges: to #mimeTypeExpirations: in ZnZincStaticServerAdaptor' id 'b2c12709-fa0f-4ed0-83c6-8b8a4211610c' date '5 June 2012' time '9:56:11.687 pm' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.29' message 'Added an API to allow a user to set expiration headers on static files they may server. There are defaults, or someone can specify their own if they follow the pattern in ZnStaticFileServerDelegate class>>#defaultMimeTypeExpirations See class comments of ZnZincStaticServerAdaptor for more details. ' id '6fe165a9-8447-49cc-b840-a4b4b0e4e60e' date '11 May 2012' time '3:32:00.365 pm' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.28' message 'Revised the interface so you can do: ZnZincStaticServerAdaptor startOn: 8080 andServeFilesFrom: ''/var/www/'' to get started. ' id '8523f609-d877-41ac-b49e-e06e7821a486' date '20 April 2012' time '4:54:42.369 pm' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.27' message 'added wwwRootDirectory as instance variable and accessor to ZnSeasideStaticServerAdaptorDelegate' id 'c2d6be4f-cc64-4771-8505-8dcc8059e264' date '20 April 2012' time '10:56:24 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.26' message 'Added the ZnZincStaticServerAdaptor & ZnSeasideStaticServerAdaptorDelegate classes which allow Zinc to serve Seaside requests and static files on the same port with one server. ' id 'b99f65c5-18e5-4196-9fb4-52fa59e91b10' date '19 April 2012' time '5:10:35.212 pm' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.25' message 'changed ZnZincServerAdaptor>>#basicStart to use the new #delegate method so subclasses can change the server delegate ' id 'e16227a1-8466-41c7-bf21-046ce0924eb1' date '19 April 2012' time '9:17:55.474 am' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.24' message 'changed the adaptor to use Zn''s new binary entity reading technique to more efficiently read textual binary entities being PUT or POSTED (as Seaside wants to do its own conversions); modified #basicStart and #requestBodyFor: (this require Zinc-HTTP-SvenVanCaekenberghe.255 or higher) ' id '5e86310e-d5f1-44d8-beda-9cf8e34bf07f' date '7 April 2012' time '6:34:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.23' message 'fix to ZnZincServerAdaptor>>#requestBodyFor: contributed by Norbert Hartl: read a body for all non TRACE requests instead of just for POST requests' id '5cebd974-c3ea-4810-8227-c9c71c3c36de' date '7 April 2012' time '4:25:06 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.22' message 'added an extra guard in ZnZincServerAdaptor>>#requestFieldsFor: to deal with POST requests with empty/missing body entities' id '3e7a34bf-e0ab-49ac-8460-4e18971bbba5' date '3 January 2012' time '3:48:48 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.21' message 'added a new implementation of ZnZincServerAdaptor>>#requestBodyFor: this idea is that we have to return a String that contains the raw entity bytes. we don''t do this when #requestFieldsFor: returns that data in an other form (i.e. when it is a POST with application/x-www-form-urlencoded or multipart/form-data). still this is inefficient for ZnStringEntity objects with a non-trivial encoding since they will be reencoded after just being decoded. ' id '2d3dd79e-7210-4e42-ba85-b08e6f74b689' date '20 November 2011' time '10:55:28 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.20' message 'added an example invocation with a custom server class to the class comment of ZnZincServerAdaptor' id 'd7540676-07da-48d9-a927-18ee9469472c' date '10 November 2011' time '5:24:20 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.19' message 'changed ZnZincServerAdaptor>>#server/#server: so that is now possible to plug in another server instead of the default: ZnZincServerAdaptor new port: 8080; serverClass: ZnManagingMultiThreadedServer; start; yourself See also the added methods: #defaultZnServer and #serverClass:' id '754e70ad-394a-4522-aebe-2c3551ece94f' date '18 October 2011' time '3:15:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-lr.18' message '- Issue 670: Broken Multipart Post with Zinc' id '0dbd54dc-bf85-48ee-b8a5-245bd8319d16' date '29 July 2011' time '1:01:37 pm' author 'lr' ancestors ((name 'Zinc-Seaside-lr.17' message '- added ZnZincServerAdaptor>>#startUp and ZnZincServerAdaptor>>#shutDown' id '10874597-c514-4d5a-9d56-f4e3d8356544' date '28 July 2011' time '6:44:07 pm' author 'lr' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.16' message 'reverted ZnZincServerAdaptor>>#defaultCodec back to GRCodec forEncoding: ''utf-8''' id '429b7092-937d-4b8a-b020-70a430d649b2' date '30 April 2011' time '9:44:06 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-pmm.15' message '- fix encoding in multipart forms' id 'c1d30608-4042-aab5-204a-0db5a46c1508' date '29 April 2011' time '5:58:24 pm' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.14' message '- fix WAEncodingFunctionalTest' id 'c1d30608-40f2-adb5-207a-14b5a46c1508' date '27 April 2011' time '7:00:43 pm' author 'pmm' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.13' message 'Changed from asString to greaseString in #requestUrlFor:' id 'ad169260-ea1b-4ccb-adda-e755a8e28b00' date '14 April 2011' time '1:26:40 pm' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.12' message 'now accessing ''server'' instance variable of ZnZincServerAdaptor through classic accessors (there was no #server accessor); changed ZnZincServerAdaptor>>#defaultCodec to GRNullCodec' id 'd1070561-19f0-45f8-9c98-ffcf71aa382c' date '29 March 2011' time '4:45:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.11' message 'extended ZnZincServerAdaptor to handle multipart formdata posts (including file uploads)' id 'a8198ed9-cf02-4611-a89e-9488ce6099c8' date '27 February 2011' time '8:28:57 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.10' message 'tracking API change in ZnServer delegate; we now use the newly introduced ZnSeasideServerAdaptorDelegate to transfer #handleRequest: to #process: ' id '2ac1a72b-950f-4cf2-9327-1d5c27da360a' date '30 September 2010' time '6:16:38 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-pmm.9' message '- setting multiple cookies works' id '5d6aa097-876b-4e51-9763-616e5c10bfef' date '12 September 2010' time '2:42:41 pm' author 'pmm' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.8' message 'tracking Zinc HTTP Components changes; simplified #requestFieldsFor: using the new ZnApplicationFormUrlEncodedEntity; simplified #responseFrom: using the new ZnEntity instance creation protocol' id '8d82d7b2-b111-4712-ab6b-66c0629d1b39' date '12 September 2010' time '11:32:30 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-pmm.7' message '- very basic POST handling' id '2fe24217-9a39-4072-a3cc-2693e30ad3ae' date '9 September 2010' time '10:25:38 pm' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.6' message '- save one dictionary lookup for cookies' id '3faeab4c-d5ba-4705-8d0a-96d67fe5c816' date '9 September 2010' time '10:13:16 pm' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.5' message '- #isStopped checks not server too - leave remote address empty if unknown (otherwise could lead to security problems if certain requests are only allowed for 127.0.0.1)' id '68eb1985-1d0a-4fe1-ac36-719e0e501c65' date '9 September 2010' time '10:10:24 pm' author 'pmm' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.4' message 'removed ZnDelegatingServer, we''re now using ZnServer''s delegate mechanism; using ZnServer>>#isRunning and the remoteAddress feature; updated ZnZincServerAdaptor>>#statusString' id 'd603a716-5a5d-49ab-aa03-8c7c94d9db52' date '9 September 2010' time '8:55:44 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-pmm.3' message '- response conversion' id '74f27742-d4a3-4795-9b38-8ab58aed5aed' date '8 September 2010' time '6:01:44 pm' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.2' message '- very basic request conversion' id '2f022234-3fd9-475b-b535-e8559de6ec32' date '8 September 2010' time '5:33:26 pm' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.1' message '- bump' id '2e53eed7-e315-4666-9614-2f741a25fe20' date '8 September 2010' time '5:09:21 pm' author 'pmm' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-Seaside-SvenVanCaekenberghe.40' message 'Modified ZnZincServerAdaptor>>#requestBodyFor: and #requestFieldsFor: to use ZnMimeType>>#matches: after a change in the semantics of ZnMimeType>>#= (mime type parameters like charset are now relevant) (Thx Andy Kellens)' id 'a6c5f1db-16b3-46ef-912f-95f54235c518' date '06/04/2013' time '04:24:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SeanDeNigris.39' message '- In ZnSeasideStaticServerAdaptorDelegate, don''t delegate "authentication required" to the staticDelegate.' id 'd2580ecb-ff89-4901-8c47-4ca8934b5cd3' date '02/12/2013' time '03:26:54' author 'SeanDeNigris' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.37' message 'Now trying to merge for real' id '6dd8730d-b9e0-48b3-bda3-dd417c66b207' date '01/12/2013' time '10:53:11' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.36.3' message 'Merging in Ken Treis'' streaming server adaptor code (Thx Ken!); Updated some class comments' id '82cb393b-caa7-44ab-9184-b704a5ed9016' date '01/12/2013' time '10:31:55' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-KenTreis.36.2' message 'Moved streaming behavior to ZnZincStreamingServerAdaptor. Renamed ZnSeasideResponse to ZnDeferredResponse.' id '985913b2-8906-4c5e-a1d6-3b4f178e7f4d' date '01/11/2013' time '03:33:31' author 'KenTreis' ancestors ((name 'Zinc-Seaside-KenTreis.36.1' message 'Hackish attempt to marry Zinc and WAComboResponse' id 'e4f08d48-734a-4617-a9cf-bfb0958b3217' date '01/10/2013' time '09:43:40' author 'KenTreis' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.36' message 'using some newer Zn API' id '5fc04a6d-7eff-405b-a952-e523d1eb3fc4' date '01/07/2013' time '01:19:12' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.35' message 'fixed ZnSeasideServerAdaptorDelegate class>>#installInServer:underPrefix: by added a global Seaside #serverPath (thx Norbert Hartl)' id '2282944c-c7ad-482a-8f5b-1b96f04935a3' date '01/06/2013' time '04:06:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.34' message 'Refactored ZnZincServerAdaptor in an attempt to make it possible to use it with a pre-existing server: - changed the semantics of #basicStart by moving all but the actual server start to #server - added new #configureDelegate and #configureServerForBinaryReading helper methods - renamed #delegate to #defaultDelegate because that is what it does - changed #shutDown and #startUp to check #isRunning first - added a #printOn: to aid in debugging - #server: now takes over the port to avoid confusion Extended ZnSeasideServerAdaptorDelegate - added #value: as a synonym for #handleRequest: - added class side #forServer: to instanciate a delegate for an existing server, that is automatically sent #unregister to remove it from WAManager control - added #installInServer:underPrefix: and friends (unfinished) ' id 'fe02183e-29a3-4015-a88a-98bcfd7c5c24' date '01/06/2013' time '02:27:25' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.33' message 'now using ZnFileSystemUtils class>>#directory:' id '4378d6dc-feb4-4a71-9b04-6623c4ed11b6' date '08/28/2012' time '09:27:11' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.32' message 'changed ZnZincServerAdaptor>>#startUp not to do a basicStart and the create and start a new server when there is no server (i.e. when the adaptor was previously stopped) [Thx Julian Fitzell for explaining the semantics]' id 'b279c0ac-88d6-4ee9-9885-786a90bc2628' date '07/02/2012' time '18:43:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.31' message 'bring some sanity to how #server lazy initialization was handled; changed semantics of #startUp to do a #basicStart when the server was stopped' id '540e70b1-fd93-42d8-b05b-18f15c9ae5b4' date '07/02/2012' time '13:55:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.30' message 'Picked up Svens change from #mimeTypeMaxAges: to #mimeTypeExpirations: in ZnZincStaticServerAdaptor' id 'b2c12709-fa0f-4ed0-83c6-8b8a4211610c' date '06/05/2012' time '09:56:11' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.29' message 'Added an API to allow a user to set expiration headers on static files they may server. There are defaults, or someone can specify their own if they follow the pattern in ZnStaticFileServerDelegate class>>#defaultMimeTypeExpirations See class comments of ZnZincStaticServerAdaptor for more details. ' id '6fe165a9-8447-49cc-b840-a4b4b0e4e60e' date '05/11/2012' time '03:32:00' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.28' message 'Revised the interface so you can do: ZnZincStaticServerAdaptor startOn: 8080 andServeFilesFrom: ''/var/www/'' to get started. ' id '8523f609-d877-41ac-b49e-e06e7821a486' date '04/20/2012' time '04:54:42' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.27' message 'added wwwRootDirectory as instance variable and accessor to ZnSeasideStaticServerAdaptorDelegate' id 'c2d6be4f-cc64-4771-8505-8dcc8059e264' date '04/20/2012' time '10:56:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.26' message 'Added the ZnZincStaticServerAdaptor & ZnSeasideStaticServerAdaptorDelegate classes which allow Zinc to serve Seaside requests and static files on the same port with one server. ' id 'b99f65c5-18e5-4196-9fb4-52fa59e91b10' date '04/19/2012' time '05:10:35' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.25' message 'changed ZnZincServerAdaptor>>#basicStart to use the new #delegate method so subclasses can change the server delegate ' id 'e16227a1-8466-41c7-bf21-046ce0924eb1' date '04/19/2012' time '09:17:55' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.24' message 'changed the adaptor to use Zn''s new binary entity reading technique to more efficiently read textual binary entities being PUT or POSTED (as Seaside wants to do its own conversions); modified #basicStart and #requestBodyFor: (this require Zinc-HTTP-SvenVanCaekenberghe.255 or higher) ' id '5e86310e-d5f1-44d8-beda-9cf8e34bf07f' date '04/07/2012' time '18:34:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.23' message 'fix to ZnZincServerAdaptor>>#requestBodyFor: contributed by Norbert Hartl: read a body for all non TRACE requests instead of just for POST requests' id '5cebd974-c3ea-4810-8227-c9c71c3c36de' date '04/07/2012' time '16:25:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.22' message 'added an extra guard in ZnZincServerAdaptor>>#requestFieldsFor: to deal with POST requests with empty/missing body entities' id '3e7a34bf-e0ab-49ac-8460-4e18971bbba5' date '01/03/2012' time '15:48:48' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.21' message 'added a new implementation of ZnZincServerAdaptor>>#requestBodyFor: this idea is that we have to return a String that contains the raw entity bytes. we don''t do this when #requestFieldsFor: returns that data in an other form (i.e. when it is a POST with application/x-www-form-urlencoded or multipart/form-data). still this is inefficient for ZnStringEntity objects with a non-trivial encoding since they will be reencoded after just being decoded. ' id '2d3dd79e-7210-4e42-ba85-b08e6f74b689' date '11/20/2011' time '22:55:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.20' message 'added an example invocation with a custom server class to the class comment of ZnZincServerAdaptor' id 'd7540676-07da-48d9-a927-18ee9469472c' date '11/10/2011' time '17:24:20' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.19' message 'changed ZnZincServerAdaptor>>#server/#server: so that is now possible to plug in another server instead of the default: ZnZincServerAdaptor new port: 8080; serverClass: ZnManagingMultiThreadedServer; start; yourself See also the added methods: #defaultZnServer and #serverClass:' id '754e70ad-394a-4522-aebe-2c3551ece94f' date '10/18/2011' time '15:15:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-lr.18' message '- Issue 670: Broken Multipart Post with Zinc' id '0dbd54dc-bf85-48ee-b8a5-245bd8319d16' date '07/29/2011' time '13:01:37' author 'lr' ancestors ((name 'Zinc-Seaside-lr.17' message '- added ZnZincServerAdaptor>>#startUp and ZnZincServerAdaptor>>#shutDown' id '10874597-c514-4d5a-9d56-f4e3d8356544' date '07/28/2011' time '18:44:07' author 'lr' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.16' message 'reverted ZnZincServerAdaptor>>#defaultCodec back to GRCodec forEncoding: ''utf-8''' id '429b7092-937d-4b8a-b020-70a430d649b2' date '04/30/2011' time '09:44:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-pmm.15' message '- fix encoding in multipart forms' id 'c1d30608-4042-aab5-204a-0db5a46c1508' date '04/29/2011' time '17:58:24' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.14' message '- fix WAEncodingFunctionalTest' id 'c1d30608-40f2-adb5-207a-14b5a46c1508' date '04/27/2011' time '19:00:43' author 'pmm' ancestors ((name 'Zinc-Seaside-PaulDeBruicker.13' message 'Changed from asString to greaseString in #requestUrlFor:' id 'ad169260-ea1b-4ccb-adda-e755a8e28b00' date '04/14/2011' time '13:26:40' author 'PaulDeBruicker' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.12' message 'now accessing ''server'' instance variable of ZnZincServerAdaptor through classic accessors (there was no #server accessor); changed ZnZincServerAdaptor>>#defaultCodec to GRNullCodec' id 'd1070561-19f0-45f8-9c98-ffcf71aa382c' date '03/29/2011' time '16:45:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.11' message 'extended ZnZincServerAdaptor to handle multipart formdata posts (including file uploads)' id 'a8198ed9-cf02-4611-a89e-9488ce6099c8' date '02/27/2011' time '20:28:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.10' message 'tracking API change in ZnServer delegate; we now use the newly introduced ZnSeasideServerAdaptorDelegate to transfer #handleRequest: to #process: ' id '2ac1a72b-950f-4cf2-9327-1d5c27da360a' date '09/30/2010' time '18:16:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-pmm.9' message '- setting multiple cookies works' id '5d6aa097-876b-4e51-9763-616e5c10bfef' date '09/12/2010' time '14:42:41' author 'pmm' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.8' message 'tracking Zinc HTTP Components changes; simplified #requestFieldsFor: using the new ZnApplicationFormUrlEncodedEntity; simplified #responseFrom: using the new ZnEntity instance creation protocol' id '8d82d7b2-b111-4712-ab6b-66c0629d1b39' date '09/12/2010' time '11:32:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-pmm.7' message '- very basic POST handling' id '2fe24217-9a39-4072-a3cc-2693e30ad3ae' date '09/09/2010' time '22:25:38' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.6' message '- save one dictionary lookup for cookies' id '3faeab4c-d5ba-4705-8d0a-96d67fe5c816' date '09/09/2010' time '22:13:16' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.5' message '- #isStopped checks not server too - leave remote address empty if unknown (otherwise could lead to security problems if certain requests are only allowed for 127.0.0.1)' id '68eb1985-1d0a-4fe1-ac36-719e0e501c65' date '09/09/2010' time '22:10:24' author 'pmm' ancestors ((name 'Zinc-Seaside-SvenVanCaekenberghe.4' message 'removed ZnDelegatingServer, we''re now using ZnServer''s delegate mechanism; using ZnServer>>#isRunning and the remoteAddress feature; updated ZnZincServerAdaptor>>#statusString' id 'd603a716-5a5d-49ab-aa03-8c7c94d9db52' date '09/09/2010' time '20:55:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Seaside-pmm.3' message '- response conversion' id '74f27742-d4a3-4795-9b38-8ab58aed5aed' date '09/08/2010' time '18:01:44' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.2' message '- very basic request conversion' id '2f022234-3fd9-475b-b535-e8559de6ec32' date '09/08/2010' time '17:33:26' author 'pmm' ancestors ((name 'Zinc-Seaside-pmm.1' message '- bump' id '2e53eed7-e315-4666-9614-2f741a25fe20' date '09/08/2010' time '17:09:21' author 'pmm' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/methodProperties.json deleted file mode 100644 index 784542c7..00000000 --- a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/methodProperties.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "testReading" : "SvenVanCaekenberghe 9/27/2010 15:07", - "testReadingBuffered" : "SvenVanCaekenberghe 8/2/2012 10:58", - "testReadingGzip" : "SvenVanCaekenberghe 9/27/2010 15:18", - "testReadingGzipStepped" : "SvenVanCaekenberghe 9/27/2010 15:17", - "testReadingNext" : "SvenVanCaekenberghe 12/3/2011 17:39", - "testReadingNextInto" : "SvenVanCaekenberghe 12/3/2011 17:40" } } diff --git a/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/README.md b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/nextPutAll.on.chunked..st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/nextPutAll.on.chunked..st similarity index 83% rename from repository/Zinc-HTTP.package/ZnUtils.class/class/nextPutAll.on.chunked..st rename to repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/nextPutAll.on.chunked..st index 5fb64e6f..80ce4027 100644 --- a/repository/Zinc-HTTP.package/ZnUtils.class/class/nextPutAll.on.chunked..st +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/nextPutAll.on.chunked..st @@ -1,4 +1,4 @@ -streaming +private nextPutAll: collection on: stream chunked: size | written | written := 0. @@ -8,4 +8,4 @@ nextPutAll: collection on: stream chunked: size stream nextPutAll: String crlf. chunkSize timesRepeat: [ stream nextPut: (collection at: (written := written + 1)) ]. stream nextPutAll: String crlf ]. - stream nextPutAll: String crlf \ No newline at end of file + stream print: 0; nextPutAll: String crlf; nextPutAll: String crlf \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testBinaryWriteRead.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testBinaryWriteRead.st new file mode 100644 index 00000000..e1ac59fe --- /dev/null +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testBinaryWriteRead.st @@ -0,0 +1,14 @@ +testing +testBinaryWriteRead + | data written read | + data := ByteArray new: 1024 streamContents: [ :out | + 1024 timesRepeat: [ out nextPut: 256 atRandom - 1 ] ]. + written := ByteArray streamContents: [ :out | + | stream | + stream := ZnBufferedWriteStream on: (ZnChunkedWriteStream on: out). + stream sizeBuffer: 256. + 1 to: 1024 by: 256 do: [ :each | + stream next: 256 putAll: data startingAt: each ]. + stream close ]. + read := (ZnChunkedReadStream on: written readStream) upToEnd. + self assert: read equals: data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testGzipWriteRead.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testGzipWriteRead.st new file mode 100644 index 00000000..76ed4742 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testGzipWriteRead.st @@ -0,0 +1,15 @@ +testing +testGzipWriteRead + | data written read | + data := String streamContents: [ :out | + { Collection. Stream. Exception. Magnitude } do: [ :cls | + cls allSubclassesDo: [ :each | out nextPutAll: each comment ] ] ]. + data := data asByteArray. + written := ByteArray streamContents: [ :out | + | stream chunkedStream | + stream := GZipWriteStream on: (chunkedStream := ZnChunkedWriteStream on: out). + stream nextPutAll: data. + stream finish. + chunkedStream finish ]. + read := (GZipReadStream on: (ZnChunkedReadStream on: written readStream)) upToEnd. + self assert: read equals: data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReading.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReading.st similarity index 71% rename from repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReading.st rename to repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReading.st index 74a9d1d7..199de42d 100644 --- a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReading.st +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReading.st @@ -3,6 +3,6 @@ testReading | data chunked plain | data := String withAll: ($a to: $z), ($A to: $Z). chunked := String streamContents: [ :stream | - ZnUtils nextPutAll: data on: stream chunked: 16 ]. + self nextPutAll: data on: stream chunked: 16 ]. plain := (ZnChunkedReadStream on: chunked readStream) upToEnd. - self assert: plain = data \ No newline at end of file + self assert: plain equals: data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingBuffered.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingBuffered.st similarity index 90% rename from repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingBuffered.st rename to repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingBuffered.st index 61d6b50b..7bd5a532 100644 --- a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingBuffered.st +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingBuffered.st @@ -3,7 +3,7 @@ testReadingBuffered | data chunked plain buffer readStream | data := String withAll: ($a to: $z), ($A to: $Z). chunked := String streamContents: [ :stream | - ZnUtils nextPutAll: data on: stream chunked: 16 ]. + self nextPutAll: data on: stream chunked: 16 ]. readStream := ZnChunkedReadStream on: chunked readStream. buffer := String new: 11. plain := String streamContents: [ :output | | readCount | diff --git a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingGzip.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingGzip.st similarity index 80% rename from repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingGzip.st rename to repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingGzip.st index c6d09fe2..fedc759f 100644 --- a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingGzip.st +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingGzip.st @@ -5,6 +5,6 @@ testReadingGzip gzipped := String streamContents: [ :stream | (GZipWriteStream on: stream) nextPutAll: data; close ]. chunked := String streamContents: [ :stream | - ZnUtils nextPutAll: gzipped on: stream chunked: 16 ]. + self nextPutAll: gzipped on: stream chunked: 16 ]. plain := (GZipReadStream on: (ZnChunkedReadStream on: chunked readStream)) upToEnd. - self assert: data = plain \ No newline at end of file + self assert: data equals: plain \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingGzipStepped.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingGzipStepped.st similarity index 75% rename from repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingGzipStepped.st rename to repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingGzipStepped.st index 2660153a..e4e20513 100644 --- a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingGzipStepped.st +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingGzipStepped.st @@ -5,8 +5,8 @@ testReadingGzipStepped gzipped := String streamContents: [ :stream | (GZipWriteStream on: stream) nextPutAll: data; close ]. chunked := String streamContents: [ :stream | - ZnUtils nextPutAll: gzipped on: stream chunked: 16 ]. + self nextPutAll: gzipped on: stream chunked: 16 ]. unchunked := (ZnChunkedReadStream on: chunked readStream) upToEnd. ungzipped := (GZipReadStream on: unchunked) upToEnd. - self assert: gzipped = unchunked. - self assert: data = ungzipped \ No newline at end of file + self assert: gzipped equals: unchunked. + self assert: data equals: ungzipped \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingNext.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingNext.st similarity index 72% rename from repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingNext.st rename to repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingNext.st index f12fcc81..6c71130b 100644 --- a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingNext.st +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingNext.st @@ -3,6 +3,6 @@ testReadingNext | data chunked plain | data := String withAll: ($a to: $z), ($A to: $Z). chunked := String streamContents: [ :stream | - ZnUtils nextPutAll: data on: stream chunked: 16 ]. + self nextPutAll: data on: stream chunked: 16 ]. plain := (ZnChunkedReadStream on: chunked readStream) next: 26 + 26. - self assert: plain = data \ No newline at end of file + self assert: plain equals: data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingNextInto.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingNextInto.st similarity index 75% rename from repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingNextInto.st rename to repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingNextInto.st index c2013d7b..95e45316 100644 --- a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/instance/testReadingNextInto.st +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testReadingNextInto.st @@ -3,7 +3,7 @@ testReadingNextInto | data chunked plain | data := String withAll: ($a to: $z), ($A to: $Z). chunked := String streamContents: [ :stream | - ZnUtils nextPutAll: data on: stream chunked: 16 ]. + self nextPutAll: data on: stream chunked: 16 ]. plain := String new: 26 + 26. (ZnChunkedReadStream on: chunked readStream) next: 26 + 26 into: plain. - self assert: plain = data \ No newline at end of file + self assert: plain equals: data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testWriting.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testWriting.st new file mode 100644 index 00000000..6b90a1e0 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testWriting.st @@ -0,0 +1,12 @@ +testing +testWriting + | chunks result reference | + chunks := #( 'ABC' 'DEF' 'GHI' 'JKL' ). + result := String streamContents: [ :out | + | stream | + stream := ZnChunkedWriteStream on: out. + chunks do: [ :each | stream nextPutAll: each ]. + stream finish ]. + reference := String streamContents: [ :out | + self nextPutAll: (String new join: chunks) on: out chunked: 3 ]. + self assert: result equals: reference \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testWritingBuffered.st b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testWritingBuffered.st new file mode 100644 index 00000000..0bfbc5b0 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/instance/testWritingBuffered.st @@ -0,0 +1,12 @@ +testing +testWritingBuffered + | data written read | + data := String withAll: ($a to: $z), ($A to: $Z). + written := String streamContents: [ :out | + | stream | + stream := ZnBufferedWriteStream on: (ZnChunkedWriteStream on: out). + stream sizeBuffer: 16. + stream nextPutAll: data. + stream close ]. + read := (ZnChunkedReadStream on: written readStream) upToEnd. + self assert: read equals: data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/methodProperties.json new file mode 100644 index 00000000..ba465f16 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/methodProperties.json @@ -0,0 +1,15 @@ +{ + "class" : { + }, + "instance" : { + "nextPutAll:on:chunked:" : "SvenVanCaekenberghe 5/17/2013 15:48", + "testBinaryWriteRead" : "SvenVanCaekenberghe 5/17/2013 16:26", + "testGzipWriteRead" : "SvenVanCaekenberghe 5/18/2013 13:59", + "testReading" : "SvenVanCaekenberghe 5/17/2013 23:47", + "testReadingBuffered" : "SvenVanCaekenberghe 5/17/2013 15:37", + "testReadingGzip" : "SvenVanCaekenberghe 5/17/2013 23:47", + "testReadingGzipStepped" : "SvenVanCaekenberghe 5/17/2013 23:47", + "testReadingNext" : "SvenVanCaekenberghe 5/17/2013 23:48", + "testReadingNextInto" : "SvenVanCaekenberghe 5/17/2013 23:48", + "testWriting" : "SvenVanCaekenberghe 5/17/2013 15:43", + "testWritingBuffered" : "SvenVanCaekenberghe 5/17/2013 15:57" } } diff --git a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/properties.json b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/properties.json similarity index 83% rename from repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/properties.json rename to repository/Zinc-Tests.package/ZnChunkedStreamTests.class/properties.json index 1b100613..9140c2db 100644 --- a/repository/Zinc-Tests.package/ZnChunkedReadStreamTests.class/properties.json +++ b/repository/Zinc-Tests.package/ZnChunkedStreamTests.class/properties.json @@ -7,7 +7,7 @@ "commentStamp" : "", "instvars" : [ ], - "name" : "ZnChunkedReadStreamTests", + "name" : "ZnChunkedStreamTests", "pools" : [ ], "super" : "TestCase", diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetGeoIP.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetGeoIP.st index 577d3e9a..0011ab04 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetGeoIP.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetGeoIP.st @@ -6,9 +6,11 @@ testGetGeoIP url: 'http://easy.t3-platform.net/rest/geo-ip'; queryAt: 'address' put: '81.83.7.35'; accept: ZnMimeType applicationJson; - contentReader: [ :entity | | parserClass | - parserClass := Smalltalk at: #JSJsonParser ifAbsent: [ ^ self ]. - parserClass parse: entity contents ]; + contentReader: [ :entity | + Smalltalk globals + at: #NeoJSONReader + ifPresent: [ :parserClass | parserClass fromString: entity contents ] + ifAbsent: [ ^ self ] ]; ifFail: [ ^ self fail ]; get. self assert: result isDictionary. diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPrepareRequest.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPrepareRequest.st new file mode 100644 index 00000000..45dda26e --- /dev/null +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPrepareRequest.st @@ -0,0 +1,18 @@ +testing +testPrepareRequest + | client | + self withServerDo: [ :server | + (client := ZnClient new) + url: server localUrl; + addPath: 'echo'; + prepareRequest: [ :request | request setAuthorization: 'my-signature' ]; + get. + self assert: client isSuccess. + self assert: (client contents includesSubstring: 'my-signature'). + client + url: server localUrl; + addPath: 'echo'; + get. + self assert: client isSuccess. + self assert: (client contents includesSubstring: 'my-signature'). + client close ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testQueryGoogle.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testQueryGoogle.st index 8ae3f97d..e3c38e36 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testQueryGoogle.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testQueryGoogle.st @@ -8,6 +8,6 @@ testQueryGoogle queryAt: 'q' put: 'Pharo Smalltalk'; get. self assert: client isSuccess. - self assert: client response contentType = ZnMimeType textHtml. + self assert: (client response contentType matches: ZnMimeType textHtml). self assert: (client contents includesSubstring: 'pharo-project.org'). client close \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirect.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirect.st index 214148d2..b0326002 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirect.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirect.st @@ -1,14 +1,20 @@ testing testRedirect - | client response | - client := ZnClient new url: 'http://www.pharo-project.org'. - self assert: (client get; isSuccess). - client + | client response target | + target := 'http://zn.stfx.eu'. + client := ZnClient new url: target. + client get. + self assert: client isSuccess. + client close; maxNumberOfRedirects: 0; - url: 'http://www.pharo-project.org'. + url: target. self should: [ client get ] raise: ZnTooManyRedirects. client close. - response := [ ZnClient new beOneShot; maxNumberOfRedirects: 0; get: 'http://www.pharo-project.org'; response ] - on: ZnTooManyRedirects do: [ :exception | exception resume ]. - self assert: response isRedirect \ No newline at end of file + response := [ + ZnClient new + beOneShot; + maxNumberOfRedirects: 0; + get: target; + response ] on: ZnTooManyRedirects do: [ :exception | exception resume ]. + self assert: response isRedirect \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirectDontFollow.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirectDontFollow.st index 17bc2174..14c4029a 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirectDontFollow.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirectDontFollow.st @@ -1,12 +1,13 @@ testing testRedirectDontFollow - | client | + | client target | + target := 'http://zn.stfx.eu'. (client := ZnClient new) dontFollowRedirects; - get: 'http://www.pharo-project.org'. + get: target. self assert: client response isRedirect. client enforceHttpSuccess: true; - get: 'http://www.pharo-project.org'. + get: target. self assert: client response isRedirect. client close \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnClientTests.class/methodProperties.json index 652ea3c8..25df2097 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnClientTests.class/methodProperties.json @@ -7,7 +7,7 @@ "testCookies" : "SvenVanCaekenberghe 5/14/2012 17:15", "testDownloadSmallHTML" : "SvenVanCaekenberghe 8/23/2012 14:34", "testGetAfterPost" : "SvenVanCaekenberghe 12/11/2012 21:19", - "testGetGeoIP" : "SvenVanCaekenberghe 11/8/2011 22:16", + "testGetGeoIP" : "SvenVanCaekenberghe 6/11/2013 10:33", "testGetSmallHTML" : "SvenVanCaekenberghe 8/23/2012 14:34", "testGetSmallHTMLOneShot" : "SvenVanCaekenberghe 8/23/2012 14:34", "testGetSmallHTMLStreaming" : "SvenVanCaekenberghe 8/23/2012 14:34", @@ -22,11 +22,12 @@ "testPostForm" : "SvenVanCaekenberghe 8/23/2012 14:34", "testPostMultipart" : "SvenVanCaekenberghe 8/23/2012 14:34", "testPostTwice" : "SvenVanCaekenberghe 12/11/2012 20:37", + "testPrepareRequest" : "SvenVanCaekenberghe 2/24/2013 11:02", "testProgress" : "SvenVanCaekenberghe 11/8/2011 22:19", "testProgressNoIfFail" : "SvenVanCaekenberghe 12/20/2011 13:55", - "testQueryGoogle" : "SvenVanCaekenberghe 8/23/2012 14:34", - "testRedirect" : "SvenVanCaekenberghe 11/8/2011 22:16", - "testRedirectDontFollow" : "SvenVanCaekenberghe 11/23/2011 17:13", + "testQueryGoogle" : "SvenVanCaekenberghe 5/21/2013 22:20", + "testRedirect" : "SvenVanCaekenberghe 5/10/2013 11:54", + "testRedirectDontFollow" : "SvenVanCaekenberghe 5/10/2013 11:55", "testRedirectWithCookies" : "SvenVanCaekenberghe 5/14/2012 17:16", "testRedirectWithCustomHeader" : "SvenVanCaekenberghe 12/11/2012 20:33", "testRelativeRedirect" : "SvenVanCaekenberghe 5/14/2012 17:16", diff --git a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testApplicationUrlEncodingAddAll.st b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testApplicationUrlEncodingAddAll.st new file mode 100644 index 00000000..d8a162af --- /dev/null +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testApplicationUrlEncodingAddAll.st @@ -0,0 +1,18 @@ +testing +testApplicationUrlEncodingAddAll + | entity string data | + data := Dictionary new. + data at: 'foo' put: 1 asString. + data at: 'bar' put: 2 asString. + entity := ZnApplicationFormUrlEncodedEntity new. + "Asking for the content length will force an internal computation of the representation" + self assert: entity contentLength = 0. + entity addAll: data. + string := String streamContents: [ :stream | entity writeOn: stream ]. + self assert: entity contentLength > 0. + entity := ZnEntity + readFrom: string readStream + usingType: ZnApplicationFormUrlEncodedEntity designatedMimeType + andLength: string size. + self assert: (entity at: 'foo') equals: '1'. + self assert: (entity at: 'bar') equals: '2' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testMultiPartFormDataWriteRead.st b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testMultiPartFormDataWriteRead.st index 3008b9f4..93128b28 100644 --- a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testMultiPartFormDataWriteRead.st +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testMultiPartFormDataWriteRead.st @@ -8,7 +8,7 @@ testMultiPartFormDataWriteRead yourself. self assert: input contentLength notNil. self assert: input contentLength > 0. - self assert: input contentType = ZnMimeType multiPartFormData. + self assert: (input contentType matches: ZnMimeType multiPartFormData). bytes := ByteArray streamContents: [ :stream | input writeOn: stream ]. output := (ZnMultiPartFormDataEntity type: input contentType) readFrom: bytes readStream. self assert: (output partNamed: 'extra') fieldValueString = 'my-extra'. diff --git a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReading.st b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReading.st index f1c539ae..a4c722e0 100644 --- a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReading.st +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReading.st @@ -9,4 +9,4 @@ testReading self assert: entity contents isString. self assert: entity string = contents. self assert: entity contentLength = contents size. - self assert: entity contentType = ZnMimeType textPlain \ No newline at end of file + self assert: entity contentType = ZnMimeType textPlain \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingBinary.st b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingBinary.st index d9eac218..3a270552 100644 --- a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingBinary.st +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingBinary.st @@ -9,4 +9,4 @@ testReadingBinary self deny: entity contents isString. self assert: entity contents = contents asByteArray. self assert: entity contentLength = contents size. - self assert: entity contentType = ZnMimeType textPlain \ No newline at end of file + self assert: entity contentType = ZnMimeType textPlain \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingLimited.st b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingLimited.st index 282f6218..98798e4a 100644 --- a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingLimited.st +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingLimited.st @@ -14,4 +14,4 @@ testReadingLimited readFrom: contents asByteArray readStream usingType: ZnMimeType textPlain andLength: nil ] - raise: ZnEntityTooLarge ] \ No newline at end of file + raise: ZnEntityTooLarge ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEntityTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnEntityTests.class/methodProperties.json index c4d1d225..72a342ec 100644 --- a/repository/Zinc-Tests.package/ZnEntityTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/methodProperties.json @@ -2,7 +2,8 @@ "class" : { }, "instance" : { - "testMultiPartFormDataWriteRead" : "SvenVanCaekenberghe 1/27/2011 17:15", + "testApplicationUrlEncodingAddAll" : "SvenVanCaekenberghe 2/24/2013 10:53", + "testMultiPartFormDataWriteRead" : "SvenVanCaekenberghe 5/21/2013 22:30", "testReading" : "SvenVanCaekenberghe 12/3/2010 15:41", "testReadingApplicationFormUrlEncoding" : "SvenVanCaekenberghe 1/25/2013 14:41", "testReadingApplicationFormUrlEncodingNoLength" : "SvenVanCaekenberghe 1/25/2013 14:41", diff --git a/repository/Zinc-Tests.package/ZnEntityWriterTests.class/README.md b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testChunkedOnly.st b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testChunkedOnly.st new file mode 100644 index 00000000..baede91b --- /dev/null +++ b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testChunkedOnly.st @@ -0,0 +1,22 @@ +testing +testChunkedOnly + | entity headers writer output reader result | + entity := ZnEntity text: (String streamContents: [ :out | + { Collection. Stream. Exception. Magnitude } do: [ :cls | + cls allSubclassesDo: [ :each | out nextPutAll: each comment ] ] ]). + headers := ZnHeaders new + acceptEntityDescription: entity; + at: 'Transfer-Encoding' put: 'chunked'; + yourself. + output := ByteArray streamContents: [ :out | + writer := ZnEntityWriter new + stream: out; + headers: headers; + yourself. + writer writeEntity: entity ]. + reader := ZnEntityReader new + stream: output readStream; + headers: headers; + yourself. + result := reader readEntity. + self assert: result contents equals: entity contents \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testGzippedAndChunked.st b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testGzippedAndChunked.st new file mode 100644 index 00000000..1fcccac7 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testGzippedAndChunked.st @@ -0,0 +1,23 @@ +testing +testGzippedAndChunked + | entity headers writer output reader result | + entity := ZnEntity text: (String streamContents: [ :out | + { Collection. Stream. Exception. Magnitude } do: [ :cls | + cls allSubclassesDo: [ :each | out nextPutAll: each comment ] ] ]). + headers := ZnHeaders new + acceptEntityDescription: entity; + at: 'Content-Encoding' put: 'gzip'; + at: 'Transfer-Encoding' put: 'chunked'; + yourself. + output := ByteArray streamContents: [ :out | + writer := ZnEntityWriter new + stream: out; + headers: headers; + yourself. + writer writeEntity: entity ]. + reader := ZnEntityReader new + stream: output readStream; + headers: headers; + yourself. + result := reader readEntity. + self assert: result contents equals: entity contents \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testPlain.st b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testPlain.st new file mode 100644 index 00000000..9fc3786c --- /dev/null +++ b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testPlain.st @@ -0,0 +1,11 @@ +testing +testPlain + | entity writer output | + entity := ZnEntity text: 'Foo bar!'. + output := ByteArray streamContents: [ :out | + writer := ZnEntityWriter new + stream: out; + headers: ZnHeaders new; + yourself. + writer writeEntity: entity ]. + self assert: output equals: 'Foo bar!' asByteArray \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testPlainUsingReader.st b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testPlainUsingReader.st new file mode 100644 index 00000000..050f8d0f --- /dev/null +++ b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/instance/testPlainUsingReader.st @@ -0,0 +1,19 @@ +testing +testPlainUsingReader + | entity headers writer output reader result | + entity := ZnEntity text: 'Foo bar!'. + headers := ZnHeaders new + acceptEntityDescription: entity; + yourself. + output := ByteArray streamContents: [ :out | + writer := ZnEntityWriter new + stream: out; + headers: headers; + yourself. + writer writeEntity: entity ]. + reader := ZnEntityReader new + stream: output readStream; + headers: headers; + yourself. + result := reader readEntity. + self assert: result contents equals: 'Foo bar!' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEntityWriterTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/methodProperties.json new file mode 100644 index 00000000..d6cfba5c --- /dev/null +++ b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "testChunkedOnly" : "SvenVanCaekenberghe 5/19/2013 11:41", + "testGzippedAndChunked" : "SvenVanCaekenberghe 5/18/2013 13:26", + "testPlain" : "SvenVanCaekenberghe 5/18/2013 13:10", + "testPlainUsingReader" : "SvenVanCaekenberghe 5/18/2013 13:24" } } diff --git a/repository/Zinc-Tests.package/ZnEntityWriterTests.class/properties.json b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/properties.json new file mode 100644 index 00000000..e08f1817 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnEntityWriterTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnEntityWriterTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMergeValued.st b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMergeValued.st index 8be3bd32..f2c71fed 100644 --- a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMergeValued.st +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMergeValued.st @@ -4,6 +4,6 @@ testMergeValued headers := ZnHeaders new. headers at: 'Set-Cookie' put: 'foo=1'. headers at: 'Set-Cookie' put: 'bar=1' ifPresentMerge: [ :old :new | old, ';', new ]. - self assert: (headers at: 'Set-Cookie') = 'foo=1;bar=1' + self assert: (headers at: 'Set-Cookie') equals: 'foo=1;bar=1' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMultiValued.st b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMultiValued.st index 1a94be90..5bd77109 100644 --- a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMultiValued.st +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMultiValued.st @@ -4,6 +4,6 @@ testMultiValued headers := ZnHeaders new. headers at: 'Set-Cookie' put: 'foo=1'. headers at: 'Set-Cookie' add: 'bar=1'. - self assert: (headers at: 'Set-Cookie') = #('foo=1' 'bar=1') + self assert: (headers at: 'Set-Cookie') equals: #('foo=1' 'bar=1') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMultiValuedStreaming.st b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMultiValuedStreaming.st index ce4a4e4e..acea596e 100644 --- a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMultiValuedStreaming.st +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testMultiValuedStreaming.st @@ -7,6 +7,6 @@ testMultiValuedStreaming keysAndValues := OrderedCollection streamContents: [ : stream | headers headersDo: [ :key :value | stream nextPut: key; nextPut: value ] ]. - self assert: keysAndValues = #('Set-Cookie' 'foo=1' 'Set-Cookie' 'bar=1') asOrderedCollection + self assert: keysAndValues equals: #('Set-Cookie' 'foo=1' 'Set-Cookie' 'bar=1') asOrderedCollection \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testNormalization.st b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testNormalization.st index 95701070..591935f9 100644 --- a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testNormalization.st +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testNormalization.st @@ -5,8 +5,8 @@ testNormalization headers at: 'content-TYPE' put: 'text/plain'. self assert: (headers includesKey: 'content-type'). self assert: (headers includesKey: 'content-TYPE'). - self assert: (headers at: 'Content-Type') = 'text/plain'. + self assert: (headers at: 'Content-Type') equals: 'text/plain'. headers at: 'CONTENT-type' put: 'text/html'. - self assert: (headers at: 'Content-Type') = 'text/html'. + self assert: (headers at: 'Content-Type') equals: 'text/html'. \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReading.st b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReading.st index a7538d4f..b7c7abb8 100644 --- a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReading.st +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReading.st @@ -2,8 +2,8 @@ testing testReading | string headers | string := 'Content-Type: text/plain', String crlf, 'Content-Length: 128', String crlf. - headers := ZnHeaders readFrom: string readStream. + headers := ZnHeaders readFrom: string asByteArray readStream. self assert: (headers includesKey: 'Content-Type'). self assert: (headers includesKey: 'Content-Length'). - self assert: (headers at: 'Content-Type') = 'text/plain'. - self assert: (headers at: 'Content-Length') = '128'. \ No newline at end of file + self assert: (headers at: 'Content-Type') equals: 'text/plain'. + self assert: (headers at: 'Content-Length') equals: '128'. \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReadingMultiline.st b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReadingMultiline.st index bb96be6f..3cdb39ff 100644 --- a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReadingMultiline.st +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReadingMultiline.st @@ -6,10 +6,10 @@ testReadingMultiline ' bar', String crlf, String tab, 'baz', String crlf, 'Content-Length: 128', String crlf. - headers := ZnHeaders readFrom: string readStream. + headers := ZnHeaders readFrom: string asByteArray readStream. self assert: (headers includesKey: 'Content-Type'). self assert: (headers includesKey: 'Content-Length'). - self assert: (headers at: 'Content-Type') = 'text/plain'. - self assert: (headers at: 'Content-Length') = '128'. + self assert: (headers at: 'Content-Type') equals: 'text/plain'. + self assert: (headers at: 'Content-Length') equals: '128'. self assert: (headers includesKey: #Long). self assert: (headers at: #long) equals: 'foo bar baz'. \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReadingMultilineMultiValue.st b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReadingMultilineMultiValue.st new file mode 100644 index 00000000..a22983d1 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testReadingMultilineMultiValue.st @@ -0,0 +1,11 @@ +testing +testReadingMultilineMultiValue + | string headers | + string := 'Content-Type: text/plain', String crlf, + 'Long: foo', String crlf, + ' bar', String crlf, + String tab, 'baz', String crlf, + 'Content-Length: 128', String crlf, + 'Long: more', String crlf. + headers := ZnHeaders readFrom: string asByteArray readStream. + self assert: (headers at: #long) equals: #( 'foo bar baz' 'more'). \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHeadersTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnHeadersTests.class/methodProperties.json index 86d506b6..dbaaf997 100644 --- a/repository/Zinc-Tests.package/ZnHeadersTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/methodProperties.json @@ -2,10 +2,11 @@ "class" : { }, "instance" : { - "testMergeValued" : "SvenVanCaekenberghe 9/10/2010 20:59", - "testMultiValued" : "SvenVanCaekenberghe 9/10/2010 20:57", - "testMultiValuedStreaming" : "SvenVanCaekenberghe 9/10/2010 21:03", - "testNormalization" : "SvenVanCaekenberghe 9/10/2010 20:55", - "testReading" : "SvenVanCaekenberghe 9/6/2010 20:16", - "testReadingMultiline" : "SvenVanCaekenberghe 5/22/2012 10:42", + "testMergeValued" : "SvenVanCaekenberghe 6/11/2013 10:34", + "testMultiValued" : "SvenVanCaekenberghe 6/11/2013 10:34", + "testMultiValuedStreaming" : "SvenVanCaekenberghe 6/11/2013 10:34", + "testNormalization" : "SvenVanCaekenberghe 6/11/2013 10:35", + "testReading" : "SvenVanCaekenberghe 6/11/2013 10:35", + "testReadingMultiline" : "SvenVanCaekenberghe 6/11/2013 10:35", + "testReadingMultilineMultiValue" : "SvenVanCaekenberghe 6/11/2013 10:38", "testWriting" : "SvenVanCaekenberghe 8/23/2012 14:34" } } diff --git a/repository/Zinc-Tests.package/ZnLineReaderTests.class/instance/testLineTooLong.st b/repository/Zinc-Tests.package/ZnLineReaderTests.class/instance/testLineTooLong.st index 2e5b2517..50b5af44 100644 --- a/repository/Zinc-Tests.package/ZnLineReaderTests.class/instance/testLineTooLong.st +++ b/repository/Zinc-Tests.package/ZnLineReaderTests.class/instance/testLineTooLong.st @@ -3,4 +3,4 @@ testLineTooLong | input reader | input := (String new: 128) atAllPut: $X. reader := (ZnLineReader on: input readStream) limit: 64. - self should: [ reader nextLine ] raise: ZnLineTooLong \ No newline at end of file + self should: [ reader nextLine ] raise: ZnLineTooLong \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnLineReaderTests.class/instance/testLineTooLongDefault.st b/repository/Zinc-Tests.package/ZnLineReaderTests.class/instance/testLineTooLongDefault.st index ece2f285..193c507e 100644 --- a/repository/Zinc-Tests.package/ZnLineReaderTests.class/instance/testLineTooLongDefault.st +++ b/repository/Zinc-Tests.package/ZnLineReaderTests.class/instance/testLineTooLongDefault.st @@ -3,4 +3,4 @@ testLineTooLongDefault | input reader | input := (String new: ZnConstants maximumLineLength + 1) atAllPut: $X. reader := ZnLineReader on: input readStream. - self should: [ reader nextLine ] raise: ZnLineTooLong \ No newline at end of file + self should: [ reader nextLine ] raise: ZnLineTooLong \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnLogSupportTests.class/instance/testLogEvent.st b/repository/Zinc-Tests.package/ZnLogSupportTests.class/instance/testLogEvent.st index 8e3f5d4f..eb7b592e 100644 --- a/repository/Zinc-Tests.package/ZnLogSupportTests.class/instance/testLogEvent.st +++ b/repository/Zinc-Tests.package/ZnLogSupportTests.class/instance/testLogEvent.st @@ -6,4 +6,4 @@ testLogEvent self assert: logEvent timeStamp >= now. self assert: logEvent processId isInteger. self assert: logEvent category = #info. - self assert: logEvent message = 'Testing' \ No newline at end of file + self assert: logEvent message = 'Testing' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/README.md b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/README.md new file mode 100644 index 00000000..b8ae4c32 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/README.md @@ -0,0 +1,24 @@ +I am ZnMessageBenchmark helps to test the benchmarking and profiling of ZnMessage writing and reading. + +Instance Variables + buffer: + message: + representation: + +ZnMessageBenchmark new + simpleRequest; + write: 10000. + +ZnMessageBenchmark new + simpleRequest; + writeRepresentation; + read: 10000. + +ZnMessageBenchmark new + simpleResponse; + write: 10000. + +ZnMessageBenchmark new + simpleResponse; + writeRepresentation; + read: 10000. diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/bench..st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/bench..st new file mode 100644 index 00000000..ac70b9de --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/bench..st @@ -0,0 +1,13 @@ +accessing +bench: messages + | results | + results := Dictionary new. + messages + do: [ :each | | bench report | + bench := self new. + bench perform: each. + bench writeRepresentation. + report := 'Writing {1} - Reading {2}' format: { bench benchWrite. bench benchRead }. + results at: each put: report ] + displayingProgress: 'Benchmarking...'. + ^ results \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/benchAll.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/benchAll.st new file mode 100644 index 00000000..6a8b5565 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/benchAll.st @@ -0,0 +1,3 @@ +accessing +benchAll + ^ self bench: self messages \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/messages.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/messages.st new file mode 100644 index 00000000..c4528ad8 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/messages.st @@ -0,0 +1,3 @@ +accessing +messages + ^ self requests , self responses \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/requests.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/requests.st new file mode 100644 index 00000000..ae619e21 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/requests.st @@ -0,0 +1,3 @@ +accessing +requests + ^ #( simpleRequest standardRequest postRequest ) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/responses.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/responses.st new file mode 100644 index 00000000..50e5be00 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/class/responses.st @@ -0,0 +1,8 @@ +accessing +responses + ^ #( + simpleResponse + textResponse8k textResponse64k textResponse256k + textResponseWide8k textResponseWide64k textResponseWide256k + asciiResponse8k asciiResponse64k asciiResponse256k + binaryResponse8k binaryResponse64k binaryResponse256k ) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/asciiResponse256k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/asciiResponse256k.st new file mode 100644 index 00000000..eb05cdbc --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/asciiResponse256k.st @@ -0,0 +1,6 @@ +initialize-release +asciiResponse256k + message := ZnResponse ok: + (ZnEntity + with: (self randomAsciiString: 256 * 1024) + type: 'text/plain;charset=ascii') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/asciiResponse64k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/asciiResponse64k.st new file mode 100644 index 00000000..e9a4d606 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/asciiResponse64k.st @@ -0,0 +1,6 @@ +initialize-release +asciiResponse64k + message := ZnResponse ok: + (ZnEntity + with: (self randomAsciiString: 64 * 1024) + type: 'text/plain;charset=ascii') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/asciiResponse8k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/asciiResponse8k.st new file mode 100644 index 00000000..6faad122 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/asciiResponse8k.st @@ -0,0 +1,6 @@ +initialize-release +asciiResponse8k + message := ZnResponse ok: + (ZnEntity + with: (self randomAsciiString: 8 * 1024) + type: 'text/plain;charset=ascii') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/benchRead.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/benchRead.st new file mode 100644 index 00000000..d79eadca --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/benchRead.st @@ -0,0 +1,3 @@ +accessing +benchRead + ^ [ self read ] bench \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/benchWrite.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/benchWrite.st new file mode 100644 index 00000000..aecca9cf --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/benchWrite.st @@ -0,0 +1,3 @@ +accessing +benchWrite + ^ [ self write ] bench \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/binaryResponse256k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/binaryResponse256k.st new file mode 100644 index 00000000..1b645a21 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/binaryResponse256k.st @@ -0,0 +1,3 @@ +initialize-release +binaryResponse256k + message := ZnResponse ok: (ZnEntity with: (self randomBytes: 256 * 1024)) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/binaryResponse64k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/binaryResponse64k.st new file mode 100644 index 00000000..a3e136f6 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/binaryResponse64k.st @@ -0,0 +1,3 @@ +initialize-release +binaryResponse64k + message := ZnResponse ok: (ZnEntity with: (self randomBytes: 64 * 1024)) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/binaryResponse8k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/binaryResponse8k.st new file mode 100644 index 00000000..680a4d27 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/binaryResponse8k.st @@ -0,0 +1,3 @@ +initialize-release +binaryResponse8k + message := ZnResponse ok: (ZnEntity with: (self randomBytes: 8 * 1024)) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/buffer.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/buffer.st new file mode 100644 index 00000000..a1673b12 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/buffer.st @@ -0,0 +1,3 @@ +accessing +buffer + ^ buffer ifNil: [ buffer := ByteArray new: ZnUtils streamingBufferSize ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/message.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/message.st new file mode 100644 index 00000000..ab7cd85f --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/message.st @@ -0,0 +1,3 @@ +accessing +message + ^ message \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/postRequest.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/postRequest.st new file mode 100644 index 00000000..f19a5cca --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/postRequest.st @@ -0,0 +1,7 @@ +initialize-release +postRequest + message := (ZnRequest post: 'http://zn.stfx.eu/echo/one/two/three?param1=123¶m2=foobar') + setAcceptEncodingGzip; + setBasicAuthenticationUsername: 'john' password: 'secret'; + entity: (ZnEntity with: (self randomBytes: 512)); + yourself \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomAsciiString..st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomAsciiString..st new file mode 100644 index 00000000..77145e93 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomAsciiString..st @@ -0,0 +1,6 @@ +private +randomAsciiString: count + ^ String + new: count + streamContents: [ :stream | + count timesRepeat: [ stream nextPut: '0123456789ABCDEF' atRandom ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomBytes..st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomBytes..st new file mode 100644 index 00000000..e3d5a401 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomBytes..st @@ -0,0 +1,7 @@ +private +randomBytes: count + | bytes | + bytes := ByteArray new: count. + 1 to: count do: [ :each | + bytes at: each put: (#(65 66 67 68) at: each \\ 4 + 1) ]. + ^ bytes \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomUnicodeString..st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomUnicodeString..st new file mode 100644 index 00000000..bf0a8a0c --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomUnicodeString..st @@ -0,0 +1,7 @@ +private +randomUnicodeString: count + ^ String + new: count + streamContents: [ :stream | + "This is about 6% non-ASCII characters, still a ByteString" + count timesRepeat: [ stream nextPut: '0123456789ABCDEF-élève en Français-0123456789ABCDEF' atRandom ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomUnicodeWideString..st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomUnicodeWideString..st new file mode 100644 index 00000000..14609761 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/randomUnicodeWideString..st @@ -0,0 +1,10 @@ +private +randomUnicodeWideString: count + | alphabet | + "This is about 6% non-ASCII characters, 6% non-octet characters, always a WideString" + alphabet := '0123456789ABCDEF-élève en Français-0123456789ABCDEF', + (WideString withAll: (#(300 400 500) collect: [ :each | each asCharacter ])). + ^ WideString + new: count + streamContents: [ :stream | + count timesRepeat: [ stream nextPut: alphabet atRandom ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/read..st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/read..st new file mode 100644 index 00000000..f4764717 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/read..st @@ -0,0 +1,3 @@ +accessing +read: count + count timesRepeat: [ self read ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/read.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/read.st new file mode 100644 index 00000000..b92b8fd9 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/read.st @@ -0,0 +1,5 @@ +accessing +read + | readStream | + readStream := representation readStream. + ^ message class readFrom: readStream \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/simpleRequest.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/simpleRequest.st new file mode 100644 index 00000000..6c309b48 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/simpleRequest.st @@ -0,0 +1,3 @@ +initialize-release +simpleRequest + message := ZnRequest get: 'http://zn.stfx.eu/dw-bench' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/simpleResponse.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/simpleResponse.st new file mode 100644 index 00000000..b99140cb --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/simpleResponse.st @@ -0,0 +1,3 @@ +initialize-release +simpleResponse + message := ZnResponse ok: (ZnEntity html: ZnDefaultServerDelegate new generateDWBench) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/sizeBuffer..st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/sizeBuffer..st new file mode 100644 index 00000000..317a724c --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/sizeBuffer..st @@ -0,0 +1,3 @@ +private +sizeBuffer: size + buffer := ByteArray new: size \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/standardRequest.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/standardRequest.st new file mode 100644 index 00000000..6368e665 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/standardRequest.st @@ -0,0 +1,6 @@ +initialize-release +standardRequest + message := (ZnRequest get: 'http://zn.stfx.eu/echo/one/two/three?param1=123¶m2=foobar') + setAcceptEncodingGzip; + setBasicAuthenticationUsername: 'john' password: 'secret'; + yourself \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponse256k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponse256k.st new file mode 100644 index 00000000..11a401a9 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponse256k.st @@ -0,0 +1,3 @@ +initialize-release +textResponse256k + message := ZnResponse ok: (ZnEntity with: (self randomUnicodeString: 256 * 1024)) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponse64k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponse64k.st new file mode 100644 index 00000000..8d66a4fe --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponse64k.st @@ -0,0 +1,3 @@ +initialize-release +textResponse64k + message := ZnResponse ok: (ZnEntity with: (self randomUnicodeString: 64 * 1024)) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponse8k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponse8k.st new file mode 100644 index 00000000..442070fa --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponse8k.st @@ -0,0 +1,3 @@ +initialize-release +textResponse8k + message := ZnResponse ok: (ZnEntity with: (self randomUnicodeString: 8 * 1024)) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponseWide256k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponseWide256k.st new file mode 100644 index 00000000..f7068f77 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponseWide256k.st @@ -0,0 +1,3 @@ +initialize-release +textResponseWide256k + message := ZnResponse ok: (ZnEntity with: (self randomUnicodeWideString: 256 * 1024)) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponseWide64k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponseWide64k.st new file mode 100644 index 00000000..598abda9 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponseWide64k.st @@ -0,0 +1,3 @@ +initialize-release +textResponseWide64k + message := ZnResponse ok: (ZnEntity with: (self randomUnicodeWideString: 64 * 1024)) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponseWide8k.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponseWide8k.st new file mode 100644 index 00000000..c15c126c --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/textResponseWide8k.st @@ -0,0 +1,3 @@ +initialize-release +textResponseWide8k + message := ZnResponse ok: (ZnEntity with: (self randomUnicodeWideString: 8 * 1024)) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/write..st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/write..st new file mode 100644 index 00000000..8cd0ec8c --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/write..st @@ -0,0 +1,3 @@ +accessing +write: count + count timesRepeat: [ self write ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/write.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/write.st new file mode 100644 index 00000000..3157a264 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/write.st @@ -0,0 +1,6 @@ +accessing +write + | writeStream | + writeStream := self buffer writeStream. + message writeOn: writeStream. + ^ writeStream \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/writeRepresentation.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/writeRepresentation.st new file mode 100644 index 00000000..5361cb7b --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/writeRepresentation.st @@ -0,0 +1,4 @@ +initialize-release +writeRepresentation + representation := self write contents. + self sizeBuffer: representation size + 1024 \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/writeUsingGzipEncodingAndChunkingRepresentation.st b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/writeUsingGzipEncodingAndChunkingRepresentation.st new file mode 100644 index 00000000..9c4a6a22 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/instance/writeUsingGzipEncodingAndChunkingRepresentation.st @@ -0,0 +1,7 @@ +initialize-release +writeUsingGzipEncodingAndChunkingRepresentation + message + setContentEncodingGzip; + setTransferEncodingChunked. + representation := self write contents. + self sizeBuffer: representation size + 1024 \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/methodProperties.json b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/methodProperties.json new file mode 100644 index 00000000..dfc7cfc7 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/methodProperties.json @@ -0,0 +1,39 @@ +{ + "class" : { + "bench:" : "SvenVanCaekenberghe 5/22/2013 14:41", + "benchAll" : "SvenVanCaekenberghe 5/22/2013 14:41", + "messages" : "SvenVanCaekenberghe 5/22/2013 14:11", + "requests" : "SvenVanCaekenberghe 5/22/2013 13:37", + "responses" : "SvenVanCaekenberghe 6/11/2013 13:25" }, + "instance" : { + "asciiResponse256k" : "SvenVanCaekenberghe 5/21/2013 19:59", + "asciiResponse64k" : "SvenVanCaekenberghe 5/21/2013 20:06", + "asciiResponse8k" : "SvenVanCaekenberghe 5/21/2013 20:05", + "benchRead" : "SvenVanCaekenberghe 5/21/2013 17:07", + "benchWrite" : "SvenVanCaekenberghe 5/21/2013 17:06", + "binaryResponse256k" : "SvenVanCaekenberghe 5/21/2013 16:18", + "binaryResponse64k" : "SvenVanCaekenberghe 5/21/2013 16:18", + "binaryResponse8k" : "SvenVanCaekenberghe 5/21/2013 16:18", + "buffer" : "SvenVanCaekenberghe 5/21/2013 15:24", + "message" : "SvenVanCaekenberghe 5/21/2013 16:01", + "postRequest" : "SvenVanCaekenberghe 5/21/2013 16:24", + "randomAsciiString:" : "SvenVanCaekenberghe 5/21/2013 16:14", + "randomBytes:" : "SvenVanCaekenberghe 5/21/2013 16:14", + "randomUnicodeString:" : "SvenVanCaekenberghe 5/22/2013 09:09", + "randomUnicodeWideString:" : "SvenVanCaekenberghe 6/11/2013 13:23", + "read" : "SvenVanCaekenberghe 5/21/2013 15:28", + "read:" : "SvenVanCaekenberghe 5/21/2013 15:34", + "simpleRequest" : "SvenVanCaekenberghe 5/21/2013 15:31", + "simpleResponse" : "SvenVanCaekenberghe 5/21/2013 15:56", + "sizeBuffer:" : "SvenVanCaekenberghe 5/21/2013 15:23", + "standardRequest" : "SvenVanCaekenberghe 5/21/2013 16:08", + "textResponse256k" : "SvenVanCaekenberghe 5/21/2013 16:27", + "textResponse64k" : "SvenVanCaekenberghe 5/21/2013 16:20", + "textResponse8k" : "SvenVanCaekenberghe 5/21/2013 16:20", + "textResponseWide256k" : "SvenVanCaekenberghe 6/11/2013 13:24", + "textResponseWide64k" : "SvenVanCaekenberghe 6/11/2013 13:24", + "textResponseWide8k" : "SvenVanCaekenberghe 6/11/2013 13:25", + "write" : "SvenVanCaekenberghe 5/21/2013 15:26", + "write:" : "SvenVanCaekenberghe 5/21/2013 15:35", + "writeRepresentation" : "SvenVanCaekenberghe 5/21/2013 16:32", + "writeUsingGzipEncodingAndChunkingRepresentation" : "SvenVanCaekenberghe 5/21/2013 16:56" } } diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmark.class/properties.json b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/properties.json new file mode 100644 index 00000000..b2ebb35b --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmark.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Zinc-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "message", + "representation", + "buffer" ], + "name" : "ZnMessageBenchmark", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/README.md b/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/instance/testRequests.st b/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/instance/testRequests.st new file mode 100644 index 00000000..e38c0b26 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/instance/testRequests.st @@ -0,0 +1,12 @@ +testing +testRequests + ZnMessageBenchmark requests do: [ :each | + | bench | + bench := ZnMessageBenchmark new. + bench perform: each. + self assert: (bench message isKindOf: ZnRequest). + bench writeRepresentation. + self assert: (bench read isKindOf: ZnRequest). + self assert: bench read equals: bench message ] + + \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/instance/testResponses.st b/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/instance/testResponses.st new file mode 100644 index 00000000..1d06e8ab --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/instance/testResponses.st @@ -0,0 +1,12 @@ +testing +testResponses + ZnMessageBenchmark responses do: [ :each | + | bench | + bench := ZnMessageBenchmark new. + bench perform: each. + self assert: (bench message isKindOf: ZnResponse). + bench writeRepresentation. + self assert: (bench read isKindOf: ZnResponse). + self assert: bench read equals: bench message ] + + \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/methodProperties.json new file mode 100644 index 00000000..7928fbca --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "testRequests" : "SvenVanCaekenberghe 5/22/2013 13:37", + "testResponses" : "SvenVanCaekenberghe 5/22/2013 13:37" } } diff --git a/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/properties.json b/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/properties.json new file mode 100644 index 00000000..d583dbf1 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnMessageBenchmarkTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnMessageBenchmarkTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnRequestLineTests.class/instance/testReading.st b/repository/Zinc-Tests.package/ZnRequestLineTests.class/instance/testReading.st index c157ad33..81776e1f 100644 --- a/repository/Zinc-Tests.package/ZnRequestLineTests.class/instance/testReading.st +++ b/repository/Zinc-Tests.package/ZnRequestLineTests.class/instance/testReading.st @@ -5,4 +5,4 @@ testReading requestLine := ZnRequestLine readFrom: string readStream. self assert: requestLine method = #GET. self assert: requestLine uriPathQueryFragment = '/foo/bar/xyz.txt'. - self assert: requestLine version = ZnConstants defaultHTTPVersion \ No newline at end of file + self assert: requestLine version = ZnConstants defaultHTTPVersion \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testReadingWithEntity.st b/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testReadingWithEntity.st index 4fef21d0..f4096864 100644 --- a/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testReadingWithEntity.st +++ b/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testReadingWithEntity.st @@ -8,9 +8,9 @@ testReadingWithEntity String crlf, '12345678'. request := ZnRequest readFrom: input asByteArray readStream. - self assert: request method = #GET. + self assert: request method equals: #GET. self assert: request hasHeaders. - self assert: request contentType = ZnMimeType textPlain. - self assert: request contentLength = 8. + self assert: (request contentType matches: ZnMimeType textPlain). + self assert: request contentLength equals: 8. self assert: request hasHeaders. - self assert: request entity contents = '12345678' + self assert: request entity contents equals: '12345678' diff --git a/repository/Zinc-Tests.package/ZnRequestTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnRequestTests.class/methodProperties.json index 03cbc09c..85f32100 100644 --- a/repository/Zinc-Tests.package/ZnRequestTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnRequestTests.class/methodProperties.json @@ -7,5 +7,5 @@ "testCookiesWriting" : "SvenVanCaekenberghe 3/4/2012 23:18", "testMergedFields" : "SvenVanCaekenberghe 1/7/2013 11:05", "testReading" : "SvenVanCaekenberghe 12/4/2010 13:34", - "testReadingWithEntity" : "SvenVanCaekenberghe 12/4/2010 13:35", + "testReadingWithEntity" : "SvenVanCaekenberghe 5/21/2013 22:17", "testUrl" : "SvenVanCaekenberghe 1/7/2013 09:09" } } diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEntityTooLarge.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEntityTooLarge.st new file mode 100644 index 00000000..98391a95 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEntityTooLarge.st @@ -0,0 +1,18 @@ +testing +testEntityTooLarge + self withServerDo: [ :server | | response client | + server maximumEntitySize: 1024. + self deny: server debugMode. + client := ZnClient new + url: server localUrl; + addPathSegment: #echo; + entity: (ZnEntity with: (ByteArray new: 1024 + 1)); + yourself. + response := client + post; + response. + client close. + self deny: response isSuccess. + self assert: response code equals: 400. + self assert: response contentType equals: ZnMimeType textPlain. + self assert: (response entity contents includesSubstring: 'ZnEntityTooLarge') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testError.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testError.st index c7efc915..462cbcc3 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testError.st +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testError.st @@ -1,15 +1,13 @@ testing testError - self - withServerDo: [ :server | - | url response | - self deny: server debugMode. - url := server localUrl - addPathSegment: #error; - queryAt: #message put: 'Test Error'; - yourself. - response := ZnEasy get: url. - self deny: response isSuccess. - self assert: response code equals: 500. - self assert: response contentType equals: ZnMimeType textPlain. - self assert: (response entity contents includesSubstring: 'Test Error') ] \ No newline at end of file + self withServerDo: [ :server | | url response | + self deny: server debugMode. + url := server localUrl + addPathSegment: #error; + queryAt: #message put: 'Test Error'; + yourself. + response := ZnEasy get: url. + self deny: response isSuccess. + self assert: response code equals: 500. + self assert: response contentType equals: ZnMimeType textPlain. + self assert: (response entity contents includesSubstring: 'Test Error') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testGzipCompressionAndChunking.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testGzipCompressionAndChunking.st new file mode 100644 index 00000000..99be52c4 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testGzipCompressionAndChunking.st @@ -0,0 +1,14 @@ +testing +testGzipCompressionAndChunking + self withServerDo: [ :server | | client | + server useGzipCompressionAndChunking: true. + (client := ZnClient new) + url: server localUrl; + addPathSegment: 'dw-bench'; + setAcceptEncodingGzip; + get. + self assert: client isSuccess. + self assert: client response hasContentEncoding. + self assert: (client response headers at: 'Content-Encoding') equals: 'gzip'. + self assert: client response hasTransferEncoding. + self assert: (client response headers at: 'Transfer-Encoding') equals: 'chunked' ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testHeaderLineTooLong.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testHeaderLineTooLong.st new file mode 100644 index 00000000..a7fd7e32 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testHeaderLineTooLong.st @@ -0,0 +1,17 @@ +testing +testHeaderLineTooLong + self withServerDo: [ :server | | response client | + self deny: server debugMode. + client := ZnClient new + url: server localUrl; + addPathSegment: #echo; + headerAt: 'X-Test' put: (String new: ZnConstants maximumLineLength withAll: $X); + yourself. + response := client + get; + response. + client close. + self deny: response isSuccess. + self assert: response code equals: 400. + self assert: response contentType equals: ZnMimeType textPlain. + self assert: (response entity contents includesSubstring: 'ZnLineTooLong') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testLocalUrl.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testLocalUrl.st index b20254d3..2518c758 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testLocalUrl.st +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testLocalUrl.st @@ -1,7 +1,6 @@ testing testLocalUrl - self - withServerDo: [ :server | - self assert: server localUrl scheme equals: #http. - self assert: server localUrl host equals: NetNameResolver loopBackName. - self assert: server localUrl port equals: server port ] \ No newline at end of file + self withServerDo: [ :server | + self assert: server localUrl scheme equals: #http. + self assert: server localUrl host equals: NetNameResolver loopBackName. + self assert: server localUrl port equals: server port ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testReadEvalPrint.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testReadEvalPrint.st new file mode 100644 index 00000000..4a1087c6 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testReadEvalPrint.st @@ -0,0 +1,12 @@ +testing +testReadEvalPrint + self withServerDo: [ :server | | x y result | + server delegate: ZnReadEvalPrintDelegate new. + x := 100 atRandom. + y := 100 atRandom. + result := ZnClient new + url: server localUrl; + addPathSegment: #repl; + contents: ('{1}+{2}' format: { x. y }); + post. + self assert: result asInteger equals: x + y ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testRequestLineTooLong.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testRequestLineTooLong.st new file mode 100644 index 00000000..2e748226 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testRequestLineTooLong.st @@ -0,0 +1,13 @@ +testing +testRequestLineTooLong + self withServerDo: [ :server | | url response | + self deny: server debugMode. + url := server localUrl + addPathSegment: #echo; + addPathSegment: (String new: ZnConstants maximumLineLength withAll: $X); + yourself. + response := ZnEasy get: url. + self deny: response isSuccess. + self assert: response code equals: 400. + self assert: response contentType equals: ZnMimeType textPlain. + self assert: (response entity contents includesSubstring: 'ZnLineTooLong') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testTooManyHeaders.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testTooManyHeaders.st new file mode 100644 index 00000000..c9e52c38 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testTooManyHeaders.st @@ -0,0 +1,19 @@ +testing +testTooManyHeaders + self withServerDo: [ :server | | response client | + self deny: server debugMode. + client := ZnClient new + url: server localUrl; + addPathSegment: #echo; + yourself. + client request headers unlimited. + 1 to: 256 do: [ :each | + client headerAt: ('X-Test-', each printString) put: each printString ]. + response := client + get; + response. + client close. + self deny: response isSuccess. + self assert: response code equals: 400. + self assert: response contentType equals: ZnMimeType textPlain. + self assert: (response entity contents includesSubstring: 'ZnTooManyDictionaryEntries') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testUrl.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testUrl.st index 195bbb4a..ce88c599 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testUrl.st +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testUrl.st @@ -1,18 +1,16 @@ testing testUrl - self - withServerDo: [ :server | - self assert: server url equals: server localUrl. - server - serverUrl: + self withServerDo: [ :server | + self assert: server url equals: server localUrl. + server serverUrl: (ZnUrl new host: 'zn.stfx.eu'; yourself). - self assert: server url scheme equals: #http. - self assert: server url host equals: 'zn.stfx.eu'. - self assert: server url port equals: server port. - server serverUrl: 'http://zn.stfx.eu:8080/zn'. - self assert: server url scheme equals: #http. - self assert: server url host equals: 'zn.stfx.eu'. - self assert: server url port equals: 8080. - self assert: server url path equals: 'zn' ] \ No newline at end of file + self assert: server url scheme equals: #http. + self assert: server url host equals: 'zn.stfx.eu'. + self assert: server url port equals: server port. + server serverUrl: 'http://zn.stfx.eu:8080/zn'. + self assert: server url scheme equals: #http. + self assert: server url host equals: 'zn.stfx.eu'. + self assert: server url port equals: 8080. + self assert: server url path equals: 'zn' ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnServerTests.class/methodProperties.json index 28d066e0..4fbe6f9c 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnServerTests.class/methodProperties.json @@ -9,11 +9,17 @@ "testEcho" : "SvenVanCaekenberghe 11/10/2012 17:42", "testEchoBinary" : "SvenVanCaekenberghe 8/23/2012 14:34", "testEchoLocalInterface" : "SvenVanCaekenberghe 8/23/2012 14:34", - "testError" : "SvenVanCaekenberghe 12/23/2012 18:20", + "testEntityTooLarge" : "SvenVanCaekenberghe 5/14/2013 12:59", + "testError" : "SvenVanCaekenberghe 5/14/2013 09:27", "testGetUnicodeUtf8" : "SvenVanCaekenberghe 8/23/2012 14:34", - "testLocalUrl" : "SvenVanCaekenberghe 1/4/2013 13:36", + "testGzipCompressionAndChunking" : "SvenVanCaekenberghe 5/19/2013 21:21", + "testHeaderLineTooLong" : "SvenVanCaekenberghe 5/14/2013 12:54", + "testLocalUrl" : "SvenVanCaekenberghe 5/14/2013 09:26", + "testReadEvalPrint" : "SvenVanCaekenberghe 5/15/2013 22:43", + "testRequestLineTooLong" : "SvenVanCaekenberghe 5/14/2013 12:53", "testSession" : "SvenVanCaekenberghe 11/10/2012 23:47", "testSessionExpired" : "SvenVanCaekenberghe 12/31/2012 16:44", "testSessionRoute" : "SvenVanCaekenberghe 12/31/2012 16:58", - "testUrl" : "SvenVanCaekenberghe 1/4/2013 13:39", + "testTooManyHeaders" : "SvenVanCaekenberghe 5/14/2013 12:53", + "testUrl" : "SvenVanCaekenberghe 5/14/2013 09:26", "withServerDo:" : "SvenVanCaekenberghe 3/12/2012 20:36" } } diff --git a/repository/Zinc-Tests.package/ZnStatusLineTests.class/instance/testReading.st b/repository/Zinc-Tests.package/ZnStatusLineTests.class/instance/testReading.st index 73f3ad46..9d7f749d 100644 --- a/repository/Zinc-Tests.package/ZnStatusLineTests.class/instance/testReading.st +++ b/repository/Zinc-Tests.package/ZnStatusLineTests.class/instance/testReading.st @@ -5,4 +5,4 @@ testReading statusLine := ZnStatusLine readFrom: string readStream. self assert: statusLine code = 200. self assert: statusLine reason = 'OK'. - self assert: statusLine version = ZnConstants defaultHTTPVersion \ No newline at end of file + self assert: statusLine version = ZnConstants defaultHTTPVersion \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnStatusLineTests.class/instance/testReadingWrongCode.st b/repository/Zinc-Tests.package/ZnStatusLineTests.class/instance/testReadingWrongCode.st index e1c1c8fe..219f268e 100644 --- a/repository/Zinc-Tests.package/ZnStatusLineTests.class/instance/testReadingWrongCode.st +++ b/repository/Zinc-Tests.package/ZnStatusLineTests.class/instance/testReadingWrongCode.st @@ -2,4 +2,4 @@ testing testReadingWrongCode | string | string := 'HTTP/1.0 1000 OK', String crlf. - self should: [ ZnStatusLine readFrom: string readStream ] raise: ZnUnknownHttpStatusCode \ No newline at end of file + self should: [ ZnStatusLine readFrom: string readStream ] raise: ZnUnknownHttpStatusCode \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testNextPutAll.st b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testNextPutAll.st new file mode 100644 index 00000000..88701783 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testNextPutAll.st @@ -0,0 +1,6 @@ +testing +testNextPutAll + | data result | + data := String new: 64 * 1024 withAll: $A. + result := String streamContents: [ :out | ZnUtils nextPutAll: data on: out ]. + self assert: result equals: data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingBinary.st b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingBinary.st index d8e7a67a..998912f6 100644 --- a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingBinary.st +++ b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingBinary.st @@ -8,4 +8,4 @@ testStreamingBinary out := WriteStream on: (ByteArray new: data size). ZnUtils streamFrom: in to: out size: data size. self assert: in atEnd. - self assert: out contents = data \ No newline at end of file + self assert: out contents = data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingBinaryWithoutSize.st b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingBinaryWithoutSize.st index e404ed1b..9e216418 100644 --- a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingBinaryWithoutSize.st +++ b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingBinaryWithoutSize.st @@ -8,4 +8,4 @@ testStreamingBinaryWithoutSize out := WriteStream on: (ByteArray new: data size). ZnUtils streamFrom: in to: out. self assert: in atEnd. - self assert: out contents equals: data \ No newline at end of file + self assert: out contents equals: data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingNonBinary.st b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingNonBinary.st index 5dc8562a..d1626123 100644 --- a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingNonBinary.st +++ b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingNonBinary.st @@ -8,4 +8,4 @@ testStreamingNonBinary out := WriteStream on: (String new: data size). ZnUtils streamFrom: in to: out size: data size. self assert: in atEnd. - self assert: out contents = data \ No newline at end of file + self assert: out contents = data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingNonBinaryWithoutSize.st b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingNonBinaryWithoutSize.st index f0d9bd9a..d2fae4c3 100644 --- a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingNonBinaryWithoutSize.st +++ b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testStreamingNonBinaryWithoutSize.st @@ -8,4 +8,4 @@ testStreamingNonBinaryWithoutSize out := WriteStream on: (String new: data size). ZnUtils streamFrom: in to: out. self assert: in atEnd. - self assert: out contents equals: data \ No newline at end of file + self assert: out contents equals: data \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUtilsTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnUtilsTests.class/methodProperties.json index 5401ebe6..2697fbb1 100644 --- a/repository/Zinc-Tests.package/ZnUtilsTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnUtilsTests.class/methodProperties.json @@ -6,6 +6,7 @@ "testCapitalizeString" : "SvenVanCaekenberghe 9/10/2010 20:09", "testHttpDate" : "PaulDeBruicker 04/10/2011 10:48", "testIsCapitalizedString" : "SvenVanCaekenberghe 9/10/2010 20:10", + "testNextPutAll" : "SvenVanCaekenberghe 5/22/2013 09:42", "testParseHttpDate" : "SeanDeNigris 5/10/2012 11:58", "testParseHttpDateAlternative1" : "SeanDeNigris 5/10/2012 11:58", "testParseHttpDateDashes" : "SeanDeNigris 5/10/2012 11:58", diff --git a/repository/Zinc-Tests.package/monticello.meta/version b/repository/Zinc-Tests.package/monticello.meta/version index 4673287b..9b69b8d3 100644 --- a/repository/Zinc-Tests.package/monticello.meta/version +++ b/repository/Zinc-Tests.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-Tests-SvenVanCaekenberghe.176' message 'Extended ZnClient>>#url: to accept the new user info (username and password) component of ZnUrl when present; ZnRequestLine>>#uri: now explicitely calls #enforceKnownScheme' id '7f40708a-33c1-4cb3-8957-db6b23816cca' date '30 January 2013' time '7:45:45.505 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.175' message 'Bugfix to ZnApplicationFormUrlEncodedEntity>>#readFrom: which failed when content-length was not specified (Thx Jan van de Sandt); new ZnEntityTests for reading ZnApplicationFormUrlEncodedEntities' id '56565a63-15b0-4062-82d5-725800c11e85' date '25 January 2013' time '2:47:24.096 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.174' message 'added various tests for new API' id '92273dff-bb51-4b91-a526-0c5f39f9e4eb' date '7 January 2013' time '12:38:50.389 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.173' message 'added ZnServer #url related tests' id '2fe714c5-3735-4840-a6bb-7b109ccd1719' date '4 January 2013' time '2:25:42.717 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.172' message 'added ZnServerTests>>testSessionRoute' id '8d883407-840d-4a32-8221-e93758c504c4' date '31 December 2012' time '5:06:47.057 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.171' message 'added ZnServerTests>>#testSessionExpired' id '0cd35ccf-f6aa-4a57-a86d-ad4621d720ca' date '30 December 2012' time '2:30:04.798 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.170' message 'added ZnSingleThreadedServer>>#handleRequestProtected: with a general and global error handler that normally returns an HTTP server error unless the server is in #debugMode' id '8b0821ef-543e-474c-95ca-5d0b3ad0e996' date '23 December 2012' time '6:28:14.974 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.169' message 'creation of Zinc-Character-Encoding-[Core|Tests] by moving various classes out of Zinc-HTTP' id '9f5b3683-d8f5-4b90-8579-64122e43c77e' date '16 December 2012' time '5:03:13.125 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.168' message 'introduction and usage of ZnCharacterEncodingError exception; rewrote ZnBufferedReadStream>>#upToEnd and ZnCharacterReadStream>>#upToEnd' id '6abe4a1e-6817-496f-8d12-25d3cc45b6b3' date '16 December 2012' time '4:36:01.26 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.167' message 'modified ZnByteEncoder to use its own byte to Unicode mapping tables; this includes the change that latin1 is no longer mapped to a null encoder' id '0eb9296d-eab5-44d0-b056-9d50e41cadbc' date '15 December 2012' time '8:09:56.235 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.166' message 'finished the implementation of ZnBase64Encoder' id 'e7069358-51b5-41f6-97ad-bebec08081fd' date '15 December 2012' time '2:11:39.373 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.165' message 'fixed a typo' id 'c60a5352-b989-40eb-83fc-7f8ceb3fb886' date '13 December 2012' time '12:00:17.455 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.164' message 'added ZnPercentEncoderTests' id '8fdfc39b-196f-4615-982c-5f975b491b32' date '13 December 2012' time '11:32:28.305 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.163' message 'reworked/simplified some ZnClient internals - removed the state concept and instance variable - removed the #resetRequestIfNeeded concept and method; added ZnClient>>#resetEntity; added ZnClient>>#isCreated and #isNotFound note: this might make some semantic differences for people heavily reusing ZnClient instances added 4 new ZnClient unit tests related to cover these reuse semantics; changed #getAfterPost to use #resetEntity' id '8c8fd681-8f99-4e41-80e9-8789835051c1' date '12 December 2012' time '10:43:20.553 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.162' message 'moved HierarchicalUrl>>#asZnUrl from Zinc-Resource-Meta-Core back to Zinc-HTTP' id '56f3e92b-ba18-4caf-a0aa-46ea7c99de47' date '11 December 2012' time '10:24:26.149 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.161' message 'moving ZnUrl, ZnMimeType and related support classes to a new, independent package Zinc-Resource-Meta-Core (and unit tests to Zinc-Resource-Meta-Tests); extended ZnUrl to allow for some simple file:// URLs' id 'bfc5fbbc-c275-42b7-a0d6-6015dd8fdb07' date '8 December 2012' time '9:16:06.659 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.160' message 'added ZnBufferedReadStream (from STON); extended ZnBufferedWriteStream (with #next:putAll:startingAt: logic); added tests for these' id 'ef953fdd-26e4-4288-8f5f-8a539c1a418e' date '30 November 2012' time '11:00:17.165 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.159' message 'extended ZnServerTests>>#testEcho; added ZnServerTests>>#testSession' id '797384ef-7668-4ff3-99d5-f23b8a8a3ed3' date '11 November 2012' time '8:15:49.321 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MarcusDenker.158' message 'Issue 6745: Failing tests related to Zinc http://code.google.com/p/pharo/issues/detail?id=6745 Issue 6052: would be good that TestAsserter uses TAssertable http://code.google.com/p/pharo/issues/detail?id=6052' id '9db8a49d-105e-4382-a2f8-8a3e8704aba0' date '28 September 2012' time '1:34:59.821 pm' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.157' message 'fix bogus String constants in ZnMagicCookie[Jar]Tests that held a now expired date by making the date dynamic ' id 'd7c893db-7635-4982-94c2-302e1651a99f' date '28 September 2012' time '12:48:58.862 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MarcusDenker.156' message 'Issue 6697: Zn+Zdc Update 2012-09-19 http://code.google.com/p/pharo/issues/detail?id=6697 Issue 6699: Share binding of metaclass methods http://code.google.com/p/pharo/issues/detail?id=6699 ' id 'a779cd3e-0816-4207-988b-31ddb71b2521' date '21 September 2012' time '1:50:14.367 pm' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.155' message 'removal of all classes in Zinc-HTTP-Deprecated - ZnClientOld - ZnFixedClient - ZnExtendedFixedClient - ZnUserAgent - ZnHttpClient - ZnUserAgentSettings as well as all their unit test classes' id 'c712aa03-035b-4ffd-86db-3eb0dae65eb1' date '5 September 2012' time '1:59:48.845 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.154' message 'changed maximumEntitySize concept from a normal class variable on ZnConstants to a dynamic/process-specific variable ZnMaximumEntitySize; added the option #maximumEntitySize to ZnServer' id '679b7cbd-8de2-4fc9-b7a9-76df542e5315' date '5 September 2012' time '1:22:20.17 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.153' message '#includesSubString: becomes #includesSubstring:' id '7b911610-eec7-422d-a994-4f089c5f1f09' date '27 August 2012' time '9:44:30.457 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.152' message 'fixed an offset bug in ZnUtils>>#streamFrom:to: (thx again, Chris Bailey) added ZnUtilsTests>>#testStreaming[Non]BinaryWithoutSize' id 'cadd39cb-ff17-4405-a56e-718a6d5e7c24' date '3 August 2012' time '10:51:05.644 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.151' message 'added new ZnChunkedReadStreamTests>>#testReadingBuffered to validate various fixes to ZnChunkedReadStream>>#readInto:startingAt:count: (thx Chris Bailey for reporting the problem)' id '3da15e83-c0ca-4066-a496-71d91393db01' date '2 August 2012' time '11:27:58.739 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.150' message 'Changed ZnStreamingEntity>>#readFrom: to no longer switch to non-binary - this was wrong anyway since no encoding was used' id 'f2e201da-d33e-4f34-b000-ebc8a5f705b0' date '13 July 2012' time '8:31:14.501 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.149' message 'added tests for convenience protocol to ZnUrl: - #withPathSegment[s]: #/ - #withQuery: #? #&' id '073d89ad-3cc3-40b1-92a3-fbb045bba864' date '9 July 2012' time '4:39:38.336 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MarcusDenker.148' message 'Issue 6269: Zinc Kill last usages of mac.com domain http://code.google.com/p/pharo/issues/detail?id=6269 Issue 6267: Spec-Widget new version http://code.google.com/p/pharo/issues/detail?id=6267 Issue 6266: Adding a missing method on TextInputField http://code.google.com/p/pharo/issues/detail?id=6266 Issue 6263: Spec-Layout new version http://code.google.com/p/pharo/issues/detail?id=6263 Issue 6273: Fixing monticello mocks http://code.google.com/p/pharo/issues/detail?id=6273' id 'e5d9431a-de69-46da-92b7-0507bcaae82d' date '4 July 2012' time '11:01:31.049 pm' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-MarcusDenker.147' message 'Issue 6259: DataStream is still there http://code.google.com/p/pharo/issues/detail?id=6259 Issue 6255: Zinc Pharo Conference update with FileSystem support http://code.google.com/p/pharo/issues/detail?id=6255 Issue 6223: FileLocator and FileRerernce have extension from File Package http://code.google.com/p/pharo/issues/detail?id=6223' id 'e8f91da3-98a4-4e7e-8468-b9e1ab8349d1' date '4 July 2012' time '4:16:31.525 pm' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.146' message 'introduction of the Zinc-FileSystem-Legacy package (including the new ZnFileSystemUtils class) to deal with pre/post FIleSystem introduction in Pharo 2.0 - this is the old code' id '2c2b99bc-5d6d-4aea-a49a-8c797685a71f' date '3 July 2012' time '1:49:22.963 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.145' message 'Replace now defunct references to http://homepage.mac.com/svc/Zinc-HTTP-Components/small.html with http://zn.stfx.eu/zn/small.html' id '6d633387-5bcc-422d-980c-b2e92f6bc08a' date '2 July 2012' time '3:33:36.489 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.144' message 'added tests for multiline/continuation header line parsing to ZnHeadersTests; added some ZnDigestAuthenticatorTests' id '5fd44833-78c7-4a88-9c52-d0f4b0737f76' date '22 May 2012' time '10:50:47 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.143' message 'replaced direct usage of ZnValueDelegate with indirect usage through the #onRequestRespond: method' id '9972b054-538c-4edc-9203-b0c82d0ef62b' date '14 May 2012' time '5:21:23 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.142' message 'added ZnStaticFileServerDelegateTests for - expiration - cache-control - if-modified-since, not-modified' id '9f8498a3-c576-4844-a0f5-bafc5c5cbeca' date '14 May 2012' time '11:11:41 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.141' message 'merged ZnUtils class>>#parseHttpDate: improvements by Sean DeNigris' id '13c0a808-d2be-4e91-a5ed-b7aea00412c1' date '10 May 2012' time '8:31:37 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SeanDeNigris.140' message 'Fix the HTTP date parsing to comply with the HTTP/1.1 standard. See discussion at http://forum.world.st/Parsing-HTTP-dates-td4623688.html' id 'ea4710db-8f89-4b77-bc48-c268f42d6961' date '10 May 2012' time '12:22:56.663 pm' author 'SeanDeNigris' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.139' message 'added ZnClientTests>>#testUploadSmallDocument' id 'f3dd9dc9-b488-4211-8b1d-c61620c1cfb0' date '9 May 2012' time '9:58:54 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.138' message 'added ZnCharacterStreamTests' id '08fa8343-de91-467d-8fab-35b090b4443d' date '3 May 2012' time '10:16:27 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.137' message 'added #match: and #contents to ZnChunkedReadStream and ZnLimitedReadStream; added some convenience methods to ZnCharacterEncoder: #encodeString: #decodeBytes: and #encodedByteCountForString:' id '61f9a691-603d-4aee-892c-4fe74f0a7ee2' date '2 May 2012' time '4:44:58 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.136' message 'ZnClientTests>>#testDownloadSmallHTML follow switch from ZnClient>>#downloadToFileNamed: to ZnClient>>#downloadTo:' id 'b1c212b4-6b1c-45b1-88d1-5410f135de5e' date '26 April 2012' time '4:49:07 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.135' message 'added test for ZnClient>>#downloadToFileNamed: ' id '364763a4-b7d7-4d0e-b66b-7e117e9194f3' date '25 April 2012' time '9:21:15 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.134' message 'timezone offsets should be Durations' id '26cfd348-8c5f-49ef-879b-45eeb8b41a23' date '23 April 2012' time '3:42:50 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-PaulDeBruicker.133' message 'Added tests for the ZnResponse>>#isError method I added to Zn' id '237a106b-ccbd-4183-8aaf-27439ebd5c98' date '19 April 2012' time '5:03:29.72 pm' author 'PaulDeBruicker' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.132' message 'renamed ZnServer>>#interface[:] to ZnServer>>#bindingAddress[:] following a suggestion by Norbert Hartl, Thx!' id 'a8ccf290-5116-475d-88c7-eb635daf6fe4' date '13 April 2012' time '1:21 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.131' message 'added technology to allow entities to be read binary even when they are textual, thus disabling Zn''s normal decoding behavior; this is what Seaside expects (as Seaside does its own conversions); added ZnEntityReader>>#[is]Binary; added ZnMessage[class]>>#readBinaryFrom: added ZnEntity class>>#readBinaryFrom:usingType:andLength: added ZnSingleThreadedServer>>#reader[:] to allow customizing entity reading' id '80c5b50f-d5d8-455e-9b21-c581f6ca84b7' date '7 April 2012' time '6:30:35 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.130' message 'rewrote all tests that use ZnServer to use #withServerDo: and/or a randomized port (between 1701 and 1710) to mitigate problems when running 2 Zn test suits concurrently on the same machine' id '7ba47490-c194-44a8-9252-f5a99246cd54' date '12 March 2012' time '10:26:51 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.129' message 'added the option to restrict ZnServers to only listen on a specific interface; added Zn[SingleThreaded]Server>>interface[:]; added ZnNetworkingUtils [class]>>#serverSocketOn:interface added ZnServerTests>>#testEchoLocalInterface' id '7d187299-518a-4f64-b855-d602b48fcc02' date '12 March 2012' time '7:52:33 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.128' message 'added some extra API to ZnMimeType to manipulate parameters and charSets' id '89affdf2-4eb5-4f15-8ff3-7b994c4e91b9' date '6 March 2012' time '11:11:39 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.127' message 'added 2 cookie related tests' id '3fdb3447-f066-4fa1-b5bd-58abcff73cfa' date '4 March 2012' time '11:21:57 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MarcusDenker.126' message 'Issue 5299: Yet another Zn update http://code.google.com/p/pharo/issues/detail?id=5299' id '1f3a4aa8-996f-4162-b79a-0ff3fab1918f' date '17 February 2012' time '3:13:18 pm' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-StephaneDucasse.123' message '- Issue 5157: Finder > Class > right-click > Hierarchy opens not on Class but on FinderClassNode. Tx Benjamin van Ryseghem. http://code.google.com/p/pharo/issues/detail?id=5157 - Issue 5151: Recategorization of PanelMorph. Thanks Benjamin van Ryseghem. There is no useless cleans. Even small steps are cool and important. http://code.google.com/p/pharo/issues/detail?id=5151 - Issue 5154: It would be great to have a setting to allow the Debugger to open centered and be 3/4 of screen. Thanks Alain Plantec. http://code.google.com/p/pharo/issues/detail?id=5154 - Issue 5148: LimitNumberOfEntriesInZnMultiValueDictionary. Thanks Sven van Caekenberghe. http://code.google.com/p/pharo/issues/detail?id=5148 ' id 'a7f69ceb-4c9b-40c3-abe1-5cc680f4886b' date '7 January 2012' time '7:13:43 pm' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-ZincUpdate.122' message '- Issue 5127: Zinc update http://code.google.com/p/pharo/issues/detail?id=5127 - last bit of Issue 4688: progress bar disappears on image save http://code.google.com/p/pharo/issues/detail?id=4688' id '54546963-f9f6-42ab-a1d8-3d4fb9f878d9' date '25 December 2011' time '11:02:04 pm' author 'ZincUpdate' ancestors ((name 'Zinc-Tests-StephaneDucasse.121' message '- Issue 5117: MNU: Transcripter class>>open. Thanks vpnbecmann. http://code.google.com/p/pharo/issues/detail?id=5117 - Issue 5122: ZnUpdate-Dec-20. Thanks sven van caekenberghe. http://code.google.com/p/pharo/issues/detail?id=5120' id '3cf2343f-1556-4ae0-ae03-26f2afc23899' date '25 December 2011' time '11:47:57 am' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-MarcusDenker.119' message 'Issue 5063: Zinc uses default encoding of utf-8 when encoding url safe encoded strings http://code.google.com/p/pharo/issues/detail?id=5063' id '7827ec5e-187b-4488-8d60-dba014f52080' date '9 December 2011' time '1:18:03 pm' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-MarcusDenker.116' message 'Issue 4998: ContextPart>>#runUntilErrorOrReturnFrom: (for testing) http://code.google.com/p/pharo/issues/detail?id=4998 Issue 4994: Two failing test in ProcessTest http://code.google.com/p/pharo/issues/detail?id=4994 Issue 5014: zn updates http://code.google.com/p/pharo/issues/detail?id=5014' id '20189c38-b14d-4878-a8a3-3c104ad67b78' date '25 November 2011' time '4:03:30 pm' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-StephaneDucasse.115' message 'ZnTests now :)' id '71d09a5d-c10e-412e-b9e2-2db68cbc2ac5' date '19 November 2011' time '10:18:54 am' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.114' message 'renamed ZnNeoClientTests -> ZnClientTests' id '709cd18e-4550-4b4f-ac0f-755c9d923271' date '8 November 2011' time '10:34:14 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.113' message 'renamed ZnClientTests -> ZnClientOldTests' id '61688dd0-20a0-4ac5-9ea9-27262f3ea53d' date '8 November 2011' time '10:15:11 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.112' message 'added ZnNeoClientTests>>#testGetSmallHTMLStreaming' id 'a097c21c-05df-480d-8afe-e8f5fee222a2' date '8 November 2011' time '9:07:05 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.109' message 'Following deprecation of instance creation (#new) of ZnFixedClient (and ZnExtendedFixedClient) and ZnUserAgent (and ZnHttpClient): kept all tests in ZnFixedClientTests, ZnUserAgentTests, ZnHttpClientTests and ZnCredentialsTests, but running under #ignoringDeprecation: ZnDispatcherTests now using ZnNeoClient directly' id '1da42667-075d-41cb-bbb0-94acd4038cb2' date '4 October 2011' time '2:25:57 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.108' message 'added basic ZnNeoClient>>#signalProgress support' id '37f5e20a-957a-40db-892a-722cd21ee1a5' date '4 October 2011' time '1:48:29 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.107' message 'made ZnClient deprecations proceedable and added a test for this behavior' id '016ea4f4-0161-4086-9422-8619a4ef0750' date '3 October 2011' time '2:44:51 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.106' message 'added ZnNeoClientTests>>#testGetAfterPost to test ZnNeoClient>>#resetRequestIfNeeded logic' id 'e7748414-dfa0-4ab8-8291-13e347971e78' date '23 September 2011' time '2:59:26 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.105' message 'extended ZnNeoClientTests>>#testRedirect with a resume of ZnTooManyRedirects' id 'f62dea54-3bc1-4b52-b1a2-3cbf8764afa3' date '19 September 2011' time '1:31:17 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.104' message 'added ZnNeoClient redirect tests' id 'c324d699-9454-4c3a-acd9-4d851de45ea9' date '19 September 2011' time '11:10:41 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.103' message 'added ZnNeoClient>>#setIfModifiedSince: and test' id '9d840776-d54a-46cb-9d7a-2223c92b5559' date '17 September 2011' time '8:43:05 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.102' message 'introducing ZnEasy to take over the class side functionality of ZnClient; ZnClient class side protocol being deprecated; renamed ZnClientTests to ZnEasyTests' id '65352f99-bcf8-45de-942b-d39f82882e34' date '15 September 2011' time '8:44:02 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.101' message 'patch the crippled ZnResponseTests>>#testSlashdotGzipChunked test even further; note: this really has to be rewritten altogether' id 'd7fedf37-3513-4106-b9d3-23e4c9e8e3bf' date '13 September 2011' time '10:20:10 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.100' message 'added tests for ZnUtils class>>#parseHttpDate: ' id '27156429-e7ca-4b20-b91d-479133d69751' date '13 September 2011' time '11:51:53 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.99' message 'added ZnNeoClientTests>>#testQueryGoogle' id '151e6ec9-94ac-45a8-b244-f4fc2731abc2' date '4 September 2011' time '7:59:50 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.98' message 'improved ZnNeoClientTests code a bit' id 'eaa2045b-0c32-4b32-882e-ab9051c0243b' date '31 August 2011' time '10:07:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.97' message 'added ZnNeoClientTests>>#testCookies; follow API changes related to cookies' id '946371f2-1bc4-40fa-b484-545baf59bcd6' date '30 August 2011' time '10:54:45 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.96' message 'now using the #contentReader option in ZnNeoClient>>#testGetGeoIP' id '6ead5c52-6b4d-4e30-9cc0-dddbc313a396' date '19 August 2011' time '5:29:21 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.95' message 'implemented ZnNeoClient>>#head ' id 'b3e73bcf-0d37-4e73-81d3-5c96251a8b63' date '18 August 2011' time '1:57:45 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.94' message 'extended ZnNeoClient with #ifFail:, #enforceHttpSuccess, #enforceAcceptContentType and retry behavior' id '9620aef4-bb7b-4f62-9e83-36c0fab74756' date '17 August 2011' time '9:43:26 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.93' message 'added ZnMimePart class>>#fieldName:entity: and #fieldName:fileNamed: added ZnNeoClient timeout option, more url building api, support for applicationFormUrlEncoded and multiPartFormData encoded entities for post/put' id 'ad46ba6d-e503-4ca7-a440-5328e3cc1bc3' date '17 August 2011' time '2:25:20 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.92' message 'added ZnNeoClient>>#testGetGeoIP' id '9d9c4ca4-4520-42d2-891f-bbd5ecbfc0a8' date '12 August 2011' time '2:10:32 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.91' message 'added ZnNeoClientTests' id 'ae555b6a-c685-4316-adb5-a74bf82d1428' date '12 August 2011' time '1:52:32 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.90' message 'added various tests to ZnUrlTests related to default scheme/port issues' id '21395d2e-5782-496e-a4e9-8296befc55c5' date '11 August 2011' time '3:30:38 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-DamienPollet.89' message 'Fix typo in exception names.' id 'bb1698f3-5db3-4191-b078-50d52d3ab887' date '4 August 2011' time '2:22:33 pm' author 'DamienPollet' ancestors ((name 'Zinc-Tests-StephaneDucasse.88' message '- Issue 4520: Zinc update http://code.google.com/p/pharo/issues/detail?id=4520 ZnDefaultServerDelegate>>#echoRequest: added option to delay the response to /echo with a specified number of seconds, as in echo?delay=60 added ZnSingleThreadedServer>>#onRequestRespond: convenience method implemented client side support for If-Modified-Since and Not Modified: - added ZnRequest>>#setIfModifiedSince: - refactored ZnMessage>>#readFrom to call #readEntityFrom: - overwritten ZnResponse>>#readEntityFrom: to take special no content response into account - extended ZnUtils class>>#httpDate: to accept any argument that understands #asTimeStamp ' id 'bb7a5fd9-7179-4fd1-b667-bcca7461b347' date '14 July 2011' time '12:20:38 pm' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-StephaneDucasse.85' message '- Update Zinc fixing support for HTTP proxies (thanks Alexandre Bergel for reporting this) requests to localhost are excluding from being proxied - ZnRequestLine>>#writeOn: now outputs absolute URLs when proxying - added ZnNetWorkingUtils class #isProxySet #shouldProxyUrl: and #httpProxy - added ZnUrl>>#isLocalHost - changed ZnUrl>>#host: to lowerCase its argument. - Fix methodClass - Issue 4237: Few fix for Settings. Thanks Benjamin van Ryseghem. - Issue 4235: Selection update. Thanks Benjamin van Ryseghem.' id '84becf3d-e476-48be-902e-90e2c51805b4' date '16 May 2011' time '7:05:29 pm' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-StephaneDucasse.78' message '- Issue 4130: Zinc should be added to core. Thanks sven van caekenberghe.' id '230e4d43-b504-43f5-a2d3-461e6c28ac02' date '12 May 2011' time '6:52 pm' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.77' message 'rewrote ZnHTTPSocketFacade class>>#entendURL:withArguments: to be compatible with HTTPSocket class>>#argString: (Thanks Esteban Lorenzano); added ZnSocketFacadeTests>>#testExtendUrlWithArgs' id '367e5a56-7e1a-4387-a3af-298cd651e876' date '30 April 2011' time '8:56:05 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.76' message 'small fix to ZnUrl>>#printPathOn: to deal with cases where forward slashes are encoded in URLs (Thanks, Jan van de Sandt for pointing this out); added ZnUrlTests>>#testEncodedSlash to cover these cases' id '0013f47d-6076-4d1d-a64e-0f29049dd527' date '17 April 2011' time '10:33:49 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.75' message 'attempt to make ZnLogSupportTests>>#testLogEvent a bit less silly (take higher resolution clocks into account)' id '54c6a29b-3155-46f9-a6ac-495af44a98f8' date '13 April 2011' time '12:24:50 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-PaulDeBruicker.74' message 'For portability to Gemstone I changed the declaration of ByteArrays from x:=#[98 99]. to x:=#(98 99) asByteArray and Unicode characters from x:=Unicode value: 16r00A2. to x:= 16r00A2 asCharacter. Now the same set of tests load and run safely in Gemstone and Pharo' id '2fc28b34-8196-4cdb-8aac-7029109b4e6f' date '10 April 2011' time '11:15:09 am' author 'PaulDeBruicker' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.73' message 'added ZnLogSupportTests for minimal testing of the new logging framework' id 'a2b7de93-f7ac-437e-bd43-ea9b32528adb' date '29 March 2011' time '4:50:53 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.72' message 'bugfix: it turns out that String>>#base64Encoded introduces newlines which we definitively do not want when doing Basic HTTP Encoding for example; introduced ZnUtils class>>#encodeBase64: to do the right thing and invoke Base64MimeConvertor with the #mimeEncode: multiLine: false; replaced all usages (added a #decodeBase64: for orthogonality); added a unit test to catch this ' id 'd922fbf4-127c-44c5-ac37-64e0e6397487' date '21 March 2011' time '8:50:58 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.71' message 'introduced ZnUnknownScheme exception' id '466c6bd3-e4b7-4cac-acc3-873cd1abd256' date '18 March 2011' time '1:32:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.70' message 'added multiple tests for ZnParseError hiearchy ' id 'd27b7580-5689-4262-9992-415b57e4e3c6' date '28 February 2011' time '4:00:39 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.69' message 'added to ZnLimitedReadStreamTests and ZnEntityReaderTests so that implemented ZnLimitedReadStream>>#next:into: has coverage' id '7d38a658-e074-43a9-9041-16050de2decc' date '21 February 2011' time '11:33:19 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.68' message 'changed the Pharo URL to http://www.pharo-project.org' id '66a414d0-c398-489f-b43a-0e8a4cc7374c' date '31 January 2011' time '1:59:26 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.67' message 'modified ZnEntityTests>>#testMultiPartFormDataWriteRead to test for proper content length behavior' id '18c512c0-687e-419f-9d59-7f08b9c22031' date '27 January 2011' time '5:18:41 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.66' message 'added ZnCharacterEncoderTests>>#testLatin2Encoder' id 'd2818b21-daca-4ebc-a624-2dbe1fc325dd' date '25 January 2011' time '1:49:18 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.65' message 'added ZnUserAgent & ZnHttpClient #testRelativeRedirect tests' id '137f30b0-2c23-4613-ac81-07be5650356c' date '14 January 2011' time '10:04:09 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.64' message 'tracking API changes; added ZnMultiValueDictionaryTests' id '822ad9e0-fdca-4c5c-8508-336ce44da1ea' date '12 January 2011' time '2:04:23 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.63' message 'split of ZnNetworkingUtils from ZnUtils to separate related functionality (Thx S.Ducasses)' id '64f22bc9-32f7-4cb4-8e38-ba7ff4013c12' date '7 January 2011' time '7:53:10 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.62' message 'introduced #asZnMimeType on ZnMimeType, MIMEType & String to replace ZnUtils class>>#asMimeType: which was removed' id '1ef05e59-9f86-41b2-ab10-9a8787168d3b' date '4 January 2011' time '8:04:59 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.61' message 'massive migration from builtin Url to ZnUrl; added asZnUrl to String and Url ' id 'c469756f-c232-4f60-8720-75ec3ea4db3f' date '4 January 2011' time '3:34:33 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.60' message 'first version of ZnUrlTests class' id 'f8383a39-97fb-4d91-ab22-7c4294f177b4' date '4 January 2011' time '12:23:12 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.59' message 'switched to the idiom "self assert: server isRunning & server isListening" to test for a running / responsive server in unit tests' id '8f6cb988-82fb-40a6-8d25-48f1908eba95' date '15 December 2010' time '9:45:30 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.58' message 'fixed a bug in ZnStringEntity encoder initialization; removed Transcript printing from ZnCredentialTests and ZnUserAgentTests' id '236c9006-952a-48f9-b69a-f02512688d59' date '14 December 2010' time '12:24:17 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.57' message 'ZnDefaultServerDelegate now generates the Unicode test page so we can delete ZnUnicodeTestServerDelegate' id 'fd1141a1-2056-48e5-81a6-e84f2f254d4e' date '10 December 2010' time '3:55:15 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.56' message 'added experimental ZnBufferWriteStreamTests' id '42334358-1af8-4f29-a658-4afdc51f2b09' date '8 December 2010' time '10:22:11 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.55' message 'some more comment improvements' id 'be04ece0-6dfd-427a-bf2b-2af8b4424e43' date '7 December 2010' time '3:23:23 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.54' message 'renamed ZnMagicCookie[Jar] to ZnCookie[Jar]' id '4894f9a3-97fc-4860-8894-7c1d0cb5e2cc' date '7 December 2010' time '12:02:47 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.53' message 'renamed category of all tests from ''Zinc-Tests-New'' to ''Zinc-Tests''' id 'cb19cbc7-b0c1-464a-ae28-d18aa227edf6' date '6 December 2010' time '9:38:17 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.52' message 'removed all Zinc-Tests-Old categorized classes from the Zinc-Test package (these will be moved to a new MC package called ''Zinc-Old'')' id '4b6e5436-8c56-4a42-8601-357e7a6639d1' date '6 December 2010' time '5:28:09 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.51' message 'added ZnClientTests>>#testPostUnicodeUtf8' id '55aaa0b5-e2a5-43e1-bd5a-5d7aaa0d394f' date '6 December 2010' time '3:17:18 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.50' message 'renamed class ZnNewStringEntity to ZnStringEntity' id '08896c90-59c8-42e6-b5d4-56f1fd290b21' date '6 December 2010' time '1:50:16 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.49' message 'added ZnServerTests>>testGetUnicodeUtf8' id 'f1246875-dadc-4c73-af8a-1cd42e266504' date '6 December 2010' time '1:13:44 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.48' message 'large changeset: switch from ZnStringEntity to ZnNewStringEntity, now using binary socket streams on server, all with the goal of proper UTF-8 support; added various tests for binary reading/writing and for tracking protocol/api changes ' id '40094644-090b-4431-ac51-6deaca8fe30c' date '4 December 2010' time '2:17:39 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.47' message 'replace all direct references to ZnStringEntity and ZnByteArrayEntity with ZnEntity facade invocations ' id '58f7acc6-2ab5-40c7-b5fc-c09497f9434e' date '3 December 2010' time '2:08:40 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.46' message 'added some tests to ZnMimeTypeTests and ZnEntityTests for UTF-8 encoding' id '40b0fe72-bb8e-4346-ab92-c65c3dda2ca2' date '2 December 2010' time '1:51:41 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.45' message 'added ZnCharacterEncodingTests>>#testUTF8EncoderAuto' id 'b018cb8e-29f5-4aa0-8aec-17b26b968377' date '30 November 2010' time '1:50:29 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.44' message 'introduction of ZnCharacterEncoderTests' id 'bd6db570-c0cd-444a-8a51-9534201d3185' date '30 November 2010' time '12:28:31 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.43' message 'added ZnUnicodeTestServerDelegate (not yet in units tests)' id '8e9b6cef-d243-43c3-9ea5-517b54c1089a' date '20 October 2010' time '10:41:54 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MattKennedy.42' message 'Added ZnHttpClientTests>>testGetMultParam for coverage of ZnHttpClient>>parameterAt:add:' id 'a4c74476-3361-422a-8425-37464bf5b8e5' date '5 October 2010' time '5:40:11 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.41' message 'added elementary test for ZnMultiPartFormDataEntity and ZnMimePart' id 'c829d4b3-3ff7-46e0-9787-94460133ef95' date '5 October 2010' time '8:34:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MattKennedy.40' message 'Added ZnHttpClientTests' id 'af1a7ffc-c4a7-4c84-979a-0563cc60833a' date '1 October 2010' time '10:32:21 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.39' message 'Modified ZnCredentialTests Digest authentication tests to answer clearly if MD5 support is absent. Squeak 4.1 default image is missing the methods HTTPSocket uses for MD5, so not sure if it''s there out of the box.' id '3ad9ef4f-3551-4fa8-adad-ee219534c69b' date '1 October 2010' time '5:47:36.817 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.38' message 'Added test cases for ZnCredentialTests for erroneous credentials. Test case in ZnUserAgent for error handler.' id '8285ba9e-2eaf-4eaa-85c5-f40376db3644' date '1 October 2010' time '2:45:51 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.37' message 'Added ZnCredentialTests>>testZnServerBasicAuthRealm to test custom realm names in server authenticator. Modified ZnCredentialTests>>testDigestAuthorization to use ZnServer now with ZnDigestAuthenticator.' id 'eeff8920-9775-47e2-95ac-fac88443cdd4' date '30 September 2010' time '5:38:01 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.36' message 'Removed stray inspect sender from ZnCredentialTests>>testDigestAuthorization' id '48fdd73c-85be-476d-a74d-4548ccd40890' date '30 September 2010' time '12:29:53 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.35' message 'tracking API changes for basic authentication' id 'bcb08816-6c72-45b1-84f8-4c893556fdc5' date '30 September 2010' time '4:35:39 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MattKennedy.34' message 'Added ZnCredentialTests>>testDigestAuthorization. Requires an external web server URL to call to in order to work at present.' id 'ea944c4a-b1b5-45a4-995f-04c70d58b5b8' date '29 September 2010' time '5:19:35 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.33' message 'Added ZnCredentialsTests.' id '929d376a-4fb4-4c24-88fa-bc6272eeb0bf' date '29 September 2010' time '12:57:38 am' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.32' message 'Added ZnMagicCookieTests, ZnMagicCookieJarTests, ZnUserAgentSessionTests, and ZnUserAgentSettingsTest Added ZnUserAgentTests>>testCookieAt.' id '16f451aa-8b83-47d1-9db4-6887b5aa3aba' date '28 September 2010' time '4:40:15 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.31' message 'Added ZnUserAgentTests>>testFollowRedirect' id '561fdc97-0599-4a00-871d-46522f3e7253' date '28 September 2010' time '1:57:41 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.30' message 'apparently Slashdot.org is not always chunked/gzip encoded, too bad' id 'dd8e5fe4-059a-4f8e-815b-1c3111c9215b' date '28 September 2010' time '4:01:02 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.29' message 'added a simple test for ZnFixedClient' id '371b1c05-bea0-40ec-bd07-c2e4da5100a8' date '28 September 2010' time '2:24:23 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.28' message 'Merging Matt Kenedy''s code: Added ZnUserAgentTests' id 'a50cc91b-c235-4762-b0bb-2560f604e36f' date '27 September 2010' time '11:37:18 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MattKennedy.27' message 'Added ZnUserAgentTests' id '09d2df49-71c2-48e0-a56a-fa0e6f74bd4b' date '27 September 2010' time '3:11:11 pm' author 'MattKennedy' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.26' message 'added tests for ZnLimitedReadStream, ZnChunkedReadStream and ZnLineReader; added functional test ZnResponseTests>>#testSlashdotGzipChunked ' id '72a36bfb-859a-4b5d-b0fb-7728800f168e' date '27 September 2010' time '7:57:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.25' message 'added ZnEntityReader tests #testChunked and #testChunkedWithExtraHeaders' id '7250940a-d71a-4783-b55d-b4f2a57f11c5' date '26 September 2010' time '8:11:26 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.24' message 'introduction of ZnEntityReader helper object; added some more operations to ZnFixedClient; some API cleanup' id 'a6469ddc-386c-4e3b-9c18-fd55df11db9c' date '25 September 2010' time '11:15:49 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.23' message 'added some elementary ZnRequest reading tests' id 'd16e9c4f-5628-490a-b692-616f907d312f' date '25 September 2010' time '11:14:29 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.22' message 'added basic ZnClient PUT, POST & HEAD methods' id 'da53c39e-2566-4bd1-9f44-4e232d54b48e' date '21 September 2010' time '1:00:24 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.21' message 'Renamed category with old code to Zinc-Test-Old' id '7048013c-a76b-475b-ad43-349299dddb50' date '19 September 2010' time '6:45:29 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.20' message 'following some Lint advice' id '57d98003-f5c0-4a16-b385-2484086dbe67' date '17 September 2010' time '4:15:57 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.19' message 'improved test coverage: added tests to ZnUtilsTests, ZnResponseTests and ZnMimeTypeTests; renamed ZnHTTPMethodTests to ZnOldHTTPMethodTests ' id 'e2349506-4ce2-46fb-9969-9148325d6d65' date '17 September 2010' time '3:47:25 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.18' message 'fixing the test (thx http://hudson.lukas-renggli.ch/job/Zinc/ for catching this, it worked in my image)' id '65d1cb02-1463-4ed8-9f38-cfe92e124cef' date '16 September 2010' time '11:50:54 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.17' message 'added some asserts to ZnServerTests to catch the situation where the server port is not available.' id '29841272-e167-4858-973a-3d4bf4a3f266' date '16 September 2010' time '11:39:51 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.16' message 'ZnStatusLine and ZnRequestLine now handle their own crlf line ending (see #readFrom: and #writeTo:)' id '700d65a9-563e-43b2-b67b-dafc062ce473' date '15 September 2010' time '8:24:48 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.15' message 'fixed ZnMimeType parser dependency on Grease #trimBoth' id 'c6c44454-82e2-4e4a-92b2-af8a446611c4' date '15 September 2010' time '9:59:55 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.14' message 'fixing ZnHTTPSocketFacade>>#httpPut:to:user:passwd: semantics; added ZnMessage #head: #post and #put; added ZnHeaders>>#removeKey:[ifAbsent:] ; allowed for missing content-type when reading entities; enforcing content-length header to be string in #acceptEntityDescription: ' id 'b8cc69ee-4ee8-4669-b1c9-0ecc06974d8b' date '14 September 2010' time '3:12:30 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.13' message 'added ZnHTTPSocketFacade>>#testPut' id 'f60e0f04-bb28-4e28-9081-30d1488a510d' date '14 September 2010' time '3:08:25 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.12' message 'ZnHTTPSocketFacade: adjusting semantics ' id 'aad4ed72-9c44-4f33-b11f-85ab3c74fe74' date '14 September 2010' time '1:28:08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.11' message 'first complete implementation of (new) ZnHTTPSocketFacade (incomplete tests)' id '0e442350-2cef-483d-93ed-77f7e3c85f53' date '13 September 2010' time '10:31:39 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.10' message 'added support for server side basic authentication' id '3483f716-801a-4c1d-acae-dd2a02bd2940' date '13 September 2010' time '1:55:03 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.9' message 'added support for client side basic authentication' id '0181a1a0-a07e-42dd-8d81-dbf6c5fc89e2' date '12 September 2010' time '8:35:10 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.8' message 'added some tests related to entities and query parsing' id '4b2806bd-c3cf-41a0-b14e-35acb7467533' date '12 September 2010' time '11:29:43 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.7' message 'added header name normalization; added optional multi-valued header values; added optional header value merging' id '753b4898-f9c4-4b17-928d-cd33702a92de' date '10 September 2010' time '9:06:43 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.6' message '1st primitive but working ZnServer' id 'b1a9a8ed-1955-4370-a88a-8e4eacaea787' date '8 September 2010' time '11:06:18 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.5' message 'ZnClient #get: and #getJpeg: now work for normal situations' id '6a7d2dc3-b759-4b91-8581-7d03a7d32012' date '7 September 2010' time '8:04:18 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.4' message 'Started the Zinc-Tests-New category; not much to see yet' id 'd51b0a36-ae16-4b95-bcf2-50dbc0855a01' date '6 September 2010' time '11:06:51 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.3' message 'removed old bogus test; added 1st functional test' id '52a21560-c504-4466-aa7d-0264cd8a4265' date '1 September 2010' time '7:52:23 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.2' message 'Renamed HC HTTP Client to Zinc HTTP Components; Renamed all classes to use Zn namespace prefix' id '83eb4cfc-4a78-4e11-b8d5-29bccf1dd8ba' date '1 September 2010' time '7:14:14 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.1' message 'Renamed HC HTTP Client to Zinc HTTP Components; Renamed all classes to use Zn namespace prefix' id 'da047f84-cace-4fa8-971b-366c26046539' date '1 September 2010' time '5:29:46 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.84' message 'added ZnUrlTests>>#testLocalHost' id '7cf44874-99c6-43b8-949e-74ae2d94d2b2' date '13 May 2011' time '2:14:24 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-NickAger.83' message 'tests updated to reflect cookie refactoring in Zinc-HTTP-NickAger.158' id '3e8391dd-bdbe-4fbe-8e08-98fe89387c59' date '10 May 2011' time '11:40:10 am' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.82' message 'refactored ZnResponse tests to use new ZnStatusLine creation constants' id '164025a5-c6c8-4e89-be63-963fdc41b226' date '10 May 2011' time '9:14:28 am' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.81' message 'added ZnResponseTests>>#testCookie' id 'a8baa8f0-6812-4091-a6d2-fc5e29e503a8' date '10 May 2011' time '8:38:35 am' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.80' message 'added tests for: Request cookie accessor Response cookie setter' id 'ce58e3e6-2e8c-4864-a7bd-ad60199fb2ba' date '10 May 2011' time '2:53:56 am' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.79' message 'renamed the test method in ZnDispatcherDelegateTest' id '64636642-57e3-4468-8f86-806f5fe5e9ea' date '9 May 2011' time '9:50:01 pm' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.78' message 'added test for ZnDispatcherDelegate' id '7d72bd6f-a8fe-47a2-b5c2-784f196a6806' date '9 May 2011' time '9:46:13 pm' author 'NickAger' ancestors ((id '367e5a56-7e1a-4387-a3af-298cd651e876')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.87' message 'added ZnClientTests>>#testTimeout to test the correct working of ZnConnectionTimeout' id 'd1f2d440-8420-4b11-84ec-d79bdc48e16b' date '14 July 2011' time '9:55:47 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.86' message 'improved some test code' id '29572b64-6b2e-4dbc-b62f-a1f77f2a8748' date '28 June 2011' time '11:23:39 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.85' message 'added ZnFixedClientTests>>#testIfModifiedSinceNotModified' id '07998dae-f824-4bd3-a9a6-06f0dcf5a305' date '28 June 2011' time '11:05:52 am' author 'SvenVanCaekenberghe' ancestors ((id '7cf44874-99c6-43b8-949e-74ae2d94d2b2')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.115' message 'added ZnClientTests>>#testRedirectDontFollow to test the new #followsRedirects boolean option to ZnClient, including under the case of #enforceHttpSuccess: true' id 'eb8c67e4-bdf2-4741-b149-78bdaf5d4970' date '23 November 2011' time '5:31:22 pm' author 'SvenVanCaekenberghe' ancestors ((id '709cd18e-4550-4b4f-ac0f-755c9d923271')) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.118' message 'added ZnMimeTypeTests>>testCopying to test whether the ''constants'' returned by the class side convenience methods of ZnMimeType can be freely modified; modified ZnMimeType>>#testDefault and #testIdentity to not longer assume the ''constants'' returned by the class side convenience methods of ZnMimeType are #==' id 'ce3f20f9-22d1-4b52-afe0-9c3a04813224' date '6 December 2011' time '8:58:47 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-NorbertHartl.117' message 'second commit. Last time I added the test to an old version. Redid for newest version: added two tests to check encoding handling of ZnApplicationFormUrlEncodedEntity when writing representation' id '4971e3f3-ba21-46ab-8674-560d00dfe751' date '6 December 2011' time '6:35:28 pm' author 'NorbertHartl' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.116' message 'added tests for ZnChunkedReadStream>>#next: and the new ZnChunkedReadStream>>#next:into: ' id '53fe3bee-246a-4668-b88d-7ad66a840d80' date '3 December 2011' time '5:52:55 pm' author 'SvenVanCaekenberghe' ancestors ((id 'eb8c67e4-bdf2-4741-b149-78bdaf5d4970')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.120' message 'added ZnClientTests>>#testProgressNoIfFail' id 'b438f907-dd03-4735-b093-620cfb10f738' date '20 December 2011' time '2:27:32 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.119' message 'added some ZnUrl tests' id 'a3dd71d9-325a-4470-a454-31db977215e9' date '13 December 2011' time '2:20:21 pm' author 'SvenVanCaekenberghe' ancestors ((id 'ce3f20f9-22d1-4b52-afe0-9c3a04813224')) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.121' message 'added ZnServerTests>>#testDefault to test the new semantics of ZnServer class>>#startDefaultOn:' id 'c1396284-0787-4c42-bedd-fb6ae918c68d' date '22 December 2011' time '12:56:23 pm' author 'SvenVanCaekenberghe' ancestors ((id 'b438f907-dd03-4735-b093-620cfb10f738')) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.122' message 'added ZnLineReaderTests>>#testLineTooLongDefault and ZnMultiValueDictionary>>#testTooManyEntries' id '41edccdf-4322-41c3-b06c-2b8dca3d9ce3' date '3 January 2012' time '3:44:21 pm' author 'SvenVanCaekenberghe' ancestors ((id 'c1396284-0787-4c42-bedd-fb6ae918c68d')) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.125' message 'fixed the implementation of ZnLimitedReadStream to honor EOF on the underlying stream' id 'd40a9a35-5bd7-446d-b3e5-f707426a281b' date '31 January 2012' time '8:58 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.124' message 'introduction of a resource limit to the size of entities read from a stream; added ZnConstants class>>#maximumEntitySize[:] added ZnEntityTooLarge resumable exception ' id '2277a62b-e817-4f08-822d-f1e6846921a7' date '31 January 2012' time '2:04:24 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.123' message 'added ZnUrl>>#retrieveContents convenience method tests' id 'd6917a3f-397c-4c35-8f24-52222a7a047d' date '24 January 2012' time '12:01:54 pm' author 'SvenVanCaekenberghe' ancestors ((id '41edccdf-4322-41c3-b06c-2b8dca3d9ce3')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.147' message 'kill the last usages of mac.com URLs' id '42774037-07c9-4c2d-b11a-00e957f286ba' date '4 July 2012' time '5:38:45.544 pm' author 'SvenVanCaekenberghe' ancestors ((id '2c2b99bc-5d6d-4aea-a49a-8c797685a71f')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-Tests-SvenVanCaekenberghe.190' message 'Added WideString versions of text to ZnMessageBenchmark' id 'c1e4502b-794a-46a7-a3b6-94100f9e1a7e' date '06/11/2013' time '02:09:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.189' message 'Bugfix to ZnHeaders>>#extendHeaderAt:from: to deal with multiple multiline values; Bugfixes to ZnMultiPartFormDataEntity (content type should be wildcard matched against multipart/* and #parse:boundary: should deal with whitespace at the start) Added ZnMimePart>>#printOn: ' id '4e77f26e-68c0-4d82-8f90-d089aef98e48' date '06/11/2013' time '11:40:34' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.188' message 'Make ZnClientTests>>#testGetGeoIP depend on NeoJSONReader when present' id '56d8b509-07d9-4c7b-9d1e-d6fbe6c08ad8' date '06/07/2013' time '11:57:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.187' message 'Performance enhancement in ZnMessage/ZnEntity writing (more intelligent buffering, more intelligent encoding) Implemented #= and #hash for all Zn Core objects Tracking ZnMimeType>>#= and #match: changes Added new tests and benchmarks ' id '377c40a0-9cbd-4433-997d-93cdeb437d16' date '05/22/2013' time '04:34:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.186' message 'Added first version of ZnMessageBenchmark[Tests]' id '5861c260-ebf9-42f4-9e0f-acaf5395e5b8' date '05/21/2013' time '04:35:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.185' message 'Added ZnServerTests>>#testGzipCompressionAndChunking' id 'e97c4c57-c546-45d6-876c-adfca92afaa6' date '05/19/2013' time '09:26:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.184' message 'Added ZnEntityWriterTests>>#testChunkedOnly' id '1c2e3990-5089-4e0b-9a85-d544592facff' date '05/19/2013' time '11:50:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.183' message 'Introduction of ZnEntityWriter with support for gzip/chunked encoding' id 'b3707d53-800b-456c-8a5e-b139024561a1' date '05/18/2013' time '02:07:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.182' message 'Optimized ZnChunkedReadStream>>#upToEnd Added #testGzipWriteRead' id 'b1eda2c1-f2b4-4e53-8545-afb741dd9fd5' date '05/18/2013' time '12:43:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.181' message 'Added ZnChunkedWriteStream Reorganized ZnChunkedStreamTests' id '818a6bf4-04b0-457a-9c34-4281c2080fd3' date '05/17/2013' time '05:07:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.180' message 'Added ZnReadEvalPrintDelegate, a REPL Web Service.' id 'ff07fa3a-9047-4029-a12d-54d075cf1bf0' date '05/15/2013' time '10:47:07' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.179' message 'Added new ZnServerTests for exception handling in ZnMultiThreadedServer: parse errors while reading an incoming request should now result in a bad request response ' id 'ee8a4e7b-a063-408a-b0c8-7555b57df637' date '05/14/2013' time '01:43:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.178' message 'change ZnClientTests>>#testRedirect[DontFollow] target URL from http://www.pharo-project.org to http://zn.stfx.eu (pharo issue 10559) because CMSBox is blocking us.' id '6751bca5-b9b7-4cf5-b806-6e825ed69ea2' date '05/10/2013' time '11:57:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.177' message 'Added ZnClientTests>>#testPrepareRequest; Added ZnEntityTests>>#testApplicationUrlEncodingAddAll - Thanks Paul DeBruicker' id '0f8f6ee4-465c-47e5-8522-052c02719dfa' date '02/24/2013' time '11:11:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.176' message 'Extended ZnClient>>#url: to accept the new user info (username and password) component of ZnUrl when present; ZnRequestLine>>#uri: now explicitely calls #enforceKnownScheme' id '7f40708a-33c1-4cb3-8957-db6b23816cca' date '01/30/2013' time '07:45:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.175' message 'Bugfix to ZnApplicationFormUrlEncodedEntity>>#readFrom: which failed when content-length was not specified (Thx Jan van de Sandt); new ZnEntityTests for reading ZnApplicationFormUrlEncodedEntities' id '56565a63-15b0-4062-82d5-725800c11e85' date '01/25/2013' time '02:47:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.174' message 'added various tests for new API' id '92273dff-bb51-4b91-a526-0c5f39f9e4eb' date '01/07/2013' time '12:38:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.173' message 'added ZnServer #url related tests' id '2fe714c5-3735-4840-a6bb-7b109ccd1719' date '01/04/2013' time '02:25:42' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.172' message 'added ZnServerTests>>testSessionRoute' id '8d883407-840d-4a32-8221-e93758c504c4' date '12/31/2012' time '05:06:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.171' message 'added ZnServerTests>>#testSessionExpired' id '0cd35ccf-f6aa-4a57-a86d-ad4621d720ca' date '12/30/2012' time '02:30:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.170' message 'added ZnSingleThreadedServer>>#handleRequestProtected: with a general and global error handler that normally returns an HTTP server error unless the server is in #debugMode' id '8b0821ef-543e-474c-95ca-5d0b3ad0e996' date '12/23/2012' time '06:28:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.169' message 'creation of Zinc-Character-Encoding-[Core|Tests] by moving various classes out of Zinc-HTTP' id '9f5b3683-d8f5-4b90-8579-64122e43c77e' date '12/16/2012' time '05:03:13' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.168' message 'introduction and usage of ZnCharacterEncodingError exception; rewrote ZnBufferedReadStream>>#upToEnd and ZnCharacterReadStream>>#upToEnd' id '6abe4a1e-6817-496f-8d12-25d3cc45b6b3' date '12/16/2012' time '04:36:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.167' message 'modified ZnByteEncoder to use its own byte to Unicode mapping tables; this includes the change that latin1 is no longer mapped to a null encoder' id '0eb9296d-eab5-44d0-b056-9d50e41cadbc' date '12/15/2012' time '08:09:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.166' message 'finished the implementation of ZnBase64Encoder' id 'e7069358-51b5-41f6-97ad-bebec08081fd' date '12/15/2012' time '02:11:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.165' message 'fixed a typo' id 'c60a5352-b989-40eb-83fc-7f8ceb3fb886' date '12/13/2012' time '12:00:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.164' message 'added ZnPercentEncoderTests' id '8fdfc39b-196f-4615-982c-5f975b491b32' date '12/13/2012' time '11:32:28' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.163' message 'reworked/simplified some ZnClient internals - removed the state concept and instance variable - removed the #resetRequestIfNeeded concept and method; added ZnClient>>#resetEntity; added ZnClient>>#isCreated and #isNotFound note: this might make some semantic differences for people heavily reusing ZnClient instances added 4 new ZnClient unit tests related to cover these reuse semantics; changed #getAfterPost to use #resetEntity' id '8c8fd681-8f99-4e41-80e9-8789835051c1' date '12/12/2012' time '10:43:20' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.162' message 'moved HierarchicalUrl>>#asZnUrl from Zinc-Resource-Meta-Core back to Zinc-HTTP' id '56f3e92b-ba18-4caf-a0aa-46ea7c99de47' date '12/11/2012' time '10:24:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.161' message 'moving ZnUrl, ZnMimeType and related support classes to a new, independent package Zinc-Resource-Meta-Core (and unit tests to Zinc-Resource-Meta-Tests); extended ZnUrl to allow for some simple file:// URLs' id 'bfc5fbbc-c275-42b7-a0d6-6015dd8fdb07' date '12/08/2012' time '09:16:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.160' message 'added ZnBufferedReadStream (from STON); extended ZnBufferedWriteStream (with #next:putAll:startingAt: logic); added tests for these' id 'ef953fdd-26e4-4288-8f5f-8a539c1a418e' date '11/30/2012' time '11:00:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.159' message 'extended ZnServerTests>>#testEcho; added ZnServerTests>>#testSession' id '797384ef-7668-4ff3-99d5-f23b8a8a3ed3' date '11/11/2012' time '08:15:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MarcusDenker.158' message 'Issue 6745: Failing tests related to Zinc http://code.google.com/p/pharo/issues/detail?id=6745 Issue 6052: would be good that TestAsserter uses TAssertable http://code.google.com/p/pharo/issues/detail?id=6052' id '9db8a49d-105e-4382-a2f8-8a3e8704aba0' date '09/28/2012' time '01:34:59' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.157' message 'fix bogus String constants in ZnMagicCookie[Jar]Tests that held a now expired date by making the date dynamic ' id 'd7c893db-7635-4982-94c2-302e1651a99f' date '09/28/2012' time '12:48:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MarcusDenker.156' message 'Issue 6697: Zn+Zdc Update 2012-09-19 http://code.google.com/p/pharo/issues/detail?id=6697 Issue 6699: Share binding of metaclass methods http://code.google.com/p/pharo/issues/detail?id=6699 ' id 'a779cd3e-0816-4207-988b-31ddb71b2521' date '09/21/2012' time '01:50:14' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.155' message 'removal of all classes in Zinc-HTTP-Deprecated - ZnClientOld - ZnFixedClient - ZnExtendedFixedClient - ZnUserAgent - ZnHttpClient - ZnUserAgentSettings as well as all their unit test classes' id 'c712aa03-035b-4ffd-86db-3eb0dae65eb1' date '09/05/2012' time '01:59:48' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.154' message 'changed maximumEntitySize concept from a normal class variable on ZnConstants to a dynamic/process-specific variable ZnMaximumEntitySize; added the option #maximumEntitySize to ZnServer' id '679b7cbd-8de2-4fc9-b7a9-76df542e5315' date '09/05/2012' time '01:22:20' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.153' message '#includesSubString: becomes #includesSubstring:' id '7b911610-eec7-422d-a994-4f089c5f1f09' date '08/27/2012' time '09:44:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.152' message 'fixed an offset bug in ZnUtils>>#streamFrom:to: (thx again, Chris Bailey) added ZnUtilsTests>>#testStreaming[Non]BinaryWithoutSize' id 'cadd39cb-ff17-4405-a56e-718a6d5e7c24' date '08/03/2012' time '10:51:05' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.151' message 'added new ZnChunkedReadStreamTests>>#testReadingBuffered to validate various fixes to ZnChunkedReadStream>>#readInto:startingAt:count: (thx Chris Bailey for reporting the problem)' id '3da15e83-c0ca-4066-a496-71d91393db01' date '08/02/2012' time '11:27:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.150' message 'Changed ZnStreamingEntity>>#readFrom: to no longer switch to non-binary - this was wrong anyway since no encoding was used' id 'f2e201da-d33e-4f34-b000-ebc8a5f705b0' date '07/13/2012' time '08:31:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.149' message 'added tests for convenience protocol to ZnUrl: - #withPathSegment[s]: #/ - #withQuery: #? #&' id '073d89ad-3cc3-40b1-92a3-fbb045bba864' date '07/09/2012' time '04:39:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MarcusDenker.148' message 'Issue 6269: Zinc Kill last usages of mac.com domain http://code.google.com/p/pharo/issues/detail?id=6269 Issue 6267: Spec-Widget new version http://code.google.com/p/pharo/issues/detail?id=6267 Issue 6266: Adding a missing method on TextInputField http://code.google.com/p/pharo/issues/detail?id=6266 Issue 6263: Spec-Layout new version http://code.google.com/p/pharo/issues/detail?id=6263 Issue 6273: Fixing monticello mocks http://code.google.com/p/pharo/issues/detail?id=6273' id 'e5d9431a-de69-46da-92b7-0507bcaae82d' date '07/04/2012' time '11:01:31' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-MarcusDenker.147' message 'Issue 6259: DataStream is still there http://code.google.com/p/pharo/issues/detail?id=6259 Issue 6255: Zinc Pharo Conference update with FileSystem support http://code.google.com/p/pharo/issues/detail?id=6255 Issue 6223: FileLocator and FileRerernce have extension from File Package http://code.google.com/p/pharo/issues/detail?id=6223' id 'e8f91da3-98a4-4e7e-8468-b9e1ab8349d1' date '07/04/2012' time '04:16:31' author 'MarcusDenker' ancestors () stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.147' message 'kill the last usages of mac.com URLs' id '42774037-07c9-4c2d-b11a-00e957f286ba' date '07/04/2012' time '05:38:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.146' message 'introduction of the Zinc-FileSystem-Legacy package (including the new ZnFileSystemUtils class) to deal with pre/post FIleSystem introduction in Pharo 2.0 - this is the old code' id '2c2b99bc-5d6d-4aea-a49a-8c797685a71f' date '07/03/2012' time '01:49:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.145' message 'Replace now defunct references to http://homepage.mac.com/svc/Zinc-HTTP-Components/small.html with http://zn.stfx.eu/zn/small.html' id '6d633387-5bcc-422d-980c-b2e92f6bc08a' date '07/02/2012' time '03:33:36' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.144' message 'added tests for multiline/continuation header line parsing to ZnHeadersTests; added some ZnDigestAuthenticatorTests' id '5fd44833-78c7-4a88-9c52-d0f4b0737f76' date '05/22/2012' time '10:50:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.143' message 'replaced direct usage of ZnValueDelegate with indirect usage through the #onRequestRespond: method' id '9972b054-538c-4edc-9203-b0c82d0ef62b' date '05/14/2012' time '17:21:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.142' message 'added ZnStaticFileServerDelegateTests for - expiration - cache-control - if-modified-since, not-modified' id '9f8498a3-c576-4844-a0f5-bafc5c5cbeca' date '05/14/2012' time '11:11:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.141' message 'merged ZnUtils class>>#parseHttpDate: improvements by Sean DeNigris' id '13c0a808-d2be-4e91-a5ed-b7aea00412c1' date '05/10/2012' time '20:31:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SeanDeNigris.140' message 'Fix the HTTP date parsing to comply with the HTTP/1.1 standard. See discussion at http://forum.world.st/Parsing-HTTP-dates-td4623688.html' id 'ea4710db-8f89-4b77-bc48-c268f42d6961' date '05/10/2012' time '12:22:56' author 'SeanDeNigris' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.139' message 'added ZnClientTests>>#testUploadSmallDocument' id 'f3dd9dc9-b488-4211-8b1d-c61620c1cfb0' date '05/09/2012' time '09:58:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.138' message 'added ZnCharacterStreamTests' id '08fa8343-de91-467d-8fab-35b090b4443d' date '05/03/2012' time '22:16:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.137' message 'added #match: and #contents to ZnChunkedReadStream and ZnLimitedReadStream; added some convenience methods to ZnCharacterEncoder: #encodeString: #decodeBytes: and #encodedByteCountForString:' id '61f9a691-603d-4aee-892c-4fe74f0a7ee2' date '05/02/2012' time '16:44:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.136' message 'ZnClientTests>>#testDownloadSmallHTML follow switch from ZnClient>>#downloadToFileNamed: to ZnClient>>#downloadTo:' id 'b1c212b4-6b1c-45b1-88d1-5410f135de5e' date '04/26/2012' time '16:49:07' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.135' message 'added test for ZnClient>>#downloadToFileNamed: ' id '364763a4-b7d7-4d0e-b66b-7e117e9194f3' date '04/25/2012' time '21:21:15' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.134' message 'timezone offsets should be Durations' id '26cfd348-8c5f-49ef-879b-45eeb8b41a23' date '04/23/2012' time '15:42:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-PaulDeBruicker.133' message 'Added tests for the ZnResponse>>#isError method I added to Zn' id '237a106b-ccbd-4183-8aaf-27439ebd5c98' date '04/19/2012' time '05:03:29' author 'PaulDeBruicker' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.132' message 'renamed ZnServer>>#interface[:] to ZnServer>>#bindingAddress[:] following a suggestion by Norbert Hartl, Thx!' id 'a8ccf290-5116-475d-88c7-eb635daf6fe4' date '04/13/2012' time '13:21:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.131' message 'added technology to allow entities to be read binary even when they are textual, thus disabling Zn''s normal decoding behavior; this is what Seaside expects (as Seaside does its own conversions); added ZnEntityReader>>#[is]Binary; added ZnMessage[class]>>#readBinaryFrom: added ZnEntity class>>#readBinaryFrom:usingType:andLength: added ZnSingleThreadedServer>>#reader[:] to allow customizing entity reading' id '80c5b50f-d5d8-455e-9b21-c581f6ca84b7' date '04/07/2012' time '18:30:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.130' message 'rewrote all tests that use ZnServer to use #withServerDo: and/or a randomized port (between 1701 and 1710) to mitigate problems when running 2 Zn test suits concurrently on the same machine' id '7ba47490-c194-44a8-9252-f5a99246cd54' date '03/12/2012' time '22:26:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.129' message 'added the option to restrict ZnServers to only listen on a specific interface; added Zn[SingleThreaded]Server>>interface[:]; added ZnNetworkingUtils [class]>>#serverSocketOn:interface added ZnServerTests>>#testEchoLocalInterface' id '7d187299-518a-4f64-b855-d602b48fcc02' date '03/12/2012' time '19:52:33' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.128' message 'added some extra API to ZnMimeType to manipulate parameters and charSets' id '89affdf2-4eb5-4f15-8ff3-7b994c4e91b9' date '03/06/2012' time '11:11:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.127' message 'added 2 cookie related tests' id '3fdb3447-f066-4fa1-b5bd-58abcff73cfa' date '03/04/2012' time '23:21:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MarcusDenker.126' message 'Issue 5299: Yet another Zn update http://code.google.com/p/pharo/issues/detail?id=5299' id '1f3a4aa8-996f-4162-b79a-0ff3fab1918f' date '02/17/2012' time '15:13:18' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-StephaneDucasse.123' message '- Issue 5157: Finder > Class > right-click > Hierarchy opens not on Class but on FinderClassNode. Tx Benjamin van Ryseghem. http://code.google.com/p/pharo/issues/detail?id=5157 - Issue 5151: Recategorization of PanelMorph. Thanks Benjamin van Ryseghem. There is no useless cleans. Even small steps are cool and important. http://code.google.com/p/pharo/issues/detail?id=5151 - Issue 5154: It would be great to have a setting to allow the Debugger to open centered and be 3/4 of screen. Thanks Alain Plantec. http://code.google.com/p/pharo/issues/detail?id=5154 - Issue 5148: LimitNumberOfEntriesInZnMultiValueDictionary. Thanks Sven van Caekenberghe. http://code.google.com/p/pharo/issues/detail?id=5148 ' id 'a7f69ceb-4c9b-40c3-abe1-5cc680f4886b' date '01/07/2012' time '19:13:43' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-ZincUpdate.122' message '- Issue 5127: Zinc update http://code.google.com/p/pharo/issues/detail?id=5127 - last bit of Issue 4688: progress bar disappears on image save http://code.google.com/p/pharo/issues/detail?id=4688' id '54546963-f9f6-42ab-a1d8-3d4fb9f878d9' date '12/25/2011' time '23:02:04' author 'ZincUpdate' ancestors ((name 'Zinc-Tests-StephaneDucasse.121' message '- Issue 5117: MNU: Transcripter class>>open. Thanks vpnbecmann. http://code.google.com/p/pharo/issues/detail?id=5117 - Issue 5122: ZnUpdate-Dec-20. Thanks sven van caekenberghe. http://code.google.com/p/pharo/issues/detail?id=5120' id '3cf2343f-1556-4ae0-ae03-26f2afc23899' date '12/25/2011' time '11:47:57' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-MarcusDenker.119' message 'Issue 5063: Zinc uses default encoding of utf-8 when encoding url safe encoded strings http://code.google.com/p/pharo/issues/detail?id=5063' id '7827ec5e-187b-4488-8d60-dba014f52080' date '12/09/2011' time '13:18:03' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-MarcusDenker.116' message 'Issue 4998: ContextPart>>#runUntilErrorOrReturnFrom: (for testing) http://code.google.com/p/pharo/issues/detail?id=4998 Issue 4994: Two failing test in ProcessTest http://code.google.com/p/pharo/issues/detail?id=4994 Issue 5014: zn updates http://code.google.com/p/pharo/issues/detail?id=5014' id '20189c38-b14d-4878-a8a3-3c104ad67b78' date '11/25/2011' time '16:03:30' author 'MarcusDenker' ancestors ((name 'Zinc-Tests-StephaneDucasse.115' message 'ZnTests now :)' id '71d09a5d-c10e-412e-b9e2-2db68cbc2ac5' date '11/19/2011' time '10:18:54' author 'StephaneDucasse' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.125' message 'fixed the implementation of ZnLimitedReadStream to honor EOF on the underlying stream' id 'd40a9a35-5bd7-446d-b3e5-f707426a281b' date '01/31/2012' time '20:58:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.124' message 'introduction of a resource limit to the size of entities read from a stream; added ZnConstants class>>#maximumEntitySize[:] added ZnEntityTooLarge resumable exception ' id '2277a62b-e817-4f08-822d-f1e6846921a7' date '01/31/2012' time '14:04:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.123' message 'added ZnUrl>>#retrieveContents convenience method tests' id 'd6917a3f-397c-4c35-8f24-52222a7a047d' date '01/24/2012' time '12:01:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.122' message 'added ZnLineReaderTests>>#testLineTooLongDefault and ZnMultiValueDictionary>>#testTooManyEntries' id '41edccdf-4322-41c3-b06c-2b8dca3d9ce3' date '01/03/2012' time '15:44:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.121' message 'added ZnServerTests>>#testDefault to test the new semantics of ZnServer class>>#startDefaultOn:' id 'c1396284-0787-4c42-bedd-fb6ae918c68d' date '12/22/2011' time '12:56:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.120' message 'added ZnClientTests>>#testProgressNoIfFail' id 'b438f907-dd03-4735-b093-620cfb10f738' date '12/20/2011' time '14:27:32' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.119' message 'added some ZnUrl tests' id 'a3dd71d9-325a-4470-a454-31db977215e9' date '12/13/2011' time '14:20:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.118' message 'added ZnMimeTypeTests>>testCopying to test whether the ''constants'' returned by the class side convenience methods of ZnMimeType can be freely modified; modified ZnMimeType>>#testDefault and #testIdentity to not longer assume the ''constants'' returned by the class side convenience methods of ZnMimeType are #==' id 'ce3f20f9-22d1-4b52-afe0-9c3a04813224' date '12/06/2011' time '20:58:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-NorbertHartl.117' message 'second commit. Last time I added the test to an old version. Redid for newest version: added two tests to check encoding handling of ZnApplicationFormUrlEncodedEntity when writing representation' id '4971e3f3-ba21-46ab-8674-560d00dfe751' date '12/06/2011' time '18:35:28' author 'NorbertHartl' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.116' message 'added tests for ZnChunkedReadStream>>#next: and the new ZnChunkedReadStream>>#next:into: ' id '53fe3bee-246a-4668-b88d-7ad66a840d80' date '12/03/2011' time '17:52:55' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.115' message 'added ZnClientTests>>#testRedirectDontFollow to test the new #followsRedirects boolean option to ZnClient, including under the case of #enforceHttpSuccess: true' id 'eb8c67e4-bdf2-4741-b149-78bdaf5d4970' date '11/23/2011' time '17:31:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.114' message 'renamed ZnNeoClientTests -> ZnClientTests' id '709cd18e-4550-4b4f-ac0f-755c9d923271' date '11/08/2011' time '22:34:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.113' message 'renamed ZnClientTests -> ZnClientOldTests' id '61688dd0-20a0-4ac5-9ea9-27262f3ea53d' date '11/08/2011' time '22:15:11' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.112' message 'added ZnNeoClientTests>>#testGetSmallHTMLStreaming' id 'a097c21c-05df-480d-8afe-e8f5fee222a2' date '11/08/2011' time '21:07:05' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.109' message 'Following deprecation of instance creation (#new) of ZnFixedClient (and ZnExtendedFixedClient) and ZnUserAgent (and ZnHttpClient): kept all tests in ZnFixedClientTests, ZnUserAgentTests, ZnHttpClientTests and ZnCredentialsTests, but running under #ignoringDeprecation: ZnDispatcherTests now using ZnNeoClient directly' id '1da42667-075d-41cb-bbb0-94acd4038cb2' date '10/04/2011' time '14:25:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.108' message 'added basic ZnNeoClient>>#signalProgress support' id '37f5e20a-957a-40db-892a-722cd21ee1a5' date '10/04/2011' time '13:48:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.107' message 'made ZnClient deprecations proceedable and added a test for this behavior' id '016ea4f4-0161-4086-9422-8619a4ef0750' date '10/03/2011' time '14:44:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.106' message 'added ZnNeoClientTests>>#testGetAfterPost to test ZnNeoClient>>#resetRequestIfNeeded logic' id 'e7748414-dfa0-4ab8-8291-13e347971e78' date '09/23/2011' time '14:59:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.105' message 'extended ZnNeoClientTests>>#testRedirect with a resume of ZnTooManyRedirects' id 'f62dea54-3bc1-4b52-b1a2-3cbf8764afa3' date '09/19/2011' time '13:31:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.104' message 'added ZnNeoClient redirect tests' id 'c324d699-9454-4c3a-acd9-4d851de45ea9' date '09/19/2011' time '11:10:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.103' message 'added ZnNeoClient>>#setIfModifiedSince: and test' id '9d840776-d54a-46cb-9d7a-2223c92b5559' date '09/17/2011' time '20:43:05' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.102' message 'introducing ZnEasy to take over the class side functionality of ZnClient; ZnClient class side protocol being deprecated; renamed ZnClientTests to ZnEasyTests' id '65352f99-bcf8-45de-942b-d39f82882e34' date '09/15/2011' time '20:44:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.101' message 'patch the crippled ZnResponseTests>>#testSlashdotGzipChunked test even further; note: this really has to be rewritten altogether' id 'd7fedf37-3513-4106-b9d3-23e4c9e8e3bf' date '09/13/2011' time '22:20:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.100' message 'added tests for ZnUtils class>>#parseHttpDate: ' id '27156429-e7ca-4b20-b91d-479133d69751' date '09/13/2011' time '11:51:53' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.99' message 'added ZnNeoClientTests>>#testQueryGoogle' id '151e6ec9-94ac-45a8-b244-f4fc2731abc2' date '09/04/2011' time '19:59:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.98' message 'improved ZnNeoClientTests code a bit' id 'eaa2045b-0c32-4b32-882e-ab9051c0243b' date '08/31/2011' time '22:07:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.97' message 'added ZnNeoClientTests>>#testCookies; follow API changes related to cookies' id '946371f2-1bc4-40fa-b484-545baf59bcd6' date '08/30/2011' time '22:54:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.96' message 'now using the #contentReader option in ZnNeoClient>>#testGetGeoIP' id '6ead5c52-6b4d-4e30-9cc0-dddbc313a396' date '08/19/2011' time '17:29:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.95' message 'implemented ZnNeoClient>>#head ' id 'b3e73bcf-0d37-4e73-81d3-5c96251a8b63' date '08/18/2011' time '13:57:45' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.94' message 'extended ZnNeoClient with #ifFail:, #enforceHttpSuccess, #enforceAcceptContentType and retry behavior' id '9620aef4-bb7b-4f62-9e83-36c0fab74756' date '08/17/2011' time '21:43:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.93' message 'added ZnMimePart class>>#fieldName:entity: and #fieldName:fileNamed: added ZnNeoClient timeout option, more url building api, support for applicationFormUrlEncoded and multiPartFormData encoded entities for post/put' id 'ad46ba6d-e503-4ca7-a440-5328e3cc1bc3' date '08/17/2011' time '14:25:20' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.92' message 'added ZnNeoClient>>#testGetGeoIP' id '9d9c4ca4-4520-42d2-891f-bbd5ecbfc0a8' date '08/12/2011' time '14:10:32' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.91' message 'added ZnNeoClientTests' id 'ae555b6a-c685-4316-adb5-a74bf82d1428' date '08/12/2011' time '13:52:32' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.90' message 'added various tests to ZnUrlTests related to default scheme/port issues' id '21395d2e-5782-496e-a4e9-8296befc55c5' date '08/11/2011' time '15:30:38' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-DamienPollet.89' message 'Fix typo in exception names.' id 'bb1698f3-5db3-4191-b078-50d52d3ab887' date '08/04/2011' time '14:22:33' author 'DamienPollet' ancestors ((name 'Zinc-Tests-StephaneDucasse.88' message '- Issue 4520: Zinc update http://code.google.com/p/pharo/issues/detail?id=4520 ZnDefaultServerDelegate>>#echoRequest: added option to delay the response to /echo with a specified number of seconds, as in echo?delay=60 added ZnSingleThreadedServer>>#onRequestRespond: convenience method implemented client side support for If-Modified-Since and Not Modified: - added ZnRequest>>#setIfModifiedSince: - refactored ZnMessage>>#readFrom to call #readEntityFrom: - overwritten ZnResponse>>#readEntityFrom: to take special no content response into account - extended ZnUtils class>>#httpDate: to accept any argument that understands #asTimeStamp ' id 'bb7a5fd9-7179-4fd1-b667-bcca7461b347' date '07/14/2011' time '12:20:38' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-StephaneDucasse.85' message '- Update Zinc fixing support for HTTP proxies (thanks Alexandre Bergel for reporting this) requests to localhost are excluding from being proxied - ZnRequestLine>>#writeOn: now outputs absolute URLs when proxying - added ZnNetWorkingUtils class #isProxySet #shouldProxyUrl: and #httpProxy - added ZnUrl>>#isLocalHost - changed ZnUrl>>#host: to lowerCase its argument. - Fix methodClass - Issue 4237: Few fix for Settings. Thanks Benjamin van Ryseghem. - Issue 4235: Selection update. Thanks Benjamin van Ryseghem.' id '84becf3d-e476-48be-902e-90e2c51805b4' date '05/16/2011' time '19:05:29' author 'StephaneDucasse' ancestors ((name 'Zinc-Tests-StephaneDucasse.78' message '- Issue 4130: Zinc should be added to core. Thanks sven van caekenberghe.' id '230e4d43-b504-43f5-a2d3-461e6c28ac02' date '05/12/2011' time '18:52:00' author 'StephaneDucasse' ancestors () stepChildren ())) stepChildren ())(name 'Zinc-Tests-SvenVanCaekenberghe.87' message 'added ZnClientTests>>#testTimeout to test the correct working of ZnConnectionTimeout' id 'd1f2d440-8420-4b11-84ec-d79bdc48e16b' date '07/14/2011' time '09:55:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.86' message 'improved some test code' id '29572b64-6b2e-4dbc-b62f-a1f77f2a8748' date '06/28/2011' time '11:23:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.85' message 'added ZnFixedClientTests>>#testIfModifiedSinceNotModified' id '07998dae-f824-4bd3-a9a6-06f0dcf5a305' date '06/28/2011' time '11:05:52' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.84' message 'added ZnUrlTests>>#testLocalHost' id '7cf44874-99c6-43b8-949e-74ae2d94d2b2' date '05/13/2011' time '14:14:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-NickAger.83' message 'tests updated to reflect cookie refactoring in Zinc-HTTP-NickAger.158' id '3e8391dd-bdbe-4fbe-8e08-98fe89387c59' date '05/10/2011' time '11:40:10' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.82' message 'refactored ZnResponse tests to use new ZnStatusLine creation constants' id '164025a5-c6c8-4e89-be63-963fdc41b226' date '05/10/2011' time '09:14:28' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.81' message 'added ZnResponseTests>>#testCookie' id 'a8baa8f0-6812-4091-a6d2-fc5e29e503a8' date '05/10/2011' time '08:38:35' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.80' message 'added tests for: Request cookie accessor Response cookie setter' id 'ce58e3e6-2e8c-4864-a7bd-ad60199fb2ba' date '05/10/2011' time '02:53:56' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.79' message 'renamed the test method in ZnDispatcherDelegateTest' id '64636642-57e3-4468-8f86-806f5fe5e9ea' date '05/09/2011' time '21:50:01' author 'NickAger' ancestors ((name 'Zinc-Tests-NickAger.78' message 'added test for ZnDispatcherDelegate' id '7d72bd6f-a8fe-47a2-b5c2-784f196a6806' date '05/09/2011' time '21:46:13' author 'NickAger' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.77' message 'rewrote ZnHTTPSocketFacade class>>#entendURL:withArguments: to be compatible with HTTPSocket class>>#argString: (Thanks Esteban Lorenzano); added ZnSocketFacadeTests>>#testExtendUrlWithArgs' id '367e5a56-7e1a-4387-a3af-298cd651e876' date '04/30/2011' time '20:56:05' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.76' message 'small fix to ZnUrl>>#printPathOn: to deal with cases where forward slashes are encoded in URLs (Thanks, Jan van de Sandt for pointing this out); added ZnUrlTests>>#testEncodedSlash to cover these cases' id '0013f47d-6076-4d1d-a64e-0f29049dd527' date '04/17/2011' time '10:33:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.75' message 'attempt to make ZnLogSupportTests>>#testLogEvent a bit less silly (take higher resolution clocks into account)' id '54c6a29b-3155-46f9-a6ac-495af44a98f8' date '04/13/2011' time '00:24:50' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-PaulDeBruicker.74' message 'For portability to Gemstone I changed the declaration of ByteArrays from x:=#[98 99]. to x:=#(98 99) asByteArray and Unicode characters from x:=Unicode value: 16r00A2. to x:= 16r00A2 asCharacter. Now the same set of tests load and run safely in Gemstone and Pharo' id '2fc28b34-8196-4cdb-8aac-7029109b4e6f' date '04/10/2011' time '11:15:09' author 'PaulDeBruicker' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.73' message 'added ZnLogSupportTests for minimal testing of the new logging framework' id 'a2b7de93-f7ac-437e-bd43-ea9b32528adb' date '03/29/2011' time '16:50:53' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.72' message 'bugfix: it turns out that String>>#base64Encoded introduces newlines which we definitively do not want when doing Basic HTTP Encoding for example; introduced ZnUtils class>>#encodeBase64: to do the right thing and invoke Base64MimeConvertor with the #mimeEncode: multiLine: false; replaced all usages (added a #decodeBase64: for orthogonality); added a unit test to catch this ' id 'd922fbf4-127c-44c5-ac37-64e0e6397487' date '03/21/2011' time '20:50:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.71' message 'introduced ZnUnknownScheme exception' id '466c6bd3-e4b7-4cac-acc3-873cd1abd256' date '03/18/2011' time '13:32:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.70' message 'added multiple tests for ZnParseError hiearchy ' id 'd27b7580-5689-4262-9992-415b57e4e3c6' date '02/28/2011' time '16:00:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.69' message 'added to ZnLimitedReadStreamTests and ZnEntityReaderTests so that implemented ZnLimitedReadStream>>#next:into: has coverage' id '7d38a658-e074-43a9-9041-16050de2decc' date '02/21/2011' time '23:33:19' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.68' message 'changed the Pharo URL to http://www.pharo-project.org' id '66a414d0-c398-489f-b43a-0e8a4cc7374c' date '01/31/2011' time '13:59:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.67' message 'modified ZnEntityTests>>#testMultiPartFormDataWriteRead to test for proper content length behavior' id '18c512c0-687e-419f-9d59-7f08b9c22031' date '01/27/2011' time '17:18:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.66' message 'added ZnCharacterEncoderTests>>#testLatin2Encoder' id 'd2818b21-daca-4ebc-a624-2dbe1fc325dd' date '01/25/2011' time '13:49:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.65' message 'added ZnUserAgent & ZnHttpClient #testRelativeRedirect tests' id '137f30b0-2c23-4613-ac81-07be5650356c' date '01/14/2011' time '22:04:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.64' message 'tracking API changes; added ZnMultiValueDictionaryTests' id '822ad9e0-fdca-4c5c-8508-336ce44da1ea' date '01/12/2011' time '14:04:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.63' message 'split of ZnNetworkingUtils from ZnUtils to separate related functionality (Thx S.Ducasses)' id '64f22bc9-32f7-4cb4-8e38-ba7ff4013c12' date '01/07/2011' time '19:53:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.62' message 'introduced #asZnMimeType on ZnMimeType, MIMEType & String to replace ZnUtils class>>#asMimeType: which was removed' id '1ef05e59-9f86-41b2-ab10-9a8787168d3b' date '01/04/2011' time '20:04:59' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.61' message 'massive migration from builtin Url to ZnUrl; added asZnUrl to String and Url ' id 'c469756f-c232-4f60-8720-75ec3ea4db3f' date '01/04/2011' time '15:34:33' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.60' message 'first version of ZnUrlTests class' id 'f8383a39-97fb-4d91-ab22-7c4294f177b4' date '01/04/2011' time '12:23:12' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.59' message 'switched to the idiom "self assert: server isRunning & server isListening" to test for a running / responsive server in unit tests' id '8f6cb988-82fb-40a6-8d25-48f1908eba95' date '12/15/2010' time '21:45:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.58' message 'fixed a bug in ZnStringEntity encoder initialization; removed Transcript printing from ZnCredentialTests and ZnUserAgentTests' id '236c9006-952a-48f9-b69a-f02512688d59' date '12/14/2010' time '12:24:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.57' message 'ZnDefaultServerDelegate now generates the Unicode test page so we can delete ZnUnicodeTestServerDelegate' id 'fd1141a1-2056-48e5-81a6-e84f2f254d4e' date '12/10/2010' time '15:55:15' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.56' message 'added experimental ZnBufferWriteStreamTests' id '42334358-1af8-4f29-a658-4afdc51f2b09' date '12/08/2010' time '10:22:11' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.55' message 'some more comment improvements' id 'be04ece0-6dfd-427a-bf2b-2af8b4424e43' date '12/07/2010' time '15:23:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.54' message 'renamed ZnMagicCookie[Jar] to ZnCookie[Jar]' id '4894f9a3-97fc-4860-8894-7c1d0cb5e2cc' date '12/07/2010' time '00:02:47' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.53' message 'renamed category of all tests from ''Zinc-Tests-New'' to ''Zinc-Tests''' id 'cb19cbc7-b0c1-464a-ae28-d18aa227edf6' date '12/06/2010' time '21:38:17' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.52' message 'removed all Zinc-Tests-Old categorized classes from the Zinc-Test package (these will be moved to a new MC package called ''Zinc-Old'')' id '4b6e5436-8c56-4a42-8601-357e7a6639d1' date '12/06/2010' time '17:28:09' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.51' message 'added ZnClientTests>>#testPostUnicodeUtf8' id '55aaa0b5-e2a5-43e1-bd5a-5d7aaa0d394f' date '12/06/2010' time '15:17:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.50' message 'renamed class ZnNewStringEntity to ZnStringEntity' id '08896c90-59c8-42e6-b5d4-56f1fd290b21' date '12/06/2010' time '13:50:16' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.49' message 'added ZnServerTests>>testGetUnicodeUtf8' id 'f1246875-dadc-4c73-af8a-1cd42e266504' date '12/06/2010' time '13:13:44' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.48' message 'large changeset: switch from ZnStringEntity to ZnNewStringEntity, now using binary socket streams on server, all with the goal of proper UTF-8 support; added various tests for binary reading/writing and for tracking protocol/api changes ' id '40094644-090b-4431-ac51-6deaca8fe30c' date '12/04/2010' time '14:17:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.47' message 'replace all direct references to ZnStringEntity and ZnByteArrayEntity with ZnEntity facade invocations ' id '58f7acc6-2ab5-40c7-b5fc-c09497f9434e' date '12/03/2010' time '14:08:40' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.46' message 'added some tests to ZnMimeTypeTests and ZnEntityTests for UTF-8 encoding' id '40b0fe72-bb8e-4346-ab92-c65c3dda2ca2' date '12/02/2010' time '13:51:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.45' message 'added ZnCharacterEncodingTests>>#testUTF8EncoderAuto' id 'b018cb8e-29f5-4aa0-8aec-17b26b968377' date '11/30/2010' time '13:50:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.44' message 'introduction of ZnCharacterEncoderTests' id 'bd6db570-c0cd-444a-8a51-9534201d3185' date '11/30/2010' time '12:28:31' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.43' message 'added ZnUnicodeTestServerDelegate (not yet in units tests)' id '8e9b6cef-d243-43c3-9ea5-517b54c1089a' date '10/20/2010' time '10:41:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MattKennedy.42' message 'Added ZnHttpClientTests>>testGetMultParam for coverage of ZnHttpClient>>parameterAt:add:' id 'a4c74476-3361-422a-8425-37464bf5b8e5' date '10/05/2010' time '17:40:11' author 'MattKennedy' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.41' message 'added elementary test for ZnMultiPartFormDataEntity and ZnMimePart' id 'c829d4b3-3ff7-46e0-9787-94460133ef95' date '10/05/2010' time '20:34:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MattKennedy.40' message 'Added ZnHttpClientTests' id 'af1a7ffc-c4a7-4c84-979a-0563cc60833a' date '10/01/2010' time '22:32:21' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.39' message 'Modified ZnCredentialTests Digest authentication tests to answer clearly if MD5 support is absent. Squeak 4.1 default image is missing the methods HTTPSocket uses for MD5, so not sure if it''s there out of the box.' id '3ad9ef4f-3551-4fa8-adad-ee219534c69b' date '10/01/2010' time '05:47:36' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.38' message 'Added test cases for ZnCredentialTests for erroneous credentials. Test case in ZnUserAgent for error handler.' id '8285ba9e-2eaf-4eaa-85c5-f40376db3644' date '10/01/2010' time '14:45:51' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.37' message 'Added ZnCredentialTests>>testZnServerBasicAuthRealm to test custom realm names in server authenticator. Modified ZnCredentialTests>>testDigestAuthorization to use ZnServer now with ZnDigestAuthenticator.' id 'eeff8920-9775-47e2-95ac-fac88443cdd4' date '09/30/2010' time '17:38:01' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.36' message 'Removed stray inspect sender from ZnCredentialTests>>testDigestAuthorization' id '48fdd73c-85be-476d-a74d-4548ccd40890' date '09/30/2010' time '12:29:53' author 'MattKennedy' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.35' message 'tracking API changes for basic authentication' id 'bcb08816-6c72-45b1-84f8-4c893556fdc5' date '09/30/2010' time '16:35:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MattKennedy.34' message 'Added ZnCredentialTests>>testDigestAuthorization. Requires an external web server URL to call to in order to work at present.' id 'ea944c4a-b1b5-45a4-995f-04c70d58b5b8' date '09/29/2010' time '17:19:35' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.33' message 'Added ZnCredentialsTests.' id '929d376a-4fb4-4c24-88fa-bc6272eeb0bf' date '09/29/2010' time '00:57:38' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.32' message 'Added ZnMagicCookieTests, ZnMagicCookieJarTests, ZnUserAgentSessionTests, and ZnUserAgentSettingsTest Added ZnUserAgentTests>>testCookieAt.' id '16f451aa-8b83-47d1-9db4-6887b5aa3aba' date '09/28/2010' time '16:40:15' author 'MattKennedy' ancestors ((name 'Zinc-Tests-MattKennedy.31' message 'Added ZnUserAgentTests>>testFollowRedirect' id '561fdc97-0599-4a00-871d-46522f3e7253' date '09/28/2010' time '13:57:41' author 'MattKennedy' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.30' message 'apparently Slashdot.org is not always chunked/gzip encoded, too bad' id 'dd8e5fe4-059a-4f8e-815b-1c3111c9215b' date '09/28/2010' time '16:01:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.29' message 'added a simple test for ZnFixedClient' id '371b1c05-bea0-40ec-bd07-c2e4da5100a8' date '09/28/2010' time '14:24:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.28' message 'Merging Matt Kenedy''s code: Added ZnUserAgentTests' id 'a50cc91b-c235-4762-b0bb-2560f604e36f' date '09/27/2010' time '23:37:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-MattKennedy.27' message 'Added ZnUserAgentTests' id '09d2df49-71c2-48e0-a56a-fa0e6f74bd4b' date '09/27/2010' time '15:11:11' author 'MattKennedy' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.26' message 'added tests for ZnLimitedReadStream, ZnChunkedReadStream and ZnLineReader; added functional test ZnResponseTests>>#testSlashdotGzipChunked ' id '72a36bfb-859a-4b5d-b0fb-7728800f168e' date '09/27/2010' time '19:57:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.25' message 'added ZnEntityReader tests #testChunked and #testChunkedWithExtraHeaders' id '7250940a-d71a-4783-b55d-b4f2a57f11c5' date '09/26/2010' time '20:11:26' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.24' message 'introduction of ZnEntityReader helper object; added some more operations to ZnFixedClient; some API cleanup' id 'a6469ddc-386c-4e3b-9c18-fd55df11db9c' date '09/25/2010' time '23:15:49' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.23' message 'added some elementary ZnRequest reading tests' id 'd16e9c4f-5628-490a-b692-616f907d312f' date '09/25/2010' time '23:14:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.22' message 'added basic ZnClient PUT, POST & HEAD methods' id 'da53c39e-2566-4bd1-9f44-4e232d54b48e' date '09/21/2010' time '13:00:24' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.21' message 'Renamed category with old code to Zinc-Test-Old' id '7048013c-a76b-475b-ad43-349299dddb50' date '09/19/2010' time '18:45:29' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.20' message 'following some Lint advice' id '57d98003-f5c0-4a16-b385-2484086dbe67' date '09/17/2010' time '16:15:57' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.19' message 'improved test coverage: added tests to ZnUtilsTests, ZnResponseTests and ZnMimeTypeTests; renamed ZnHTTPMethodTests to ZnOldHTTPMethodTests ' id 'e2349506-4ce2-46fb-9969-9148325d6d65' date '09/17/2010' time '15:47:25' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.18' message 'fixing the test (thx http://hudson.lukas-renggli.ch/job/Zinc/ for catching this, it worked in my image)' id '65d1cb02-1463-4ed8-9f38-cfe92e124cef' date '09/16/2010' time '23:50:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.17' message 'added some asserts to ZnServerTests to catch the situation where the server port is not available.' id '29841272-e167-4858-973a-3d4bf4a3f266' date '09/16/2010' time '11:39:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.16' message 'ZnStatusLine and ZnRequestLine now handle their own crlf line ending (see #readFrom: and #writeTo:)' id '700d65a9-563e-43b2-b67b-dafc062ce473' date '09/15/2010' time '20:24:48' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.15' message 'fixed ZnMimeType parser dependency on Grease #trimBoth' id 'c6c44454-82e2-4e4a-92b2-af8a446611c4' date '09/15/2010' time '09:59:55' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.14' message 'fixing ZnHTTPSocketFacade>>#httpPut:to:user:passwd: semantics; added ZnMessage #head: #post and #put; added ZnHeaders>>#removeKey:[ifAbsent:] ; allowed for missing content-type when reading entities; enforcing content-length header to be string in #acceptEntityDescription: ' id 'b8cc69ee-4ee8-4669-b1c9-0ecc06974d8b' date '09/14/2010' time '15:12:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.13' message 'added ZnHTTPSocketFacade>>#testPut' id 'f60e0f04-bb28-4e28-9081-30d1488a510d' date '09/14/2010' time '15:08:25' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.12' message 'ZnHTTPSocketFacade: adjusting semantics ' id 'aad4ed72-9c44-4f33-b11f-85ab3c74fe74' date '09/14/2010' time '13:28:08' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.11' message 'first complete implementation of (new) ZnHTTPSocketFacade (incomplete tests)' id '0e442350-2cef-483d-93ed-77f7e3c85f53' date '09/13/2010' time '22:31:39' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.10' message 'added support for server side basic authentication' id '3483f716-801a-4c1d-acae-dd2a02bd2940' date '09/13/2010' time '13:55:03' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.9' message 'added support for client side basic authentication' id '0181a1a0-a07e-42dd-8d81-dbf6c5fc89e2' date '09/12/2010' time '20:35:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.8' message 'added some tests related to entities and query parsing' id '4b2806bd-c3cf-41a0-b14e-35acb7467533' date '09/12/2010' time '11:29:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.7' message 'added header name normalization; added optional multi-valued header values; added optional header value merging' id '753b4898-f9c4-4b17-928d-cd33702a92de' date '09/10/2010' time '21:06:43' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.6' message '1st primitive but working ZnServer' id 'b1a9a8ed-1955-4370-a88a-8e4eacaea787' date '09/08/2010' time '11:06:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.5' message 'ZnClient #get: and #getJpeg: now work for normal situations' id '6a7d2dc3-b759-4b91-8581-7d03a7d32012' date '09/07/2010' time '20:04:18' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.4' message 'Started the Zinc-Tests-New category; not much to see yet' id 'd51b0a36-ae16-4b95-bcf2-50dbc0855a01' date '09/06/2010' time '23:06:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.3' message 'removed old bogus test; added 1st functional test' id '52a21560-c504-4466-aa7d-0264cd8a4265' date '09/01/2010' time '19:52:23' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.2' message 'Renamed HC HTTP Client to Zinc HTTP Components; Renamed all classes to use Zn namespace prefix' id '83eb4cfc-4a78-4e11-b8d5-29bccf1dd8ba' date '09/01/2010' time '19:14:14' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Tests-SvenVanCaekenberghe.1' message 'Renamed HC HTTP Client to Zinc HTTP Components; Renamed all classes to use Zn namespace prefix' id 'da047f84-cace-4fa8-971b-366c26046539' date '09/01/2010' time '17:29:46' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/endpoint..st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/endpoint..st index d674e61f..0e1a75c7 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/endpoint..st +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/endpoint..st @@ -1,3 +1,3 @@ initialize-release endpoint: aUrlObject - endpoint := aUrlObject asZnUrl \ No newline at end of file + endpoint := aUrlObject asZnUrl \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/generateCaptcha..st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/generateCaptcha..st new file mode 100644 index 00000000..773563cf --- /dev/null +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/generateCaptcha..st @@ -0,0 +1,8 @@ +private html generation +generateCaptcha: request + | first second | + first := request session attributeAt: #firstNumber put: 10 atRandom. + second := request session attributeAt: #secondNumber put: 10 atRandom. + ^ String streamContents: [ :stream | + stream << ' Captcha: '; << first asWords; << ' plus '; << second asWords. + stream << ' equals ' ] \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/generateNewPage.st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/generateNewPage.st new file mode 100644 index 00000000..972f4bf5 --- /dev/null +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/generateNewPage.st @@ -0,0 +1,8 @@ +private html generation +generateNewPage + ^ String streamContents: [ :stream | + stream << ZnConstants standardHtmlDocType. + stream << ''. + stream << self newPageData. + stream << self standardPageFooter. + stream << '' ] diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleNewIndex..st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleNewIndex..st new file mode 100644 index 00000000..584fb99b --- /dev/null +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleNewIndex..st @@ -0,0 +1,6 @@ +private request handling +handleNewIndex: request + | html captcha | + captcha := self generateCaptcha: request. + html := self generateNewPage format: { #captcha -> captcha } asDictionary. + ^ ZnResponse ok: (ZnEntity html: html) \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleNewPost..st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleNewPost..st new file mode 100644 index 00000000..8b7fa333 --- /dev/null +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleNewPost..st @@ -0,0 +1,14 @@ +private request handling +handleNewPost: request + | key contents first second sum | + (request hasEntity and: [ request entity contentType = ZnMimeType applicationFormUrlEncoded ]) + ifFalse: [ ^ ZnResponse badRequest: request ]. + contents := request entity at: #contents. + first := request session attributeAt: #firstNumber ifAbsent: [ 0 ]. + second := request session attributeAt: #secondNumber ifAbsent: [ 0 ]. + sum := Integer readFrom: (request entity at: #sum ifAbsent: [ ]) ifFail: [ 0 ]. + contents isEmpty | first isZero | second isZero | sum isZero | (first + second ~= sum) + ifTrue: [ ^ ZnResponse badRequest: request ]. + key := self generateNewKey. + workspaces at: key put: contents. + ^ ZnResponse redirect: key \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleRequest..st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleRequest..st index a1e7fa89..69def00b 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleRequest..st +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/handleRequest..st @@ -1,10 +1,17 @@ public handleRequest: request request uri isSlash - ifTrue: [ + ifTrue: [ request method = #GET ifTrue: [ ^ self handleIndex: request ]. request method = #POST ifTrue: [ ^ self handlePost: request ] ] - ifFalse: [ - (request uri pathSegments size = 1 and: [ request method = #GET ]) - ifTrue: [ ^ self handleGet: request ] ]. + ifFalse: [ + request uri pathSegments size = 1 + ifTrue: [ + request uri firstPathSegment = #new + ifTrue: [ + request method = #GET ifTrue: [ ^ self handleNewIndex: request ]. + request method = #POST ifTrue: [ ^ self handleNewPost: request ] ] + ifFalse: [ + request method = #GET + ifTrue: [ ^ self handleGet: request ] ] ] ]. ^ ZnResponse badRequest: request uri \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/homepageData.st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/homepageData.st index 696315fe..32e66ee9 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/homepageData.st +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/homepageData.st @@ -27,7 +27,7 @@ you can easily publish the contents of any workspace to this website. Each time you publish a workspace, you will create a new shared web workspace. Each shared web workspace is identified by a unique key. Keys look like 6DKGPHMWVMI8. The unique, official URL to the shared workspace -for that key would be http://ws.stfx.eu/6DKGPHMWVMI8. +for that key then becomes http://ws.stfx.eu/6DKGPHMWVMI8.

To actually share the workspace you can pass the URL around in any message. @@ -39,7 +39,10 @@ Alternatively, recipients of a shared workspace URL or key can use ZnWorkspac to open the contents right in an image, ready to be used.

-For instructions on how to begin, see the Getting Started Workspace. +For instructions on how to begin, see the Getting Started Workspace. +

+

+You can also create a shared workspace using a simple web interface where you can directly type or paste text, see New.

All information published via this service is public. @@ -60,7 +63,7 @@ Additionally, adding a query parameter format=html or format=text to the URL wil

Once created, shared workspaces are read-only. They can neither be modified, nor deleted. Little used workspaces will eventually be removed after some period of time. -The maximum size for workspaces is 64Kb. +The maximum size for workspaces is limited to 32 Kb. Any line end convention as well as ASCII, Latin1 and UTF-8 encoding are supported for incoming data. Workspaces are always served using the Unix line end convention and UTF-8 encoding.

diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/initialize.st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/initialize.st index 50cc6c72..b2abeb7b 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/initialize.st +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/initialize.st @@ -1,4 +1,4 @@ initialize-release initialize super initialize. - workspaces := ZnWebWorkspaceStorage on: (FileDirectory default / 'wws' / 'data') \ No newline at end of file + workspaces := ZnWebWorkspaceStorage on: 'wws/data' asFileReference \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/isBrowserRequest..st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/isBrowserRequest..st index f55841dd..eb3cc3e3 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/isBrowserRequest..st +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/isBrowserRequest..st @@ -8,4 +8,4 @@ isBrowserRequest: request q1 := (x parameterAt: 'q' ifAbsent: [ 1.0 ]) asNumber. q2 := (y parameterAt: 'q' ifAbsent: [ 1.0 ]) asNumber. q1 >= q2 ]) first. - ^ primaryMimeType = ZnMimeType textHtml \ No newline at end of file + ^ primaryMimeType = ZnMimeType textHtml \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/newPageData.st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/newPageData.st new file mode 100644 index 00000000..5cb8d2fd --- /dev/null +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/newPageData.st @@ -0,0 +1,31 @@ +private html +newPageData + ^ ' + +Create A New Shared Smalltalk Workspace + + + + + +

Create A New Shared Smalltalk Workspace

+ +
+ +
+ Home + | Getting Started Workspace + | {captcha} + | +
+
+' \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/standardPageFooter.st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/standardPageFooter.st index 8e55b125..55b80f19 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/standardPageFooter.st +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/standardPageFooter.st @@ -4,8 +4,8 @@ standardPageFooter Shared Smalltalk Workspaces is a free web service offered by http://stfx.eu. -Copyright © 2012 Sven Van Caekenberghe. -Built and served using Pharo Smalltalk 1.4. +Copyright © 2012,2013 Sven Van Caekenberghe. +Built and served using Pharo Smalltalk 2.0.
THIS SOFTWARE SERVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/standardPageProlog.st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/standardPageProlog.st index fd0906a7..88874532 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/standardPageProlog.st +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/instance/standardPageProlog.st @@ -4,8 +4,9 @@ standardPageProlog

http://ws.stfx.eu/{1}

Doit -| Raw -| For instructions, see the Getting Started Workspace -| Home +| Raw +| Getting Started Workspace +| Home +| New
' \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/methodProperties.json b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/methodProperties.json index 30a750ac..74c12b07 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/methodProperties.json +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceDelegate.class/methodProperties.json @@ -5,16 +5,21 @@ "demoKey" : "SvenVanCaekenberghe 1/24/2012 23:20", "endpoint" : "SvenVanCaekenberghe 1/31/2012 11:03", "endpoint:" : "SvenVanCaekenberghe 1/28/2012 18:37", + "generateCaptcha:" : "SvenVanCaekenberghe 3/14/2013 16:38", "generateHomepage" : "SvenVanCaekenberghe 2/2/2012 10:26", "generateNewKey" : "SvenVanCaekenberghe 1/28/2012 13:06", + "generateNewPage" : "SvenVanCaekenberghe 3/14/2013 15:23", "generatePageFor:withKey:" : "SvenVanCaekenberghe 1/31/2012 23:22", "handleGet:" : "SvenVanCaekenberghe 1/28/2012 16:35", "handleIndex:" : "SvenVanCaekenberghe 1/28/2012 16:54", + "handleNewIndex:" : "SvenVanCaekenberghe 3/14/2013 16:11", + "handleNewPost:" : "SvenVanCaekenberghe 3/14/2013 16:57", "handlePost:" : "SvenVanCaekenberghe 1/28/2012 13:06", - "handleRequest:" : "SvenVanCaekenberghe 3/7/2012 16:02", - "homepageData" : "SvenVanCaekenberghe 2/2/2012 10:26", - "initialize" : "SvenVanCaekenberghe 1/28/2012 16:52", + "handleRequest:" : "SvenVanCaekenberghe 3/14/2013 15:16", + "homepageData" : "SvenVanCaekenberghe 3/14/2013 17:08", + "initialize" : "SvenVanCaekenberghe 9/4/2012 15:47", "isBrowserRequest:" : "SvenVanCaekenberghe 1/28/2012 16:56", - "standardPageFooter" : "SvenVanCaekenberghe 1/31/2012 22:19", + "newPageData" : "SvenVanCaekenberghe 3/14/2013 16:34", + "standardPageFooter" : "SvenVanCaekenberghe 3/14/2013 15:00", "standardPageHeader" : "SvenVanCaekenberghe 1/31/2012 23:18", - "standardPageProlog" : "SvenVanCaekenberghe 2/2/2012 22:25" } } + "standardPageProlog" : "SvenVanCaekenberghe 3/14/2013 15:11" } } diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/instance/at.ifAbsent..st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/instance/at.ifAbsent..st index f3d8fe6b..1c953ca5 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/instance/at.ifAbsent..st +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/instance/at.ifAbsent..st @@ -1,10 +1,8 @@ accessing at: key ifAbsent: block - | fullName entry | - fullName := self directory / (key first: 2) / key. - (fullName containingDirectory fileExists: fullName localName) + | fullPath | + fullPath := self directory / (key first: 2) / key. + fullPath exists ifFalse: [ ^ block value ]. - entry := fullName directoryEntry. - ^ FileStream - fileNamed: entry fullName - do: [ :stream | stream upToEnd ] \ No newline at end of file + ^ fullPath readStreamDo: [ :stream | + stream upToEnd ] \ No newline at end of file diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/instance/at.put..st b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/instance/at.put..st index 3ce9f985..f64d6f6d 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/instance/at.put..st +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/instance/at.put..st @@ -1,11 +1,9 @@ accessing at: key put: string | subDirectory | - self directory assureExistence. + self directory ensureDirectory. subDirectory := self directory / (key first: 2). - subDirectory assureExistence. - FileStream - fileNamed: (subDirectory / key) pathName - do: [ :stream | - stream lineEndConvention: #lf. - string linesDo: [ :each | stream nextPutAll: each; cr ] ] + subDirectory ensureDirectory. + (subDirectory / key) writeStreamDo: [ :stream | + stream lineEndConvention: #lf. + string linesDo: [ :each | stream nextPutAll: each; cr ] ] diff --git a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/methodProperties.json b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/methodProperties.json index 501fffdb..691c5c17 100644 --- a/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/methodProperties.json +++ b/repository/Zinc-WWS-Server.package/ZnWebWorkspaceStorage.class/methodProperties.json @@ -3,7 +3,7 @@ "on:" : "SvenVanCaekenberghe 1/25/2012 16:27" }, "instance" : { "at:" : "SvenVanCaekenberghe 1/25/2012 16:29", - "at:ifAbsent:" : "SvenVanCaekenberghe 1/30/2012 22:09", - "at:put:" : "SvenVanCaekenberghe 1/29/2012 20:30", + "at:ifAbsent:" : "SvenVanCaekenberghe 9/4/2012 15:45", + "at:put:" : "SvenVanCaekenberghe 9/4/2012 15:47", "directory" : "SvenVanCaekenberghe 1/25/2012 16:27", "directory:" : "SvenVanCaekenberghe 1/25/2012 16:28" } } diff --git a/repository/Zinc-WWS-Server.package/monticello.meta/version b/repository/Zinc-WWS-Server.package/monticello.meta/version index 3015562e..2c460fc0 100644 --- a/repository/Zinc-WWS-Server.package/monticello.meta/version +++ b/repository/Zinc-WWS-Server.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-WWS-Server-SvenVanCaekenberghe.7' message 'small bugfix to #handleRequest:' id '110fa93d-4f91-48e7-ad52-df16da476367' date '7 March 2012' time '4:03:35 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.6' message 'fixed a URL' id '2ae381cc-8123-42e4-acdf-2942e53b5dc6' date '2 February 2012' time '10:26:27 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.5' message 'more HTML fixes (reusing/sharing footer)' id '289cfff8-f354-49f0-8ce6-128c3bb77986' date '2 February 2012' time '10:29:41 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.4' message 'updated generated HTML' id '211f8c2d-6efb-40d0-b36a-4ef66ec912e6' date '1 February 2012' time '9:06:07 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.3' message 'added full HTML generation' id '183cbfa5-adb4-4da1-a9f7-b3b12ae87b8c' date '31 January 2012' time '11:26:10 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.2' message 'fixes to endpoint initialization' id '3ace3f63-cb27-4589-a6c1-45be1cf71490' date '31 January 2012' time '2:06:35 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.1' message 'first public version' id '0e253bb4-8910-44c0-a6ac-e224cea0f608' date '31 January 2012' time '10:17:24 am' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-WWS-Server-SvenVanCaekenberghe.9' message 'Added a simple web interface to create new shared smalltalk workspaces http://ws.stfx.eu/new Updated some texts.' id '9d903fb2-4088-4982-9bd1-4c762ecd97fa' date '03/14/2013' time '05:10:51' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.8' message 'updated for Pharo 2.0 FileSystem API' id 'f19b22ce-27ab-4a46-b482-2080288e292e' date '09/04/2012' time '03:54:42' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.7' message 'small bugfix to #handleRequest:' id '110fa93d-4f91-48e7-ad52-df16da476367' date '03/07/2012' time '16:03:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.6' message 'fixed a URL' id '2ae381cc-8123-42e4-acdf-2942e53b5dc6' date '02/02/2012' time '22:26:27' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.5' message 'more HTML fixes (reusing/sharing footer)' id '289cfff8-f354-49f0-8ce6-128c3bb77986' date '02/02/2012' time '10:29:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.4' message 'updated generated HTML' id '211f8c2d-6efb-40d0-b36a-4ef66ec912e6' date '02/01/2012' time '21:06:07' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.3' message 'added full HTML generation' id '183cbfa5-adb4-4da1-a9f7-b3b12ae87b8c' date '01/31/2012' time '23:26:10' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.2' message 'fixes to endpoint initialization' id '3ace3f63-cb27-4589-a6c1-45be1cf71490' date '01/31/2012' time '14:06:35' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WWS-Server-SvenVanCaekenberghe.1' message 'first public version' id '0e253bb4-8910-44c0-a6ac-e224cea0f608' date '01/31/2012' time '10:17:24' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/class/generateTestData..st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/class/generateTestData..st index d2644544..f66418e6 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/class/generateTestData..st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/class/generateTestData..st @@ -7,4 +7,4 @@ generateTestData: size stream << 'Transfer test file of size '; print: size; << ' bytes.'; lf. 1 to: size do: [ :each | stream nextPutAll: 'Line '; print: each; lf ] ] - limitedTo: size \ No newline at end of file + limitedTo: size \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGetPharoVersion.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGetPharoVersion.st index f7ae2304..898121ad 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGetPharoVersion.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGetPharoVersion.st @@ -1,14 +1,16 @@ testing testGetPharoVersion - | client lastBuildVersion | + | client lastBuildVersion version | self ensureSocketStreamFactory. self isNativeSSLPluginPresent ifFalse: [ ^ self ]. lastBuildVersion := (client := ZnClient new) beOneShot; - get: 'https://ci.inria.fr/pharo/job/Pharo-2.0/lastSuccessfulBuild/api/xml?xpath=/*/description/text()'. + get: 'https://ci.inria.fr/pharo/job/Pharo-2.0/lastSuccessfulBuild/api/xml?xpath=/*/description'. self assert: client isSuccess. - self assert: client response contentType equals: ZnMimeType textPlain. + self assert: (client response contentType matches: ZnMimeType applicationXml). self assert: client response contentLength > 0. self assert: lastBuildVersion notNil. self assert: lastBuildVersion isString. - self assert: lastBuildVersion size > 0 \ No newline at end of file + self assert: lastBuildVersion size > 0. + version := (lastBuildVersion copyAfter: $>) copyUpTo: $<. + self deny: version isEmpty \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testTransfers.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testTransfers.st index 04778ba8..d6de8b0c 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testTransfers.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testTransfers.st @@ -12,7 +12,7 @@ testTransfers get; close. self assert: client isSuccess. - self assert: client response contentType equals: ZnMimeType textPlain. + self assert: (client response contentType matches: ZnMimeType textPlain). self assert: client response contentLength equals: size. self assert: client contents diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testTransfersSingleClient.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testTransfersSingleClient.st index e24ec93c..ebdb0ab7 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testTransfersSingleClient.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testTransfersSingleClient.st @@ -12,7 +12,7 @@ testTransfersSingleClient url: ('/public-stfx-eu/test-', size asString, '.txt'); get. self assert: client isSuccess. - self assert: client response contentType equals: ZnMimeType textPlain. + self assert: (client response contentType matches: ZnMimeType textPlain). self assert: client response contentLength equals: size. self assert: client contents diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/methodProperties.json b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/methodProperties.json index c80a92e7..9905cdda 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/methodProperties.json +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/methodProperties.json @@ -8,10 +8,10 @@ "isNativeSSLPluginPresent" : "SvenVanCaekenberghe 7/4/2012 11:32", "testAmazonAWS" : "SvenVanCaekenberghe 8/23/2012 14:34", "testGForceInria" : "SvenVanCaekenberghe 8/23/2012 14:34", - "testGetPharoVersion" : "SvenVanCaekenberghe 12/16/2012 21:51", + "testGetPharoVersion" : "SvenVanCaekenberghe 5/21/2013 22:21", "testGmailEncrypted" : "SvenVanCaekenberghe 8/23/2012 14:34", "testGoogleEncrypted" : "SvenVanCaekenberghe 8/23/2012 14:34", "testRequestResponse" : "SvenVanCaekenberghe 8/23/2012 14:34", - "testTransfers" : "SvenVanCaekenberghe 7/4/2012 11:35", - "testTransfersSingleClient" : "SvenVanCaekenberghe 7/4/2012 11:34", + "testTransfers" : "SvenVanCaekenberghe 5/21/2013 22:21", + "testTransfersSingleClient" : "SvenVanCaekenberghe 5/21/2013 22:24", "testWikimedia" : "SvenVanCaekenberghe 8/23/2012 14:34" } } diff --git a/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/README.md b/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/README.md deleted file mode 100644 index a07aafde..00000000 --- a/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/README.md +++ /dev/null @@ -1,10 +0,0 @@ -ZnZodiacNetworkingUtils is socket and socketstream factory subclassing ZnNetworkingUtils, -instanciating Zodiac socket streams., namely ZdcSocketStream and ZdcSecureSocketStream. - -Obviously, this class depends on Zodiac. - -ZnNetworkingUtils default: ZnZodiacNetworkingUtils new. - -ZnNetworkingUtils default: nil. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/instance/initialize.st b/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/instance/initialize.st deleted file mode 100644 index 86e07944..00000000 --- a/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/instance/initialize.st +++ /dev/null @@ -1,5 +0,0 @@ -initialize-release -initialize - super initialize. - self socketStreamClass: ZdcSocketStream. - self secureSocketStreamClass: ZdcSecureSocketStream \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/methodProperties.json b/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/methodProperties.json deleted file mode 100644 index cfff8342..00000000 --- a/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/methodProperties.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "initialize" : "SvenVanCaekenberghe 11/10/2011 13:42" } } diff --git a/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/properties.json b/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/properties.json deleted file mode 100644 index 81700be3..00000000 --- a/repository/Zinc-Zodiac.package/ZnZodiacNetworkingUtils.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Zodiac", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 5/18/2011 12:40", - "instvars" : [ - ], - "name" : "ZnZodiacNetworkingUtils", - "pools" : [ - ], - "super" : "ZnNetworkingUtils", - "type" : "normal" } diff --git a/repository/Zinc-Zodiac.package/monticello.meta/version b/repository/Zinc-Zodiac.package/monticello.meta/version index cf822c2e..8110a858 100644 --- a/repository/Zinc-Zodiac.package/monticello.meta/version +++ b/repository/Zinc-Zodiac.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-Zodiac-SvenVanCaekenberghe.24' message 'added ZnSecureServer>>#scheme to return #https' id 'e3f52cac-3f55-4179-a627-010669e514e9' date '4 January 2013' time '2:25:42.121 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.23' message 'fixed URL in #testGetPharoVersion' id '13e5f290-5cf3-42fe-8399-c4084b186664' date '16 December 2012' time '9:56:12.161 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-MarcusDenker.22' message 'Issue 6815: Free freetype from bugs http://code.google.com/p/pharo/issues/detail?id=6815 Issue 6679: Failing test: ZnHTTPSTests.testPayPal http://code.google.com/p/pharo/issues/detail?id=6679 Issue 6812: Smalltalkhub Monticello Repository throws error when empty http://code.google.com/p/pharo/issues/detail?id=6812' id 'cb608024-df09-4ef9-80ff-e8c3964ecaeb' date '15 October 2012' time '5:44:37.741 pm' author 'MarcusDenker' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.21' message 'reamed #testPayPal to disable it for now' id '960e1856-4344-43f8-a7b2-e0ee5a5589b0' date '2 October 2012' time '2:57:19.425 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.20' message 'Skip #testPayPal for now' id 'b29a2453-e986-4845-a1bd-f0fd56a4ef2c' date '2 October 2012' time '1:14:04.067 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.18' message '#includesSubString: becomes #includesSubstring:' id 'f48a3c4f-281f-48b2-ab0f-2d2429abdf96' date '27 August 2012' time '9:45:22.224 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.17' message 'added guards to ZnHTTPSTests>>#testGetPharoVersion so that it is not run when the SSL Plugin is not present' id '18b9b52b-5155-42fe-a207-f3e3c7e21779' date '16 July 2012' time '11:44:06.779 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.16' message 'added ZnHTTSTests>>#testGetPharoVersion' id '692bd74b-599c-4743-a318-1967ebff5fa3' date '13 July 2012' time '1:06:16.878 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-MarcusDenker.15' message 'Issue 6248: Update Zodiac to better deal with missing native VM SSL plugin http://code.google.com/p/pharo/issues/detail?id=6248' id '0d77b0bd-db6c-41f4-bc61-fc8c777b58ac' date '4 July 2012' time '1:12:40.742 pm' author 'MarcusDenker' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.14' message 'changed all tests in ZnHTTPSTests to be skipped when the native VM SSL plugin seems to be missing or not functioning' id 'fac1ef59-945d-4dfd-ab5d-affce993c444' date '4 July 2012' time '11:36:58.374 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.13' message 'added an HTTPS transfer stress test reading odd sized files from Amazon S3 in size between 2 KB and 100 KB checking the full contents to make sure the whole transfer was OK' id 'dcc9a44f-f484-434f-bf7d-c44a1cb9c18e' date '27 June 2012' time '1:57:30.506 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.12' message 'fixed/debugged ZnSecureServer>>#socketStreamOn:' id '3dfc451d-f7ac-4a0b-bca7-b8f98d3c478c' date '13 December 2011' time '9:45 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.11' message 'added skeleton of ZnSecureServer' id '50a444ae-aa6d-4ba7-a984-10f3416e675c' date '13 December 2011' time '1:39:07 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.10' message 'moved most ZnZodiacNetworkingUtils functionality to its parent class ZnNetworkingUtils; the only reason left to use ZnZodiacNetworkingUtils is to force both regular and secure stream to be of the Zodiac kind' id 'b3dd12a9-8542-42da-9f04-57afc7eedd72' date '10 November 2011' time '2:13:02 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.9' message 'tracking the renaming of ZnNeoClient -> ZnClient' id '5fd12c41-3ce5-4e32-a351-5548a8b52a71' date '9 November 2011' time '9:21 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.8' message 'make all ZnHTTPSTests use ZnNeoClient directly; added a #close' id '7772a553-4047-4f23-b213-6c9d34a951af' date '4 October 2011' time '4:08:54 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.7' message 'replaces some usage of ZnClient by ZnEasy' id 'bce5ec97-934b-4657-ab84-4974e5b9ad6c' date '16 September 2011' time '9:12:37 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.6' message 'fixed a typo leading to an Undeclared' id 'c6961750-e60d-4cf9-8a42-02fdf02556b7' date '12 September 2011' time '1:36:42 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.5' message 'fixed a typo' id '72e5d446-3a6e-4c6c-ba91-ad92e042dc13' date '22 June 2011' time '9:21:01 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.4' message 'added more HTTPS tests' id 'f40cd81f-e1c4-4d27-b6d6-e452c2d06378' date '18 May 2011' time '4:09:41 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.3' message 'made the tests a bit more robust' id '7205c6ed-0c55-4332-9e03-b87f9135e9e2' date '18 May 2011' time '2:18:56 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.2' message 'enabled ZdcSecureSocketStream in ZnZodiacNetworkingUtils; added ZnHTTPSTests' id 'b2d2d06d-35c0-47e4-ac92-b9b64c97c7ba' date '18 May 2011' time '2:03:21 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.1' message 'first version of ZnZodiacNetworkingUtils' id '7c8b9797-27c5-4ae2-a522-5e11f0935e8d' date '17 May 2011' time '7:23:55 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-Zodiac-SvenVanCaekenberghe.27' message 'Removed ZnZodiacNetworkingUtils (it is the default now)' id '804ebfbb-8d33-4edc-bceb-0eabacee95da' date '05/28/2013' time '07:52:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.26' message 'Tracking ZnMimeType>>#= changes from Zinc-Resource-Meta (using #match: instead)' id 'c59d6959-50be-4628-a9f9-ead4dd739c3a' date '05/22/2013' time '04:25:36' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.25' message 'Patch ZnHTTPSTests>>#testGetPharoVersion again because the underlying semantics of the URL being tested have changed - no longer use /text() in the XPath query' id 'b52e2249-16bc-46af-9c11-688fda41ac6d' date '02/22/2013' time '03:04:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.24' message 'added ZnSecureServer>>#scheme to return #https' id 'e3f52cac-3f55-4179-a627-010669e514e9' date '01/04/2013' time '02:25:42' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.23' message 'fixed URL in #testGetPharoVersion' id '13e5f290-5cf3-42fe-8399-c4084b186664' date '12/16/2012' time '09:56:12' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-MarcusDenker.22' message 'Issue 6815: Free freetype from bugs http://code.google.com/p/pharo/issues/detail?id=6815 Issue 6679: Failing test: ZnHTTPSTests.testPayPal http://code.google.com/p/pharo/issues/detail?id=6679 Issue 6812: Smalltalkhub Monticello Repository throws error when empty http://code.google.com/p/pharo/issues/detail?id=6812' id 'cb608024-df09-4ef9-80ff-e8c3964ecaeb' date '10/15/2012' time '05:44:37' author 'MarcusDenker' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.21' message 'reamed #testPayPal to disable it for now' id '960e1856-4344-43f8-a7b2-e0ee5a5589b0' date '10/02/2012' time '02:57:19' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.20' message 'Skip #testPayPal for now' id 'b29a2453-e986-4845-a1bd-f0fd56a4ef2c' date '10/02/2012' time '01:14:04' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.18' message '#includesSubString: becomes #includesSubstring:' id 'f48a3c4f-281f-48b2-ab0f-2d2429abdf96' date '08/27/2012' time '09:45:22' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.17' message 'added guards to ZnHTTPSTests>>#testGetPharoVersion so that it is not run when the SSL Plugin is not present' id '18b9b52b-5155-42fe-a207-f3e3c7e21779' date '07/16/2012' time '11:44:06' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.16' message 'added ZnHTTSTests>>#testGetPharoVersion' id '692bd74b-599c-4743-a318-1967ebff5fa3' date '07/13/2012' time '01:06:16' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-MarcusDenker.15' message 'Issue 6248: Update Zodiac to better deal with missing native VM SSL plugin http://code.google.com/p/pharo/issues/detail?id=6248' id '0d77b0bd-db6c-41f4-bc61-fc8c777b58ac' date '07/04/2012' time '01:12:40' author 'MarcusDenker' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.14' message 'changed all tests in ZnHTTPSTests to be skipped when the native VM SSL plugin seems to be missing or not functioning' id 'fac1ef59-945d-4dfd-ab5d-affce993c444' date '07/04/2012' time '11:36:58' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.13' message 'added an HTTPS transfer stress test reading odd sized files from Amazon S3 in size between 2 KB and 100 KB checking the full contents to make sure the whole transfer was OK' id 'dcc9a44f-f484-434f-bf7d-c44a1cb9c18e' date '06/27/2012' time '01:57:30' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.12' message 'fixed/debugged ZnSecureServer>>#socketStreamOn:' id '3dfc451d-f7ac-4a0b-bca7-b8f98d3c478c' date '12/13/2011' time '21:45:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.11' message 'added skeleton of ZnSecureServer' id '50a444ae-aa6d-4ba7-a984-10f3416e675c' date '12/13/2011' time '13:39:07' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.10' message 'moved most ZnZodiacNetworkingUtils functionality to its parent class ZnNetworkingUtils; the only reason left to use ZnZodiacNetworkingUtils is to force both regular and secure stream to be of the Zodiac kind' id 'b3dd12a9-8542-42da-9f04-57afc7eedd72' date '11/10/2011' time '14:13:02' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.9' message 'tracking the renaming of ZnNeoClient -> ZnClient' id '5fd12c41-3ce5-4e32-a351-5548a8b52a71' date '11/09/2011' time '09:21:00' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.8' message 'make all ZnHTTPSTests use ZnNeoClient directly; added a #close' id '7772a553-4047-4f23-b213-6c9d34a951af' date '10/04/2011' time '16:08:54' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.7' message 'replaces some usage of ZnClient by ZnEasy' id 'bce5ec97-934b-4657-ab84-4974e5b9ad6c' date '09/16/2011' time '21:12:37' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.6' message 'fixed a typo leading to an Undeclared' id 'c6961750-e60d-4cf9-8a42-02fdf02556b7' date '09/12/2011' time '13:36:42' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.5' message 'fixed a typo' id '72e5d446-3a6e-4c6c-ba91-ad92e042dc13' date '06/22/2011' time '21:21:01' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.4' message 'added more HTTPS tests' id 'f40cd81f-e1c4-4d27-b6d6-e452c2d06378' date '05/18/2011' time '16:09:41' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.3' message 'made the tests a bit more robust' id '7205c6ed-0c55-4332-9e03-b87f9135e9e2' date '05/18/2011' time '14:18:56' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.2' message 'enabled ZdcSecureSocketStream in ZnZodiacNetworkingUtils; added ZnHTTPSTests' id 'b2d2d06d-35c0-47e4-ac92-b9b64c97c7ba' date '05/18/2011' time '14:03:21' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Zodiac-SvenVanCaekenberghe.1' message 'first version of ZnZodiacNetworkingUtils' id '7c8b9797-27c5-4ae2-a522-5e11f0935e8d' date '05/17/2011' time '19:23:55' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/tests/travisCI.st b/tests/travisCI.st new file mode 100644 index 00000000..d66e15ee --- /dev/null +++ b/tests/travisCI.st @@ -0,0 +1,24 @@ +"Load and run tests to be performed by TravisCI" +| gitCache gitPath | +Transcript cr; show: 'travis---->travisCI.st'. + +gitCache := 'git_cache'. +gitPath := (Smalltalk at: #'FileDirectory' ifAbsent: [ ]) + ifNil: [ ((Smalltalk at: #'FileSystem') workingDirectory / gitCache) pathString ] + ifNotNil: [:fileDirectoryClass | (fileDirectoryClass default directoryNamed: gitCache ) fullName]. + +"Load Zinc... " +[ +Metacello new + baseline: 'ZincHTTPComponents'; + repository: 'filetree://', gitPath, '/zinc/repository'; + load: #('Tests' 'Core'). +] on: Warning do: [:ex | + Transcript cr; show: 'WARNING: ', ex description. + ex resume: true ]. + +"Run the Zinc tests" +TravisCIHarness + value: #( 'BaselineOfZincHTTPComponents' ) + value: 'TravisCISuccess.txt' + value: 'TravisCIFailure.txt'.