diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/README.md b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/README.md index e844ad5b..a0f1a98a 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/README.md +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/README.md @@ -1,10 +1,12 @@ 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://homepage.mac.com/svc/Zinc-HTTP-Components +For more information, see http://zn.stfx.eu -One way to load this project is by executing: +Here are some ways to load this project: + ConfigurationOfZincHTTPComponents load. ConfigurationOfZincHTTPComponents project latestVersion load. ConfigurationOfZincHTTPComponents project latestVersion load: 'Tests'. + ConfigurationOfZincHTTPComponents project bleedingEdge load. 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/baseline18..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline18..st new file mode 100644 index 00000000..627c6f60 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline18..st @@ -0,0 +1,56 @@ +baselines +baseline18: 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://www.squeaksource.com/ZincHTTPComponents'. + spec project: 'XML Support' with: [ + spec + className: 'ConfigurationOfXMLSupport'; + versionString: #'stable'; + repository: 'http://www.squeaksource.com/MetacelloRepository' ]. + spec package: 'Zodiac-Core' with: [ + spec repository: 'http://www.squeaksource.com/Zodiac' ]. + spec + package: 'Zinc-HTTP'; + 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' ]; + package: 'Zinc-Zodiac' with: [ spec requires: #('Zinc-HTTP' 'Zodiac-Core') ]; + package: 'Zinc-WebSocket-Core' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-WebSocket-Tests' with: [ spec requires: 'Zinc-WebSocket-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' ]. + spec + group: 'default' with: #('Core'); + group: 'Core' with: #('Zinc-HTTP'); + group: 'Tests' with: #('Zinc-Tests'); + group: 'AWS' with: #('Zinc-AWS'); + group: 'WebDAV' with: #('Zinc-WebDAV'); + group: 'WebSocket' with: #('Zinc-WebSocket-Core' 'Zinc-WebSocket-Tests'); + group: 'WWS' with: #('Zinc-WWS-Server' 'Zinc-WWS-Client'); + group: 'REST' with: #('Zinc-REST'); + group: 'Patch-HTTPSocket' with: #('Zinc-Patch-HTTPSocket') ]. + 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' ] ] diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline19..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline19..st new file mode 100644 index 00000000..0bf60e35 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline19..st @@ -0,0 +1,56 @@ +baselines +baseline19: 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 package: 'Zodiac-Core' with: [ + spec repository: 'http://mc.stfx.eu/Zodiac' ]. + spec + package: 'Zinc-HTTP'; + 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' ]; + package: 'Zinc-Zodiac' with: [ spec requires: #('Zinc-HTTP' 'Zodiac-Core') ]; + package: 'Zinc-WebSocket-Core' with: [ spec requires: 'Zinc-HTTP' ]; + package: 'Zinc-WebSocket-Tests' with: [ spec requires: 'Zinc-WebSocket-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' ]. + spec + group: 'default' with: #('Core'); + group: 'Core' with: #('Zinc-HTTP'); + group: 'Tests' with: #('Zinc-Tests'); + group: 'AWS' with: #('Zinc-AWS'); + group: 'WebDAV' with: #('Zinc-WebDAV'); + group: 'WebSocket' with: #('Zinc-WebSocket-Core' 'Zinc-WebSocket-Tests'); + group: 'WWS' with: #('Zinc-WWS-Server' 'Zinc-WWS-Client'); + group: 'REST' with: #('Zinc-REST'); + group: 'Patch-HTTPSocket' with: #('Zinc-Patch-HTTPSocket') ]. + 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/baseline20..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline20..st new file mode 100644 index 00000000..0e896f5a --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline20..st @@ -0,0 +1,64 @@ +baselines +baseline20: 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: 'Zinc-Resource-Meta-Core'; + package: 'Zinc-Resource-Meta-Tests' with: [ spec requires: 'Zinc-Resource-Meta-Core' ]; + package: 'Zinc-HTTP' with: [ spec requires: '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-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' ]. + spec + group: 'default' with: #('Core'); + group: 'Core' with: #('Zinc-HTTP'); + group: 'Tests' with: #('Zinc-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: 'WWS' with: #('Zinc-WWS-Server' 'Zinc-WWS-Client'); + group: 'REST' with: #('Zinc-REST'); + group: 'Patch-HTTPSocket' with: #('Zinc-Patch-HTTPSocket') ]. + 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/baseline21..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline21..st new file mode 100644 index 00000000..421d976d --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline21..st @@ -0,0 +1,68 @@ +baselines +baseline21: 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-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' ]. + spec + group: 'default' with: #('Core'); + group: 'Core' with: #('Zinc-HTTP'); + group: 'Tests' with: #('Zinc-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: 'WWS' with: #('Zinc-WWS-Server' 'Zinc-WWS-Client'); + group: 'REST' with: #('Zinc-REST'); + group: 'Patch-HTTPSocket' with: #('Zinc-Patch-HTTPSocket') ]. + 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/baseline22..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline22..st new file mode 100644 index 00000000..13ca8193 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline22..st @@ -0,0 +1,79 @@ +baselines +baseline22: 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' ]. + spec + group: 'default' with: #('Core'); + group: 'Core' with: #('Zinc-HTTP'); + group: 'Tests' with: #('Zinc-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') ]. + 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/baseline23..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline23..st new file mode 100644 index 00000000..e2655766 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/baseline23..st @@ -0,0 +1,79 @@ +baselines +baseline23: 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' ]. + 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') ]. + 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 2ea2e50e..fd32f3b3 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/stable..st +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/stable..st @@ -1,5 +1,6 @@ accessing stable: spec - spec for: #pharo version: '1.7'. + spec for: #pharo version: '2.3.2'. + spec for: #'pharo2.x' version: '2.3.2'. spec for: #gemstone version: '1.1' \ No newline at end of file diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version18..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version18..st new file mode 100644 index 00000000..71212585 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version18..st @@ -0,0 +1,32 @@ +versions +version18: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.297'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.153'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.15'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.5'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.11'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.5'; + package: 'Zinc-WWS-Client' with: 'Zinc-WWS-Client-SvenVanCaekenberghe.2'; + package: 'Zinc-WWS-Server' with: 'Zinc-WWS-Server-SvenVanCaekenberghe.7'; + package: 'Zinc-Zodiac' with: 'Zinc-Zodiac-SvenVanCaekenberghe.18'; + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.25' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.6' ]. + 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/version181..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version181..st new file mode 100644 index 00000000..45bda5e3 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version181..st @@ -0,0 +1,32 @@ +versions +version181: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.297'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.153'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.15'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.5'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.11'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.5'; + 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.18'; + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.25' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.6' ]. + 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/version182..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version182..st new file mode 100644 index 00000000..71e05e68 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version182..st @@ -0,0 +1,32 @@ +versions +version182: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.300'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.155'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.15'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.5'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.19'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.18'; + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.26' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.6' ]. + 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/version19..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version19..st new file mode 100644 index 00000000..661f811a --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version19..st @@ -0,0 +1,32 @@ +versions +version19: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.306'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.157'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.5'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.21'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.18'; + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.27' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.7' ]. + 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/version191..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version191..st new file mode 100644 index 00000000..29a10de5 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version191..st @@ -0,0 +1,32 @@ +versions +version191: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.310'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.157'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.5'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.21'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.21'; + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.27' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.7' ]. + 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/version192..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version192..st new file mode 100644 index 00000000..40ef7998 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version192..st @@ -0,0 +1,32 @@ +versions +version192: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.310'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.157'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.5'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.22'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.21'; + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.27' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.7' ]. + 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/version193..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version193..st new file mode 100644 index 00000000..6b635553 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version193..st @@ -0,0 +1,32 @@ +versions +version193: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.310'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.157'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.5'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.23'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.21'; + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.27' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.7' ]. + 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/version20..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version20..st new file mode 100644 index 00000000..6264da3a --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version20..st @@ -0,0 +1,35 @@ +versions +version20: spec + + spec for: #common do: [ + spec + blessing: #release; + description: 'Update to latest package versions'; + author: 'SvenVanCaekenberghe'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.2'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.319'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.163'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.8'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.23'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.21'; + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.27'; + package: 'Zodiac-Tests' with: 'Zodiac-Tests-SvenVanCaekenberghe.10' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.7' ]. + 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/version21..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version21..st new file mode 100644 index 00000000..7295c443 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version21..st @@ -0,0 +1,37 @@ +versions +version21: 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.2'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.3'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.3'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.328'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.169'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.8'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.23'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.23'; + package: 'Zinc-Patch-HTTPSocket' with: 'Zinc-Patch-HTTPSocket-SvenVanCaekenberghe.1'; + package: 'Zodiac-Core' with: 'Zodiac-Core-SvenVanCaekenberghe.27'; + package: 'Zodiac-Tests' with: 'Zodiac-Tests-SvenVanCaekenberghe.10' ]. + spec for: #'pharo1.x' do: [ + spec + package: 'Zinc-FileSystem-Legacy' with: 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3'; + package: 'Zinc-Pharo-Forward-Compatibility' with: 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' ]. + spec for: #'pharo2.x' do: [ + spec package: 'Zinc-FileSystem' with: 'Zinc-FileSystem-SvenVanCaekenberghe.7' ]. + 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/version211..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version211..st new file mode 100644 index 00000000..49db545b --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version211..st @@ -0,0 +1,39 @@ +versions +version211: 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.2'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.3'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.3'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.331'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.170'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.8'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.23'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.23'; + 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.3'; + 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.7' ]. + 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/version212..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version212..st new file mode 100644 index 00000000..0dd16518 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version212..st @@ -0,0 +1,39 @@ +versions +version212: 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.2'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.3'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.3'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.333'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.172'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.8'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.23'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.23'; + 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.3'; + 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.7' ]. + 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/version213..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version213..st new file mode 100644 index 00000000..772e54c8 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version213..st @@ -0,0 +1,39 @@ +versions +version213: 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.2'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.5'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.4'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.335'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.174'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.8'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.24'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + 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.24'; + 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.3'; + 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.7' ]. + 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/version22..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version22..st new file mode 100644 index 00000000..8fa6d967 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version22..st @@ -0,0 +1,45 @@ +versions +version22: 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.2'; + package: 'Zinc-Character-Encoding-Tests' with: 'Zinc-Character-Encoding-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-Resource-Meta-Core' with: 'Zinc-Resource-Meta-Core-SvenVanCaekenberghe.5'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.4'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.335'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.174'; + package: 'Zinc-AWS' with: 'Zinc-AWS-SvenVanCaekenberghe.16'; + package: 'Zinc-REST' with: 'Zinc-REST-SvenVanCaekenberghe.9'; + package: 'Zinc-WebDAV' with: 'Zinc-WebDAV-SvenVanCaekenberghe.3'; + package: 'Zinc-WebSocket-Core' with: 'Zinc-WebSocket-Core-SvenVanCaekenberghe.24'; + package: 'Zinc-WebSocket-Tests' with: 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7'; + package: 'Zinc-SSO-OAuth1-Core' with: 'Zinc-SSO-OAuth1-Core-JanVanDeSandt.8'; + package: 'Zinc-SSO-OAuth2-Core' with: 'Zinc-SSO-OAuth2-Core-JanVanDeSandt.13'; + package: 'Zinc-SSO-OpenID-Core' with: 'Zinc-SSO-OpenID-Core-JanVanDeSandt.5'; + package: 'Zinc-SSO-Demo' with: 'Zinc-SSO-Demo-JanVanDeSandt.1'; + package: 'Zinc-SSO-OAuth1-Tests' with: 'Zinc-SSO-OAuth1-Tests-SvenVanCaekenberghe.2'; + package: 'Zinc-SSO-OpenID-Tests' with: 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.2'; + 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.24'; + 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.3'; + 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.7' ]. + 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/version23..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version23..st new file mode 100644 index 00000000..561de320 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version23..st @@ -0,0 +1,45 @@ +versions +version23: 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.8'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.5'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.337'; + package: 'Zinc-Tests' with: 'Zinc-Tests-SvenVanCaekenberghe.174'; + 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-JanVanDeSandt.9'; + 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-JanVanDeSandt.1'; + 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.24'; + 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.3'; + 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.8' ]. + 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/version231..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version231..st new file mode 100644 index 00000000..71409d8b --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version231..st @@ -0,0 +1,45 @@ +versions +version231: 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.9'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.6'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.342'; + 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.24'; + 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/version232..st b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version232..st new file mode 100644 index 00000000..60a0f936 --- /dev/null +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/instance/version232..st @@ -0,0 +1,45 @@ +versions +version232: 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.9'; + package: 'Zinc-Resource-Meta-Tests' with: 'Zinc-Resource-Meta-Tests-SvenVanCaekenberghe.6'; + package: 'Zinc-HTTP' with: 'Zinc-HTTP-SvenVanCaekenberghe.343'; + 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.24'; + 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/methodProperties.json b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/methodProperties.json index cca16329..c711a7c7 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/methodProperties.json +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/methodProperties.json @@ -16,8 +16,14 @@ "baseline14:" : "FrancoisStephany 12/12/2011 12:02", "baseline15:" : "SeanDeNigris 6/7/2012 00:20", "baseline17:" : "SeanDeNigris 7/5/2012 01:35", + "baseline18:" : "SvenVanCaekenberghe 9/4/2012 09:35", + "baseline19:" : "SvenVanCaekenberghe 9/28/2012 14:25", + "baseline20:" : "SvenVanCaekenberghe 12/12/2012 20:34", + "baseline21:" : "SvenVanCaekenberghe 12/17/2012 22:02", + "baseline22:" : "SvenVanCaekenberghe 1/8/2013 15:31", + "baseline23:" : "SvenVanCaekenberghe 1/21/2013 13:08", "project" : "SvenVanCaekenberghe 1/15/2011 17:31", - "stable:" : "SeanDeNigris 7/4/2012 12:46", + "stable:" : "SvenVanCaekenberghe 2/1/2013 20:07", "version10:" : "PaulDeBruicker 6/1/2011 23:13", "version11:" : "dkh 9/1/2011 17:12", "version12:" : "dkh 9/1/2011 17:12", @@ -26,4 +32,20 @@ "version151:" : "SeanDeNigris 6/7/2012 00:30", "version15:" : "SeanDeNigris 6/7/2012 00:18", "version16:" : "PaulDeBruicker 6/7/2012 07:40", - "version17:" : "SeanDeNigris 7/5/2012 01:34" } } + "version17:" : "SeanDeNigris 7/5/2012 01:34", + "version181:" : "SvenVanCaekenberghe 9/4/2012 16:51", + "version182:" : "SvenVanCaekenberghe 9/12/2012 15:42", + "version18:" : "SvenVanCaekenberghe 9/4/2012 09:51", + "version191:" : "SvenVanCaekenberghe 10/12/2012 13:29", + "version192:" : "SvenVanCaekenberghe 10/13/2012 17:54", + "version193:" : "SvenVanCaekenberghe 10/13/2012 20:56", + "version19:" : "SvenVanCaekenberghe 9/28/2012 14:29", + "version20:" : "SvenVanCaekenberghe 12/12/2012 20:35", + "version211:" : "SvenVanCaekenberghe 12/24/2012 14:53", + "version212:" : "SvenVanCaekenberghe 12/31/2012 17:58", + "version213:" : "SvenVanCaekenberghe 1/8/2013 13:54", + "version21:" : "SvenVanCaekenberghe 12/17/2012 22:04", + "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" } } diff --git a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/properties.json b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/properties.json index f3553dfe..3e05c095 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/properties.json +++ b/repository/ConfigurationOfZincHTTPComponents.package/ConfigurationOfZincHTTPComponents.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ "LastVersionLoad" ], - "commentStamp" : "SvenVanCaekenberghe 1/15/2011 18:04", + "commentStamp" : "", "instvars" : [ "project" ], "name" : "ConfigurationOfZincHTTPComponents", diff --git a/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/version b/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/version index d6a0de0c..8410cdc9 100644 --- a/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/version +++ b/repository/ConfigurationOfZincHTTPComponents.package/monticello.meta/version @@ -1,7 +1,7 @@ -(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 +(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 ()) \ No newline at end of file + - 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 diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/downloadFile.fromBucket..st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/downloadFile.fromBucket..st index 267003c0..3b2a6c5d 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/downloadFile.fromBucket..st +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/downloadFile.fromBucket..st @@ -9,7 +9,5 @@ downloadFile: filename fromBucket: bucket response := self at: bucket -> filename. self httpClient streaming: streaming. response isSuccess ifFalse: [ ^ ZnHttpUnsuccessful signal ]. - FileStream - fileNamed: filename - do: [ :stream | response entity writeOn: stream ]. + self httpClient downloadEntityTo: filename. ^ response diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/uploadFile.withMd5.inBucket..st b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/uploadFile.withMd5.inBucket..st index 15d656ce..6d0673ce 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/uploadFile.withMd5.inBucket..st +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/instance/uploadFile.withMd5.inBucket..st @@ -3,15 +3,16 @@ uploadFile: filename withMd5: md5 inBucket: bucket "Do a streaming upload of the file filename to bucket. When md5 is notNil, use it to validate the ETag of the response." - | entry size mimeType fileStream entity response | - entry := FileDirectory root directoryEntryFor: filename. - size := entry fileSize. - mimeType := ZnMimeType forFilenameExtension: (FileDirectory extensionFor: filename). - fileStream := FileDirectory root readOnlyFileNamed: filename. + | reference entry size mimeType fileStream entity response | + reference := filename asFileReference. + entry := reference entry. + size := entry size. + mimeType := ZnMimeType forFilenameExtension: reference extension. + fileStream := reference readStream. mimeType isBinary ifTrue: [ fileStream binary ]. (entity := ZnStreamingEntity type: mimeType length: size) stream: fileStream. - self at: bucket -> entry name put: entity. + self at: bucket -> reference basename put: entity. (md5 notNil and: [ (md5 sameAs: self eTag) not ]) ifTrue: [ self error: 'Uploaded ETag does not equal supplied MD5' ]. ^ self httpClient response diff --git a/repository/Zinc-AWS.package/ZnAWSS3Client.class/methodProperties.json b/repository/Zinc-AWS.package/ZnAWSS3Client.class/methodProperties.json index 2a5833bb..8a18a188 100644 --- a/repository/Zinc-AWS.package/ZnAWSS3Client.class/methodProperties.json +++ b/repository/Zinc-AWS.package/ZnAWSS3Client.class/methodProperties.json @@ -17,7 +17,7 @@ "checkIntegrity" : "SvenVanCaekenberghe 1/5/2011 20:09", "checkIntegrity:" : "SvenVanCaekenberghe 1/5/2011 20:09", "close" : "SvenVanCaekenberghe 9/17/2011 11:22", - "downloadFile:fromBucket:" : "SvenVanCaekenberghe 12/1/2011 10:17", + "downloadFile:fromBucket:" : "SvenVanCaekenberghe 9/27/2012 21:17", "eTag" : "SvenVanCaekenberghe 11/23/2011 19:49", "endPoint:" : "SvenVanCaekenberghe 11/23/2011 16:25", "endPointForBucket:" : "SvenVanCaekenberghe 11/23/2011 15:28", @@ -41,4 +41,4 @@ "secretAccessKey:" : "SvenVanCaekenberghe 1/5/2011 20:07", "standardEndPoint" : "SvenVanCaekenberghe 11/23/2011 15:28", "uploadFile:inBucket:" : "SvenVanCaekenberghe 11/24/2011 19:46", - "uploadFile:withMd5:inBucket:" : "SvenVanCaekenberghe 12/2/2011 14:53" } } + "uploadFile:withMd5:inBucket:" : "SvenVanCaekenberghe 9/27/2012 21:59" } } diff --git a/repository/Zinc-AWS.package/monticello.meta/version b/repository/Zinc-AWS.package/monticello.meta/version index 8fe86bae..5ff7340b 100644 --- a/repository/Zinc-AWS.package/monticello.meta/version +++ b/repository/Zinc-AWS.package/monticello.meta/version @@ -1 +1 @@ -(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 ()) \ No newline at end of file +(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 diff --git a/repository/Zinc-Character-Encoding-Core.package/.filetree b/repository/Zinc-Character-Encoding-Core.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/README.md new file mode 100644 index 00000000..967dc1b4 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/README.md @@ -0,0 +1,15 @@ +I am ZnBase64Encoder. + +Base64 encoding is a technique to encode binary data as a string of characters that can be safely transported over various protocols. Basically, every 3 bytes are encoded using 4 characters from an alphabet of 64. Each encoded character represents 6 bits. + +The most commonly used alphabet is 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'. One or two equal signs (= or ==) are used for padding. + +The encoded data can optionally be broken into lines. Characters not part of the alphabet are considered as white space and are ignored. + +My #encode: method works from ByteArray to String, while my #decode: method works from String to ByteArray. + +Note that to encode a String as Base64, you first have to encode the characters as bytes using a character encoder. + +See also http://en.wikipedia.org/wiki/Base64 + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/class/initialize.st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/class/initialize.st new file mode 100644 index 00000000..010b0ae8 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/class/initialize.st @@ -0,0 +1,8 @@ +class initialization +initialize + DefaultAlphabet := String withAll: ($A to: $Z) , ($a to: $z) , ($0 to: $9) , #($+ $/). + DefaultInverse := Array new: 128. + 0 to: 127 do: [ :each | + | offset | + offset := DefaultAlphabet indexOf: each asCharacter ifAbsent: [ nil ]. + DefaultInverse at: each + 1 put: (offset ifNotNil: [ offset - 1 ]) ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/alphabet..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/alphabet..st new file mode 100644 index 00000000..18ad7828 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/alphabet..st @@ -0,0 +1,12 @@ +initialize-release +alphabet: string + "Set the alphabet to use to string, containing 64 characters to represent 64 byte values. + I automatically compute the inverse used for fast decoding." + + self assert: string size = 64 description: '64 characters are needed for a Base64 alphabet'. + alphabet := string. + inverse := Array new: 128. + 0 to: 127 do: [ :each | + | offset | + offset := alphabet indexOf: each asCharacter ifAbsent: [ nil ]. + inverse at: each + 1 put: (offset ifNotNil: [ offset - 1 ]) ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/breakLines.st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/breakLines.st new file mode 100644 index 00000000..c19f6119 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/breakLines.st @@ -0,0 +1,5 @@ +initialize-release +breakLines + "Configure me to break lines and insert newlines every 76 characters while encoding" + + self breakLinesAt: 76 \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/breakLinesAt..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/breakLinesAt..st new file mode 100644 index 00000000..9f92c548 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/breakLinesAt..st @@ -0,0 +1,7 @@ +initialize-release +breakLinesAt: length + "Configure me to break lines at lenth, a multiple of 4, and insert newlines" + + self assert: (length \\ 4) isZero description: 'line length should be a multiple of 4'. + lineLength := length. + lineEnd ifNil: [ self lineEndConvention: #crlf ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/decode..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/decode..st new file mode 100644 index 00000000..02fa972e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/decode..st @@ -0,0 +1,7 @@ +converting +decode: string + "Decode a Base64 encoded string and return the resulting byte array" + + ^ ByteArray + new: string size + streamContents: [ :byteStream | self decode: string readStream to: byteStream ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/decode.and.and.and.to..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/decode.and.and.and.to..st new file mode 100644 index 00000000..e839c6d4 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/decode.and.and.and.to..st @@ -0,0 +1,13 @@ +private +decode: char1 and: char2 and: char3 and: char4 to: stream + | v1 v2 v3 v4 | + v1 := self valueForCharacter: char1. + v2 := self valueForCharacter: char2. + v3 := self valueForCharacter: char3. + v4 := self valueForCharacter: char4. + stream nextPut: (v1 << 2 bitXor: (v2 ifNil: [ 0 ]) >> 4). + char3 ~= $= + ifTrue: [ + stream nextPut: ((v2 bitAnd: 2r1111) << 4 bitXor: (v3 ifNil: [ 0 ]) >> 2). + char4 ~= $= + ifTrue: [ stream nextPut: ((v3 bitAnd: 2r11) << 6 bitXor: v4) ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/decode.to..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/decode.to..st new file mode 100644 index 00000000..8c29864c --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/decode.to..st @@ -0,0 +1,18 @@ +converting +decode: stringStream to: byteStream + [ stringStream atEnd ] + whileFalse: [ + | char1 char2 char3 char4 | + self skipWhiteSpace: stringStream. + char1 := stringStream next. + char2 := stringStream next. + char3 := stringStream next. + char4 := stringStream next. + char1 isNil | char2 isNil | char3 isNil | char4 isNil + ifTrue: [ ZnCharacterEncodingError signal: 'Illegal Base64 input' ]. + self + decode: char1 + and: char2 + and: char3 + and: char4 + to: byteStream ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/encode..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/encode..st new file mode 100644 index 00000000..e3fc9823 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/encode..st @@ -0,0 +1,7 @@ +converting +encode: byteArray + "Encode byteArray using Base64 encoding and return the resulting string" + + ^ String + new: byteArray size + streamContents: [ :stringStream | self encode: byteArray readStream to: stringStream ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/encode.and.and.to..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/encode.and.and.to..st new file mode 100644 index 00000000..10b31d25 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/encode.and.and.to..st @@ -0,0 +1,12 @@ +private +encode: byte1 and: byte2 and: byte3 to: stream + stream + nextPut: (alphabet at: (byte1 >> 2) + 1); + nextPut: (alphabet at: ((byte1 bitAnd: 2r11) << 4 bitXor: (byte2 ifNil: [ 0 ]) >> 4) + 1). + byte2 + ifNil: [ stream nextPutAll: '==' ] + ifNotNil: [ + stream nextPut: (alphabet at: ((byte2 bitAnd: 2r1111) << 2 bitXor: (byte3 ifNil: [ 0 ]) >> 6) + 1). + byte3 + ifNil: [ stream nextPut: $= ] + ifNotNil: [ stream nextPut: (alphabet at: (byte3 bitAnd: 2r111111) + 1) ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/encode.to..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/encode.to..st new file mode 100644 index 00000000..9b37a8b3 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/encode.to..st @@ -0,0 +1,20 @@ +converting +encode: byteStream to: stringStream + | count | + count := 0. + [ byteStream atEnd ] + whileFalse: [ + | byte1 byte2 byte3 | + byte1 := byteStream next. + byte2 := byteStream next. + byte3 := byteStream next. + self + encode: byte1 + and: byte2 + and: byte3 + to: stringStream. + count := count + 4. + (lineLength notNil and: [ count = lineLength ]) + ifTrue: [ + stringStream nextPutAll: lineEnd. + count := 0 ] ] \ No newline at end of file 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 new file mode 100644 index 00000000..fee720fa --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + super initialize. + alphabet := DefaultAlphabet. + inverse := DefaultInverse \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/lineEndConvention..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/lineEndConvention..st new file mode 100644 index 00000000..d99b17da --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/lineEndConvention..st @@ -0,0 +1,7 @@ +initialize-release +lineEndConvention: symbol + "Set the end of line convention to be used. + Either #cr, #lf or #crlf (the default)." + + self assert: (#(cr lf crlf) includes: symbol). + lineEnd := String perform: symbol \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/skipWhiteSpace..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/skipWhiteSpace..st new file mode 100644 index 00000000..3be83c72 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/skipWhiteSpace..st @@ -0,0 +1,4 @@ +private +skipWhiteSpace: stream + [ stream atEnd not and: [ (self valueForCharacter: stream peek) isNil ] ] + whileTrue: [ stream next ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/valueForCharacter..st b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/valueForCharacter..st new file mode 100644 index 00000000..32f94522 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/instance/valueForCharacter..st @@ -0,0 +1,7 @@ +private +valueForCharacter: char + | code | + code := char charCode. + ^ (code between: 0 and: 127) + ifTrue: [ inverse at: code + 1 ] + ifFalse: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/methodProperties.json new file mode 100644 index 00000000..f93b453b --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/methodProperties.json @@ -0,0 +1,17 @@ +{ + "class" : { + "initialize" : "SvenVanCaekenberghe 12/16/2012 12:54" }, + "instance" : { + "alphabet:" : "SvenVanCaekenberghe 12/16/2012 15:15", + "breakLines" : "SvenVanCaekenberghe 12/15/2012 14:06", + "breakLinesAt:" : "SvenVanCaekenberghe 12/16/2012 15:13", + "decode:" : "SvenVanCaekenberghe 12/15/2012 14:07", + "decode:and:and:and:to:" : "SvenVanCaekenberghe 12/15/2012 00:41", + "decode:to:" : "SvenVanCaekenberghe 12/16/2012 15:13", + "encode:" : "SvenVanCaekenberghe 12/15/2012 14:08", + "encode:and:and:to:" : "SvenVanCaekenberghe 12/15/2012 00:42", + "encode:to:" : "SvenVanCaekenberghe 12/15/2012 00:54", + "initialize" : "SvenVanCaekenberghe 12/15/2012 13:48", + "lineEndConvention:" : "SvenVanCaekenberghe 12/15/2012 00:50", + "skipWhiteSpace:" : "SvenVanCaekenberghe 12/16/2012 16:42", + "valueForCharacter:" : "SvenVanCaekenberghe 12/15/2012 00:31" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/properties.json new file mode 100644 index 00000000..dc030cb3 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBase64Encoder.class/properties.json @@ -0,0 +1,18 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + "DefaultAlphabet", + "DefaultInverse" ], + "commentStamp" : "", + "instvars" : [ + "alphabet", + "inverse", + "lineLength", + "lineEnd" ], + "name" : "ZnBase64Encoder", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/README.md new file mode 100644 index 00000000..22d5e31f --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/README.md @@ -0,0 +1,9 @@ +I am STONBufferedReadStream. + +I wrap another ReadStream and add efficient buffering for the typical access pattern of parsers: sending lots of #next, #peek and #atEnd messages. + +By design I do not implement #position and #position: or anything based on that. + +I can wrap both binary or character streams and act accordingly. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/class/on..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/class/on..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/class/on..st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/class/on..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/class/on.do..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/class/on.do..st new file mode 100644 index 00000000..a693ceac --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/class/on.do..st @@ -0,0 +1,6 @@ +convenience +on: readStream do: block + "Execute block with as argument a ZnBufferedReadStream on readStream. + Return the value of block." + + ^ block value: (self on: readStream) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/atEnd.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/atEnd.st new file mode 100644 index 00000000..8441429e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/atEnd.st @@ -0,0 +1,4 @@ +testing +atEnd + ^ position > limit and: [ stream atEnd ] + \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/close.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/close.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/close.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/close.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/collectionSpecies.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/collectionSpecies.st new file mode 100644 index 00000000..2213d61f --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/collectionSpecies.st @@ -0,0 +1,5 @@ +accessing +collectionSpecies + ^ stream isBinary + ifTrue: [ ByteArray ] + ifFalse: [ String ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/defaultBufferSize.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/defaultBufferSize.st new file mode 100644 index 00000000..f01ebb10 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/defaultBufferSize.st @@ -0,0 +1,3 @@ +accessing +defaultBufferSize + ^ 2 raisedToInteger: 16 \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/initialize.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/initialize.st new file mode 100644 index 00000000..4b1936a0 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + super initialize. + position := 1. + limit := 0 \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/isBinary.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/isBinary.st new file mode 100644 index 00000000..2908a83b --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/isBinary.st @@ -0,0 +1,3 @@ +accessing +isBinary + ^ stream isBinary \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next..st new file mode 100644 index 00000000..746fc9e4 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next..st @@ -0,0 +1,8 @@ +accessing +next: requestedCount + "Read requestedCount elements and return them as a collection. + If less are available, a smaller collection will be returned." + + ^ self + next: requestedCount + into: (self collectionSpecies new: requestedCount) \ No newline at end of file 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 new file mode 100644 index 00000000..5a2ace64 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into..st @@ -0,0 +1,9 @@ +accessing +next: requestedCount into: collection + "Read requestedCount elements into collection, + returning a copy if less elements are available" + + ^ self + next: requestedCount + into: collection + 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 new file mode 100644 index 00000000..69c5aa02 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.into.startingAt..st @@ -0,0 +1,13 @@ +accessing +next: requestedCount into: collection startingAt: offset + "Read requestedCount elements into collection starting at offset, + returning a copy if less elements are available" + + | read | + read := self + readInto: collection + startingAt: offset + count: requestedCount. + ^ read = requestedCount + ifTrue: [ collection ] + ifFalse: [ collection copyFrom: 1 to: offset + read - 1 ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.st new file mode 100644 index 00000000..2b0ee0b1 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/next.st @@ -0,0 +1,13 @@ +accessing +next + "Return the next element and move over it" + + position > limit + ifTrue: [ self nextBuffer ]. + ^ position <= limit + ifTrue: [ + | char | + char := buffer at: position. + position := position + 1. + char ] + ifFalse: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/nextBuffer.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/nextBuffer.st new file mode 100644 index 00000000..5eef506e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/nextBuffer.st @@ -0,0 +1,4 @@ +private +nextBuffer + limit := stream readInto: buffer startingAt: 1 count: buffer size. + position := 1 \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/nextInto..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/nextInto..st new file mode 100644 index 00000000..07232803 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/nextInto..st @@ -0,0 +1,8 @@ +accessing +nextInto: collection + "Read the next elements of the receiver into collection, + returning a copy if less elements are available" + + ^ self + next: collection size + into: collection \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/on..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/on..st new file mode 100644 index 00000000..d2efc871 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/on..st @@ -0,0 +1,4 @@ +initialize-release +on: readStream + stream := readStream. + self sizeBuffer: self defaultBufferSize \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/peek.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/peek.st new file mode 100644 index 00000000..a6f5d599 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/peek.st @@ -0,0 +1,9 @@ +accessing +peek + "Return the next element but do not move over it" + + position > limit + ifTrue: [ self nextBuffer ]. + ^ position <= limit + ifTrue: [ buffer at: position ] + ifFalse: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/peekFor..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/peekFor..st new file mode 100644 index 00000000..be86475d --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/peekFor..st @@ -0,0 +1,10 @@ +accessing +peekFor: object + "Answer false and do not move over the next element if it is not equal to object, or if the receiver is at the end. + Answer true and move over the next element when it is equal to object." + + ^ self peek = object + ifTrue: [ + self next. + true ] + ifFalse: [ false ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/readInto.startingAt.count..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/readInto.startingAt.count..st new file mode 100644 index 00000000..9c82b535 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/readInto.startingAt.count..st @@ -0,0 +1,24 @@ +accessing +readInto: collection startingAt: offset count: requestedCount + "Read requestedCount elements into collection starting at offset, + returning the number of elements read, there could be less elements available." + + | read | + read := 0. + position <= limit + ifTrue: [ + read := (limit - position + 1) min: requestedCount. + collection replaceFrom: offset to: offset + read - 1 with: buffer startingAt: position. + position := position + read. + read = requestedCount ifTrue: [ ^ requestedCount ] ]. + ^ read + + + (requestedCount - read < (buffer size / 2) + ifTrue: [ + stream atEnd + ifTrue: [ 0 ] + ifFalse: [ + self + nextBuffer; + readInto: collection startingAt: offset + read count: requestedCount - read ] ] + ifFalse: [ stream readInto: collection startingAt: offset + read count: requestedCount - read ]) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/sizeBuffer..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/sizeBuffer..st new file mode 100644 index 00000000..4f1a4c98 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/sizeBuffer..st @@ -0,0 +1,3 @@ +initialize-release +sizeBuffer: size + buffer := self collectionSpecies new: size \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/skip..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/skip..st new file mode 100644 index 00000000..0bc3938a --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/skip..st @@ -0,0 +1,6 @@ +accessing +skip: count + "Skip over count elements. + This could be further optimzed." + + count timesRepeat: [ self next ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/upTo..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/upTo..st new file mode 100644 index 00000000..23850fdb --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/upTo..st @@ -0,0 +1,10 @@ +accessing +upTo: value + "Read upto but not including value and return them as a collection. + If value is not found, return the entire contents of the stream. + This could be further optimzed." + + ^ self collectionSpecies + streamContents: [ :writeStream | | element | + [ self atEnd or: [ (element := self next) = value ] ] whileFalse: [ + writeStream nextPut: element ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/upToEnd.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/upToEnd.st new file mode 100644 index 00000000..900c4b5d --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/upToEnd.st @@ -0,0 +1,11 @@ +accessing +upToEnd + "Read elements until the stream is atEnd and return them as a collection." + + ^ self collectionSpecies + streamContents: [ :out | + [ self atEnd ] whileFalse: [ + position > limit + ifTrue: [ self nextBuffer ]. + out next: limit - position + 1 putAll: buffer startingAt: position. + position := limit + 1 ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/wrappedStream.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/wrappedStream.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/wrappedStream.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/instance/wrappedStream.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/methodProperties.json new file mode 100644 index 00000000..4e70d80f --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/methodProperties.json @@ -0,0 +1,26 @@ +{ + "class" : { + "on:" : "SvenVanCaekenberghe 11/30/2012 10:57", + "on:do:" : "SvenVanCaekenberghe 12/2/2012 19:23" }, + "instance" : { + "atEnd" : "SvenVanCaekenberghe 11/30/2012 10:39", + "close" : "SvenVanCaekenberghe 11/30/2012 10:28", + "collectionSpecies" : "SvenVanCaekenberghe 11/30/2012 20:18", + "defaultBufferSize" : "SvenVanCaekenberghe 11/30/2012 20:15", + "initialize" : "SvenVanCaekenberghe 11/30/2012 20:15", + "isBinary" : "SvenVanCaekenberghe 11/30/2012 21:28", + "next" : "SvenVanCaekenberghe 12/1/2012 20:48", + "next:" : "SvenVanCaekenberghe 11/30/2012 20:18", + "next:into:" : "SvenVanCaekenberghe 11/30/2012 20:11", + "next:into:startingAt:" : "SvenVanCaekenberghe 11/30/2012 20:11", + "nextBuffer" : "SvenVanCaekenberghe 11/30/2012 11:15", + "nextInto:" : "SvenVanCaekenberghe 11/30/2012 20:11", + "on:" : "SvenVanCaekenberghe 11/30/2012 20:15", + "peek" : "SvenVanCaekenberghe 12/1/2012 20:48", + "peekFor:" : "SvenVanCaekenberghe 12/1/2012 20:47", + "readInto:startingAt:count:" : "SvenVanCaekenberghe 11/30/2012 22:16", + "sizeBuffer:" : "SvenVanCaekenberghe 11/30/2012 20:19", + "skip:" : "SvenVanCaekenberghe 11/30/2012 21:36", + "upTo:" : "SvenVanCaekenberghe 11/30/2012 21:33", + "upToEnd" : "SvenVanCaekenberghe 12/16/2012 16:31", + "wrappedStream" : "SvenVanCaekenberghe 11/30/2012 10:27" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/properties.json new file mode 100644 index 00000000..ff619b45 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedReadStream.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "stream", + "buffer", + "position", + "limit" ], + "name" : "ZnBufferedReadStream", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/README.md new file mode 100644 index 00000000..12db1d98 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/README.md @@ -0,0 +1,10 @@ +I am ZnBufferedWriteStream. +I wrap a write stream and add buffering. + +Make sure to always send me #flush or #close when you're done, +otherwise the last buffer might not yet have been written. +My class side's #on:do: helps to ensure this. + +I can wrap both binary or character streams and act accordingly. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/class/on..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/class/on..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/class/on..st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/class/on..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/class/on.do..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/class/on.do..st new file mode 100644 index 00000000..f50163fb --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/class/on.do..st @@ -0,0 +1,10 @@ +convenience +on: writeStream do: block + "Execute block with as argument a ZnBufferedWriteStream on writeStream, + making sure #flush is called at the end. Return the value of block." + + | bufferedWriteStream result | + bufferedWriteStream := self on: writeStream. + result := block value: bufferedWriteStream. + bufferedWriteStream flush. + ^ result \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/buffer.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/buffer.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/buffer.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/buffer.st diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/bufferFreeSize.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/bufferFreeSize.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/bufferFreeSize.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/bufferFreeSize.st diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/bufferSize.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/bufferSize.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/bufferSize.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/bufferSize.st diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/close.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/close.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/close.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/close.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/defaultBufferSize.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/defaultBufferSize.st new file mode 100644 index 00000000..f01ebb10 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/defaultBufferSize.st @@ -0,0 +1,3 @@ +accessing +defaultBufferSize + ^ 2 raisedToInteger: 16 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/flush.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/flush.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/flush.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/flush.st diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/flushBuffer.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/flushBuffer.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/flushBuffer.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/flushBuffer.st diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/flushBufferIfFull.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/flushBufferIfFull.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/flushBufferIfFull.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/flushBufferIfFull.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/next.putAll..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/next.putAll..st new file mode 100644 index 00000000..685e4cc1 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/next.putAll..st @@ -0,0 +1,8 @@ +accessing +next: count putAll: collection + "Write count elements from collection" + + self + next: count + putAll: collection + startingAt: 1 \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/next.putAll.startingAt..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/next.putAll.startingAt..st new file mode 100644 index 00000000..7132e83e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/next.putAll.startingAt..st @@ -0,0 +1,14 @@ +accessing +next: count putAll: collection startingAt: offset + "Write count elements from collection starting at offset." + + self flushBufferIfFull. + count <= self bufferFreeSize + ifTrue: [ + self buffer replaceFrom: position + 1 to: position + count with: collection startingAt: offset. + position := position + count ] + ifFalse: [ + self flushBuffer. + count > (self bufferSize / 2) + ifTrue: [ stream next: count putAll: collection startingAt: offset ] + ifFalse: [ self next: count putAll: collection startingAt: offset ] ] diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/nextPut..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/nextPut..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/nextPut..st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/nextPut..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/nextPutAll..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/nextPutAll..st new file mode 100644 index 00000000..8360b274 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/nextPutAll..st @@ -0,0 +1,8 @@ +accessing +nextPutAll: collection + "Write a collection" + + self + next: collection size + putAll: collection + startingAt: 1 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/on..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/on..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/on..st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/on..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/print..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/print..st new file mode 100644 index 00000000..8463372a --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/print..st @@ -0,0 +1,3 @@ +accessing +print: object + object printOn: self \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/printOn..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/printOn..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/printOn..st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/printOn..st diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/sizeBuffer..st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/sizeBuffer..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/sizeBuffer..st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/sizeBuffer..st diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/space.st b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/space.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/space.st rename to repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/instance/space.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/methodProperties.json new file mode 100644 index 00000000..93154aab --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/methodProperties.json @@ -0,0 +1,22 @@ +{ + "class" : { + "on:" : "SvenVanCaekenberghe 12/7/2010 21:20", + "on:do:" : "SvenVanCaekenberghe 12/2/2012 19:23" }, + "instance" : { + "buffer" : "SvenVanCaekenberghe 12/8/2010 10:15", + "bufferFreeSize" : "SvenVanCaekenberghe 12/7/2010 23:42", + "bufferSize" : "SvenVanCaekenberghe 12/8/2010 10:08", + "close" : "SvenVanCaekenberghe 12/7/2010 21:22", + "defaultBufferSize" : "SvenVanCaekenberghe 11/30/2012 21:22", + "flush" : "SvenVanCaekenberghe 12/7/2010 21:23", + "flushBuffer" : "SvenVanCaekenberghe 12/7/2010 23:48", + "flushBufferIfFull" : "SvenVanCaekenberghe 12/7/2010 23:39", + "next:putAll:" : "SvenVanCaekenberghe 11/30/2012 20:01", + "next:putAll:startingAt:" : "SvenVanCaekenberghe 11/30/2012 21:20", + "nextPut:" : "SvenVanCaekenberghe 12/8/2010 10:16", + "nextPutAll:" : "SvenVanCaekenberghe 11/30/2012 20:02", + "on:" : "SvenVanCaekenberghe 12/7/2010 21:30", + "print:" : "SvenVanCaekenberghe 11/30/2012 22:21", + "printOn:" : "SvenVanCaekenberghe 12/7/2010 21:19", + "sizeBuffer:" : "SvenVanCaekenberghe 12/7/2010 21:28", + "space" : "SvenVanCaekenberghe 12/7/2010 21:20" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/properties.json new file mode 100644 index 00000000..615b8330 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnBufferedWriteStream.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "stream", + "buffer", + "position" ], + "name" : "ZnBufferedWriteStream", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/README.md new file mode 100644 index 00000000..1f6e61d1 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/README.md @@ -0,0 +1,7 @@ +I am ZnByteEncoder, a concrete subclass of ZnCharacterEncoder. +I handle single byte encodings where byte values 0 to 127 map to ASCII +and 128 to 255 are a permutation to Unicode characters. + +I derive my mappings by parsing official unicode.org specifications. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/cp1250Mapping.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/cp1250Mapping.st new file mode 100644 index 00000000..2c1a042c --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/cp1250Mapping.st @@ -0,0 +1,21 @@ +mappings +cp1250Mapping + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT'" + + ^ #( + 16r20AC nil 16r201A nil 16r201E 16r2026 16r2020 16r2021 + nil 16r2030 16r0160 16r2039 16r015A 16r0164 16r017D 16r0179 + nil 16r2018 16r2019 16r201C 16r201D 16r2022 16r2013 16r2014 + nil 16r2122 16r0161 16r203A 16r015B 16r0165 16r017E 16r017A + 16r00A0 16r02C7 16r02D8 16r0141 16r00A4 16r0104 16r00A6 16r00A7 + 16r00A8 16r00A9 16r015E 16r00AB 16r00AC 16r00AD 16r00AE 16r017B + 16r00B0 16r00B1 16r02DB 16r0142 16r00B4 16r00B5 16r00B6 16r00B7 + 16r00B8 16r0105 16r015F 16r00BB 16r013D 16r02DD 16r013E 16r017C + 16r0154 16r00C1 16r00C2 16r0102 16r00C4 16r0139 16r0106 16r00C7 + 16r010C 16r00C9 16r0118 16r00CB 16r011A 16r00CD 16r00CE 16r010E + 16r0110 16r0143 16r0147 16r00D3 16r00D4 16r0150 16r00D6 16r00D7 + 16r0158 16r016E 16r00DA 16r0170 16r00DC 16r00DD 16r0162 16r00DF + 16r0155 16r00E1 16r00E2 16r0103 16r00E4 16r013A 16r0107 16r00E7 + 16r010D 16r00E9 16r0119 16r00EB 16r011B 16r00ED 16r00EE 16r010F + 16r0111 16r0144 16r0148 16r00F3 16r00F4 16r0151 16r00F6 16r00F7 + 16r0159 16r016F 16r00FA 16r0171 16r00FC 16r00FD 16r0163 16r02D9 ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/cp1252Mapping.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/cp1252Mapping.st new file mode 100644 index 00000000..bb9254b6 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/cp1252Mapping.st @@ -0,0 +1,21 @@ +mappings +cp1252Mapping + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT'" + + ^ #( + 16r20AC nil 16r201A 16r0192 16r201E 16r2026 16r2020 16r2021 + 16r02C6 16r2030 16r0160 16r2039 16r0152 nil 16r017D nil + nil 16r2018 16r2019 16r201C 16r201D 16r2022 16r2013 16r2014 + 16r02DC 16r2122 16r0161 16r203A 16r0153 nil 16r017E 16r0178 + 16r00A0 16r00A1 16r00A2 16r00A3 16r00A4 16r00A5 16r00A6 16r00A7 + 16r00A8 16r00A9 16r00AA 16r00AB 16r00AC 16r00AD 16r00AE 16r00AF + 16r00B0 16r00B1 16r00B2 16r00B3 16r00B4 16r00B5 16r00B6 16r00B7 + 16r00B8 16r00B9 16r00BA 16r00BB 16r00BC 16r00BD 16r00BE 16r00BF + 16r00C0 16r00C1 16r00C2 16r00C3 16r00C4 16r00C5 16r00C6 16r00C7 + 16r00C8 16r00C9 16r00CA 16r00CB 16r00CC 16r00CD 16r00CE 16r00CF + 16r00D0 16r00D1 16r00D2 16r00D3 16r00D4 16r00D5 16r00D6 16r00D7 + 16r00D8 16r00D9 16r00DA 16r00DB 16r00DC 16r00DD 16r00DE 16r00DF + 16r00E0 16r00E1 16r00E2 16r00E3 16r00E4 16r00E5 16r00E6 16r00E7 + 16r00E8 16r00E9 16r00EA 16r00EB 16r00EC 16r00ED 16r00EE 16r00EF + 16r00F0 16r00F1 16r00F2 16r00F3 16r00F4 16r00F5 16r00F6 16r00F7 + 16r00F8 16r00F9 16r00FA 16r00FB 16r00FC 16r00FD 16r00FE 16r00FF ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/cp1253Mapping.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/cp1253Mapping.st new file mode 100644 index 00000000..a5b5d92a --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/cp1253Mapping.st @@ -0,0 +1,21 @@ +mappings +cp1253Mapping + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1253.TXT'" + + ^ #( + 16r20AC nil 16r201A 16r0192 16r201E 16r2026 16r2020 16r2021 + nil 16r2030 nil 16r2039 nil nil nil nil + nil 16r2018 16r2019 16r201C 16r201D 16r2022 16r2013 16r2014 + nil 16r2122 nil 16r203A nil nil nil nil + 16r00A0 16r0385 16r0386 16r00A3 16r00A4 16r00A5 16r00A6 16r00A7 + 16r00A8 16r00A9 nil 16r00AB 16r00AC 16r00AD 16r00AE 16r2015 + 16r00B0 16r00B1 16r00B2 16r00B3 16r0384 16r00B5 16r00B6 16r00B7 + 16r0388 16r0389 16r038A 16r00BB 16r038C 16r00BD 16r038E 16r038F + 16r0390 16r0391 16r0392 16r0393 16r0394 16r0395 16r0396 16r0397 + 16r0398 16r0399 16r039A 16r039B 16r039C 16r039D 16r039E 16r039F + 16r03A0 16r03A1 nil 16r03A3 16r03A4 16r03A5 16r03A6 16r03A7 + 16r03A8 16r03A9 16r03AA 16r03AB 16r03AC 16r03AD 16r03AE 16r03AF + 16r03B0 16r03B1 16r03B2 16r03B3 16r03B4 16r03B5 16r03B6 16r03B7 + 16r03B8 16r03B9 16r03BA 16r03BB 16r03BC 16r03BD 16r03BE 16r03BF + 16r03C0 16r03C1 16r03C2 16r03C3 16r03C4 16r03C5 16r03C6 16r03C7 + 16r03C8 16r03C9 16r03CA 16r03CB 16r03CC 16r03CD 16r03CE nil ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/generateByteToUnicodeSpec..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/generateByteToUnicodeSpec..st new file mode 100644 index 00000000..3dccf8ef --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/generateByteToUnicodeSpec..st @@ -0,0 +1,16 @@ +accessing +generateByteToUnicodeSpec: url + "Return the formatted source code for an array mapping + the top 128 byte to unicode values from a Unicode.org url" + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT'." + + | mapping | + mapping := self parseUnicodeOrgSpec: url. + ^ String streamContents: [ :stream | + stream tab; << '"'; << 'self generateByteToUnicodeSpec: '; print: url; << '"'; cr; cr; tab; << '^ #('. + 128 to: 255 do: [ :each | | unicode | + each \\ 8 = 0 ifTrue: [ stream cr; tab ]. + (unicode := mapping at: each ifAbsent: [ nil ]) isNil + ifTrue: [ stream print: nil; space ] + ifFalse: [ stream << '16r' << (unicode printPaddedWith: $0 to: 4 base: 16); space ] ]. + stream nextPut: $); cr ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/handlesEncoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/handlesEncoding..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnByteEncoder.class/class/handlesEncoding..st rename to repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/handlesEncoding..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/initialize.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/initialize.st new file mode 100644 index 00000000..8ae3917e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/initialize.st @@ -0,0 +1,7 @@ +class initialization +initialize + "Initialize and cache the converters that I know of. + This method must be changed to make sure it runs + when loading in images where it is already present." + + self initializeByteTextConverters \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/initializeByteTextConverters.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/initializeByteTextConverters.st new file mode 100644 index 00000000..ada8c4ee --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/initializeByteTextConverters.st @@ -0,0 +1,10 @@ +private +initializeByteTextConverters + "Initialize and cache convertors based on specifications in methods that were autogenerated." + + ByteTextConverters := Dictionary new. + self mappingToIdentifiers + keysAndValuesDo: [ :mapping :identifiers | + | tables | + tables := self tablesFromSpec: (self perform: mapping). + identifiers do: [ :each | ByteTextConverters at: each put: tables ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso885915Mapping.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso885915Mapping.st new file mode 100644 index 00000000..65f2a3d5 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso885915Mapping.st @@ -0,0 +1,21 @@ +mappings +iso885915Mapping + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/ISO8859/8859-15.TXT'" + + ^ #( + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + 16r00A0 16r00A1 16r00A2 16r00A3 16r20AC 16r00A5 16r0160 16r00A7 + 16r0161 16r00A9 16r00AA 16r00AB 16r00AC 16r00AD 16r00AE 16r00AF + 16r00B0 16r00B1 16r00B2 16r00B3 16r017D 16r00B5 16r00B6 16r00B7 + 16r017E 16r00B9 16r00BA 16r00BB 16r0152 16r0153 16r0178 16r00BF + 16r00C0 16r00C1 16r00C2 16r00C3 16r00C4 16r00C5 16r00C6 16r00C7 + 16r00C8 16r00C9 16r00CA 16r00CB 16r00CC 16r00CD 16r00CE 16r00CF + 16r00D0 16r00D1 16r00D2 16r00D3 16r00D4 16r00D5 16r00D6 16r00D7 + 16r00D8 16r00D9 16r00DA 16r00DB 16r00DC 16r00DD 16r00DE 16r00DF + 16r00E0 16r00E1 16r00E2 16r00E3 16r00E4 16r00E5 16r00E6 16r00E7 + 16r00E8 16r00E9 16r00EA 16r00EB 16r00EC 16r00ED 16r00EE 16r00EF + 16r00F0 16r00F1 16r00F2 16r00F3 16r00F4 16r00F5 16r00F6 16r00F7 + 16r00F8 16r00F9 16r00FA 16r00FB 16r00FC 16r00FD 16r00FE 16r00FF ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso88591Mapping.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso88591Mapping.st new file mode 100644 index 00000000..70284260 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso88591Mapping.st @@ -0,0 +1,21 @@ +mappings +iso88591Mapping + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT'" + + ^ #( + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + 16r00A0 16r00A1 16r00A2 16r00A3 16r00A4 16r00A5 16r00A6 16r00A7 + 16r00A8 16r00A9 16r00AA 16r00AB 16r00AC 16r00AD 16r00AE 16r00AF + 16r00B0 16r00B1 16r00B2 16r00B3 16r00B4 16r00B5 16r00B6 16r00B7 + 16r00B8 16r00B9 16r00BA 16r00BB 16r00BC 16r00BD 16r00BE 16r00BF + 16r00C0 16r00C1 16r00C2 16r00C3 16r00C4 16r00C5 16r00C6 16r00C7 + 16r00C8 16r00C9 16r00CA 16r00CB 16r00CC 16r00CD 16r00CE 16r00CF + 16r00D0 16r00D1 16r00D2 16r00D3 16r00D4 16r00D5 16r00D6 16r00D7 + 16r00D8 16r00D9 16r00DA 16r00DB 16r00DC 16r00DD 16r00DE 16r00DF + 16r00E0 16r00E1 16r00E2 16r00E3 16r00E4 16r00E5 16r00E6 16r00E7 + 16r00E8 16r00E9 16r00EA 16r00EB 16r00EC 16r00ED 16r00EE 16r00EF + 16r00F0 16r00F1 16r00F2 16r00F3 16r00F4 16r00F5 16r00F6 16r00F7 + 16r00F8 16r00F9 16r00FA 16r00FB 16r00FC 16r00FD 16r00FE 16r00FF ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso88592Mapping.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso88592Mapping.st new file mode 100644 index 00000000..0f92e0f9 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso88592Mapping.st @@ -0,0 +1,21 @@ +mappings +iso88592Mapping + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT'" + + ^ #( + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + 16r00A0 16r0104 16r02D8 16r0141 16r00A4 16r013D 16r015A 16r00A7 + 16r00A8 16r0160 16r015E 16r0164 16r0179 16r00AD 16r017D 16r017B + 16r00B0 16r0105 16r02DB 16r0142 16r00B4 16r013E 16r015B 16r02C7 + 16r00B8 16r0161 16r015F 16r0165 16r017A 16r02DD 16r017E 16r017C + 16r0154 16r00C1 16r00C2 16r0102 16r00C4 16r0139 16r0106 16r00C7 + 16r010C 16r00C9 16r0118 16r00CB 16r011A 16r00CD 16r00CE 16r010E + 16r0110 16r0143 16r0147 16r00D3 16r00D4 16r0150 16r00D6 16r00D7 + 16r0158 16r016E 16r00DA 16r0170 16r00DC 16r00DD 16r0162 16r00DF + 16r0155 16r00E1 16r00E2 16r0103 16r00E4 16r013A 16r0107 16r00E7 + 16r010D 16r00E9 16r0119 16r00EB 16r011B 16r00ED 16r00EE 16r010F + 16r0111 16r0144 16r0148 16r00F3 16r00F4 16r0151 16r00F6 16r00F7 + 16r0159 16r016F 16r00FA 16r0171 16r00FC 16r00FD 16r0163 16r02D9 ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso88597Mapping.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso88597Mapping.st new file mode 100644 index 00000000..2d910cc2 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/iso88597Mapping.st @@ -0,0 +1,21 @@ +mappings +iso88597Mapping + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/ISO8859/8859-7.TXT'" + + ^ #( + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + nil nil nil nil nil nil nil nil + 16r00A0 16r2018 16r2019 16r00A3 16r20AC 16r20AF 16r00A6 16r00A7 + 16r00A8 16r00A9 16r037A 16r00AB 16r00AC 16r00AD nil 16r2015 + 16r00B0 16r00B1 16r00B2 16r00B3 16r0384 16r0385 16r0386 16r00B7 + 16r0388 16r0389 16r038A 16r00BB 16r038C 16r00BD 16r038E 16r038F + 16r0390 16r0391 16r0392 16r0393 16r0394 16r0395 16r0396 16r0397 + 16r0398 16r0399 16r039A 16r039B 16r039C 16r039D 16r039E 16r039F + 16r03A0 16r03A1 nil 16r03A3 16r03A4 16r03A5 16r03A6 16r03A7 + 16r03A8 16r03A9 16r03AA 16r03AB 16r03AC 16r03AD 16r03AE 16r03AF + 16r03B0 16r03B1 16r03B2 16r03B3 16r03B4 16r03B5 16r03B6 16r03B7 + 16r03B8 16r03B9 16r03BA 16r03BB 16r03BC 16r03BD 16r03BE 16r03BF + 16r03C0 16r03C1 16r03C2 16r03C3 16r03C4 16r03C5 16r03C6 16r03C7 + 16r03C8 16r03C9 16r03CA 16r03CB 16r03CC 16r03CD 16r03CE nil ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/koi8rMapping.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/koi8rMapping.st new file mode 100644 index 00000000..b3ec828b --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/koi8rMapping.st @@ -0,0 +1,21 @@ +mappings +koi8rMapping + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT'" + + ^ #( + 16r2500 16r2502 16r250C 16r2510 16r2514 16r2518 16r251C 16r2524 + 16r252C 16r2534 16r253C 16r2580 16r2584 16r2588 16r258C 16r2590 + 16r2591 16r2592 16r2593 16r2320 16r25A0 16r2219 16r221A 16r2248 + 16r2264 16r2265 16r00A0 16r2321 16r00B0 16r00B2 16r00B7 16r00F7 + 16r2550 16r2551 16r2552 16r0451 16r2553 16r2554 16r2555 16r2556 + 16r2557 16r2558 16r2559 16r255A 16r255B 16r255C 16r255D 16r255E + 16r255F 16r2560 16r2561 16r0401 16r2562 16r2563 16r2564 16r2565 + 16r2566 16r2567 16r2568 16r2569 16r256A 16r256B 16r256C 16r00A9 + 16r044E 16r0430 16r0431 16r0446 16r0434 16r0435 16r0444 16r0433 + 16r0445 16r0438 16r0439 16r043A 16r043B 16r043C 16r043D 16r043E + 16r043F 16r044F 16r0440 16r0441 16r0442 16r0443 16r0436 16r0432 + 16r044C 16r044B 16r0437 16r0448 16r044D 16r0449 16r0447 16r044A + 16r042E 16r0410 16r0411 16r0426 16r0414 16r0415 16r0424 16r0413 + 16r0425 16r0418 16r0419 16r041A 16r041B 16r041C 16r041D 16r041E + 16r041F 16r042F 16r0420 16r0421 16r0422 16r0423 16r0416 16r0412 + 16r042C 16r042B 16r0417 16r0428 16r042D 16r0429 16r0427 16r042A ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/macRomanMapping.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/macRomanMapping.st new file mode 100644 index 00000000..c09f69f7 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/macRomanMapping.st @@ -0,0 +1,21 @@ +mappings +macRomanMapping + "self generateByteToUnicodeSpec: 'http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.TXT'" + + ^ #( + 16r00C4 16r00C5 16r00C7 16r00C9 16r00D1 16r00D6 16r00DC 16r00E1 + 16r00E0 16r00E2 16r00E4 16r00E3 16r00E5 16r00E7 16r00E9 16r00E8 + 16r00EA 16r00EB 16r00ED 16r00EC 16r00EE 16r00EF 16r00F1 16r00F3 + 16r00F2 16r00F4 16r00F6 16r00F5 16r00FA 16r00F9 16r00FB 16r00FC + 16r2020 16r00B0 16r00A2 16r00A3 16r00A7 16r2022 16r00B6 16r00DF + 16r00AE 16r00A9 16r2122 16r00B4 16r00A8 16r2260 16r00C6 16r00D8 + 16r221E 16r00B1 16r2264 16r2265 16r00A5 16r00B5 16r2202 16r2211 + 16r220F 16r03C0 16r222B 16r00AA 16r00BA 16r03A9 16r00E6 16r00F8 + 16r00BF 16r00A1 16r00AC 16r221A 16r0192 16r2248 16r2206 16r00AB + 16r00BB 16r2026 16r00A0 16r00C0 16r00C3 16r00D5 16r0152 16r0153 + 16r2013 16r2014 16r201C 16r201D 16r2018 16r2019 16r00F7 16r25CA + 16r00FF 16r0178 16r2044 16r20AC 16r2039 16r203A 16rFB01 16rFB02 + 16r2021 16r00B7 16r201A 16r201E 16r2030 16r00C2 16r00CA 16r00C1 + 16r00CB 16r00C8 16r00CD 16r00CE 16r00CF 16r00CC 16r00D3 16r00D4 + 16rF8FF 16r00D2 16r00DA 16r00DB 16r00D9 16r0131 16r02C6 16r02DC + 16r00AF 16r02D8 16r02D9 16r02DA 16r00B8 16r02DD 16r02DB 16r02C7 ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/mappingToIdentifiers.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/mappingToIdentifiers.st new file mode 100644 index 00000000..aa746795 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/mappingToIdentifiers.st @@ -0,0 +1,14 @@ +mappings +mappingToIdentifiers + "Return a dictionay mapping from encoding specifications to a list of encoding names." + + ^ Dictionary newFromPairs: #( + #cp1250Mapping #('cp-1250') + #cp1252Mapping #('cp-1252') + #cp1253Mapping #('cp1253') + #iso885915Mapping #('iso-8859-15') + #iso88591Mapping #('iso-8859-1' 'latin1' 'latin-1') + #iso88592Mapping #('iso-8859-2' 'latin2' 'latin-2') + #iso88597Mapping #('iso-8859-7') + #koi8rMapping #('iso-8859-15') + #macRomanMapping #('mac-roman' 'macintosh') ) \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/newForEncoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/newForEncoding..st new file mode 100644 index 00000000..86fcbec7 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/newForEncoding..st @@ -0,0 +1,12 @@ +instance creation +newForEncoding: string + "Return a new character encoder object for an encoding described by string. + We use our precomputed ByteTextConverters tables." + + | tables | + tables := ByteTextConverters at: string. + ^ self new + identifier: string; + byteToUnicode: tables first; + unicodeToByte: tables second; + yourself \ No newline at end of file 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 new file mode 100644 index 00000000..5ceb9bed --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/parseUnicodeOrgSpec..st @@ -0,0 +1,17 @@ +accessing +parseUnicodeOrgSpec: url + "Parse and return a mapping from byte to unicode values from url." + "self parseUnicodeOrgSpec: 'http://unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT'." + + | mapping | + mapping := Dictionary new: 256. + url asZnUrl retrieveContents linesDo: [ :each | + (each isEmpty or: [ each beginsWith: '#' ]) + ifFalse: [ | tokens hexReader | + hexReader := [ :string | Integer readFrom: (string readStream skip: 2; yourself) base: 16 ]. + tokens := each findTokens: String tab. + (tokens last = '' or: [ tokens last = '#UNDEFINED' ]) ifFalse: [ + mapping + at: (hexReader value: tokens first) + put: (hexReader value: tokens second) ] ] ]. + ^ mapping \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/tablesFromSpec..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/tablesFromSpec..st new file mode 100644 index 00000000..6576722d --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/class/tablesFromSpec..st @@ -0,0 +1,15 @@ +private +tablesFromSpec: mapping + "Initialize the mappings to and from Unicode based on the 128 element array mapping" + + | byteToUnicode unicodeToByte | + byteToUnicode := Array new: 128. + unicodeToByte := Dictionary new. + "Mind the offset because first 128 characters are not stored into byteToUnicodeSpec" + "Note that some entries are nil" + mapping + keysAndValuesDo: [ :index :unicode | + unicode ifNotNil: [ + byteToUnicode at: index put: (Character value: unicode). + unicodeToByte at: unicode put: 127 + index ] ]. + ^ Array with: byteToUnicode with: unicodeToByte \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/beLenient.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/beLenient.st new file mode 100644 index 00000000..7362d93b --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/beLenient.st @@ -0,0 +1,6 @@ +initialize-release +beLenient + "Don't be strict, which is the default. + This means that holes in the mapping are let to pass through." + + strict := false \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/byteToUnicode..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/byteToUnicode..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/byteToUnicode..st rename to repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/byteToUnicode..st diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/encodedByteCountFor..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/encodedByteCountFor..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/encodedByteCountFor..st rename to repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/encodedByteCountFor..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/identifier..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/identifier..st new file mode 100644 index 00000000..b56d2d6e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/identifier..st @@ -0,0 +1,3 @@ +initialize-release +identifier: object + identifier := object \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/initialize.st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/initialize.st new file mode 100644 index 00000000..81aa0d85 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + strict := true \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/nextFromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/nextFromStream..st new file mode 100644 index 00000000..b8581e60 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/nextFromStream..st @@ -0,0 +1,14 @@ +converting +nextFromStream: stream + "In non-strict mode, we let byte values for holes in our mapping pass through" + + | byteValue | + ^ (byteValue := stream next) < 128 + ifTrue: [ Character value: byteValue ] + ifFalse: [ + (byteToUnicode at: byteValue - 127 ifAbsent: [ nil ]) + ifNotNil: [ :unicode | unicode ] + ifNil: [ + strict + ifTrue: [ self error: 'Character outside encoder range' ] + ifFalse: [ Character value: byteValue ] ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/nextPut.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/nextPut.toStream..st new file mode 100644 index 00000000..05d3c316 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/nextPut.toStream..st @@ -0,0 +1,13 @@ +converting +nextPut: character toStream: stream + "In non-strict mode, we let characters for holes in our mapping table pass through" + + | code | + (code := character codePoint) < 128 + ifTrue: [ stream nextPut: code ] + ifFalse: [ + | byte | + byte := unicodeToByte at: code ifAbsent: [ nil ]. + (byte isNil and: [ strict or: [ code > 255 ] ]) + ifTrue: [ self error: 'Character code outside encoder range' ]. + stream nextPut: (byte ifNil: [ code ]) ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/printOn..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/printOn..st new file mode 100644 index 00000000..649828dc --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/printOn..st @@ -0,0 +1,9 @@ +printing +printOn: stream + super printOn: stream. + stream + nextPut: $(; + print: identifier. + strict + ifTrue: [ stream nextPutAll: ' strict' ]. + stream nextPut: $) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/unicodeToByte..st b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/unicodeToByte..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/unicodeToByte..st rename to repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/instance/unicodeToByte..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/methodProperties.json new file mode 100644 index 00000000..fe6425cd --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/methodProperties.json @@ -0,0 +1,29 @@ +{ + "class" : { + "cp1250Mapping" : "SvenVanCaekenberghe 12/15/2012 19:34", + "cp1252Mapping" : "SvenVanCaekenberghe 12/15/2012 19:39", + "cp1253Mapping" : "SvenVanCaekenberghe 12/15/2012 19:35", + "generateByteToUnicodeSpec:" : "SvenVanCaekenberghe 12/15/2012 20:02", + "handlesEncoding:" : "SvenVanCaekenberghe 1/25/2011 13:02", + "initialize" : "SvenVanCaekenberghe 1/15/2013 17:03", + "initializeByteTextConverters" : "SvenVanCaekenberghe 1/15/2013 17:01", + "iso885915Mapping" : "SvenVanCaekenberghe 12/15/2012 19:37", + "iso88591Mapping" : "SvenVanCaekenberghe 12/15/2012 19:36", + "iso88592Mapping" : "SvenVanCaekenberghe 12/15/2012 19:36", + "iso88597Mapping" : "SvenVanCaekenberghe 12/15/2012 19:39", + "koi8rMapping" : "SvenVanCaekenberghe 12/15/2012 19:38", + "macRomanMapping" : "SvenVanCaekenberghe 12/15/2012 19:38", + "mappingToIdentifiers" : "SvenVanCaekenberghe 12/15/2012 21:38", + "newForEncoding:" : "SvenVanCaekenberghe 12/15/2012 21:58", + "parseUnicodeOrgSpec:" : "SvenVanCaekenberghe 1/15/2013 14:54", + "tablesFromSpec:" : "SvenVanCaekenberghe 12/15/2012 21:31" }, + "instance" : { + "beLenient" : "SvenVanCaekenberghe 12/17/2012 15:40", + "byteToUnicode:" : "SvenVanCaekenberghe 1/25/2011 12:31", + "encodedByteCountFor:" : "SvenVanCaekenberghe 1/25/2011 12:19", + "identifier:" : "SvenVanCaekenberghe 12/15/2012 21:51", + "initialize" : "SvenVanCaekenberghe 12/17/2012 14:46", + "nextFromStream:" : "SvenVanCaekenberghe 12/17/2012 15:38", + "nextPut:toStream:" : "SvenVanCaekenberghe 12/17/2012 15:39", + "printOn:" : "SvenVanCaekenberghe 1/15/2013 16:58", + "unicodeToByte:" : "SvenVanCaekenberghe 1/25/2011 12:31" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/properties.json new file mode 100644 index 00000000..c260d7d4 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnByteEncoder.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + "ByteTextConverters" ], + "commentStamp" : "", + "instvars" : [ + "identifier", + "byteToUnicode", + "unicodeToByte", + "strict" ], + "name" : "ZnByteEncoder", + "pools" : [ + ], + "super" : "ZnCharacterEncoder", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/README.md new file mode 100644 index 00000000..428d944e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/README.md @@ -0,0 +1,18 @@ +I am ZnCharacterEncoder, I encode and decode Character objects to and from a binary stream. +I am an abstract class with following protocol: + +#nextFromStream: +#nextPut:toStream: +#encodedByteCountFor: + +The first two are compatible with TextConverter and subclasses. + +I add some convenience methods: + +#encodeString: +#decodeBytes: +#encodedByteCountForString: + +Contrary to older encoders, I work strictly from strings to bytes and vice versa and I will throw errors instead of silently ignoring them. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/class/handlesEncoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/class/handlesEncoding..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterEncoder.class/class/handlesEncoding..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/class/handlesEncoding..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/class/newForEncoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/class/newForEncoding..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterEncoder.class/class/newForEncoding..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/class/newForEncoding..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/^equals.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/^equals.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/^equals.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/^equals.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/beLenient.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/beLenient.st new file mode 100644 index 00000000..89b8e7e3 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/beLenient.st @@ -0,0 +1,3 @@ +initialize-release +beLenient + "Don't be strict, which is the default" \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/decodeBytes..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/decodeBytes..st similarity index 80% rename from repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/decodeBytes..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/decodeBytes..st index 25568a12..55b763b1 100644 --- a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/decodeBytes..st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/decodeBytes..st @@ -1,5 +1,7 @@ convenience decodeBytes: bytes + "Decode bytes and return the resulting string" + | byteStream | byteStream := bytes readStream. ^ String streamContents: [ :stream | 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 new file mode 100644 index 00000000..ea9e0bea --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodeString..st @@ -0,0 +1,7 @@ +convenience +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 diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/encodedByteCountFor..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodedByteCountFor..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/encodedByteCountFor..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodedByteCountFor..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodedByteCountForString..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodedByteCountForString..st new file mode 100644 index 00000000..a40c48cb --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/encodedByteCountForString..st @@ -0,0 +1,8 @@ +convenience +encodedByteCountForString: string + "Return the exact number of bytes it would take to encode string as a byte array" + + ^ string + inject: 0 + into: [ :sum :each | + sum + (self encodedByteCountFor: each) ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/error..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/error..st new file mode 100644 index 00000000..efafebec --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/error..st @@ -0,0 +1,3 @@ +error handling +error: message + ZnCharacterEncodingError signal: message \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/hash.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/hash.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/hash.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/hash.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/nextFromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextFromStream..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/nextFromStream..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextFromStream..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/nextPut.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextPut.toStream..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/nextPut.toStream..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/instance/nextPut.toStream..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/methodProperties.json new file mode 100644 index 00000000..aab65cef --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/methodProperties.json @@ -0,0 +1,15 @@ +{ + "class" : { + "handlesEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:07", + "newForEncoding:" : "SvenVanCaekenberghe 1/25/2011 13:27" }, + "instance" : { + "=" : "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", + "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", + "nextFromStream:" : "SvenVanCaekenberghe 11/29/2010 21:16", + "nextPut:toStream:" : "SvenVanCaekenberghe 11/29/2010 21:16" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/properties.json new file mode 100644 index 00000000..e2faf1b1 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncoder.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnCharacterEncoder", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncodingError.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncodingError.class/README.md new file mode 100644 index 00000000..f1c80855 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncodingError.class/README.md @@ -0,0 +1,6 @@ +I am ZnCharacterEncodingError. +I am an Error. + +I signal when something goes wrong while encoding or decoding characters. + +Part of Zinc HTTP Components \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncodingError.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncodingError.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncodingError.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncodingError.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncodingError.class/properties.json new file mode 100644 index 00000000..d2aa6cd3 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterEncodingError.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnCharacterEncodingError", + "pools" : [ + ], + "super" : "Error", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/README.md new file mode 100644 index 00000000..6265ab2f --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/README.md @@ -0,0 +1,6 @@ +I am ZnCharacterReadStream. +I wrap another binary ReadStream and use a ZnCharacerEncoder to allow Characters to be read. + +I am not positionable, but I do allow a one character peek using a one character internal buffer. + +Part of Zinc HTTP Components. diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/class/defaultEncoder.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/class/defaultEncoder.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/class/defaultEncoder.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/class/defaultEncoder.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/class/on..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/class/on..st new file mode 100644 index 00000000..a8697749 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/class/on..st @@ -0,0 +1,5 @@ +instance creation +on: readStream + ^ self new + on: readStream; + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/class/on.encoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/class/on.encoding..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/class/on.encoding..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/class/on.encoding..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/atEnd.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/atEnd.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/atEnd.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/atEnd.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/close.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/close.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/close.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/close.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/collectionSpecies.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/collectionSpecies.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/collectionSpecies.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/collectionSpecies.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/contents.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/contents.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/contents.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/contents.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/encoder..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/encoder..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/encoder..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/encoder..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/encoder.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/encoder.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/encoder.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/encoder.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/encoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/encoding..st new file mode 100644 index 00000000..e8878377 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/encoding..st @@ -0,0 +1,3 @@ +initialize-release +encoding: encoding + encoder := ZnCharacterEncoder newForEncoding: encoding \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/isBinary.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/isBinary.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/isBinary.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/isBinary.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/next..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/next..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/next..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/next..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/next.into..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/next.into..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/next.into..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/next.into..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/next.into.startingAt..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/next.into.startingAt..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/next.into.startingAt..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/next.into.startingAt..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/next.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/next.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/next.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/next.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/on..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/on..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/on..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/on..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/peek.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/peek.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/peek.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/peek.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/peekFor..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/peekFor..st new file mode 100644 index 00000000..e1d692fe --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/peekFor..st @@ -0,0 +1,7 @@ +accessing +peekFor: object + ^ self peek = object + ifTrue: [ + self next. + true ] + ifFalse: [ false ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/readInto.startingAt.count..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/readInto.startingAt.count..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/readInto.startingAt.count..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/readInto.startingAt.count..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/skip..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/skip..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/skip..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/skip..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/upTo..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/upTo..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/upTo..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/upTo..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/upToEnd.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/upToEnd.st new file mode 100644 index 00000000..c85ee7e1 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/upToEnd.st @@ -0,0 +1,5 @@ +accessing +upToEnd + ^ self collectionSpecies + streamContents: [ :collectionStream | + [ self atEnd ] whileFalse: [ collectionStream nextPut: self next ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/wrappedStream.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/wrappedStream.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/wrappedStream.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/instance/wrappedStream.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/methodProperties.json new file mode 100644 index 00000000..72b9874a --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/methodProperties.json @@ -0,0 +1,26 @@ +{ + "class" : { + "defaultEncoder" : "SvenVanCaekenberghe 5/3/2012 14:43", + "on:" : "SvenVanCaekenberghe 5/3/2012 14:40", + "on:encoding:" : "SvenVanCaekenberghe 5/3/2012 15:13" }, + "instance" : { + "atEnd" : "SvenVanCaekenberghe 5/3/2012 21:29", + "close" : "SvenVanCaekenberghe 5/3/2012 14:39", + "collectionSpecies" : "SvenVanCaekenberghe 5/3/2012 15:09", + "contents" : "SvenVanCaekenberghe 5/3/2012 15:12", + "encoder" : "SvenVanCaekenberghe 5/3/2012 14:42", + "encoder:" : "SvenVanCaekenberghe 5/3/2012 14:41", + "encoding:" : "SvenVanCaekenberghe 12/3/2012 13:41", + "isBinary" : "SvenVanCaekenberghe 5/3/2012 15:07", + "next" : "SvenVanCaekenberghe 5/3/2012 15:46", + "next:" : "SvenVanCaekenberghe 5/3/2012 15:18", + "next:into:" : "SvenVanCaekenberghe 5/3/2012 15:18", + "next:into:startingAt:" : "SvenVanCaekenberghe 5/3/2012 15:19", + "on:" : "SvenVanCaekenberghe 5/3/2012 14:40", + "peek" : "SvenVanCaekenberghe 5/3/2012 15:35", + "peekFor:" : "SvenVanCaekenberghe 12/3/2012 13:05", + "readInto:startingAt:count:" : "SvenVanCaekenberghe 5/3/2012 15:57", + "skip:" : "SvenVanCaekenberghe 5/3/2012 15:11", + "upTo:" : "SvenVanCaekenberghe 5/3/2012 15:17", + "upToEnd" : "SvenVanCaekenberghe 12/16/2012 15:42", + "wrappedStream" : "SvenVanCaekenberghe 5/3/2012 14:41" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/properties.json new file mode 100644 index 00000000..f633510e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterReadStream.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "stream", + "encoder", + "peekedCharacter" ], + "name" : "ZnCharacterReadStream", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/README.md new file mode 100644 index 00000000..a726a73d --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/README.md @@ -0,0 +1,4 @@ +I am ZnCharacterWriteStream. +I wrap another binary WriteStream and use a ZnCharacerEncoder to allow Characters to be written. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/class/defaultEncoder.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/defaultEncoder.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/class/defaultEncoder.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/defaultEncoder.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/class/on..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/class/on..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/class/on.encoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on.encoding..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/class/on.encoding..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/class/on.encoding..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/^less.less.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/^less.less.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/^less.less.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/^less.less.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/close.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/close.st new file mode 100644 index 00000000..d6342a74 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/close.st @@ -0,0 +1,3 @@ +initialize-release +close + stream close \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/encoder..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoder..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/encoder..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoder..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/encoder.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoder.st similarity index 76% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/encoder.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoder.st index dd1a371c..b4c887a5 100644 --- a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/encoder.st +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoder.st @@ -1,3 +1,3 @@ -as yet unclassified +accessing encoder ^ encoder ifNil: [ encoder := self class defaultEncoder ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/encoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoding..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/encoding..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/encoding..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/flush.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/flush.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/flush.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/flush.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/isBinary.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/isBinary.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/isBinary.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/isBinary.st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/next.putAll..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/next.putAll..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/next.putAll..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/next.putAll..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/next.putAll.startingAt..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/next.putAll.startingAt..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/next.putAll.startingAt..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/next.putAll.startingAt..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/nextPut..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/nextPut..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/nextPut..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/nextPut..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/nextPutAll..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/nextPutAll..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/nextPutAll..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/nextPutAll..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/on..st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/on..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/on..st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/on..st diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/space.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/space.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/space.st rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/space.st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/wrappedStream.st b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/wrappedStream.st new file mode 100644 index 00000000..3a3ef917 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/instance/wrappedStream.st @@ -0,0 +1,3 @@ +accessing +wrappedStream + ^ stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/methodProperties.json similarity index 100% rename from repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/methodProperties.json rename to repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/methodProperties.json diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/properties.json new file mode 100644 index 00000000..500c5de8 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnCharacterWriteStream.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "stream", + "encoder" ], + "name" : "ZnCharacterWriteStream", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/README.md new file mode 100644 index 00000000..858f2a5a --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/README.md @@ -0,0 +1,7 @@ +I am ZnNullEncoder, a concrete subclass of ZnCharacterEncoder. +I perform no encoding or decoding at all for all characters with a code value below 256. +I can only be used for ASCII. + +Note that in principle I could handle Latin1 (ISO-8859-1), although that is not completely correct. To get maximum efficiency, it remains an option. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/class/handlesEncoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/class/handlesEncoding..st new file mode 100644 index 00000000..10656692 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/class/handlesEncoding..st @@ -0,0 +1,7 @@ +accessing +handlesEncoding: string + "Return true when my instances handle the encoding described by string. + Note that in principle I could handle latin1 (iso-8859-1), although that is not + completely correct. To get maximum efficiency, it remains an option." + + ^ #( 'ascii' ) includes: string \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/class/newForEncoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/class/newForEncoding..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnNullEncoder.class/class/newForEncoding..st rename to repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/class/newForEncoding..st diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/decodeBytes..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/decodeBytes..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/decodeBytes..st rename to repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/decodeBytes..st diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/encodeString..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/encodeString..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/encodeString..st rename to repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/encodeString..st diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/encodedByteCountFor..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/encodedByteCountFor..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/encodedByteCountFor..st rename to repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/encodedByteCountFor..st diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/encodedByteCountForString..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/encodedByteCountForString..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/encodedByteCountForString..st rename to repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/encodedByteCountForString..st diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/nextFromStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/nextFromStream..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/nextFromStream..st rename to repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/nextFromStream..st diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/nextPut.toStream..st b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/nextPut.toStream..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnNullEncoder.class/instance/nextPut.toStream..st rename to repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/instance/nextPut.toStream..st diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/methodProperties.json new file mode 100644 index 00000000..3e920c27 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + "handlesEncoding:" : "SvenVanCaekenberghe 12/17/2012 13:24", + "newForEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:19" }, + "instance" : { + "decodeBytes:" : "SvenVanCaekenberghe 5/3/2012 11:32", + "encodeString:" : "SvenVanCaekenberghe 5/3/2012 11:32", + "encodedByteCountFor:" : "SvenVanCaekenberghe 11/29/2010 21:17", + "encodedByteCountForString:" : "SvenVanCaekenberghe 5/3/2012 11:32", + "nextFromStream:" : "SvenVanCaekenberghe 1/4/2011 20:52", + "nextPut:toStream:" : "SvenVanCaekenberghe 1/25/2011 12:36" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/properties.json new file mode 100644 index 00000000..27316181 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnNullEncoder.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnNullEncoder", + "pools" : [ + ], + "super" : "ZnCharacterEncoder", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/README.md new file mode 100644 index 00000000..b467cd6e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/README.md @@ -0,0 +1,12 @@ +I am ZnPercentEncoder. +I implement RFC 3986 percent encoding and decoding. + +All characters that are not part of a safe set are encoded using a percent (%) followed by a two digit hexadecimal number of a byte value. Non-ASCII characters are first encoded, normally using UTF-8. + +My #encode: and #decode: messages work from String to String. + +My decoder additionally will accept + as an encoding for a space. + +See also http://en.wikipedia.org/wiki/Percent-encoding + +Part of Zinc HTTP Components diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/characterEncoder..st b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/characterEncoder..st new file mode 100644 index 00000000..f609eda0 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/characterEncoder..st @@ -0,0 +1,5 @@ +initialize-release +characterEncoder: object + "Set the character encoding to use to object." + + characterEncoder := object \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/characterEncoder.st b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/characterEncoder.st new file mode 100644 index 00000000..fa6b92f7 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/characterEncoder.st @@ -0,0 +1,6 @@ +accessing +characterEncoder + "Return the character encoder that I currently use. + If not set, I will default to using UTF-8." + + ^ characterEncoder ifNil: [ characterEncoder := ZnUTF8Encoder new ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/decode..st b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/decode..st new file mode 100644 index 00000000..4594cf63 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/decode..st @@ -0,0 +1,9 @@ +converting +decode: string + "Decode a percent encoded string and return the resulting byte array. + After percent decoding I will use my character encoder to convert byte values to characters." + + | bytes stringStream | + stringStream := string readStream. + bytes := ByteArray streamContents: [ :byteStream | self decode: stringStream to: byteStream ]. + ^ self characterEncoder decodeBytes: bytes \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/decode.to..st b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/decode.to..st new file mode 100644 index 00000000..979e6f1d --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/decode.to..st @@ -0,0 +1,14 @@ +converting +decode: stringStream to: byteStream + | char | + [ stringStream atEnd ] + whileFalse: [ + (char := stringStream next) == $+ + ifTrue: [ byteStream nextPut: 32 ] + ifFalse: [ + char == $% + ifTrue: [ byteStream nextPut: (self readHexFrom: stringStream) ] + ifFalse: [ + char charCode < 128 + ifTrue: [ byteStream nextPut: char charCode ] + ifFalse: [ ZnCharacterEncodingError signal: 'ASCII character expected' ] ] ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/encode..st b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/encode..st new file mode 100644 index 00000000..2b041bbf --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/encode..st @@ -0,0 +1,7 @@ +converting +encode: string + "Encode string using percent encoding and return the resulting string. + I will use my character encoder to convert string to bytes and then + percent encode all byte values that are not in my safe set." + + ^ String streamContents: [ :stream | self encode: string readStream to: stream ] \ No newline at end of file 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 new file mode 100644 index 00000000..2c69d9ad --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/encode.to..st @@ -0,0 +1,15 @@ +converting +encode: readStream to: writeStream + | bytes buffer byte | + buffer := (bytes := ByteArray new: 4) writeStream. + self safeSet; characterEncoder. + [ readStream atEnd ] + whileFalse: [ + buffer reset. + characterEncoder nextPut: readStream next toStream: buffer. + 1 to: buffer position do: [ :index | + (safeSet includes: (byte := bytes at: index)) + ifTrue: [ writeStream nextPut: byte asCharacter ] + ifFalse: [ + writeStream nextPut: $%. + byte printOn: writeStream base: 16 showRadix: false ] ] ] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/readHexFrom..st b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/readHexFrom..st new file mode 100644 index 00000000..1f3524a8 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/readHexFrom..st @@ -0,0 +1,8 @@ +private +readHexFrom: stream + | first second | + (stream atEnd not and: [(first := stream next digitValue) between: 0 and: 15]) + ifFalse: [ ZnCharacterEncodingError signal: 'hex digit expected' ]. + (stream atEnd not and: [ (second := stream next digitValue) between: 0 and: 15 ]) + ifFalse: [ ZnCharacterEncodingError signal: 'hex digit expected' ]. + ^ (first << 4) + second \ 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 new file mode 100644 index 00000000..1bd636ed --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/safeSet..st @@ -0,0 +1,5 @@ +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 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 new file mode 100644 index 00000000..48760137 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/instance/safeSet.st @@ -0,0 +1,6 @@ +accessing +safeSet + "Return the safe set of characters that I will not encode, as a byte array. + If not set, I will default to the most commonly used safe set" + + ^ safeSet ifNil: [ safeSet := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~' 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 new file mode 100644 index 00000000..59836281 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/methodProperties.json @@ -0,0 +1,13 @@ +{ + "class" : { + }, + "instance" : { + "characterEncoder" : "SvenVanCaekenberghe 12/15/2012 13:53", + "characterEncoder:" : "SvenVanCaekenberghe 12/15/2012 13:53", + "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", + "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/ZnPercentEncoder.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/properties.json new file mode 100644 index 00000000..f45fae22 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnPercentEncoder.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "characterEncoder", + "safeSet" ], + "name" : "ZnPercentEncoder", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/README.md b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/README.md similarity index 100% rename from repository/Zinc-HTTP.package/ZnUTF8Encoder.class/README.md rename to repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/README.md diff --git a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/class/handlesEncoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/class/handlesEncoding..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUTF8Encoder.class/class/handlesEncoding..st rename to repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/class/handlesEncoding..st diff --git a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/class/newForEncoding..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/class/newForEncoding..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUTF8Encoder.class/class/newForEncoding..st rename to repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/class/newForEncoding..st diff --git a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/encodedByteCountFor..st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/encodedByteCountFor..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/encodedByteCountFor..st rename to repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/encodedByteCountFor..st diff --git a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/maximumUTF8Code.st b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/maximumUTF8Code.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/maximumUTF8Code.st rename to repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/maximumUTF8Code.st 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 new file mode 100644 index 00000000..99e8b600 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextFromStream..st @@ -0,0 +1,29 @@ +converting +nextFromStream: stream + | code byte next | + (byte := stream next) < 128 + ifTrue: [ ^ Character codePoint: byte ]. + (byte bitAnd: 2r11100000) == 2r11000000 + ifTrue: [ + code := byte bitAnd: 2r00011111. + ((next := stream next) bitAnd: 2r11000000) == 2r10000000 + ifTrue: [ code := (code bitShift: 6) + (next bitAnd: 2r00111111) ] + ifFalse: [ ^ self error: 'illegal UTF-8 encoding' ]. + ^ Character codePoint: code ]. + (byte bitAnd: 2r11110000) == 2r11100000 + ifTrue: [ + code := byte bitAnd: 2r00001111. + 2 timesRepeat: [ + ((next := stream next) bitAnd: 2r11000000) == 2r10000000 + ifTrue: [ code := (code bitShift: 6) + (next bitAnd: 2r00111111) ] + ifFalse: [ ^ self error: 'illegal UTF-8 encoding' ] ]. + ^ Character codePoint: code ]. + (byte bitAnd: 2r11111000) == 2r11110000 + ifTrue: [ + code := byte bitAnd: 2r00000111. + 3 timesRepeat: [ + ((next := stream next) bitAnd: 2r11000000) == 2r10000000 + ifTrue: [ code := (code bitShift: 6) + (next bitAnd: 2r00111111) ] + ifFalse: [ ^ self error: 'illegal UTF-8 encoding' ] ]. + ^ Character codePoint: code ]. + self error: 'illegal UTF-8 encoding' \ 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 new file mode 100644 index 00000000..f0791bf9 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/instance/nextPut.toStream..st @@ -0,0 +1,22 @@ +converting +nextPut: character toStream: stream + | code | + code := character codePoint. + code < 128 ifTrue: [ + ^ stream nextPut: code ]. + code < 2048 ifTrue: [ + ^ stream + nextPut: (2r11000000 + (code bitShift: -6)); + nextPut: (2r10000000 + (code bitAnd: 2r111111)) ]. + code < 65535 ifTrue: [ + ^ stream + nextPut: (2r11100000 + (code bitShift: -12)); + nextPut: (2r10000000 + ((code bitShift: -6) bitAnd: 2r111111)); + nextPut: (2r10000000 + (code bitAnd: 2r111111)) ]. + code <= self maximumUTF8Code ifTrue: [ + ^ stream + nextPut: (2r11110000 + (code bitShift: -18)); + nextPut: (2r10000000 + (code bitShift: -12)); + nextPut: (2r10000000 + ((code bitShift: -6) bitAnd: 2r111111)); + nextPut: (2r10000000 + (code bitAnd: 2r111111)) ]. + self error: 'Unicode character code point outside range' diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/methodProperties.json b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/methodProperties.json new file mode 100644 index 00000000..5a7453cf --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + "handlesEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:11", + "newForEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:19" }, + "instance" : { + "encodedByteCountFor:" : "SvenVanCaekenberghe 11/29/2010 21:23", + "maximumUTF8Code" : "SvenVanCaekenberghe 11/29/2010 21:19", + "nextFromStream:" : "SvenVanCaekenberghe 12/3/2012 14:25", + "nextPut:toStream:" : "SvenVanCaekenberghe 12/16/2012 15:20" } } diff --git a/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/properties.json b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/properties.json new file mode 100644 index 00000000..f7c8a48c --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/ZnUTF8Encoder.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "SvenVanCaekenberghe 12/6/2010 12:55", + "instvars" : [ + ], + "name" : "ZnUTF8Encoder", + "pools" : [ + ], + "super" : "ZnCharacterEncoder", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Core.package/monticello.meta/categories.st b/repository/Zinc-Character-Encoding-Core.package/monticello.meta/categories.st new file mode 100644 index 00000000..2cb3537b --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-Character-Encoding-Core'! diff --git a/repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/README.md b/repository/Zinc-Character-Encoding-Core.package/monticello.meta/initializers.st similarity index 100% rename from repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/README.md rename to repository/Zinc-Character-Encoding-Core.package/monticello.meta/initializers.st diff --git a/repository/Zinc-Character-Encoding-Core.package/monticello.meta/package b/repository/Zinc-Character-Encoding-Core.package/monticello.meta/package new file mode 100644 index 00000000..e5ff7021 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-Character-Encoding-Core') \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Core.package/monticello.meta/version b/repository/Zinc-Character-Encoding-Core.package/monticello.meta/version new file mode 100644 index 00000000..58392e65 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/monticello.meta/version @@ -0,0 +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 diff --git a/repository/Zinc-Character-Encoding-Core.package/properties.json b/repository/Zinc-Character-Encoding-Core.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-Character-Encoding-Core.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-Character-Encoding-Tests.package/.filetree b/repository/Zinc-Character-Encoding-Tests.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/README.md b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/README.md similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/README.md rename to repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/README.md diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testDecodingErrors.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testDecodingErrors.st new file mode 100644 index 00000000..b66bb08e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testDecodingErrors.st @@ -0,0 +1,7 @@ +testing +testDecodingErrors + | encoder | + encoder := ZnBase64Encoder new. + self should: [ encoder decode: 'A' ] raise: Error. + self should: [ encoder decode: 'AB' ] raise: Error. + self should: [ encoder decode: 'ABC' ] raise: Error. \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testEmpty.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testEmpty.st new file mode 100644 index 00000000..ebcb8ff6 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testEmpty.st @@ -0,0 +1,10 @@ +testing +testEmpty + | encoder | + encoder := ZnBase64Encoder new. + self + assert: (encoder encode: #[]) + equals: ''. + self + assert: (encoder decode: '') + equals: #[] \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testFullSpectrum.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testFullSpectrum.st new file mode 100644 index 00000000..9fc0d93e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testFullSpectrum.st @@ -0,0 +1,10 @@ +testing +testFullSpectrum + | encoder input output | + encoder := ZnBase64Encoder new. + input := (0 to: 255) asByteArray , (255 to: 0) asByteArray. + output := encoder encode: input. + self assert: (encoder decode: output) equals: input. + encoder breakLines. + output := encoder encode: input. + self assert: (encoder decode: output) equals: input. diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testPadding.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testPadding.st new file mode 100644 index 00000000..80b968f3 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testPadding.st @@ -0,0 +1,8 @@ +testing +testPadding + | encoder | + encoder := ZnBase64Encoder new. + self assert: (encoder encode: 'M' asByteArray) equals: 'TQ=='. + self assert: (encoder decode: 'TQ==') equals: 'M' asByteArray. + self assert: (encoder encode: 'Ma' asByteArray) equals: 'TWE='. + self assert: (encoder decode: 'TWE=') equals: 'Ma' asByteArray \ 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 new file mode 100644 index 00000000..d9b096cb --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testQuote.st @@ -0,0 +1,17 @@ +testing +testQuote + | input output encoder break | + encoder := ZnBase64Encoder new lineEndConvention: #cr; breakLines; yourself. + input := 'Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.'. + break := String with: Character cr. + output := 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz' , break + , 'IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg' , break + , 'dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu' , break + , 'dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo' , break + , 'ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4='. + self + assert: (encoder encode: input asByteArray) + equals: output. + self + assert: (encoder decode: output) + 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 new file mode 100644 index 00000000..38152bca --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/instance/testSimple.st @@ -0,0 +1,10 @@ +testing +testSimple + | encoder | + encoder := ZnBase64Encoder new. + self + assert: (encoder encode: 'Man' asByteArray) + equals: 'TWFu'. + self + assert: (encoder decode: 'TWFu') + equals: 'Man' asByteArray \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/methodProperties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/methodProperties.json new file mode 100644 index 00000000..f5e0f424 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "testDecodingErrors" : "SvenVanCaekenberghe 12/15/2012 13:43", + "testEmpty" : "SvenVanCaekenberghe 12/15/2012 13:44", + "testFullSpectrum" : "SvenVanCaekenberghe 12/15/2012 10:16", + "testPadding" : "SvenVanCaekenberghe 12/15/2012 13:39", + "testQuote" : "KenTreis 01/19/2013 09:28", + "testSimple" : "SvenVanCaekenberghe 12/15/2012 00:07" } } diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/properties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/properties.json new file mode 100644 index 00000000..3a70d459 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBase64EncoderTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnBase64EncoderTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/README.md b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/README.md new file mode 100644 index 00000000..6b391ad2 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/README.md @@ -0,0 +1 @@ +I am ZnBufferedReadStreamTests. \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testBuffering.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testBuffering.st new file mode 100644 index 00000000..c91eee2d --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testBuffering.st @@ -0,0 +1,10 @@ +testing +testBuffering + | stream | + stream := ZnBufferedReadStream on: '01234567890123456789' readStream. + stream sizeBuffer: 8. + self deny: stream atEnd. + self assert: (stream next: 10) equals: '0123456789'. + self deny: stream atEnd. + self assert: (stream next: 10) equals: '0123456789'. + self assert: stream atEnd \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testPeek.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testPeek.st new file mode 100644 index 00000000..1913f1d9 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testPeek.st @@ -0,0 +1,12 @@ +testing +testPeek + | stream | + stream := ZnBufferedReadStream on: '0123456789' readStream. + stream sizeBuffer: 8. + '0123456789' do: [ :each | + self deny: stream atEnd. + self assert: stream peek equals: each. + self assert: stream next equals: each ]. + self assert: stream atEnd. + self assert: stream peek isNil. + self assert: stream next isNil \ 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 new file mode 100644 index 00000000..9678cc24 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadInto.st @@ -0,0 +1,14 @@ +testing +testReadInto + | stream buffer count | + stream := ZnBufferedReadStream on: '0123456789' readStream. + stream sizeBuffer: 8. + buffer := String new: 6 withAll: Character space. + stream skip: 1. + stream readInto: buffer startingAt: 4 count: 3. + self assert: buffer equals: ' 123'. + stream readInto: buffer startingAt: 1 count: 3. + 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 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 new file mode 100644 index 00000000..81c671ca --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadIntoLarger.st @@ -0,0 +1,9 @@ +testing +testReadIntoLarger + | stream buffer count | + stream := ZnBufferedReadStream on: '0123456789' readStream. + stream sizeBuffer: 4. + 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 diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadUpTo.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadUpTo.st new file mode 100644 index 00000000..77782ab5 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadUpTo.st @@ -0,0 +1,8 @@ +testing +testReadUpTo + | stream | + stream := ZnBufferedReadStream on: '0123456789' readStream. + stream sizeBuffer: 8. + self assert: (stream upTo: $5) equals: '01234'. + self assert: stream upToEnd equals: '6789'. + self assert: stream atEnd \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadUpToEnd.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadUpToEnd.st new file mode 100644 index 00000000..a8a07d6e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/instance/testReadUpToEnd.st @@ -0,0 +1,8 @@ +testing +testReadUpToEnd + | stream | + stream := ZnBufferedReadStream on: '0123456789' readStream. + stream sizeBuffer: 4. + stream next: 2. + self assert: stream upToEnd equals: '23456789'. + self assert: stream atEnd \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/methodProperties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/methodProperties.json new file mode 100644 index 00000000..4325956c --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "testBuffering" : "SvenVanCaekenberghe 11/30/2012 20:47", + "testPeek" : "SvenVanCaekenberghe 11/30/2012 20:49", + "testReadInto" : "SvenVanCaekenberghe 11/30/2012 20:56", + "testReadIntoLarger" : "SvenVanCaekenberghe 11/30/2012 21:02", + "testReadUpTo" : "SvenVanCaekenberghe 12/16/2012 16:24", + "testReadUpToEnd" : "SvenVanCaekenberghe 12/16/2012 16:25" } } diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/properties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/properties.json new file mode 100644 index 00000000..1f9f43da --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedReadStreamTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnBufferedReadStreamTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/README.md b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/README.md similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterStreamTests.class/README.md rename to repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/README.md diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/instance/testNextPutAllStartingAt.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/instance/testNextPutAllStartingAt.st new file mode 100644 index 00000000..c3ca9e4b --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/instance/testNextPutAllStartingAt.st @@ -0,0 +1,11 @@ +testing +testNextPutAllStartingAt + | string | + string := String streamContents: [ :stringStream | + ZnBufferedWriteStream on: stringStream do: [ : bufferedStream | + bufferedStream sizeBuffer: 8. + bufferedStream next: 5 putAll: '--012345--' startingAt: 3. + bufferedStream next: 5 putAll: '0123456789XX' startingAt: 6. + bufferedStream next: 5 putAll: '--012345--' startingAt: 3. + bufferedStream next: 5 putAll: '0123456789XX' startingAt: 6.] ]. + self assert: string equals: '01234567890123456789' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/instance/testWriting.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/instance/testWriting.st similarity index 100% rename from repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/instance/testWriting.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/instance/testWriting.st diff --git a/repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/instance/testWritingOverflow.st b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/instance/testWritingOverflow.st similarity index 100% rename from repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/instance/testWritingOverflow.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/instance/testWritingOverflow.st diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/methodProperties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/methodProperties.json new file mode 100644 index 00000000..ea512206 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "testNextPutAllStartingAt" : "SvenVanCaekenberghe 11/30/2012 21:08", + "testWriting" : "SvenVanCaekenberghe 12/8/2010 09:54", + "testWritingOverflow" : "SvenVanCaekenberghe 12/8/2010 09:53" } } diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/properties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/properties.json new file mode 100644 index 00000000..ab10f402 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnBufferedWriteStreamTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnBufferedWriteStreamTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnClientOldTests.class/README.md b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/README.md similarity index 100% rename from repository/Zinc-Tests.package/ZnClientOldTests.class/README.md rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/README.md diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/decodeBytes.with..st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/decodeBytes.with..st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/decodeBytes.with..st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/decodeBytes.with..st diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/encodeString.with..st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/encodeString.with..st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/encodeString.with..st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/encodeString.with..st diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testBeLenient.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testBeLenient.st new file mode 100644 index 00000000..7c381aa8 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testBeLenient.st @@ -0,0 +1,10 @@ +testing +testBeLenient + | encoder unmapped | + encoder := ZnCharacterEncoder newForEncoding: 'iso-8859-1'. + unmapped := (128 to: 159) asByteArray. + self should: [ encoder encodeString: unmapped asString ] raise: ZnCharacterEncodingError. + self should: [ encoder decodeBytes: unmapped ] raise: ZnCharacterEncodingError. + encoder beLenient. + self assert: (encoder encodeString: unmapped asString) equals: unmapped. + self assert: (encoder decodeBytes: unmapped) equals: unmapped asString. \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testConvencienceMethods.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testConvencienceMethods.st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testConvencienceMethods.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testConvencienceMethods.st diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin1Encoder.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin1Encoder.st new file mode 100644 index 00000000..5af2d202 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin1Encoder.st @@ -0,0 +1,8 @@ +testing +testLatin1Encoder + | encoder string bytes | + encoder := ZnCharacterEncoder newForEncoding: 'latin1'. + string := 'élève en Français'. + bytes := #(233 108 232 118 101 32 101 110 32 70 114 97 110 231 97 105 115) asByteArray. + self assert: (encoder encodeString: string) equals: bytes. + self assert: (encoder decodeBytes: bytes) equals: string \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin2Encoder.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin2Encoder.st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin2Encoder.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testLatin2Encoder.st diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testNullEncoder.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testNullEncoder.st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testNullEncoder.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testNullEncoder.st diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Encoder.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Encoder.st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Encoder.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8Encoder.st diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderAuto.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderAuto.st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderAuto.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderAuto.st diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderByteCount.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderByteCount.st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderByteCount.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/instance/testUTF8EncoderByteCount.st diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json new file mode 100644 index 00000000..c561b1ed --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json @@ -0,0 +1,14 @@ +{ + "class" : { + }, + "instance" : { + "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", + "testLatin1Encoder" : "SvenVanCaekenberghe 12/15/2012 19:12", + "testLatin2Encoder" : "PaulDeBruicker 04/10/2011 10:44", + "testNullEncoder" : "PaulDeBruicker 04/10/2011 10:45", + "testUTF8Encoder" : "PaulDeBruicker 04/10/2011 10:44", + "testUTF8EncoderAuto" : "SvenVanCaekenberghe 11/30/2010 13:42", + "testUTF8EncoderByteCount" : "PaulDeBruicker 04/10/2011 10:44" } } diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/properties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/properties.json new file mode 100644 index 00000000..c385a5bb --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterEncoderTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnCharacterEncoderTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/README.md b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/README.md similarity index 100% rename from repository/Zinc-Tests.package/ZnCredentialTests.class/README.md rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/README.md diff --git a/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/instance/testReadStream.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/instance/testReadStream.st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterStreamTests.class/instance/testReadStream.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/instance/testReadStream.st diff --git a/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8ReadStream.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8ReadStream.st similarity index 100% rename from repository/Zinc-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8ReadStream.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8ReadStream.st diff --git a/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8WriteStream.st b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8WriteStream.st similarity index 77% rename from repository/Zinc-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8WriteStream.st rename to repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8WriteStream.st index 52693ac1..e90430c6 100644 --- a/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8WriteStream.st +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/instance/testSimpleUTF8WriteStream.st @@ -3,7 +3,7 @@ testSimpleUTF8WriteStream | string bytes stream | string := 'élève en Français'. bytes := ZnUTF8Encoder new encodeString: string. - stream := (ZnCharacterWriteStream on: #[] writeStream). + stream := (ZnCharacterWriteStream on: ByteArray new writeStream). stream nextPutAll: string. self assert: stream wrappedStream contents diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/methodProperties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/methodProperties.json new file mode 100644 index 00000000..96f5a84c --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "testReadStream" : "SvenVanCaekenberghe 5/3/2012 21:35", + "testSimpleUTF8ReadStream" : "SvenVanCaekenberghe 5/3/2012 21:26", + "testSimpleUTF8WriteStream" : "KenTreis 01/18/2013 16:24" } } diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/properties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/properties.json new file mode 100644 index 00000000..97f7b7dc --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnCharacterStreamTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnCharacterStreamTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnFixedClientTests.class/README.md b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/README.md similarity index 100% rename from repository/Zinc-Tests.package/ZnFixedClientTests.class/README.md rename to repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/README.md diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testDecodingErrors.st b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testDecodingErrors.st new file mode 100644 index 00000000..781b13a5 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testDecodingErrors.st @@ -0,0 +1,9 @@ +testing +testDecodingErrors + | encoder | + encoder := ZnPercentEncoder new. + self should: [ encoder decode: 'foo%%bar' ] raise: ZnCharacterEncodingError. + self should: [ encoder decode: 'fooçbar' ] raise: ZnCharacterEncodingError. + self should: [ encoder decode: 'foo%' ] raise: ZnCharacterEncodingError. + self should: [ encoder decode: '%XX' ] raise: ZnCharacterEncodingError. + self should: [ encoder decode: 'foo%F' ] raise: ZnCharacterEncodingError \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testNonAscii.st b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testNonAscii.st new file mode 100644 index 00000000..95a0ca7e --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testNonAscii.st @@ -0,0 +1,13 @@ +testing +testNonAscii + | encoder | + encoder := ZnPercentEncoder new. + self + assert: encoder characterEncoder + equals: (ZnCharacterEncoder newForEncoding: 'utf-8'). + self + assert: (encoder encode: 'élève en Français') + equals: '%C3%A9l%C3%A8ve%20en%20Fran%C3%A7ais'. + self + assert: (encoder decode: '%C3%A9l%C3%A8ve%20en%20Fran%C3%A7ais') + equals: 'élève en Français' \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testSimple.st b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testSimple.st new file mode 100644 index 00000000..32279699 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/instance/testSimple.st @@ -0,0 +1,10 @@ +testing +testSimple + | encoder | + encoder := ZnPercentEncoder new. + self assert: (encoder encode: 'foo bar') equals: 'foo%20bar'. + self assert: (encoder decode: 'foo%20bar') equals: 'foo bar'. + self assert: (encoder encode: '') equals: ''. + self assert: (encoder decode: '') equals: ''. + self assert: (encoder decode: 'foo%25bar') equals: 'foo%bar'. + self assert: (encoder decode: 'foo+bar') equals: 'foo bar' \ 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 new file mode 100644 index 00000000..a15cb7f0 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "testDecodingErrors" : "SvenVanCaekenberghe 12/16/2012 15:12", + "testNonAscii" : "SvenVanCaekenberghe 12/13/2012 11:26", + "testSimple" : "SvenVanCaekenberghe 12/13/2012 11:58" } } diff --git a/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/properties.json b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/properties.json new file mode 100644 index 00000000..5b5b6d43 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/ZnPercentEncoderTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Character-Encoding-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnPercentEncoderTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/categories.st b/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/categories.st new file mode 100644 index 00000000..d2931a20 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-Character-Encoding-Tests'! diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/README.md b/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/initializers.st similarity index 100% rename from repository/Zinc-Tests.package/ZnHttpClientTests.class/README.md rename to repository/Zinc-Character-Encoding-Tests.package/monticello.meta/initializers.st diff --git a/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/package b/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/package new file mode 100644 index 00000000..3486a20b --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-Character-Encoding-Tests') \ No newline at end of file diff --git a/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/version b/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/version new file mode 100644 index 00000000..96cb4898 --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/monticello.meta/version @@ -0,0 +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 diff --git a/repository/Zinc-Character-Encoding-Tests.package/properties.json b/repository/Zinc-Character-Encoding-Tests.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-Character-Encoding-Tests.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-FileSystem-Legacy.package/ZnFileSystemUtils.class/class/directory..st b/repository/Zinc-FileSystem-Legacy.package/ZnFileSystemUtils.class/class/directory..st new file mode 100644 index 00000000..24da60f2 --- /dev/null +++ b/repository/Zinc-FileSystem-Legacy.package/ZnFileSystemUtils.class/class/directory..st @@ -0,0 +1,3 @@ +paths +directory: path + ^ FileDirectory on: path \ No newline at end of file diff --git a/repository/Zinc-FileSystem-Legacy.package/ZnFileSystemUtils.class/methodProperties.json b/repository/Zinc-FileSystem-Legacy.package/ZnFileSystemUtils.class/methodProperties.json index ed051ccd..d810d9a2 100644 --- a/repository/Zinc-FileSystem-Legacy.package/ZnFileSystemUtils.class/methodProperties.json +++ b/repository/Zinc-FileSystem-Legacy.package/ZnFileSystemUtils.class/methodProperties.json @@ -5,6 +5,7 @@ "defaultDirectoryPath" : "SvenVanCaekenberghe 7/2/2012 22:36", "delete:" : "SvenVanCaekenberghe 7/2/2012 16:44", "deleteIfExists:" : "SvenVanCaekenberghe 7/2/2012 16:57", + "directory:" : "SvenVanCaekenberghe 8/28/2012 21:28", "downloadPathTo:for:" : "SvenVanCaekenberghe 7/20/2012 13:06", "exists:" : "SvenVanCaekenberghe 7/2/2012 16:43", "extensionFor:" : "SvenVanCaekenberghe 7/2/2012 16:01", diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/README.md b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/README.md similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/README.md rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/README.md diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/directory..st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/directory..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/directory..st rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/directory..st diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/directory.st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/directory.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/directory.st rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/directory.st diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/handleGetMczEntry..st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/handleGetMczEntry..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/handleGetMczEntry..st rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/handleGetMczEntry..st diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/handleListMczEntries..st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/handleListMczEntries..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/handleListMczEntries..st rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/handleListMczEntries..st diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/handlePutMczEntry..st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/handlePutMczEntry..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/handlePutMczEntry..st rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/handlePutMczEntry..st diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/handleRequest..st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/handleRequest..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/handleRequest..st rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/handleRequest..st diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/isValidMczName..st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/isValidMczName..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/isValidMczName..st rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/isValidMczName..st diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/mczEntries.st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/mczEntries.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/mczEntries.st rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/mczEntries.st diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/repositoryListing.st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/repositoryListing.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/instance/repositoryListing.st rename to repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/repositoryListing.st diff --git a/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/value..st b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/instance/value..st new file mode 100644 index 00000000..17bc2c2a --- /dev/null +++ b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.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-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/methodProperties.json b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/methodProperties.json new file mode 100644 index 00000000..642c7dd2 --- /dev/null +++ b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/methodProperties.json @@ -0,0 +1,14 @@ +{ + "class" : { + }, + "instance" : { + "directory" : "SvenVanCaekenberghe 9/17/2010 10:20", + "directory:" : "SvenVanCaekenberghe 9/17/2010 10:20", + "handleGetMczEntry:" : "SvenVanCaekenberghe 1/4/2011 14:49", + "handleListMczEntries:" : "SvenVanCaekenberghe 8/18/2011 14:25", + "handlePutMczEntry:" : "SvenVanCaekenberghe 1/4/2011 14:49", + "handleRequest:" : "SvenVanCaekenberghe 1/4/2011 13:42", + "isValidMczName:" : "SvenVanCaekenberghe 9/17/2010 10:24", + "mczEntries" : "SvenVanCaekenberghe 9/17/2010 10:21", + "repositoryListing" : "SvenVanCaekenberghe 9/17/2010 11:00", + "value:" : "SvenVanCaekenberghe 8/22/2012 14:41" } } diff --git a/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/properties.json b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/properties.json new file mode 100644 index 00000000..1eae145e --- /dev/null +++ b/repository/Zinc-FileSystem-Legacy.package/ZnMonticelloServerDelegate.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-FileSystem-Legacy", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "directory" ], + "name" : "ZnMonticelloServerDelegate", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-FileSystem-Legacy.package/ZnStaticFileServerDelegate.class/instance/redirectNeededFor.actualFilename..st b/repository/Zinc-FileSystem-Legacy.package/ZnStaticFileServerDelegate.class/instance/redirectNeededFor.actualFilename..st index 5703917f..977e8265 100644 --- a/repository/Zinc-FileSystem-Legacy.package/ZnStaticFileServerDelegate.class/instance/redirectNeededFor.actualFilename..st +++ b/repository/Zinc-FileSystem-Legacy.package/ZnStaticFileServerDelegate.class/instance/redirectNeededFor.actualFilename..st @@ -1,4 +1,4 @@ private redirectNeededFor: uri actualFilename: actualFilename - uri isDirectory ifTrue: [ ^ false ]. + uri isDirectoryPath ifTrue: [ ^ false ]. ^ (actualFilename endsWith: uri lastPathSegment) not \ No newline at end of file diff --git a/repository/Zinc-FileSystem-Legacy.package/ZnStaticFileServerDelegate.class/methodProperties.json b/repository/Zinc-FileSystem-Legacy.package/ZnStaticFileServerDelegate.class/methodProperties.json index 8c13210d..b1fbb231 100644 --- a/repository/Zinc-FileSystem-Legacy.package/ZnStaticFileServerDelegate.class/methodProperties.json +++ b/repository/Zinc-FileSystem-Legacy.package/ZnStaticFileServerDelegate.class/methodProperties.json @@ -15,5 +15,5 @@ "prefix" : "SvenVanCaekenberghe 4/26/2011 12:46", "prefix:" : "SvenVanCaekenberghe 4/26/2011 11:08", "prefixFromString:" : "SvenVanCaekenberghe 4/26/2011 11:09", - "redirectNeededFor:actualFilename:" : "SvenVanCaekenberghe 4/26/2011 13:11", + "redirectNeededFor:actualFilename:" : "SvenVanCaekenberghe 1/14/2013 13:56", "responseForFile:fromRequest:" : "SvenVanCaekenberghe 5/14/2012 09:53" } } diff --git a/repository/Zinc-FileSystem-Legacy.package/monticello.meta/version b/repository/Zinc-FileSystem-Legacy.package/monticello.meta/version index 67fccac9..6e096396 100644 --- a/repository/Zinc-FileSystem-Legacy.package/monticello.meta/version +++ b/repository/Zinc-FileSystem-Legacy.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.2' message 'fixed a logic problem in ZnFileSystemUtils class>>#downloadPathTo:for:' id '30263aa4-76ea-4db1-8c10-9fd5eae0e1fb' date '20 July 2012' time '1:14:58 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.1' 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 '207f349a-f8a3-41da-b78b-8ae9107259a8' date '3 July 2012' time '1:48:48.041 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.5' message 'Moving ZnMonticelloServerDelegate from Zinc-HTTP-Client-Server to Zinc-FileSystem and Zinc-FileSystem-Legacy' id 'e54384f6-1a1f-45d5-ab42-048e08a5a975' date '30 January 2013' time '7:57:02.94 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.4' message 'tracking API changes' id '7d5eb508-7db8-4fb2-90b8-e36d2c3c9fd8' date '14 January 2013' time '1:57:46.265 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.3' message 'added ZnFileSystemUtils class>>#directory:' id 'd9ab6ff0-6c69-4162-aa1a-2d714416ec30' date '28 August 2012' time '9:29:36.988 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.2' message 'fixed a logic problem in ZnFileSystemUtils class>>#downloadPathTo:for:' id '30263aa4-76ea-4db1-8c10-9fd5eae0e1fb' date '20 July 2012' time '1:14:58 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-Legacy-SvenVanCaekenberghe.1' 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 '207f349a-f8a3-41da-b78b-8ae9107259a8' date '3 July 2012' time '1:48:48.041 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/class/directory..st b/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/class/directory..st new file mode 100644 index 00000000..a521fa9a --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/class/directory..st @@ -0,0 +1,3 @@ +paths +directory: path + ^ path asFileReference \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/class/fileNamed.do..st b/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/class/fileNamed.do..st index 92146559..0025301e 100644 --- a/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/class/fileNamed.do..st +++ b/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/class/fileNamed.do..st @@ -1,4 +1,4 @@ streams fileNamed: fileName do: block ^ fileName asFileReference - fileStreamDo: block \ No newline at end of file + writeStreamDo: block \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/methodProperties.json b/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/methodProperties.json index 8bb6545c..e4c644ec 100644 --- a/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/methodProperties.json +++ b/repository/Zinc-FileSystem.package/ZnFileSystemUtils.class/methodProperties.json @@ -5,10 +5,11 @@ "defaultDirectoryPath" : "SvenVanCaekenberghe 7/3/2012 15:09", "delete:" : "SvenVanCaekenberghe 7/3/2012 15:10", "deleteIfExists:" : "SvenVanCaekenberghe 7/2/2012 16:57", + "directory:" : "SvenVanCaekenberghe 8/28/2012 21:18", "downloadPathTo:for:" : "SvenVanCaekenberghe 7/20/2012 11:53", "exists:" : "SvenVanCaekenberghe 7/3/2012 15:10", "extensionFor:" : "SvenVanCaekenberghe 7/3/2012 15:11", - "fileNamed:do:" : "SvenVanCaekenberghe 7/3/2012 16:12", + "fileNamed:do:" : "SvenVanCaekenberghe 9/12/2012 20:44", "fileSizeFor:" : "SvenVanCaekenberghe 7/3/2012 15:12", "fileStreamFor:" : "SvenVanCaekenberghe 7/3/2012 16:12", "fullNameFor:" : "SvenVanCaekenberghe 7/3/2012 15:14", diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/README.md b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/README.md new file mode 100644 index 00000000..2163b82d --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/README.md @@ -0,0 +1,10 @@ +I am ZnMonticelloServerDelegate. +I am a proof of concept implementation of a basic Monticello server. +I function as a delegate for ZnServer. + +ZnServer startDefaultOn: 1701. +ZnServer default delegate: ((ZnMonticelloServerDelegate new) + directory: '/tmp/monticello'; + yourself). + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/directory..st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/directory..st new file mode 100644 index 00000000..2e6d03fe --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/directory..st @@ -0,0 +1,3 @@ +accessing +directory: object + directory := object asFileReference \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/directory.st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/directory.st new file mode 100644 index 00000000..b051abbe --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/directory.st @@ -0,0 +1,3 @@ +accessing +directory + ^ directory \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handleGetMczEntry..st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handleGetMczEntry..st new file mode 100644 index 00000000..6f42b8c6 --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handleGetMczEntry..st @@ -0,0 +1,13 @@ +private +handleGetMczEntry: request + | name file stream entity | + name := request uri firstPathSegment. + file := self directory / name. + ^ ((self isValidMczName: name) and: [ file exists ]) + ifTrue: [ | | + (stream := file readStream) + binary. + (entity := ZnStreamingEntity type: ZnMimeType applicationOctetStream length: file size) + stream: stream. + ZnResponse ok: entity ] + ifFalse: [ ZnResponse notFound: request uri ] \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handleListMczEntries..st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handleListMczEntries..st new file mode 100644 index 00000000..6283a0d2 --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handleListMczEntries..st @@ -0,0 +1,3 @@ +private +handleListMczEntries: request + ^ ZnResponse ok: (ZnEntity html: self repositoryListing) \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handlePutMczEntry..st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handlePutMczEntry..st new file mode 100644 index 00000000..d1a31399 --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handlePutMczEntry..st @@ -0,0 +1,12 @@ +private +handlePutMczEntry: request + | name file | + name := request uri firstPathSegment. + file := self directory / name. + ^ ((self isValidMczName: name) and: [ file exists not ]) + ifTrue: [ + file writeStreamDo: [ :stream | + stream binary. + request entity writeOn: stream ]. + ZnResponse created: request uri ] + ifFalse: [ ZnResponse badRequest: request ] \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handleRequest..st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handleRequest..st new file mode 100644 index 00000000..e5fb424d --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/handleRequest..st @@ -0,0 +1,10 @@ +public +handleRequest: request + (request method = #GET) + ifTrue: [ + ^ request uri isSlash + ifTrue: [ self handleListMczEntries: request ] + ifFalse: [ self handleGetMczEntry: request ] ]. + ^ (request method = #PUT) + ifTrue: [ self handlePutMczEntry: request ] + ifFalse: [ ZnResponse badRequest: request ] \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/isValidMczName..st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/isValidMczName..st new file mode 100644 index 00000000..34f0a6c1 --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/isValidMczName..st @@ -0,0 +1,6 @@ +private +isValidMczName: string + ^ string isString + and: [ string isEmpty not + and: [ (string endsWith: '.mcz') + and: [ (string includes: $/) not ] ] ] \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/mczEntries.st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/mczEntries.st new file mode 100644 index 00000000..1d53b18b --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/mczEntries.st @@ -0,0 +1,4 @@ +accessing +mczEntries + ^ (self directory fileNames select: [ :each | each endsWith: '.mcz' ]) + asSortedCollection \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/repositoryListing.st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/repositoryListing.st new file mode 100644 index 00000000..5063a3a6 --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/repositoryListing.st @@ -0,0 +1,9 @@ +private +repositoryListing + ^ String streamContents: [ :str | + str nextPutAll: 'Monticello Repository'. + str nextPutAll: '

Monticello Repository

'. + str nextPutAll: '' ] \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/value..st b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/instance/value..st new file mode 100644 index 00000000..17bc2c2a --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.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-FileSystem.package/ZnMonticelloServerDelegate.class/methodProperties.json b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/methodProperties.json new file mode 100644 index 00000000..2a1ff0ee --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/methodProperties.json @@ -0,0 +1,14 @@ +{ + "class" : { + }, + "instance" : { + "directory" : "SvenVanCaekenberghe 9/17/2010 10:20", + "directory:" : "SvenVanCaekenberghe 1/30/2013 20:21", + "handleGetMczEntry:" : "SvenVanCaekenberghe 1/30/2013 21:07", + "handleListMczEntries:" : "SvenVanCaekenberghe 8/18/2011 14:25", + "handlePutMczEntry:" : "SvenVanCaekenberghe 1/30/2013 21:08", + "handleRequest:" : "SvenVanCaekenberghe 1/4/2011 13:42", + "isValidMczName:" : "SvenVanCaekenberghe 9/17/2010 10:24", + "mczEntries" : "SvenVanCaekenberghe 9/17/2010 10:21", + "repositoryListing" : "SvenVanCaekenberghe 9/17/2010 11:00", + "value:" : "SvenVanCaekenberghe 8/22/2012 14:41" } } diff --git a/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/properties.json b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/properties.json new file mode 100644 index 00000000..c8cb406e --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnMonticelloServerDelegate.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-FileSystem", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "directory" ], + "name" : "ZnMonticelloServerDelegate", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.class/instance/redirectNeededFor.actualFilename..st b/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.class/instance/redirectNeededFor.actualFilename..st index 5703917f..977e8265 100644 --- a/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.class/instance/redirectNeededFor.actualFilename..st +++ b/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.class/instance/redirectNeededFor.actualFilename..st @@ -1,4 +1,4 @@ private redirectNeededFor: uri actualFilename: actualFilename - uri isDirectory ifTrue: [ ^ false ]. + uri isDirectoryPath ifTrue: [ ^ false ]. ^ (actualFilename endsWith: uri lastPathSegment) not \ No newline at end of file diff --git a/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.class/instance/value..st b/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.class/instance/value..st new file mode 100644 index 00000000..17bc2c2a --- /dev/null +++ b/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.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-FileSystem.package/ZnStaticFileServerDelegate.class/methodProperties.json b/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.class/methodProperties.json index a91b42b9..2acdd374 100644 --- a/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.class/methodProperties.json +++ b/repository/Zinc-FileSystem.package/ZnStaticFileServerDelegate.class/methodProperties.json @@ -15,5 +15,6 @@ "prefix" : "SvenVanCaekenberghe 4/26/2011 12:46", "prefix:" : "SvenVanCaekenberghe 4/26/2011 11:08", "prefixFromString:" : "SvenVanCaekenberghe 4/26/2011 11:09", - "redirectNeededFor:actualFilename:" : "SvenVanCaekenberghe 4/26/2011 13:11", - "responseForFile:fromRequest:" : "SvenVanCaekenberghe 7/3/2012 14:56" } } + "redirectNeededFor:actualFilename:" : "SvenVanCaekenberghe 1/14/2013 11:37", + "responseForFile:fromRequest:" : "SvenVanCaekenberghe 7/3/2012 14:56", + "value:" : "SvenVanCaekenberghe 8/22/2012 14:41" } } diff --git a/repository/Zinc-FileSystem.package/monticello.meta/version b/repository/Zinc-FileSystem.package/monticello.meta/version index b1a28b41..8f13b029 100644 --- a/repository/Zinc-FileSystem.package/monticello.meta/version +++ b/repository/Zinc-FileSystem.package/monticello.meta/version @@ -1 +1 @@ -(name 'Zinc-FileSystem-SvenVanCaekenberghe.4' message 'fixed a logic problem in ZnFileSystemUtils class>>#downloadPathTo:for:' id '89d4336a-deb2-4d29-ae1a-cad2c0ac7e3c' date '20 July 2012' time '1:08:51.891 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-MarcusDenker.3' message 'ScriptLoader new addHomeRepositoryToAllPackages. Compiler recompileAll.' id '1eed2077-f0ae-4a4d-8f23-f22fcdee2ec5' date '5 July 2012' time '9:05:03.53 am' author 'MarcusDenker' ancestors ((name 'Zinc-FileSystem-SeanDeNigris.2' message '* Remove empty FileSystem-Legacy category' id '15a3ad74-95f8-426f-b252-203a63ee86fe' date '5 July 2012' time '1:00:40.15 am' author 'SeanDeNigris' ancestors ((name 'Zinc-FileSystem-SvenVanCaekenberghe.1' message 'introduction of the Zinc-FileSystem package (including the new ZnFileSystemUtils class) to deal with pre/post FIleSystem introduction in Pharo 2.0 - this is the new code' id '86bb1c9c-e744-4d9f-a31d-3a31f82a3775' date '3 July 2012' time '4:50:07.683 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Zinc-FileSystem-SvenVanCaekenberghe.9' message 'Moving ZnMonticelloServerDelegate from Zinc-HTTP-Client-Server to Zinc-FileSystem and Zinc-FileSystem-Legacy; Ported to FileSystem' id 'e3e4ac01-a11e-4a2b-9161-1d65a7e6c006' date '30 January 2013' time '9:12:41.494 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-SvenVanCaekenberghe.8' message 'tracking API changes' id '3886af4a-5c10-4267-b30c-40212c6d845d' date '14 January 2013' time '1:19:15.151 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-SvenVanCaekenberghe.7' message 'fixed ZnFileSystemUtils class>>#fileNamed:do: to use #writeStreamDo:' id 'e20ba17f-3b3a-4d63-b518-7498f4f085d3' date '14 September 2012' time '8:24:02.708 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-SvenVanCaekenberghe.6' message 'added ZnFileSystemUtils class>>#directory:' id '857a92bc-4e38-4f39-b301-8fc47e5f5ab3' date '28 August 2012' time '9:26:22.191 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-MarcusDenker.5' message 'Issue 6300: Detach keymaping shortcuts http://code.google.com/p/pharo/issues/detail?id=6300 Issue 6332: Zero in DateAndTime offset http://code.google.com/p/pharo/issues/detail?id=6332 Issue 6333: FileSystem refactoring http://code.google.com/p/pharo/issues/detail?id=6333' id '45c87a8c-d3eb-4b2a-a288-8f8b6d9578db' date '12 July 2012' time '12:04:19.764 pm' author 'MarcusDenker' ancestors ((name 'Zinc-FileSystem-abc.4' message 'major cleanup of FileSystem' id '8341dc4e-09af-413c-8bd4-b6b64fddd9d2' date '10 July 2012' time '11:12:39.495 pm' author 'abc' ancestors ((name 'Zinc-FileSystem-MarcusDenker.3' message 'ScriptLoader new addHomeRepositoryToAllPackages. Compiler recompileAll.' id '1eed2077-f0ae-4a4d-8f23-f22fcdee2ec5' date '5 July 2012' time '9:05:03.53 am' author 'MarcusDenker' ancestors ((name 'Zinc-FileSystem-SeanDeNigris.2' message '* Remove empty FileSystem-Legacy category' id '15a3ad74-95f8-426f-b252-203a63ee86fe' date '5 July 2012' time '1:00:40.15 am' author 'SeanDeNigris' ancestors ((name 'Zinc-FileSystem-SvenVanCaekenberghe.1' message 'introduction of the Zinc-FileSystem package (including the new ZnFileSystemUtils class) to deal with pre/post FIleSystem introduction in Pharo 2.0 - this is the new code' id '86bb1c9c-e744-4d9f-a31d-3a31f82a3775' date '3 July 2012' time '4:50:07.683 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Zinc-FileSystem-SvenVanCaekenberghe.5' message 'added ZnStaticFileServerDelegate>>#value:' id 'a5200061-5273-446c-85c9-83969529e2b7' date '22 August 2012' time '2:58:31.355 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-FileSystem-SvenVanCaekenberghe.4' message 'fixed a logic problem in ZnFileSystemUtils class>>#downloadPathTo:for:' id '89d4336a-deb2-4d29-ae1a-cad2c0ac7e3c' date '20 July 2012' time '1:08:51.891 pm' author 'SvenVanCaekenberghe' ancestors ((id '1eed2077-f0ae-4a4d-8f23-f22fcdee2ec5')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/HierarchicalUrl.extension/instance/asZnUrl.st b/repository/Zinc-HTTP.package/HierarchicalUrl.extension/instance/asZnUrl.st index b58165b3..94e6bbb7 100644 --- a/repository/Zinc-HTTP.package/HierarchicalUrl.extension/instance/asZnUrl.st +++ b/repository/Zinc-HTTP.package/HierarchicalUrl.extension/instance/asZnUrl.st @@ -5,6 +5,6 @@ asZnUrl host: self authority; port: self port; segments: (self path collect: [ :each | each isEmpty ifTrue: [ #/ ] ifFalse: [ each ] ]); - query: (self query isNil ifTrue: [ nil ] ifFalse: [ ZnUtils parseQueryFrom: self query readStream ]); + query: (self query isNil ifTrue: [ nil ] ifFalse: [ ZnResourceMetaUtils parseQueryFrom: self query readStream ]); fragment: self fragment; yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/HierarchicalUrl.extension/methodProperties.json b/repository/Zinc-HTTP.package/HierarchicalUrl.extension/methodProperties.json index ae73eb88..293eb764 100644 --- a/repository/Zinc-HTTP.package/HierarchicalUrl.extension/methodProperties.json +++ b/repository/Zinc-HTTP.package/HierarchicalUrl.extension/methodProperties.json @@ -2,4 +2,4 @@ "class" : { }, "instance" : { - "asZnUrl" : "SvenVanCaekenberghe 8/18/2011 14:18" } } + "asZnUrl" : "SvenVanCaekenberghe 12/8/2012 21:02" } } diff --git a/repository/Zinc-HTTP.package/MIMEType.extension/instance/asZnMimeType.st b/repository/Zinc-HTTP.package/MIMEType.extension/instance/asZnMimeType.st deleted file mode 100644 index 3f6ed15c..00000000 --- a/repository/Zinc-HTTP.package/MIMEType.extension/instance/asZnMimeType.st +++ /dev/null @@ -1,3 +0,0 @@ -*zinc-http -asZnMimeType - ^ ZnMimeType main: self main sub: self diff --git a/repository/Zinc-HTTP.package/String.extension/instance/asZnMimeType.st b/repository/Zinc-HTTP.package/String.extension/instance/asZnMimeType.st deleted file mode 100644 index a4c415d0..00000000 --- a/repository/Zinc-HTTP.package/String.extension/instance/asZnMimeType.st +++ /dev/null @@ -1,3 +0,0 @@ -*zinc-http -asZnMimeType - ^ ZnMimeType fromString: self \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/String.extension/instance/asZnUrl.st b/repository/Zinc-HTTP.package/String.extension/instance/asZnUrl.st deleted file mode 100644 index ea391254..00000000 --- a/repository/Zinc-HTTP.package/String.extension/instance/asZnUrl.st +++ /dev/null @@ -1,3 +0,0 @@ -*zinc-http -asZnUrl - ^ ZnUrl fromString: self \ 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 7d74f68d..82b21a8e 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/addAll..st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/addAll..st @@ -1,5 +1,6 @@ accessing addAll: keyedCollection - keyedCollection keysAndValuesDo: [ :key :value | - self at: key put: value ]. + "Note that we use #addAllMulti:" + + self fields addAllMulti: keyedCollection. ^ keyedCollection \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/at.ifAbsent..st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/at.ifAbsent..st index 129e3759..52f4f0be 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/at.ifAbsent..st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/at.ifAbsent..st @@ -1,4 +1,3 @@ accessing at: key ifAbsent: block - self invalidateRepresentation. ^ self fields at: key ifAbsent: block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/includesField..st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/includesField..st new file mode 100644 index 00000000..4fdc7bd8 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/includesField..st @@ -0,0 +1,3 @@ +testing +includesField: field + ^ self fields includesKey: field \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/readFrom..st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/readFrom..st index 9dec9ee4..57719a8c 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/readFrom..st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/readFrom..st @@ -4,7 +4,7 @@ readFrom: stream | readStream | representation := nil. - self contentLength isNil - ifTrue: [ readStream := stream ] - ifFalse: [ (readStream := ZnLimitedReadStream on: stream limit: self contentLength) ascii ]. - fields := ZnUtils parseQueryFrom: readStream \ No newline at end of file + contentLength isNil + ifTrue: [ readStream := ZnCharacterReadStream on: stream encoding: 'ascii' ] + ifFalse: [ (readStream := ZnLimitedReadStream on: stream limit: contentLength) ascii ]. + fields := ZnResourceMetaUtils parseQueryFrom: readStream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/writeRepresentationOn..st b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/writeRepresentationOn..st index 3d0a6ae1..5224d894 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/writeRepresentationOn..st +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/instance/writeRepresentationOn..st @@ -2,11 +2,11 @@ writing writeRepresentationOn: stream self contentType charSet ifNotNil: [:charSet| - ZnUtils + ZnResourceMetaUtils writeQueryFields: self fields withTextEncoding: charSet on: stream] ifNil: [ - ZnUtils + ZnResourceMetaUtils writeQueryFields: self fields 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 7d1f1aa5..00f326e2 100644 --- a/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnApplicationFormUrlEncodedEntity.class/methodProperties.json @@ -4,20 +4,21 @@ "withAll:" : "SvenVanCaekenberghe 9/13/2010 22:23" }, "instance" : { "add:" : "SvenVanCaekenberghe 8/16/2011 23:26", - "addAll:" : "SvenVanCaekenberghe 9/13/2010 22:23", + "addAll:" : "SvenVanCaekenberghe 1/7/2013 12:21", "at:" : "SvenVanCaekenberghe 9/11/2010 21:07", "at:add:" : "SvenVanCaekenberghe 1/12/2011 11:23", - "at:ifAbsent:" : "SvenVanCaekenberghe 9/12/2010 10:23", + "at:ifAbsent:" : "SvenVanCaekenberghe 1/25/2013 14:11", "at:put:" : "SvenVanCaekenberghe 9/12/2010 10:23", "computeRepresentation" : "SvenVanCaekenberghe 9/12/2010 10:19", "contentLength" : "SvenVanCaekenberghe 9/12/2010 10:22", "contents" : "SvenVanCaekenberghe 9/17/2010 16:19", "fields" : "SvenVanCaekenberghe 9/11/2010 21:00", "fieldsDo:" : "SvenVanCaekenberghe 1/31/2011 12:16", + "includesField:" : "SvenVanCaekenberghe 1/25/2013 14:07", "initialize" : "SvenVanCaekenberghe 1/31/2011 12:15", "invalidateRepresentation" : "SvenVanCaekenberghe 9/12/2010 10:17", "isEmpty" : "SvenVanCaekenberghe 12/4/2010 12:41", "printContentsOn:" : "SvenVanCaekenberghe 8/18/2011 14:34", - "readFrom:" : "SvenVanCaekenberghe 8/18/2011 14:44", + "readFrom:" : "SvenVanCaekenberghe 1/25/2013 14:32", "writeOn:" : "SvenVanCaekenberghe 9/12/2010 10:22", - "writeRepresentationOn:" : "NorbertHartl 12/6/2011 17:40" } } + "writeRepresentationOn:" : "SvenVanCaekenberghe 12/8/2012 20:58" } } diff --git a/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/instance/print..st b/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/instance/print..st new file mode 100644 index 00000000..8463372a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/instance/print..st @@ -0,0 +1,3 @@ +accessing +print: object + object printOn: self \ 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 640b4a09..67d50f50 100644 --- a/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnBivalentWriteStream.class/methodProperties.json @@ -9,5 +9,6 @@ "nextPut:" : "SvenVanCaekenberghe 12/3/2010 20:54", "nextPutAll:" : "SvenVanCaekenberghe 12/3/2010 20:54", "on:" : "SvenVanCaekenberghe 10/4/2010 20:07", + "print:" : "SvenVanCaekenberghe 11/30/2012 22:20", "printOn:" : "SvenVanCaekenberghe 10/4/2010 20:08", "space" : "SvenVanCaekenberghe 10/4/2010 20:12" } } diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/README.md b/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/README.md deleted file mode 100644 index f05fde91..00000000 --- a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/README.md +++ /dev/null @@ -1,7 +0,0 @@ -I am ZnBufferedWriteStream. -I wrap a write stream and add buffering. - -Make sure to always send me #flush or #close when you're done, -otherwise the last buffer might not yet have been written. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/class/on.do..st b/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/class/on.do..st deleted file mode 100644 index 2baeb6f2..00000000 --- a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/class/on.do..st +++ /dev/null @@ -1,9 +0,0 @@ -convenience -on: writeStream do: block - "Execute block with as argument a ZnBufferedWriteStream on writeStream, - making sure #flush is called at the end." - - | bufferedWriteStream | - bufferedWriteStream := self on: writeStream. - block value: bufferedWriteStream. - bufferedWriteStream flush \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/defaultBufferSize.st b/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/defaultBufferSize.st deleted file mode 100644 index 50272e21..00000000 --- a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/defaultBufferSize.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -defaultBufferSize - ^ 4096 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/nextPutAll..st b/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/nextPutAll..st deleted file mode 100644 index 4a07c5f6..00000000 --- a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/instance/nextPutAll..st +++ /dev/null @@ -1,12 +0,0 @@ -accessing -nextPutAll: collection - self flushBufferIfFull. - collection size <= self bufferFreeSize - ifTrue: [ - self buffer replaceFrom: position + 1 to: position + collection size with: collection. - position := position + collection size ] - ifFalse: [ - self flushBuffer. - collection size > (self bufferSize / 2) - ifTrue: [ stream nextPutAll: collection ] - ifFalse: [ self nextPutAll: collection ] ] diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/methodProperties.json deleted file mode 100644 index a90561fa..00000000 --- a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/methodProperties.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "class" : { - "on:" : "SvenVanCaekenberghe 12/7/2010 21:20", - "on:do:" : "SvenVanCaekenberghe 12/9/2010 10:19" }, - "instance" : { - "buffer" : "SvenVanCaekenberghe 12/8/2010 10:15", - "bufferFreeSize" : "SvenVanCaekenberghe 12/7/2010 23:42", - "bufferSize" : "SvenVanCaekenberghe 12/8/2010 10:08", - "close" : "SvenVanCaekenberghe 12/7/2010 21:22", - "defaultBufferSize" : "SvenVanCaekenberghe 12/7/2010 21:24", - "flush" : "SvenVanCaekenberghe 12/7/2010 21:23", - "flushBuffer" : "SvenVanCaekenberghe 12/7/2010 23:48", - "flushBufferIfFull" : "SvenVanCaekenberghe 12/7/2010 23:39", - "nextPut:" : "SvenVanCaekenberghe 12/8/2010 10:16", - "nextPutAll:" : "SvenVanCaekenberghe 1/4/2011 20:44", - "on:" : "SvenVanCaekenberghe 12/7/2010 21:30", - "printOn:" : "SvenVanCaekenberghe 12/7/2010 21:19", - "sizeBuffer:" : "SvenVanCaekenberghe 12/7/2010 21:28", - "space" : "SvenVanCaekenberghe 12/7/2010 21:20" } } diff --git a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/properties.json b/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/properties.json deleted file mode 100644 index 076b36ff..00000000 --- a/repository/Zinc-HTTP.package/ZnBufferedWriteStream.class/properties.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "category" : "Zinc-HTTP-Streaming", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 12/8/2010 10:10", - "instvars" : [ - "stream", - "buffer", - "position" ], - "name" : "ZnBufferedWriteStream", - "pools" : [ - ], - "super" : "Stream", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/readFrom..st b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/readFrom..st index 8b20b83c..25d5e666 100644 --- a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/readFrom..st +++ b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/readFrom..st @@ -8,5 +8,9 @@ readFrom: stream self contentLength > ZnConstants maximumEntitySize ifTrue: [ ZnEntityTooLarge signal ]. byteArray := ByteArray ofSize: self contentLength. - stream next: self contentLength into: byteArray. + self contentLength > ZnUtils streamingBufferSize + ifTrue: [ + ZnUtils streamFrom: stream to: byteArray writeStream size: self contentLength ] + ifFalse: [ + stream next: self contentLength into: byteArray ]. self bytes: byteArray ] \ 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 3494444a..6fefb375 100644 --- a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/instance/writeOn..st @@ -1,3 +1,7 @@ writing writeOn: stream - stream nextPutAll: self bytes \ No newline at end of file + 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 diff --git a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/methodProperties.json index 51a648ca..d7ce978a 100644 --- a/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnByteArrayEntity.class/methodProperties.json @@ -8,6 +8,6 @@ "contents" : "SvenVanCaekenberghe 9/13/2010 22:05", "isEmpty" : "SvenVanCaekenberghe 5/1/2011 17:53", "printContentsOn:" : "SvenVanCaekenberghe 12/14/2010 11:20", - "readFrom:" : "SvenVanCaekenberghe 1/31/2012 13:32", + "readFrom:" : "SvenVanCaekenberghe 9/17/2012 15:00", "readStream" : "SvenVanCaekenberghe 9/7/2010 19:27", - "writeOn:" : "SvenVanCaekenberghe 9/7/2010 15:12" } } + "writeOn:" : "SvenVanCaekenberghe 9/17/2012 14:58" } } diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/README.md b/repository/Zinc-HTTP.package/ZnByteEncoder.class/README.md deleted file mode 100644 index a99e8496..00000000 --- a/repository/Zinc-HTTP.package/ZnByteEncoder.class/README.md +++ /dev/null @@ -1,7 +0,0 @@ -I am ZnByteEncoder, a concrete subclass of ZnCharacterEncoder. -I handle single byte encodings where byte values 0 to 127 map to ASCII -and 128 to 255 are a permutation to Unicode characters. - -I am reusing the specifications from the subclasses of ByteTextEncoder. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/initialize.st b/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/initialize.st deleted file mode 100644 index 05a81f0a..00000000 --- a/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/initialize.st +++ /dev/null @@ -1,3 +0,0 @@ -class initialization -initialize - self initializeByteTextConverters \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/initializeByteTextConverters.st b/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/initializeByteTextConverters.st deleted file mode 100644 index 28eceb72..00000000 --- a/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/initializeByteTextConverters.st +++ /dev/null @@ -1,11 +0,0 @@ -private -initializeByteTextConverters - (ByteTextConverters := Dictionary new) - at: 'cp-1250' put: CP1250TextConverter; - at: 'cp-1253' put: CP1253TextConverter; - at: 'iso-8859-2' put: ISO88592TextConverter; - at: 'latin-2' put: ISO88592TextConverter; - at: 'latin2' put: ISO88592TextConverter; - at: 'iso-8859-7' put: ISO88597TextConverter; - at: 'iso-8859-15' put: ISO885915TextConverter - \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/initializeEncoder.using..st b/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/initializeEncoder.using..st deleted file mode 100644 index c0ae23f4..00000000 --- a/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/initializeEncoder.using..st +++ /dev/null @@ -1,6 +0,0 @@ -private -initializeEncoder: encoder using: byteTextConverterClass - "We are reusing the tables specified, computed and cached in subclasses of ByteTextConverter" - - encoder byteToUnicode: byteTextConverterClass byteToUnicodeTable. - encoder unicodeToByte: byteTextConverterClass unicodeToByteTable \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/newForEncoding..st b/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/newForEncoding..st deleted file mode 100644 index b2c7b5a7..00000000 --- a/repository/Zinc-HTTP.package/ZnByteEncoder.class/class/newForEncoding..st +++ /dev/null @@ -1,10 +0,0 @@ -instance creation -newForEncoding: string - "Return a new character encoder object for an encoding described by string. - Search for a subclass that handles it and delegate" - - | encoder byteTextConverterClass | - encoder := self new. - byteTextConverterClass := ByteTextConverters at: string. - self initializeEncoder: encoder using: byteTextConverterClass. - ^ encoder \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/nextFromStream..st b/repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/nextFromStream..st deleted file mode 100644 index 1dddf137..00000000 --- a/repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/nextFromStream..st +++ /dev/null @@ -1,9 +0,0 @@ -converting -nextFromStream: stream - | byteValue | - ^ (byteValue := stream next) < 128 - ifTrue: [ Character codePoint: byteValue ] - ifFalse: [ | ch | - "In the standard Squeak table some strange leading char was added" - ch := byteToUnicode at: byteValue - 127. - ch asUnicodeChar ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/nextPut.toStream..st b/repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/nextPut.toStream..st deleted file mode 100644 index d8ec7a39..00000000 --- a/repository/Zinc-HTTP.package/ZnByteEncoder.class/instance/nextPut.toStream..st +++ /dev/null @@ -1,9 +0,0 @@ -converting -nextPut: character toStream: stream - | code | - (code := character charCode) < 128 - ifTrue: [ stream nextPut: code ] - ifFalse: [ | ch | - "In the standard Squeak table the byte values were converted to characters" - ch := unicodeToByte at: code ifAbsent: [ self error: 'Character code outside encoder range' ]. - stream nextPut: ch charCode ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnByteEncoder.class/methodProperties.json deleted file mode 100644 index 53528716..00000000 --- a/repository/Zinc-HTTP.package/ZnByteEncoder.class/methodProperties.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "class" : { - "handlesEncoding:" : "SvenVanCaekenberghe 1/25/2011 13:02", - "initialize" : "SvenVanCaekenberghe 1/25/2011 12:26", - "initializeByteTextConverters" : "SvenVanCaekenberghe 5/3/2012 11:34", - "initializeEncoder:using:" : "SvenVanCaekenberghe 1/25/2011 12:47", - "newForEncoding:" : "SvenVanCaekenberghe 1/25/2011 12:44" }, - "instance" : { - "byteToUnicode:" : "SvenVanCaekenberghe 1/25/2011 12:31", - "encodedByteCountFor:" : "SvenVanCaekenberghe 1/25/2011 12:19", - "nextFromStream:" : "SvenVanCaekenberghe 1/25/2011 13:22", - "nextPut:toStream:" : "SvenVanCaekenberghe 1/25/2011 13:13", - "unicodeToByte:" : "SvenVanCaekenberghe 1/25/2011 12:31" } } diff --git a/repository/Zinc-HTTP.package/ZnByteEncoder.class/properties.json b/repository/Zinc-HTTP.package/ZnByteEncoder.class/properties.json deleted file mode 100644 index 45bdfcc3..00000000 --- a/repository/Zinc-HTTP.package/ZnByteEncoder.class/properties.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "category" : "Zinc-HTTP-Streaming", - "classinstvars" : [ - ], - "classvars" : [ - "ByteTextConverters" ], - "commentStamp" : "SvenVanCaekenberghe 1/25/2011 11:02", - "instvars" : [ - "byteToUnicode", - "unicodeToByte" ], - "name" : "ZnByteEncoder", - "pools" : [ - ], - "super" : "ZnCharacterEncoder", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/README.md b/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/README.md deleted file mode 100644 index 72b2bac2..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/README.md +++ /dev/null @@ -1,10 +0,0 @@ -I am ZnCharacterEncoder, I encode and decode Character objects to and from a binary stream. -I am an abstract class with following protocol: - -#nextFromStream: -#nextPut:toStream: -#encodedByteCountFor: - -The first two are compatible with TextConverter and subclasses. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/encodeString..st b/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/encodeString..st deleted file mode 100644 index 6522bcb1..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/encodeString..st +++ /dev/null @@ -1,5 +0,0 @@ -convenience -encodeString: string - ^ ByteArray streamContents: [ :stream | - string do: [ :each | - self nextPut: each toStream: stream ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/encodedByteCountForString..st b/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/encodedByteCountForString..st deleted file mode 100644 index 9f9be0b7..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/instance/encodedByteCountForString..st +++ /dev/null @@ -1,6 +0,0 @@ -convenience -encodedByteCountForString: string - ^ string - inject: 0 - into: [ :sum :each | - sum + (self encodedByteCountFor: each) ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/methodProperties.json deleted file mode 100644 index 8c9e169e..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/methodProperties.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "class" : { - "handlesEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:07", - "newForEncoding:" : "SvenVanCaekenberghe 1/25/2011 13:27" }, - "instance" : { - "=" : "SvenVanCaekenberghe 12/14/2010 11:56", - "decodeBytes:" : "SvenVanCaekenberghe 5/2/2012 16:12", - "encodeString:" : "SvenVanCaekenberghe 5/2/2012 16:10", - "encodedByteCountFor:" : "SvenVanCaekenberghe 11/29/2010 21:17", - "encodedByteCountForString:" : "SvenVanCaekenberghe 5/2/2012 16:36", - "hash" : "SvenVanCaekenberghe 4/20/2011 12:19", - "nextFromStream:" : "SvenVanCaekenberghe 11/29/2010 21:16", - "nextPut:toStream:" : "SvenVanCaekenberghe 11/29/2010 21:16" } } diff --git a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/properties.json b/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/properties.json deleted file mode 100644 index 384ff166..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterEncoder.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Streaming", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 12/6/2010 12:52", - "instvars" : [ - ], - "name" : "ZnCharacterEncoder", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/README.md b/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/README.md deleted file mode 100644 index 3f7ba432..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/README.md +++ /dev/null @@ -1,6 +0,0 @@ -I am ZnCharacterReadStream. -I wrap another binary ReadStream and use a ZnCharacerEncoder so allow Characters to be read. - -I am not positionable, but I do allow a one character peek. - -Part of Zinc HTTP Components. diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/upToEnd.st b/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/upToEnd.st deleted file mode 100644 index 21b704b1..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/instance/upToEnd.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -upToEnd - ^ ZnUtils readUpToEnd: self limit: nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/methodProperties.json deleted file mode 100644 index c170e7a6..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/methodProperties.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "class" : { - "defaultEncoder" : "SvenVanCaekenberghe 5/3/2012 14:43", - "on:" : "SvenVanCaekenberghe 5/3/2012 14:40", - "on:encoding:" : "SvenVanCaekenberghe 5/3/2012 15:13" }, - "instance" : { - "atEnd" : "SvenVanCaekenberghe 5/3/2012 21:29", - "close" : "SvenVanCaekenberghe 5/3/2012 14:39", - "collectionSpecies" : "SvenVanCaekenberghe 5/3/2012 15:09", - "contents" : "SvenVanCaekenberghe 5/3/2012 15:12", - "encoder" : "SvenVanCaekenberghe 5/3/2012 14:42", - "encoder:" : "SvenVanCaekenberghe 5/3/2012 14:41", - "encoding:" : "SvenVanCaekenberghe 5/3/2012 14:40", - "isBinary" : "SvenVanCaekenberghe 5/3/2012 15:07", - "next" : "SvenVanCaekenberghe 5/3/2012 15:46", - "next:" : "SvenVanCaekenberghe 5/3/2012 15:18", - "next:into:" : "SvenVanCaekenberghe 5/3/2012 15:18", - "next:into:startingAt:" : "SvenVanCaekenberghe 5/3/2012 15:19", - "on:" : "SvenVanCaekenberghe 5/3/2012 14:40", - "peek" : "SvenVanCaekenberghe 5/3/2012 15:35", - "readInto:startingAt:count:" : "SvenVanCaekenberghe 5/3/2012 15:57", - "skip:" : "SvenVanCaekenberghe 5/3/2012 15:11", - "upTo:" : "SvenVanCaekenberghe 5/3/2012 15:17", - "upToEnd" : "SvenVanCaekenberghe 5/3/2012 15:11", - "wrappedStream" : "SvenVanCaekenberghe 5/3/2012 14:41" } } diff --git a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/properties.json b/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/properties.json deleted file mode 100644 index 62c67eb6..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterReadStream.class/properties.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "category" : "Zinc-HTTP-Streaming", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 5/3/2012 21:31", - "instvars" : [ - "stream", - "encoder", - "peekedCharacter" ], - "name" : "ZnCharacterReadStream", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/README.md b/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/README.md deleted file mode 100644 index 1272ec69..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/README.md +++ /dev/null @@ -1,4 +0,0 @@ -I am ZnCharacterWriteStream. -I wrap another binary WriteStream and use a ZnCharacerEncoder so allow Characters to be written. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/encoding..st b/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/encoding..st deleted file mode 100644 index 1dba1be9..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/instance/encoding..st +++ /dev/null @@ -1,3 +0,0 @@ -initialize-release -encoding: encoding - encoder := ZnCharacterEncoder forEncoding: encoding \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/properties.json b/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/properties.json deleted file mode 100644 index 8e90aed8..00000000 --- a/repository/Zinc-HTTP.package/ZnCharacterWriteStream.class/properties.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "category" : "Zinc-HTTP-Streaming", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 5/3/2012 15:50", - "instvars" : [ - "stream", - "encoder" ], - "name" : "ZnCharacterWriteStream", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/beOneShot.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/beOneShot.st index 81bcd257..743319c6 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/beOneShot.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/beOneShot.st @@ -2,6 +2,9 @@ options beOneShot "Switch me to use connections only for a single request/response cycle. By default, I will keep HTTP connections open according to the HTTP 1.1 spec. - When oneShot is true, I will add a Connection: close header to requests." + When oneShot is true, I will add a Connection: close header to requests and close after one cycle. + I cannot be one shot when #streaming is true because the stream would be closed too soon." + 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 diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/close.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/close.st index 9c09d5f9..426d59b1 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/close.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/close.st @@ -4,6 +4,5 @@ close connection ifNotNil: [ connection close. - connection := nil. - state := #closed ]. + connection := nil ]. lastUsed := nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/exceptionSetForIfFail.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/exceptionSetForIfFail.st deleted file mode 100644 index aa52b0f5..00000000 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/exceptionSetForIfFail.st +++ /dev/null @@ -1,7 +0,0 @@ -private -exceptionSetForIfFail - "Return an explicit exception set for which the ifFail block, if any, will be invoked. - This could later be cached, instance or class side, if necessary." - - ^ NetworkError, ZnParseError, ZnHttpUnsuccessful, ZnUnexpectedContentType - \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/executeWithRetriesRemaining..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/executeWithRetriesRemaining..st index 8da21b27..7e75851f 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/executeWithRetriesRemaining..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/executeWithRetriesRemaining..st @@ -1,12 +1,12 @@ private protocol executeWithRetriesRemaining: retryCount ^ [ self executeWithRedirectsRemaining: self maxNumberOfRedirects ] - on: Exception + on: NetworkError, ZnParseError, ZnCharacterEncodingError, ZnUnknownScheme, ZnPortNotANumber do: [ :exception | retryCount > 0 ifTrue: [ self - handleRetry; + handleRetry: exception; executeWithRetriesRemaining: retryCount - 1 ] ifFalse: [ exception pass ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/executeWithTimeout.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/executeWithTimeout.st index 48f1f37b..f75f6b1d 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/executeWithTimeout.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/executeWithTimeout.st @@ -1,10 +1,6 @@ private protocol executeWithTimeout ^ self withTimeoutDo: [ - self ifFailBlock - ifNil: [ - self executeWithRetriesRemaining: self numberOfRetries ] - ifNotNil: [ - [ self executeWithRetriesRemaining: self numberOfRetries ] - on: self exceptionSetForIfFail - do: self ifFailBlock ] ] \ No newline at end of file + [ self executeWithRetriesRemaining: self numberOfRetries ] + on: Error + do: self ifFailBlock ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/getConnectionAndExecute.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/getConnectionAndExecute.st index df09dbc2..4eb5e74c 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/getConnectionAndExecute.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/getConnectionAndExecute.st @@ -4,7 +4,7 @@ getConnectionAndExecute ifTrue: [ [ ^ self executeRequestResponse; cleanupConnection ] on: Exception - do: [ self noteIgnoringExceptionOnReusedConnection; close ] ]. + do: [ :exception | self noteIgnoringExceptionOnReusedConnection: exception; close ] ]. self signalProgress ifTrue: [ HTTPProgress signal: 'Connecting to ', request url authority ]. connection := ZnNetworkingUtils socketStreamToUrl: request url. diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/handleResponse.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/handleResponse.st index 708266df..a0374488 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/handleResponse.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/handleResponse.st @@ -11,5 +11,4 @@ handleResponse expected: request accept asZnMimeType actual: response contentType) signal ]. lastUsed := TimeStamp now. - state := #done. ^ self contents \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/handleRetry..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/handleRetry..st new file mode 100644 index 00000000..935f1c2a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/handleRetry..st @@ -0,0 +1,5 @@ +private protocol +handleRetry: exception + self noteRetrying: exception. + self close. + (Delay forSeconds: self retryDelay) wait. diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/handleRetry.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/handleRetry.st deleted file mode 100644 index 83437fce..00000000 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/handleRetry.st +++ /dev/null @@ -1,5 +0,0 @@ -private protocol -handleRetry - self noteRetrying. - self close. - (Delay forSeconds: self retryDelay) wait. diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAddAll..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAddAll..st index 76659ee4..8808248c 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAddAll..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAddAll..st @@ -1,5 +1,4 @@ accessing request headerAddAll: keyedCollection - self resetRequestIfNeeded. request headers addAll: keyedCollection \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.add..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.add..st index 55f24a0a..2afd98b9 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.add..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.add..st @@ -3,6 +3,5 @@ headerAt: key add: value "Add value to key in the HTTP header of the current request. This is for multi-values headers." - self resetRequestIfNeeded. request headers at: key add: value \ 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 8f76c814..a7004dc6 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.put..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/headerAt.put..st @@ -2,6 +2,5 @@ accessing request headerAt: key put: value "Set key equals value in the HTTP header of the current request" - self resetRequestIfNeeded. request headers at: key put: value \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/ifFailBlock.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/ifFailBlock.st index 516e5644..71c2d538 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/ifFailBlock.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/ifFailBlock.st @@ -1,6 +1,7 @@ options ifFailBlock "Return the block that I should execute if the request fails. - Defaults to nil. Accepts an exception as argument." + Defaults to #pass-ing the exception up. + Accepts an exception as argument." - ^ self optionAt: #ifFailBlock ifAbsent: [ nil ] \ No newline at end of file + ^ self optionAt: #ifFailBlock ifAbsent: [ [ :exception | exception pass ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/isCreated.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/isCreated.st new file mode 100644 index 00000000..a72eac2d --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/isCreated.st @@ -0,0 +1,7 @@ +testing +isCreated + "Return true it the last executed HTTP request returned an HTTP created response code." + + ^ response + ifNil: [ self error: 'Request not yet executed' ] + ifNotNil: [ response isCreated ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/isNotFound.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/isNotFound.st new file mode 100644 index 00000000..7c07de01 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/isNotFound.st @@ -0,0 +1,7 @@ +testing +isNotFound + "Return true it the last executed HTTP request returned an HTTP not found response code." + + ^ response + ifNil: [ self error: 'Request not yet executed' ] + ifNotNil: [ response isNotFound ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/isNotModified.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/isNotModified.st new file mode 100644 index 00000000..875a1aab --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/isNotModified.st @@ -0,0 +1,7 @@ +testing +isNotModified + "Return true it the last executed HTTP request returned an HTTP not modified response code." + + ^ response + ifNil: [ self error: 'Request not yet executed' ] + ifNotNil: [ response isNotModified ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/method..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/method..st index 76755629..30c783b7 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/method..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/method..st @@ -2,6 +2,7 @@ accessing request method: httpMethod "Set the HTTP method of the current request to httpMethod. An uppercase symbol such as #GET is expected." - - self resetRequestIfNeeded. + + (#(#GET #HEAD) includes: httpMethod) + ifTrue: [ self resetEntity ]. request method: httpMethod \ 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 302f3792..3d7e03b7 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/multiPartFormDataEntity.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/multiPartFormDataEntity.st @@ -4,7 +4,6 @@ multiPartFormDataEntity Return the existing entity if there is one. Fail if another type was already set." - self resetRequestIfNeeded. request hasEntity ifTrue: [ request entity contentType = ZnMimeType multiPartFormData diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/noteIgnoringExceptionOnReusedConnection..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/noteIgnoringExceptionOnReusedConnection..st new file mode 100644 index 00000000..2a9e728e --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/noteIgnoringExceptionOnReusedConnection..st @@ -0,0 +1,3 @@ +notifications +noteIgnoringExceptionOnReusedConnection: exception + self log debug: [ exception printString, ' ignored on reused connection' ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/noteIgnoringExceptionOnReusedConnection.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/noteIgnoringExceptionOnReusedConnection.st deleted file mode 100644 index 9eecfb02..00000000 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/noteIgnoringExceptionOnReusedConnection.st +++ /dev/null @@ -1,3 +0,0 @@ -notifications -noteIgnoringExceptionOnReusedConnection - self log debug: 'Ignoring exception on reused connection' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRetrying..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRetrying..st new file mode 100644 index 00000000..aff76b5b --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRetrying..st @@ -0,0 +1,3 @@ +notifications +noteRetrying: exception + self log debug: [ exception printString, ' retrying' ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRetrying.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRetrying.st deleted file mode 100644 index df8c6ddd..00000000 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/noteRetrying.st +++ /dev/null @@ -1,3 +0,0 @@ -notifications -noteRetrying - self log debug: 'Retrying' \ 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 10eaa4d2..4501fa83 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRedirect.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRedirect.st @@ -10,5 +10,4 @@ prepareRedirect request hasEntity ifTrue: [ request resetEntity: nil ]. self url: self redirectUrl. - state := #inProgress. 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 index 7d360836..86616617 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequest.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/prepareRequest.st @@ -1,6 +1,5 @@ private protocol prepareRequest - state := #inProgress. self isOneShot ifTrue: [ request setConnectionClose ]. request hasEntity 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 1990cf34..abac3b1d 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/queryAt.put..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/queryAt.put..st @@ -2,7 +2,6 @@ accessing request queryAt: key put: value "Add key equals value as an HTTP query parameter to the current request." - self resetRequestIfNeeded. 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 diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/redirectUrl.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/redirectUrl.st index f806acbd..a3dea7e7 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/redirectUrl.st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/redirectUrl.st @@ -1,14 +1,9 @@ private protocol redirectUrl "We support relative locations although they are not the standard (http://en.wikipedia.org/wiki/HTTP_location)" - + | redirectUrl | redirectUrl := response location asZnUrl. - redirectUrl isAbsolute - ifFalse: [ | baseUrl | - baseUrl := request url. - redirectUrl - scheme: baseUrl scheme; - host: baseUrl host; - port: baseUrl port ]. - ^ redirectUrl \ No newline at end of file + ^ redirectUrl isAbsolute + ifTrue: [ redirectUrl ] + ifFalse: [ redirectUrl inContextOf: request url ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/resetEntity.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/resetEntity.st new file mode 100644 index 00000000..2feaf7a7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/resetEntity.st @@ -0,0 +1,9 @@ +accessing request +resetEntity + "Make sure that the current request does not hold an entity from a previous request. + This is sometimes necessary after a POST or PUT. This method will be called automatically + by #method: for GET or HEAD requests." + + (request notNil and: [ request hasEntity ]) + ifTrue: [ request resetEntity: nil ] + \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/resetRequestIfNeeded.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/resetRequestIfNeeded.st deleted file mode 100644 index 625b6af6..00000000 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/resetRequestIfNeeded.st +++ /dev/null @@ -1,8 +0,0 @@ -private -resetRequestIfNeeded - request ifNil: [ ^ self ]. - state ifNotNil: [ - request - resetEntity: nil; - headers: ZnHeaders defaultRequestHeaders. - state := nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/setAcceptEncodingGzip.st b/repository/Zinc-HTTP.package/ZnClient.class/instance/setAcceptEncodingGzip.st new file mode 100644 index 00000000..75e61acf --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/setAcceptEncodingGzip.st @@ -0,0 +1,6 @@ +accessing request +setAcceptEncodingGzip + "Give the server the hint that we accept gzip content encoding. + When the server complies, important bandwidth reductions are possible." + + self request setAcceptEncodingGzip \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/setBasicAuthenticationUsername.password..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/setBasicAuthenticationUsername.password..st index a7fc08b9..f9cfdf4a 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/setBasicAuthenticationUsername.password..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/setBasicAuthenticationUsername.password..st @@ -2,5 +2,4 @@ accessing request setBasicAuthenticationUsername: username password: password "Set the username/password for basic authenticationfor the current request." - self resetRequestIfNeeded. request setBasicAuthenticationUsername: username password: password diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/setIfModifiedSince..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/setIfModifiedSince..st index 67268a9d..f78081cc 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/setIfModifiedSince..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/setIfModifiedSince..st @@ -1,3 +1,7 @@ accessing request setIfModifiedSince: reference + "Tell the server that we are only interested in the currently requested URI + if it was modified since reference, a DateAndTime. + If the URI was not modified since reference, the response will be #isNotModified." + self request setIfModifiedSince: reference \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/streaming..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/streaming..st index dfe2d76a..254449bd 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/streaming..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/streaming..st @@ -1,6 +1,9 @@ options streaming: boolean "Set whether I will return streaming response objects (see ZnStreamingEntity) to boolean. - If true, my users are responsible for actually reading the incoming response entity data stream." + If true, my users are responsible for actually reading the incoming response entity data stream. + I cannot do streaming when #isOneShot is true because the stream would be closed too soon." + (boolean and: [ self isOneShot ]) + ifTrue: [ self error: 'I cannot do streaming when #isOneShot is true.' ]. self optionAt: #streaming put: boolean \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClient.class/instance/url..st b/repository/Zinc-HTTP.package/ZnClient.class/instance/url..st index df19e441..95ffdb4e 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/instance/url..st +++ b/repository/Zinc-HTTP.package/ZnClient.class/instance/url..st @@ -12,5 +12,6 @@ url: urlObject ifNotNil: [ url := url inContextOf: request url ]. url := url asZnUrlWithDefaults. self validateConnectionForHost: url host port: url port. - self resetRequestIfNeeded. - request url: url \ No newline at end of file + request url: url. + url hasUsername & url hasPassword + ifTrue: [ self setBasicAuthenticationUsername: url username password: url password ] \ 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 6874078f..17a2fc4a 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnClient.class/methodProperties.json @@ -7,10 +7,10 @@ "addPath:" : "SvenVanCaekenberghe 11/8/2011 17:03", "addPathSegment:" : "SvenVanCaekenberghe 11/8/2011 17:03", "applicationFormUrlEncodedEntity" : "SvenVanCaekenberghe 11/8/2011 17:30", - "beOneShot" : "SvenVanCaekenberghe 11/8/2011 19:34", + "beOneShot" : "SvenVanCaekenberghe 9/27/2012 14:29", "canReuseConnection" : "SvenVanCaekenberghe 9/17/2011 11:49", "cleanupConnection" : "SvenVanCaekenberghe 8/18/2011 14:10", - "close" : "SvenVanCaekenberghe 2/29/2012 16:40", + "close" : "SvenVanCaekenberghe 12/12/2012 10:22", "connection" : "SvenVanCaekenberghe 7/19/2012 15:43", "connectionReuseTimeout" : "SvenVanCaekenberghe 11/8/2011 19:36", "connectionReuseTimeout:" : "SvenVanCaekenberghe 5/30/2012 21:30", @@ -33,12 +33,11 @@ "enforceHttpSuccess:" : "SvenVanCaekenberghe 11/8/2011 20:28", "entity" : "SvenVanCaekenberghe 11/8/2011 18:58", "entity:" : "SvenVanCaekenberghe 11/8/2011 17:14", - "exceptionSetForIfFail" : "SvenVanCaekenberghe 12/20/2011 14:11", "execute" : "SvenVanCaekenberghe 7/12/2012 21:08", "executeRequestResponse" : "SvenVanCaekenberghe 7/12/2012 21:53", "executeWithRedirectsRemaining:" : "SvenVanCaekenberghe 11/23/2011 17:01", - "executeWithRetriesRemaining:" : "SvenVanCaekenberghe 9/19/2011 10:52", - "executeWithTimeout" : "SvenVanCaekenberghe 12/20/2011 14:07", + "executeWithRetriesRemaining:" : "SvenVanCaekenberghe 12/17/2012 13:12", + "executeWithTimeout" : "SvenVanCaekenberghe 9/17/2012 10:03", "followRedirects" : "SvenVanCaekenberghe 11/23/2011 16:58", "followRedirects:" : "SvenVanCaekenberghe 5/30/2012 21:31", "formAdd:" : "SvenVanCaekenberghe 11/8/2011 17:19", @@ -47,23 +46,26 @@ "formAt:put:" : "SvenVanCaekenberghe 11/8/2011 17:21", "get" : "SvenVanCaekenberghe 11/8/2011 19:13", "get:" : "SvenVanCaekenberghe 11/8/2011 19:04", - "getConnectionAndExecute" : "SvenVanCaekenberghe 10/4/2011 13:33", - "handleResponse" : "SvenVanCaekenberghe 12/20/2011 12:52", - "handleRetry" : "SvenVanCaekenberghe 8/18/2011 11:38", + "getConnectionAndExecute" : "SvenVanCaekenberghe 9/17/2012 09:44", + "handleResponse" : "SvenVanCaekenberghe 12/12/2012 10:22", + "handleRetry:" : "SvenVanCaekenberghe 9/17/2012 09:47", "head" : "SvenVanCaekenberghe 11/8/2011 19:13", "head:" : "SvenVanCaekenberghe 11/8/2011 19:05", - "headerAddAll:" : "SvenVanCaekenberghe 11/8/2011 17:23", - "headerAt:add:" : "SvenVanCaekenberghe 11/8/2011 17:25", - "headerAt:put:" : "SvenVanCaekenberghe 11/8/2011 17:24", + "headerAddAll:" : "SvenVanCaekenberghe 12/12/2012 10:19", + "headerAt:add:" : "SvenVanCaekenberghe 12/12/2012 10:19", + "headerAt:put:" : "SvenVanCaekenberghe 12/12/2012 10:19", "host:" : "SvenVanCaekenberghe 11/8/2011 17:26", "http" : "SvenVanCaekenberghe 11/8/2011 17:27", "https" : "SvenVanCaekenberghe 11/8/2011 17:27", "ifFail:" : "SvenVanCaekenberghe 11/8/2011 20:29", - "ifFailBlock" : "SvenVanCaekenberghe 11/8/2011 20:30", + "ifFailBlock" : "SvenVanCaekenberghe 9/17/2012 10:02", "initialize" : "SvenVanCaekenberghe 7/27/2011 14:58", "interactivePolicy" : "SvenVanCaekenberghe 8/19/2011 16:57", "isConnected" : "SvenVanCaekenberghe 11/8/2011 19:14", "isContentTypeAcceptable" : "SvenVanCaekenberghe 11/8/2011 19:17", + "isCreated" : "SvenVanCaekenberghe 12/12/2012 10:26", + "isNotFound" : "SvenVanCaekenberghe 12/12/2012 10:25", + "isNotModified" : "SvenVanCaekenberghe 9/30/2012 20:59", "isOneShot" : "SvenVanCaekenberghe 11/8/2011 20:30", "isRedirect" : "SvenVanCaekenberghe 11/23/2011 17:17", "isSuccess" : "SvenVanCaekenberghe 11/8/2011 19:17", @@ -74,11 +76,11 @@ "logToTranscript" : "SvenVanCaekenberghe 10/4/2011 12:35", "maxNumberOfRedirects" : "SvenVanCaekenberghe 11/23/2011 17:23", "maxNumberOfRedirects:" : "SvenVanCaekenberghe 11/23/2011 17:23", - "method:" : "SvenVanCaekenberghe 11/8/2011 17:28", - "multiPartFormDataEntity" : "SvenVanCaekenberghe 11/8/2011 17:30", - "noteIgnoringExceptionOnReusedConnection" : "SvenVanCaekenberghe 10/4/2011 12:43", + "method:" : "SvenVanCaekenberghe 12/12/2012 10:19", + "multiPartFormDataEntity" : "SvenVanCaekenberghe 12/12/2012 10:19", + "noteIgnoringExceptionOnReusedConnection:" : "SvenVanCaekenberghe 9/17/2012 09:45", "noteRedirect" : "SvenVanCaekenberghe 10/4/2011 12:43", - "noteRetrying" : "SvenVanCaekenberghe 10/4/2011 12:43", + "noteRetrying:" : "SvenVanCaekenberghe 9/17/2012 09:46", "numberOfRetries" : "SvenVanCaekenberghe 11/8/2011 20:31", "numberOfRetries:" : "SvenVanCaekenberghe 11/8/2011 20:31", "optionAt:ifAbsent:" : "SvenVanCaekenberghe 11/8/2011 16:53", @@ -87,35 +89,36 @@ "port:" : "SvenVanCaekenberghe 11/8/2011 17:32", "post" : "SvenVanCaekenberghe 11/8/2011 19:13", "post:contents:" : "SvenVanCaekenberghe 11/8/2011 19:12", - "prepareRedirect" : "SvenVanCaekenberghe 2/29/2012 16:43", - "prepareRequest" : "SvenVanCaekenberghe 9/23/2011 14:30", + "prepareRedirect" : "SvenVanCaekenberghe 12/12/2012 10:22", + "prepareRequest" : "SvenVanCaekenberghe 12/12/2012 10:22", "put" : "SvenVanCaekenberghe 11/8/2011 19:14", "put:contents:" : "SvenVanCaekenberghe 11/8/2011 19:12", "queryAddAll:" : "SvenVanCaekenberghe 11/8/2011 17:36", - "queryAt:put:" : "SvenVanCaekenberghe 11/8/2011 17:36", + "queryAt:put:" : "SvenVanCaekenberghe 12/12/2012 10:19", "receiveCookies" : "SvenVanCaekenberghe 2/29/2012 19:07", - "redirectUrl" : "SvenVanCaekenberghe 9/19/2011 09:46", + "redirectUrl" : "SvenVanCaekenberghe 1/7/2013 09:57", "request" : "SvenVanCaekenberghe 11/8/2011 17:33", "request:" : "SvenVanCaekenberghe 11/8/2011 17:34", "resetCookies" : "SvenVanCaekenberghe 2/29/2012 17:40", - "resetRequestIfNeeded" : "SvenVanCaekenberghe 9/23/2011 14:53", + "resetEntity" : "SvenVanCaekenberghe 12/12/2012 10:06", "response" : "SvenVanCaekenberghe 11/8/2011 18:58", "retryDelay" : "SvenVanCaekenberghe 11/8/2011 20:33", "retryDelay:" : "SvenVanCaekenberghe 5/30/2012 21:31", "sendCookies" : "SvenVanCaekenberghe 2/29/2012 19:51", "session" : "SvenVanCaekenberghe 11/8/2011 16:54", - "setBasicAuthenticationUsername:password:" : "SvenVanCaekenberghe 11/8/2011 17:35", - "setIfModifiedSince:" : "SvenVanCaekenberghe 5/10/2012 22:39", + "setAcceptEncodingGzip" : "SvenVanCaekenberghe 9/30/2012 20:53", + "setBasicAuthenticationUsername:password:" : "SvenVanCaekenberghe 12/12/2012 10:19", + "setIfModifiedSince:" : "SvenVanCaekenberghe 9/30/2012 20:59", "signalProgress" : "SvenVanCaekenberghe 11/8/2011 20:44", "signalProgress:" : "SvenVanCaekenberghe 11/8/2011 20:45", "stopLogging" : "SvenVanCaekenberghe 10/4/2011 12:35", "streaming" : "SvenVanCaekenberghe 11/8/2011 20:58", - "streaming:" : "SvenVanCaekenberghe 5/30/2012 21:31", + "streaming:" : "SvenVanCaekenberghe 9/27/2012 14:26", "systemPolicy" : "SvenVanCaekenberghe 8/18/2011 20:27", "timeout" : "SvenVanCaekenberghe 12/14/2011 14:03", "timeout:" : "SvenVanCaekenberghe 5/30/2012 21:31", "uploadEntityFrom:" : "SvenVanCaekenberghe 7/2/2012 16:19", - "url:" : "SvenVanCaekenberghe 11/8/2011 17:42", + "url:" : "SvenVanCaekenberghe 1/30/2013 19:16", "username:password:" : "SvenVanCaekenberghe 11/8/2011 17:35", "validateConnectionForHost:port:" : "SvenVanCaekenberghe 8/12/2011 13:23", "withProgressDo:" : "SvenVanCaekenberghe 7/12/2012 21:06", diff --git a/repository/Zinc-HTTP.package/ZnClient.class/properties.json b/repository/Zinc-HTTP.package/ZnClient.class/properties.json index c5128642..d5dc154e 100644 --- a/repository/Zinc-HTTP.package/ZnClient.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnClient.class/properties.json @@ -10,7 +10,6 @@ "response", "connection", "lastUsed", - "state", "options", "session", "log" ], diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/README.md b/repository/Zinc-HTTP.package/ZnClientOld.class/README.md deleted file mode 100644 index b273b923..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/README.md +++ /dev/null @@ -1,5 +0,0 @@ -I am ZnClientOld, previously known as ZnClient. - -I am deprecated, please use ZnEasy. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/delete..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/delete..st deleted file mode 100644 index 805bf6ab..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/delete..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -delete: urlObject - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy delete: urlObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/delete.username.password..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/delete.username.password..st deleted file mode 100644 index ef5ca54e..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/delete.username.password..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -delete: urlObject username: username password: password - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy delete: urlObject username: username password: password \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/get..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/get..st deleted file mode 100644 index d16b7ecc..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/get..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -get: urlObject - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy get: urlObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/get.username.password..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/get.username.password..st deleted file mode 100644 index 1533294c..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/get.username.password..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -get: urlObject username: username password: password - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy get: urlObject username: username password: password \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/getGif..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/getGif..st deleted file mode 100644 index 0ff91060..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/getGif..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -getGif: urlObject - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy getGif: urlObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/getJpeg..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/getJpeg..st deleted file mode 100644 index ab8022c8..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/getJpeg..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -getJpeg: urlObject - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy getJpeg: urlObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/getPng..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/getPng..st deleted file mode 100644 index 615a0466..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/getPng..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -getPng: urlObject - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy getPng: urlObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/head..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/head..st deleted file mode 100644 index 5bddad73..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/head..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -head: urlObject - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy head: urlObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/head.username.password..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/head.username.password..st deleted file mode 100644 index e2b9ddf9..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/head.username.password..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -head: urlObject username: username password: password - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy head: urlObject username: username password: password \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/post.data..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/post.data..st deleted file mode 100644 index 997df43a..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/post.data..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -post: urlObject data: entity - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy post: urlObject data: entity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/post.data.username.password..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/post.data.username.password..st deleted file mode 100644 index 57526acb..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/post.data.username.password..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -post: urlObject data: entity username: username password: password - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy post: urlObject data: entity username: username password: password \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/put.data..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/put.data..st deleted file mode 100644 index a487d400..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/put.data..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -put: urlObject data: entity - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy put: urlObject data: entity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/class/put.data.username.password..st b/repository/Zinc-HTTP.package/ZnClientOld.class/class/put.data.username.password..st deleted file mode 100644 index 8cf6479f..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/class/put.data.username.password..st +++ /dev/null @@ -1,4 +0,0 @@ -operations -put: urlObject data: entity username: username password: password - self deprecated: 'Please use ZnEasy' on: '3 Oct 2011' in: 'Zinc HTTP Components'. - ^ ZnEasy put: urlObject data: entity username: username password: password \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnClientOld.class/methodProperties.json deleted file mode 100644 index 9105cb43..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/methodProperties.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "class" : { - "delete:" : "SvenVanCaekenberghe 3/4/2012 10:20", - "delete:username:password:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "get:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "get:username:password:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "getGif:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "getJpeg:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "getPng:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "head:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "head:username:password:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "post:data:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "post:data:username:password:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "put:data:" : "SvenVanCaekenberghe 3/4/2012 10:21", - "put:data:username:password:" : "SvenVanCaekenberghe 3/4/2012 10:21" }, - "instance" : { - } } diff --git a/repository/Zinc-HTTP.package/ZnClientOld.class/properties.json b/repository/Zinc-HTTP.package/ZnClientOld.class/properties.json deleted file mode 100644 index 8e976db8..00000000 --- a/repository/Zinc-HTTP.package/ZnClientOld.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Deprecated", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 11/8/2011 22:12", - "instvars" : [ - ], - "name" : "ZnClientOld", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnConnectionTimeout.class/properties.json b/repository/Zinc-HTTP.package/ZnConnectionTimeout.class/properties.json index 4ec7dfef..d81c350c 100644 --- a/repository/Zinc-HTTP.package/ZnConnectionTimeout.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnConnectionTimeout.class/properties.json @@ -1,5 +1,5 @@ { - "category" : "Zinc-HTTP-Support", + "category" : "Zinc-HTTP-Variables", "classinstvars" : [ ], "classvars" : [ diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize..st b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize..st new file mode 100644 index 00000000..dd3036e9 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize..st @@ -0,0 +1,5 @@ +resource limits +defaultMaximumEntitySize: integer + "Set the default maximum entity size to accept from a stream to integer bytes." + + ^ DefaultMaximumEntitySize := integer \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize.st b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize.st new file mode 100644 index 00000000..9e195007 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnConstants.class/class/defaultMaximumEntitySize.st @@ -0,0 +1,8 @@ +resource limits +defaultMaximumEntitySize + "Return the default maximum entity size to accept from a stream. + Used by ZnEntity and subclasses. Can be set using #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 diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumEntitySize..st b/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumEntitySize..st index 1e142ab5..5e0a2a23 100644 --- a/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumEntitySize..st +++ b/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumEntitySize..st @@ -2,4 +2,4 @@ resource limits maximumEntitySize: integer "Set the maximum entity size to accept from a stream to integer bytes." - ^ MaximumEntitySize := integer \ No newline at end of file + ^ DefaultMaximumEntitySize := integer \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumEntitySize.st b/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumEntitySize.st index 766f52e5..ca5cfdcf 100644 --- a/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumEntitySize.st +++ b/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumEntitySize.st @@ -2,7 +2,8 @@ resource limits maximumEntitySize "Return the maximum entity size to accept from a stream. Used by ZnEntity and subclasses. Can be set using #maximumEntitySize: - Default value is 16Mb. This affects both client and server code. + This affects both client and server code. This helps to protect us from malicious content." - ^ MaximumEntitySize ifNil: [ MaximumEntitySize := 16 * 1024 * 1024 ] \ No newline at end of file + ^ ZnMaximumEntitySize value + ifNil: [ self defaultMaximumEntitySize ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumNumberOfDictionaryEntries.st b/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumNumberOfDictionaryEntries.st deleted file mode 100644 index e4980696..00000000 --- a/repository/Zinc-HTTP.package/ZnConstants.class/class/maximumNumberOfDictionaryEntries.st +++ /dev/null @@ -1,8 +0,0 @@ -resource limits -maximumNumberOfDictionaryEntries - "Return the maximum number dictionary entries to accept. - Used by ZnMultiValueDictionary and thus for reading headers, - url query and application form url encoded entity fields. - This helps to protect us from malicious content." - - ^ 256 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnConstants.class/methodProperties.json index a758d478..9d4b4fb0 100644 --- a/repository/Zinc-HTTP.package/ZnConstants.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnConstants.class/methodProperties.json @@ -1,6 +1,8 @@ { "class" : { "defaultHTTPVersion" : "SvenVanCaekenberghe 9/6/2010 15:18", + "defaultMaximumEntitySize" : "SvenVanCaekenberghe 9/5/2012 12:34", + "defaultMaximumEntitySize:" : "SvenVanCaekenberghe 9/5/2012 12:35", "defaultServerString" : "SvenVanCaekenberghe 3/31/2011 08:54", "defaultUserAgent" : "SvenVanCaekenberghe 9/14/2010 10:49", "faviconBytes" : "PaulDeBruicker 4/10/2011 11:54", @@ -14,10 +16,9 @@ "initializeHTTPStatusCodes" : "SvenVanCaekenberghe 9/6/2010 16:22", "knownHTTPMethods" : "SvenVanCaekenberghe 12/11/2011 18:07", "knownHTTPVersions" : "SvenVanCaekenberghe 9/6/2010 15:22", - "maximumEntitySize" : "SvenVanCaekenberghe 1/31/2012 13:42", - "maximumEntitySize:" : "SvenVanCaekenberghe 1/31/2012 12:17", + "maximumEntitySize" : "SvenVanCaekenberghe 9/5/2012 12:36", + "maximumEntitySize:" : "SvenVanCaekenberghe 9/5/2012 12:33", "maximumLineLength" : "SvenVanCaekenberghe 1/2/2012 17:45", - "maximumNumberOfDictionaryEntries" : "SvenVanCaekenberghe 1/2/2012 17:54", "remoteAddressHeader" : "SvenVanCaekenberghe 9/9/2010 20:19", "standardHtmlDocType" : "SvenVanCaekenberghe 8/18/2011 14:19", "welcomePageHtml" : "SvenVanCaekenberghe 5/11/2012 14:43" }, diff --git a/repository/Zinc-HTTP.package/ZnConstants.class/properties.json b/repository/Zinc-HTTP.package/ZnConstants.class/properties.json index 5fcfdd00..295b00d2 100644 --- a/repository/Zinc-HTTP.package/ZnConstants.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnConstants.class/properties.json @@ -3,8 +3,8 @@ "classinstvars" : [ ], "classvars" : [ - "HTTPStatusCodes", - "MaximumEntitySize" ], + "DefaultMaximumEntitySize", + "HTTPStatusCodes" ], "commentStamp" : "SvenVanCaekenberghe 1/18/2011 11:01", "instvars" : [ ], diff --git a/repository/Zinc-HTTP.package/ZnCookie.class/class/name.value..st b/repository/Zinc-HTTP.package/ZnCookie.class/class/name.value..st index ed360821..c28e9ad9 100644 --- a/repository/Zinc-HTTP.package/ZnCookie.class/class/name.value..st +++ b/repository/Zinc-HTTP.package/ZnCookie.class/class/name.value..st @@ -1,5 +1,5 @@ instance creation -name: nameString value: value +name: nameString value: value ^ self new name: nameString; value: value; diff --git a/repository/Zinc-HTTP.package/ZnCookie.class/instance/isInDomain..st b/repository/Zinc-HTTP.package/ZnCookie.class/instance/isInDomain..st index 08daeece..8a1434d3 100644 --- a/repository/Zinc-HTTP.package/ZnCookie.class/instance/isInDomain..st +++ b/repository/Zinc-HTTP.package/ZnCookie.class/instance/isInDomain..st @@ -4,5 +4,5 @@ isInDomain: urlObject domain := (self domain beginsWith: '.') ifTrue: [ self domain copyFrom: 2 to: self domain size ] ifFalse: [ self domain ]. - ^ urlObject host includesSubString: domain + ^ urlObject host includesSubstring: domain \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCookie.class/instance/isInPath..st b/repository/Zinc-HTTP.package/ZnCookie.class/instance/isInPath..st index 9eecbbe7..91403f9f 100644 --- a/repository/Zinc-HTTP.package/ZnCookie.class/instance/isInPath..st +++ b/repository/Zinc-HTTP.package/ZnCookie.class/instance/isInPath..st @@ -1,4 +1,4 @@ testing isInPath: urlObject - ^ urlObject pathPrintString includesSubString: self path + ^ urlObject pathPrintString includesSubstring: self path \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCookie.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnCookie.class/methodProperties.json index 6c367bd6..3860e083 100644 --- a/repository/Zinc-HTTP.package/ZnCookie.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnCookie.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { "fromString:" : "SvenVanCaekenberghe 8/30/2011 19:46", "fromString:for:" : "SvenVanCaekenberghe 8/30/2011 19:46", - "name:value:" : "SvenVanCaekenberghe 8/30/2011 22:23" }, + "name:value:" : "SvenVanCaekenberghe 11/10/2012 19:25" }, "instance" : { "=" : "SvenVanCaekenberghe 8/18/2011 14:05", "defaultDomain:" : "SvenVanCaekenberghe 8/30/2011 19:45", @@ -19,8 +19,8 @@ "httponly:" : "MattKennedy 9/27/2010 20:28", "initialize" : "MattKennedy 9/27/2010 20:21", "isExpired" : "SvenVanCaekenberghe 8/18/2011 14:05", - "isInDomain:" : "SvenVanCaekenberghe 8/18/2011 14:19", - "isInPath:" : "SvenVanCaekenberghe 8/18/2011 14:19", + "isInDomain:" : "SvenVanCaekenberghe 8/23/2012 14:34", + "isInPath:" : "SvenVanCaekenberghe 8/23/2012 14:34", "maxage" : "SvenVanCaekenberghe 8/18/2011 14:19", "name" : "SvenVanCaekenberghe 8/18/2011 14:19", "name:" : "MattKennedy 9/27/2010 20:23", diff --git a/repository/Zinc-HTTP.package/ZnCredential.class/class/findRealmFor..st b/repository/Zinc-HTTP.package/ZnCredential.class/class/findRealmFor..st index 68bcd1b8..7cbbd680 100644 --- a/repository/Zinc-HTTP.package/ZnCredential.class/class/findRealmFor..st +++ b/repository/Zinc-HTTP.package/ZnCredential.class/class/findRealmFor..st @@ -2,6 +2,6 @@ accessing findRealmFor: anAuthHeader (anAuthHeader subStrings: ',') do: [ :token | "String>>trimBoth: is a grease method, so not sure if we should be using it." - (token includesSubString: 'realm=') + (token includesSubstring: 'realm=') ifTrue: [ ^ ((token subStrings: '=') second) ] ]. ^ nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCredential.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnCredential.class/methodProperties.json index cc3098d6..29052ef2 100644 --- a/repository/Zinc-HTTP.package/ZnCredential.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnCredential.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { "authName" : "MattKennedy 9/28/2010 17:28", "findHandlerFor:" : "SvenVanCaekenberghe 8/18/2011 14:09", - "findRealmFor:" : "SvenVanCaekenberghe 8/18/2011 14:21" }, + "findRealmFor:" : "SvenVanCaekenberghe 8/23/2012 14:34" }, "instance" : { "authToken" : "SvenVanCaekenberghe 8/18/2011 14:20", "authTokenForUrl:method:" : "MattKennedy 9/29/2010 13:48", diff --git a/repository/Zinc-HTTP.package/ZnCurrentServer.class/README.md b/repository/Zinc-HTTP.package/ZnCurrentServer.class/README.md new file mode 100644 index 00000000..f2c48f95 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnCurrentServer.class/README.md @@ -0,0 +1,4 @@ +I am ZnSignalProgress. +I am a DynamicVariable and a ProcessSpecificVariable. + +I hold a reference to the current ZnServer instance during HTTP processing, during the dynamic scope of #handleRequest: \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnCurrentServer.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnCurrentServer.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnCurrentServer.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-HTTP.package/ZnCurrentServer.class/properties.json b/repository/Zinc-HTTP.package/ZnCurrentServer.class/properties.json new file mode 100644 index 00000000..08432fc9 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnCurrentServer.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-HTTP-Variables", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnCurrentServer", + "pools" : [ + ], + "super" : "DynamicVariable", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnCurrentServerSession.class/README.md b/repository/Zinc-HTTP.package/ZnCurrentServerSession.class/README.md new file mode 100644 index 00000000..98d54b1d --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnCurrentServerSession.class/README.md @@ -0,0 +1,6 @@ +I am ZnSignalProgress. +I am a ProcessLocalVariable and a ProcessSpecificVariable. + +I hold a reference to the current ZnServerSession instance during HTTP processing, during the dynamic scope of #handleRequest: + +ZnServerSessions are created lazily. diff --git a/repository/Zinc-HTTP.package/ZnCurrentServerSession.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnCurrentServerSession.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnCurrentServerSession.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-HTTP.package/ZnCurrentServerSession.class/properties.json b/repository/Zinc-HTTP.package/ZnCurrentServerSession.class/properties.json new file mode 100644 index 00000000..1f0635d7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnCurrentServerSession.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-HTTP-Variables", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnCurrentServerSession", + "pools" : [ + ], + "super" : "ProcessLocalVariable", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/errorResponse..st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/errorResponse..st new file mode 100644 index 00000000..8f3522c3 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/errorResponse..st @@ -0,0 +1,8 @@ +responses +errorResponse: request + "Here we artificially signal an Error at the Smalltalk level, + optionally with a user defined message." + + | message | + message := request uri queryAt: 'message' ifAbsent: [ 'An artifical error' ]. + Error signal: message \ 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 09ef4838..4d592164 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateEchoRequestString..st +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateEchoRequestString..st @@ -4,6 +4,7 @@ generateEchoRequestString: request ^ String streamContents: [ :stream | stream nextPutAll: 'This is Zinc HTTP Components echoing your request !'; crlf. + stream nextPutAll: 'Running '; print: request server; crlf. stream nextPutAll: request method; nextPutAll: ' request for '. request uri printPathQueryFragmentOn: stream. stream crlf; nextPutAll: 'with headers'; crlf. diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateHelp.st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateHelp.st index 364b9024..89227039 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateHelp.st +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateHelp.st @@ -8,6 +8,6 @@ generateHelp stream << ZnConstants standardHtmlDocType. stream << ''; << title; << ''. stream << '

'; << title; << '

Available Pages

    '. - prefixMap keys do: [ :each | + prefixMap keys sorted do: [ :each | stream << '
  • '; << each; << '
  • ' ]. stream << '
      ' ] \ 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 new file mode 100644 index 00000000..ad1b1460 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateSessionRequest..st @@ -0,0 +1,12 @@ +private +generateSessionRequest: session + "Generate an HTML page using a session" + + ^ String streamContents: [ :stream | + stream << ZnConstants standardHtmlDocType. + stream nextPutAll: 'Session'. + stream nextPutAll: '

      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 diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateStatus.st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateStatus.st index d80b2e77..428af215 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateStatus.st +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/generateStatus.st @@ -6,6 +6,7 @@ generateStatus stream << ZnConstants standardHtmlDocType. stream nextPutAll: 'ZnServer Status'. stream nextPutAll: '

      ZnServer Status

      '. + stream nextPutAll: '

      I am '; print: ZnCurrentServer value; nextPutAll: '

      '. stream nextPutAll: '

      '; nextPutAll: self systemVersionInfo; nextPutAll: '

      '. stream nextPutAll: '
      '; nextPutAll: self vmStats; nextPutAll: '
      '. stream nextPutAll: '

      Processes

        '. diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/initialize.st index 514b4b6f..991985b9 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/initialize.st +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/initialize.st @@ -1,13 +1,15 @@ initialize-release initialize - (prefixMap := Dictionary new) - at: 'welcome' put: #welcome:; - at: 'help' put: #help:; - at: 'echo' put: #echoRequest:; - at: 'dw-bench' put: #dwbench:; - at: 'favicon.ico' put: #favicon:; - at: 'random' put: #random:; - at: 'bytes' put: #bytes:; - at: 'status' put: #status:; - at: 'unicode' put: #unicode:; - at: '/' put: 'welcome' \ No newline at end of file + self + map: 'welcome' to: #welcome:; + map: 'help' to: #help:; + map: 'echo' to: #echoRequest:; + map: 'dw-bench' to: #dwbench:; + map: 'favicon.ico' to: #favicon:; + map: 'random' to: #random:; + map: 'bytes' to: #bytes:; + map: 'status' to: #status:; + map: 'unicode' to: #unicode:; + map: 'session' to: #sessionRequest:; + map: 'error' to: #errorResponse:; + map: '/' to: 'welcome' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/map.to..st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/map.to..st new file mode 100644 index 00000000..8ab532ce --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/map.to..st @@ -0,0 +1,10 @@ +accessing +map: prefix to: handler + "Arrange for the receiver to dispatch requests matching prefix to handler. + Handler can be a symbol naming a method in the receiver, + or a block accepting the request and producing the response" + + self prefixMap + at: prefix + put: handler + \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/prefixMap.st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/prefixMap.st index d12f274b..4b45bc40 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/prefixMap.st +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/prefixMap.st @@ -1,3 +1,3 @@ accessing prefixMap - ^ prefixMap \ No newline at end of file + ^ prefixMap ifNil: [ prefixMap := Dictionary new ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/sessionRequest..st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/sessionRequest..st new file mode 100644 index 00000000..ed2aab3e --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/sessionRequest..st @@ -0,0 +1,10 @@ +responses +sessionRequest: request + "An HTML response that uses a session" + + | session hitCount | + session := request session. + hitCount := session attributeAt: #hitCount ifAbsent: [ 0 ]. + hitCount := hitCount + 1. + session attributeAt: #hitCount put: hitCount. + ^ ZnResponse ok: (ZnEntity html: (self generateSessionRequest: session)) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/value..st b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/instance/value..st new file mode 100644 index 00000000..17bc2c2a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.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/ZnDefaultServerDelegate.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/methodProperties.json index d65ff236..6b498d72 100644 --- a/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnDefaultServerDelegate.class/methodProperties.json @@ -5,20 +5,25 @@ "bytes:" : "SvenVanCaekenberghe 8/18/2011 14:09", "dwbench:" : "SvenVanCaekenberghe 12/14/2010 10:30", "echoRequest:" : "SvenVanCaekenberghe 7/14/2011 09:36", + "errorResponse:" : "SvenVanCaekenberghe 12/23/2012 18:03", "favicon:" : "SvenVanCaekenberghe 12/14/2010 10:39", "generateDWBench" : "SvenVanCaekenberghe 3/18/2012 19:08", - "generateEchoRequestString:" : "SvenVanCaekenberghe 9/19/2011 10:30", - "generateHelp" : "SvenVanCaekenberghe 8/11/2011 10:11", - "generateStatus" : "SvenVanCaekenberghe 3/1/2012 13:55", + "generateEchoRequestString:" : "SvenVanCaekenberghe 11/10/2012 17:40", + "generateHelp" : "SvenVanCaekenberghe 1/4/2013 13:48", + "generateSessionRequest:" : "SvenVanCaekenberghe 11/10/2012 23:43", + "generateStatus" : "SvenVanCaekenberghe 11/10/2012 18:15", "generateUnicodeTest" : "SvenVanCaekenberghe 8/11/2011 10:12", "handleRequest:" : "PaulDeBruicker 4/19/2012 16:02", "help:" : "SvenVanCaekenberghe 3/31/2011 09:17", - "initialize" : "SvenVanCaekenberghe 4/28/2011 22:09", - "prefixMap" : "SvenVanCaekenberghe 4/26/2011 13:28", + "initialize" : "SvenVanCaekenberghe 12/23/2012 17:52", + "map:to:" : "SvenVanCaekenberghe 8/21/2012 10:35", + "prefixMap" : "SvenVanCaekenberghe 8/21/2012 10:36", "processes" : "SvenVanCaekenberghe 3/31/2011 09:46", "random:" : "SvenVanCaekenberghe 1/4/2011 14:52", + "sessionRequest:" : "SvenVanCaekenberghe 11/10/2012 23:41", "status:" : "SvenVanCaekenberghe 3/31/2011 09:18", "systemVersionInfo" : "SvenVanCaekenberghe 3/1/2012 13:55", "unicode:" : "SvenVanCaekenberghe 12/14/2010 10:40", + "value:" : "SvenVanCaekenberghe 8/22/2012 14:40", "vmStats" : "SvenVanCaekenberghe 3/1/2012 13:54", "welcome:" : "SvenVanCaekenberghe 12/14/2010 10:39" } } diff --git a/repository/Zinc-HTTP.package/ZnEntity.class/class/textCRLF..st b/repository/Zinc-HTTP.package/ZnEntity.class/class/textCRLF..st new file mode 100644 index 00000000..153e19e2 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnEntity.class/class/textCRLF..st @@ -0,0 +1,3 @@ +instance creation +textCRLF: text + ^ self text: text, String crlf \ 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 2d1d3a9a..25c8683c 100644 --- a/repository/Zinc-HTTP.package/ZnEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnEntity.class/methodProperties.json @@ -10,6 +10,7 @@ "readFrom:usingType:andLength:" : "SvenVanCaekenberghe 4/7/2012 17:36", "stringEntityClass" : "SvenVanCaekenberghe 12/6/2010 13:48", "text:" : "SvenVanCaekenberghe 12/3/2010 14:01", + "textCRLF:" : "SvenVanCaekenberghe 1/6/2013 22:46", "type:" : "SvenVanCaekenberghe 9/25/2010 22:16", "type:length:" : "SvenVanCaekenberghe 9/12/2010 11:06", "with:" : "SvenVanCaekenberghe 12/3/2010 14:02", diff --git a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/README.md b/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/README.md deleted file mode 100644 index 8a0b36b8..00000000 --- a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/README.md +++ /dev/null @@ -1,5 +0,0 @@ -I am ZnExtendedFixedClient, a ZnFixedClient with some hooks to extend its behavior. - -DEPRECATED: Please use ZnNeoClient - -Part of Zinc HTTP Components \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/newConnection.st b/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/newConnection.st deleted file mode 100644 index 34256a45..00000000 --- a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/newConnection.st +++ /dev/null @@ -1,7 +0,0 @@ -private -newConnection - | newConnection | - newConnection := super newConnection. - newConnectionHook notNil ifTrue: [ - newConnectionHook value: newConnection ]. - ^ newConnection \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/newConnectionHook..st b/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/newConnectionHook..st deleted file mode 100644 index cc86192b..00000000 --- a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/newConnectionHook..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -newConnectionHook: block - "If not nil, block will be given each connection just after a new one gets created" - - newConnectionHook := block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/postProcessHook..st b/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/postProcessHook..st deleted file mode 100644 index 0c739efa..00000000 --- a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/postProcessHook..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -postProcessHook: block - "If not nil, block will be given each response just before it is returned" - - postProcessHook := block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/postProcessResponse..st b/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/postProcessResponse..st deleted file mode 100644 index d175387f..00000000 --- a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/postProcessResponse..st +++ /dev/null @@ -1,5 +0,0 @@ -private -postProcessResponse: response - super postProcessResponse: response. - postProcessHook notNil - ifTrue: [ postProcessHook value: response ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/preProcessHook..st b/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/preProcessHook..st deleted file mode 100644 index 93307538..00000000 --- a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/preProcessHook..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -preProcessHook: block - "If not nil, block will be given each request just before it gets executed" - - preProcessHook := block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/preProcessRequest..st b/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/preProcessRequest..st deleted file mode 100644 index 4beced7a..00000000 --- a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/instance/preProcessRequest..st +++ /dev/null @@ -1,5 +0,0 @@ -private -preProcessRequest: request - super preProcessRequest: request. - preProcessHook notNil ifTrue: [ - preProcessHook value: request ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/methodProperties.json deleted file mode 100644 index 859275f9..00000000 --- a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/methodProperties.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "newConnection" : "SvenVanCaekenberghe 3/29/2011 14:05", - "newConnectionHook:" : "SvenVanCaekenberghe 3/29/2011 14:03", - "postProcessHook:" : "SvenVanCaekenberghe 3/29/2011 14:03", - "postProcessResponse:" : "SvenVanCaekenberghe 3/29/2011 14:05", - "preProcessHook:" : "SvenVanCaekenberghe 3/29/2011 14:03", - "preProcessRequest:" : "SvenVanCaekenberghe 3/29/2011 14:05" } } diff --git a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/properties.json b/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/properties.json deleted file mode 100644 index 5bdcc883..00000000 --- a/repository/Zinc-HTTP.package/ZnExtendedFixedClient.class/properties.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "category" : "Zinc-HTTP-Deprecated", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 10/4/2011 19:02", - "instvars" : [ - "preProcessHook", - "postProcessHook", - "newConnectionHook" ], - "name" : "ZnExtendedFixedClient", - "pools" : [ - ], - "super" : "ZnFixedClient", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/README.md b/repository/Zinc-HTTP.package/ZnFixedClient.class/README.md deleted file mode 100644 index 4407ae38..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/README.md +++ /dev/null @@ -1,15 +0,0 @@ -I am ZnFixedClient. -I implement the client part of the HTTP protocol. - -DEPRECATED: Please use ZnNeoClient - -I talk to one fixed host:port combination, reusing the same connection for each request. -If I lose the connection, I simply reconnect. -If something goes wrong, I do one retry. -I optionally use basic authentication. - -(ZnFixedClient host: 'caretaker.wolf359.be') - get: 'index.html'; - get: 'small.html' - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/host..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/class/host..st deleted file mode 100644 index 6245029b..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/host..st +++ /dev/null @@ -1,5 +0,0 @@ -instance creation -host: hostName - ^ self - scheme: #http - host: hostName \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/host.port..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/class/host.port..st deleted file mode 100644 index 9fad355d..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/host.port..st +++ /dev/null @@ -1,6 +0,0 @@ -instance creation -host: hostName port: port - ^ self - scheme: #http - host: hostName - port: port \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/new.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/class/new.st deleted file mode 100644 index a3d71f46..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/new.st +++ /dev/null @@ -1,4 +0,0 @@ -instance creation -new - self deprecated: 'Please use ZnEasy' on: '8 Nov 2011' in: 'Zinc HTTP Components'. - ^ super new \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/scheme.host..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/class/scheme.host..st deleted file mode 100644 index 892ccd2b..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/scheme.host..st +++ /dev/null @@ -1,6 +0,0 @@ -instance creation -scheme: scheme host: hostName - ^ self - scheme: scheme - host: hostName - port: (ZnUrl defaultPortForScheme: scheme) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/scheme.host.port..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/class/scheme.host.port..st deleted file mode 100644 index 05ee5d93..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/class/scheme.host.port..st +++ /dev/null @@ -1,7 +0,0 @@ -instance creation -scheme: scheme host: hostName port: port - ^ self new - scheme: scheme; - host: hostName; - port: port; - yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/baseUrl.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/baseUrl.st deleted file mode 100644 index 6c387bbf..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/baseUrl.st +++ /dev/null @@ -1,9 +0,0 @@ -accessing -baseUrl - "Return the base or fixed URL that we talk to" - - ^ ZnUrl new - scheme: self scheme; - host: self host; - port: self port; - yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/close.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/close.st deleted file mode 100644 index edb956c6..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/close.st +++ /dev/null @@ -1,7 +0,0 @@ -initialize-release -close - connection ifNil: [ ^ self ]. - self log debug: 'Closing connection'. - connection close. - connection := nil. - lastUsed := nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/connection.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/connection.st deleted file mode 100644 index b3f0d274..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/connection.st +++ /dev/null @@ -1,7 +0,0 @@ -accessing -connection - (self isConnected and: [ self isConnectionReusable ]) - ifFalse: [ - self close. - connection := self newConnection ]. - ^ connection \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/delete..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/delete..st deleted file mode 100644 index cb2758e0..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/delete..st +++ /dev/null @@ -1,5 +0,0 @@ -operations -delete: uri - | request | - request := ZnRequest delete: (self fixedUrl: uri). - ^ self executeRequest: request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/executeRequest..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/executeRequest..st deleted file mode 100644 index 627f916c..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/executeRequest..st +++ /dev/null @@ -1,14 +0,0 @@ -operations -executeRequest: request - "Execute request to our fixed scheme://host:port and return the response. - Make sure that the URI inside request is as processed by #fixedUrl:" - - | initialMilliseconds response | - initialMilliseconds := Time millisecondClockValue. - self preProcessRequest: request. - (response := self executeRequestOnceIgnoringErrors: request) isNil - ifTrue: [ - response := [ self close; executeRequestOnce: request ] - ifCurtailed: [ self log debug: [ 'Failed' ]. self close ] ]. - self logRequest: request response: response started: initialMilliseconds. - ^ response \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/executeRequestOnce..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/executeRequestOnce..st deleted file mode 100644 index dc5a3236..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/executeRequestOnce..st +++ /dev/null @@ -1,9 +0,0 @@ -private -executeRequestOnce: request - | stream response | - stream := self connection. - request writeOn: stream. - stream flush. - response := ZnResponse readFrom: stream. - self postProcessResponse: response. - ^ response \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/executeRequestOnceIgnoringErrors..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/executeRequestOnceIgnoringErrors..st deleted file mode 100644 index 938295e7..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/executeRequestOnceIgnoringErrors..st +++ /dev/null @@ -1,7 +0,0 @@ -private -executeRequestOnceIgnoringErrors: request - ^ [ self executeRequestOnce: request ] - on: Exception - do: [ :err | - self log debug: [ 'Once Ignoring ', err printString ]. - nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/fixedUrl..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/fixedUrl..st deleted file mode 100644 index cdb052c8..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/fixedUrl..st +++ /dev/null @@ -1,14 +0,0 @@ -operations -fixedUrl: uri - "Accept either a string that we parse, or a ZnURL object, - and make sure it points to the fixed scheme://host:port that we talk too. - This is necessary because we try to reuse the connection." - - | url | - url := uri asZnUrl. - self host ifNil: [ self error: 'Host has not been set' ]. - url - scheme: self scheme; - host: self host; - port: self port. - ^ url \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/get..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/get..st deleted file mode 100644 index 0dbeed84..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/get..st +++ /dev/null @@ -1,5 +0,0 @@ -operations -get: uri - | request | - request := ZnRequest get: (self fixedUrl: uri). - ^ self executeRequest: request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/host..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/host..st deleted file mode 100644 index 2daa8ae4..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/host..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -host: hostName - host := hostName \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/isConnected.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/isConnected.st deleted file mode 100644 index 5c21952f..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/isConnected.st +++ /dev/null @@ -1,5 +0,0 @@ -testing -isConnected - ^ connection notNil and: [ - connection isConnected and: [ - connection isOtherEndConnected ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/isConnectionReusable.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/isConnectionReusable.st deleted file mode 100644 index 7088de98..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/isConnectionReusable.st +++ /dev/null @@ -1,5 +0,0 @@ -testing -isConnectionReusable - ^ connection notNil and: [ - lastUsed notNil - and: [ TimeStamp now <= (lastUsed + self maxKeepAlive) ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/logRequest.response.started..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/logRequest.response.started..st deleted file mode 100644 index eab118d0..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/logRequest.response.started..st +++ /dev/null @@ -1,9 +0,0 @@ -private -logRequest: request response: response started: initialMilliseconds - self log transaction: [ - String streamContents: [ :stream | - request requestLine printMethodAndUriOn: stream. - stream space; print: response code. - response hasEntity ifTrue: [ - stream space; print: response entity contentLength; nextPut: $B ]. - stream space; print: (Time millisecondsSince: initialMilliseconds); nextPutAll: 'ms' ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/logToTranscript.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/logToTranscript.st deleted file mode 100644 index dc3356a1..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/logToTranscript.st +++ /dev/null @@ -1,3 +0,0 @@ -initialize-release -logToTranscript - self log addListener: ZnTranscriptLogger new \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/maxKeepAlive.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/maxKeepAlive.st deleted file mode 100644 index ed6fc272..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/maxKeepAlive.st +++ /dev/null @@ -1,5 +0,0 @@ -private -maxKeepAlive - "Maximum age of kept alive connections that we try to reuse" - - ^ 5 seconds \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/newConnection.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/newConnection.st deleted file mode 100644 index 19c88452..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/newConnection.st +++ /dev/null @@ -1,4 +0,0 @@ -private -newConnection - self log debug: 'Opening connection'. - ^ ZnNetworkingUtils socketStreamToUrl: self baseUrl \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/port.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/port.st deleted file mode 100644 index e09aea18..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/port.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -port - port isNil ifTrue: [ port := ZnUrl defaultPortForScheme: self scheme ]. - ^ port \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/post.data..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/post.data..st deleted file mode 100644 index a266562c..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/post.data..st +++ /dev/null @@ -1,6 +0,0 @@ -operations -post: uri data: entity - | request | - (request := ZnRequest post: (self fixedUrl: uri)) - entity: entity. - ^ self executeRequest: request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/postProcessResponse..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/postProcessResponse..st deleted file mode 100644 index db184bb4..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/postProcessResponse..st +++ /dev/null @@ -1,5 +0,0 @@ -private -postProcessResponse: response - lastUsed := TimeStamp now. - response isConnectionClose - ifTrue: [ self close ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/preProcessRequest..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/preProcessRequest..st deleted file mode 100644 index af3b2c91..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/preProcessRequest..st +++ /dev/null @@ -1,4 +0,0 @@ -private -preProcessRequest: request - (username notNil and: [ password notNil ]) ifTrue: [ - request setBasicAuthenticationUsername: username password: password ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/printOn..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/printOn..st deleted file mode 100644 index 5f0546cd..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/printOn..st +++ /dev/null @@ -1,5 +0,0 @@ -printing -printOn: stream - super printOn: stream. - self host notNil ifTrue: [ - stream nextPut: $(; nextPutAll: 'http://'; nextPutAll: self host; nextPut: $:; print: self port; nextPut: $) ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/put.data..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/put.data..st deleted file mode 100644 index 243ff6e4..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/put.data..st +++ /dev/null @@ -1,6 +0,0 @@ -operations -put: uri data: entity - | request | - (request := ZnRequest put: (self fixedUrl: uri)) - entity: entity. - ^ self executeRequest: request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/scheme..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/scheme..st deleted file mode 100644 index ed9c29ad..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/scheme..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -scheme: symbol - scheme := symbol \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/scheme.st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/scheme.st deleted file mode 100644 index a7ad1b51..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/scheme.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -scheme - ^ scheme ifNil: [ scheme := #http ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/username.password..st b/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/username.password..st deleted file mode 100644 index 20c80c16..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/username.password..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -username: user password: pwd - username := user. - password := pwd \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnFixedClient.class/methodProperties.json deleted file mode 100644 index 83c52bb7..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/methodProperties.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "class" : { - "host:" : "SvenVanCaekenberghe 8/18/2011 14:40", - "host:port:" : "SvenVanCaekenberghe 8/18/2011 14:40", - "new" : "SvenVanCaekenberghe 3/4/2012 10:32", - "scheme:host:" : "SvenVanCaekenberghe 8/18/2011 14:40", - "scheme:host:port:" : "SvenVanCaekenberghe 8/18/2011 14:40" }, - "instance" : { - "baseUrl" : "SvenVanCaekenberghe 5/9/2011 10:11", - "close" : "SvenVanCaekenberghe 4/20/2011 12:10", - "connection" : "SvenVanCaekenberghe 3/28/2011 15:10", - "delete:" : "SvenVanCaekenberghe 9/25/2010 22:05", - "executeRequest:" : "SvenVanCaekenberghe 4/20/2011 12:38", - "executeRequestOnce:" : "SvenVanCaekenberghe 3/29/2011 14:23", - "executeRequestOnceIgnoringErrors:" : "SvenVanCaekenberghe 6/17/2011 15:36", - "fixedUrl:" : "SvenVanCaekenberghe 5/9/2011 10:02", - "get:" : "SvenVanCaekenberghe 9/25/2010 20:41", - "host" : "SvenVanCaekenberghe 9/25/2010 20:06", - "host:" : "SvenVanCaekenberghe 8/18/2011 14:40", - "isConnected" : "SvenVanCaekenberghe 3/28/2011 15:07", - "isConnectionReusable" : "SvenVanCaekenberghe 3/28/2011 15:12", - "log" : "SvenVanCaekenberghe 3/29/2011 14:05", - "logRequest:response:started:" : "SvenVanCaekenberghe 3/29/2011 14:16", - "logToTranscript" : "SvenVanCaekenberghe 3/29/2011 15:40", - "maxKeepAlive" : "SvenVanCaekenberghe 3/28/2011 15:09", - "newConnection" : "SvenVanCaekenberghe 5/9/2011 10:11", - "port" : "SvenVanCaekenberghe 5/9/2011 10:06", - "port:" : "SvenVanCaekenberghe 9/25/2010 20:07", - "post:data:" : "SvenVanCaekenberghe 9/25/2010 22:05", - "postProcessResponse:" : "SvenVanCaekenberghe 3/29/2011 14:04", - "preProcessRequest:" : "SvenVanCaekenberghe 3/29/2011 14:04", - "printOn:" : "SvenVanCaekenberghe 9/25/2010 20:53", - "put:data:" : "SvenVanCaekenberghe 9/25/2010 22:06", - "scheme" : "SvenVanCaekenberghe 5/9/2011 10:01", - "scheme:" : "SvenVanCaekenberghe 5/9/2011 10:01", - "username:password:" : "SvenVanCaekenberghe 9/25/2010 21:02" } } diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/properties.json b/repository/Zinc-HTTP.package/ZnFixedClient.class/properties.json deleted file mode 100644 index 5f1e39e4..00000000 --- a/repository/Zinc-HTTP.package/ZnFixedClient.class/properties.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "category" : "Zinc-HTTP-Deprecated", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 10/4/2011 19:02", - "instvars" : [ - "scheme", - "host", - "port", - "connection", - "username", - "password", - "lastUsed", - "log" ], - "name" : "ZnFixedClient", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnHTTPSocketFacade.class/properties.json b/repository/Zinc-HTTP.package/ZnHTTPSocketFacade.class/properties.json index a68ce15d..de86b226 100644 --- a/repository/Zinc-HTTP.package/ZnHTTPSocketFacade.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnHTTPSocketFacade.class/properties.json @@ -1,5 +1,5 @@ { - "category" : "Zinc-HTTP-Client-Server", + "category" : "Zinc-HTTP-Deprecated", "classinstvars" : [ ], "classvars" : [ diff --git a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/addAll..st b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/addAll..st index 6cf78b04..452f204b 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/instance/addAll..st +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/instance/addAll..st @@ -1,7 +1,7 @@ accessing addAll: keyedCollection - "Note that we use #at:add:" - - keyedCollection keysAndValuesDo: [ :key :value | - self at: key add: value ]. - ^ keyedCollection \ No newline at end of file + "Note that we use #addAllMulti:" + + keyedCollection isEmpty + ifFalse: [ self headers addAllMulti: keyedCollection ]. + ^ keyedCollection \ 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 af59a912..d857ef75 100644 --- a/repository/Zinc-HTTP.package/ZnHeaders.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnHeaders.class/methodProperties.json @@ -7,7 +7,7 @@ "withAll:" : "SvenVanCaekenberghe 9/13/2010 21:45" }, "instance" : { "acceptEntityDescription:" : "SvenVanCaekenberghe 9/19/2011 10:08", - "addAll:" : "SvenVanCaekenberghe 1/12/2011 11:25", + "addAll:" : "SvenVanCaekenberghe 1/7/2013 12:20", "at:" : "SvenVanCaekenberghe 9/10/2010 20:25", "at:add:" : "SvenVanCaekenberghe 1/2/2012 17:27", "at:ifAbsent:" : "SvenVanCaekenberghe 9/21/2010 12:16", diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/README.md b/repository/Zinc-HTTP.package/ZnHttpClient.class/README.md deleted file mode 100644 index 7b596cd9..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/README.md +++ /dev/null @@ -1,13 +0,0 @@ -I implement an HTTP client with a high level API. - -DEPRECATED: Please use ZnNeoClient - -Some examples of my use: - -response := ZnHttpClient new - url: 'somedomain.com'; - auth: 'joe' password: 'secret'; - parameterAt: 'name' put: 'joe'; - headerAt: 'X-Custom Header' put: 'woot'; - get. - \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/auth.password..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/auth.password..st deleted file mode 100644 index de32aa1f..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/auth.password..st +++ /dev/null @@ -1,9 +0,0 @@ -accessing -auth: username password: password - | cred | - cred := ZnBasicCredential new - username: username; - password: password; - domain: self url authority; - yourself. - self session addCredential: cred \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/contentLength.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/contentLength.st deleted file mode 100644 index 6c7f30e2..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/contentLength.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -contentLength - ^ self response contentLength \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/contentType.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/contentType.st deleted file mode 100644 index 8340ff1a..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/contentType.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -contentType - ^ self response contentType \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/cookieAt..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/cookieAt..st deleted file mode 100644 index 57c1bdb6..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/cookieAt..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -cookieAt: aName - ^ (super cookieAt: aName) value \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/delete.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/delete.st deleted file mode 100644 index 27062365..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/delete.st +++ /dev/null @@ -1,6 +0,0 @@ -operations -delete - self - sendMethod: [ self method: #DELETE for: self url headers: self headers data: self params ]; - resetParameters. - ^ self response contents \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/digestAuth.password..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/digestAuth.password..st deleted file mode 100644 index 45a4fdb8..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/digestAuth.password..st +++ /dev/null @@ -1,9 +0,0 @@ -accessing -digestAuth: username password: password - | cred | - cred := ZnDigestCredential new - username: username; - password: password; - domain: self url authority; - yourself. - self session addCredential: cred \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/get.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/get.st deleted file mode 100644 index 26799a25..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/get.st +++ /dev/null @@ -1,7 +0,0 @@ -operations -get - self url queryAddAll: self params. - self - sendMethod: [ self method: #GET for: self url headers: self headers data: nil ]; - resetParameters. - ^ self response contents \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/head.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/head.st deleted file mode 100644 index 2e226127..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/head.st +++ /dev/null @@ -1,7 +0,0 @@ -operations -head - self url queryAddAll: self params. - self - sendMethod: [ self method: #HEAD for: self url headers: self headers data: nil ]; - resetParameters. - ^ self response \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headerAt.add..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headerAt.add..st deleted file mode 100644 index a875f38d..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headerAt.add..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -headerAt: aName add: aValue - self headers at: aName add: aValue \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headerAt.put..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headerAt.put..st deleted file mode 100644 index a46383e1..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headerAt.put..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -headerAt: aName put: aValue - self headers at: aName put: aValue \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headers..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headers..st deleted file mode 100644 index 381987fe..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headers..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -headers: anObject - headers := anObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headers.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headers.st deleted file mode 100644 index 92b0dee2..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/headers.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -headers - ^ headers ifNil: [ headers := ZnMultiValueDictionary new ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/isAuthenticationRequired.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/isAuthenticationRequired.st deleted file mode 100644 index 3caa66e3..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/isAuthenticationRequired.st +++ /dev/null @@ -1,3 +0,0 @@ -testing -isAuthenticationRequired - ^ self response isAuthenticationRequired \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/linkCredentials.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/linkCredentials.st deleted file mode 100644 index cbd1cc00..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/linkCredentials.st +++ /dev/null @@ -1,4 +0,0 @@ -private -linkCredentials - (self session credentialsForUrl: self url) do: [ :cred | - cred linkToAuthRequest: self response wwwAuthenticate ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/parameterAt..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/parameterAt..st deleted file mode 100644 index 9db4a7dc..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/parameterAt..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -parameterAt: aName - ^ self params at: aName ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/parameterAt.add..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/parameterAt.add..st deleted file mode 100644 index b726bcf9..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/parameterAt.add..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -parameterAt: aName add: aValue - self params at: aName add: aValue \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/parameterAt.put..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/parameterAt.put..st deleted file mode 100644 index 5e948955..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/parameterAt.put..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -parameterAt: aName put: aValue - self params at: aName put: aValue \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/params..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/params..st deleted file mode 100644 index 8681d972..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/params..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -params: anObject - params := anObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/params.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/params.st deleted file mode 100644 index bbb29551..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/params.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -params - ^ params ifNil: [ params := ZnMultiValueDictionary new ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/post.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/post.st deleted file mode 100644 index 36fa8d9c..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/post.st +++ /dev/null @@ -1,6 +0,0 @@ -operations -post - self - sendMethod: [ self method: #POST for: self url headers: self headers data: self params ]; - resetParameters. - ^ self response contents \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/put.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/put.st deleted file mode 100644 index 98c56a2d..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/put.st +++ /dev/null @@ -1,6 +0,0 @@ -operations -put - self - sendMethod: [ self method: #PUT for: self url headers: self headers data: self params ]; - resetParameters. - ^ self response contents \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/resetParameters.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/resetParameters.st deleted file mode 100644 index 9bc33446..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/resetParameters.st +++ /dev/null @@ -1,3 +0,0 @@ -private -resetParameters - params ifNotNil: [ params removeAll ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/sendMethod..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/sendMethod..st deleted file mode 100644 index 1591163d..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/sendMethod..st +++ /dev/null @@ -1,7 +0,0 @@ -private -sendMethod: aBlock - aBlock on: Error do: self errorHandler. - self isAuthenticationRequired ifTrue: [ - self linkCredentials. - aBlock on: Error do: self errorHandler ]. - self resetParameters \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/status.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/status.st deleted file mode 100644 index ca83c565..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/status.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -status - ^ self response code \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/url..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/url..st deleted file mode 100644 index 18cdc337..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/url..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -url: anObject - url := anObject asZnUrl \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/url.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/url.st deleted file mode 100644 index 958fa173..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/url.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -url - ^ url \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/userAgent..st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/userAgent..st deleted file mode 100644 index 51b376f3..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/userAgent..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -userAgent: aString - self settings agent: aString \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/userAgent.st b/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/userAgent.st deleted file mode 100644 index e82db35d..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/instance/userAgent.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -userAgent - ^ self settings agent \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnHttpClient.class/methodProperties.json deleted file mode 100644 index 3d391d9f..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/methodProperties.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "auth:password:" : "MattKennedy 10/1/2010 20:36", - "contentLength" : "SvenVanCaekenberghe 8/18/2011 14:24", - "contentType" : "SvenVanCaekenberghe 8/18/2011 14:24", - "cookieAt:" : "SvenVanCaekenberghe 8/18/2011 14:24", - "delete" : "SvenVanCaekenberghe 1/12/2011 13:29", - "digestAuth:password:" : "MattKennedy 10/1/2010 20:36", - "get" : "SvenVanCaekenberghe 1/20/2011 20:36", - "head" : "SvenVanCaekenberghe 1/20/2011 20:36", - "headerAt:add:" : "SvenVanCaekenberghe 1/12/2011 11:27", - "headerAt:put:" : "MattKennedy 10/1/2010 20:17", - "headers" : "SvenVanCaekenberghe 1/12/2011 11:27", - "headers:" : "MattKennedy 10/1/2010 20:10", - "isAuthenticationRequired" : "SvenVanCaekenberghe 8/18/2011 14:24", - "linkCredentials" : "SvenVanCaekenberghe 8/18/2011 14:13", - "parameterAt:" : "SvenVanCaekenberghe 8/18/2011 14:24", - "parameterAt:add:" : "SvenVanCaekenberghe 1/12/2011 11:28", - "parameterAt:put:" : "MattKennedy 10/1/2010 20:15", - "params" : "SvenVanCaekenberghe 1/12/2011 11:27", - "params:" : "MattKennedy 10/1/2010 20:10", - "post" : "SvenVanCaekenberghe 1/12/2011 13:30", - "put" : "SvenVanCaekenberghe 1/12/2011 13:30", - "resetParameters" : "SvenVanCaekenberghe 1/12/2011 10:16", - "sendMethod:" : "SvenVanCaekenberghe 8/18/2011 14:14", - "status" : "SvenVanCaekenberghe 8/18/2011 14:24", - "url" : "MattKennedy 10/1/2010 20:10", - "url:" : "SvenVanCaekenberghe 1/4/2011 14:19", - "userAgent" : "SvenVanCaekenberghe 8/18/2011 14:24", - "userAgent:" : "MattKennedy 10/1/2010 20:12" } } diff --git a/repository/Zinc-HTTP.package/ZnHttpClient.class/properties.json b/repository/Zinc-HTTP.package/ZnHttpClient.class/properties.json deleted file mode 100644 index 9f75efcc..00000000 --- a/repository/Zinc-HTTP.package/ZnHttpClient.class/properties.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "category" : "Zinc-HTTP-Deprecated", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 10/4/2011 19:02", - "instvars" : [ - "url", - "params", - "headers" ], - "name" : "ZnHttpClient", - "pools" : [ - ], - "super" : "ZnUserAgent", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/printHeaderOn..st b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/printHeaderOn..st new file mode 100644 index 00000000..446826b6 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/printHeaderOn..st @@ -0,0 +1,8 @@ +printing +printHeaderOn: stream + self timeStamp printYMDOn: stream. + stream space. + self timeStamp printHMSOn: stream. + stream space. + self processId printOn: stream base: 10 length: 6 padded: true. + stream space; nextPut: self category first asUppercase \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/printOn..st b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/printOn..st index 13cc1d4b..4bb8be8c 100644 --- a/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/printOn..st +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/instance/printOn..st @@ -1,9 +1,6 @@ printing printOn: stream - self timeStamp printYMDOn: stream. - stream space. - self timeStamp printHMSOn: stream. - stream space. - self processId printOn: stream base: 10 length: 6 padded: true. - stream space; nextPut: self category first asUppercase. - self message isNil ifFalse: [ stream space; nextPutAll: self message ] \ No newline at end of file + self message isNil + ifFalse: [ + self printHeaderOn: stream. + stream space; nextPutAll: self message ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnLogEvent.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnLogEvent.class/methodProperties.json index 17cbd51d..fbceb043 100644 --- a/repository/Zinc-HTTP.package/ZnLogEvent.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnLogEvent.class/methodProperties.json @@ -10,7 +10,8 @@ "initialize" : "SvenVanCaekenberghe 3/29/2011 12:51", "message" : "SvenVanCaekenberghe 3/28/2011 22:05", "message:" : "SvenVanCaekenberghe 3/29/2011 09:50", - "printOn:" : "SvenVanCaekenberghe 3/29/2011 12:51", + "printHeaderOn:" : "SvenVanCaekenberghe 1/31/2013 11:01", + "printOn:" : "SvenVanCaekenberghe 1/31/2013 11:01", "processId" : "SvenVanCaekenberghe 3/29/2011 09:48", "processId:" : "SvenVanCaekenberghe 3/29/2011 09:48", "timeStamp" : "SvenVanCaekenberghe 3/28/2011 22:05", diff --git a/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/instance/stop..st b/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/instance/stop..st new file mode 100644 index 00000000..146c0646 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/instance/stop..st @@ -0,0 +1,4 @@ +public +stop: unregister + super stop: unregister. + self closeConnections \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/instance/stop.st b/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/instance/stop.st deleted file mode 100644 index 7fe25415..00000000 --- a/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/instance/stop.st +++ /dev/null @@ -1,4 +0,0 @@ -public -stop - super stop. - self closeConnections \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/methodProperties.json index b6e0894d..ee35c683 100644 --- a/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnManagingMultiThreadedServer.class/methodProperties.json @@ -7,4 +7,4 @@ "connections" : "SvenVanCaekenberghe 9/5/2011 14:14", "lock" : "SvenVanCaekenberghe 9/5/2011 14:14", "socketStreamOn:" : "SvenVanCaekenberghe 9/5/2011 14:17", - "stop" : "SvenVanCaekenberghe 9/5/2011 14:14" } } + "stop:" : "SvenVanCaekenberghe 10/10/2012 10:16" } } diff --git a/repository/Zinc-HTTP.package/ZnMaximumEntitySize.class/README.md b/repository/Zinc-HTTP.package/ZnMaximumEntitySize.class/README.md new file mode 100644 index 00000000..5b0112c7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMaximumEntitySize.class/README.md @@ -0,0 +1,4 @@ +I am ZnMaximumEntitySize. +I am a DynamicVariable and a ProcessSpecificVariable. + +I am used to control the maximum size of entities being read from streams. diff --git a/repository/Zinc-HTTP.package/ZnMaximumEntitySize.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnMaximumEntitySize.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMaximumEntitySize.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-HTTP.package/ZnMaximumEntitySize.class/properties.json b/repository/Zinc-HTTP.package/ZnMaximumEntitySize.class/properties.json new file mode 100644 index 00000000..379faefd --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMaximumEntitySize.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-HTTP-Variables", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnMaximumEntitySize", + "pools" : [ + ], + "super" : "DynamicVariable", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/hasSession.st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/hasSession.st new file mode 100644 index 00000000..9b0d4883 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/hasSession.st @@ -0,0 +1,6 @@ +testing +hasSession + "Return if there currently is a server session. + This only returns a value during #handleRequest:" + + ^ ZnCurrentServerSession value notNil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/server.st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/server.st new file mode 100644 index 00000000..343514d9 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/server.st @@ -0,0 +1,6 @@ +accessing +server + "Return the current server. + This only returns a value during #handleRequest:" + + ^ ZnCurrentServer value \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/session.st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/session.st new file mode 100644 index 00000000..d6016c44 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/session.st @@ -0,0 +1,6 @@ +accessing +session + "Return the current server session. + This only returns a value during #handleRequest:" + + ^ ZnCurrentServerSession value \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/wantsConnectionClose.st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/wantsConnectionClose.st new file mode 100644 index 00000000..46b0aab1 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/wantsConnectionClose.st @@ -0,0 +1,5 @@ +testing +wantsConnectionClose + "Return if the HTTP protocol should close the connection after processing the receiver" + + ^ false \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMessage.class/instance/writeToTranscript.st b/repository/Zinc-HTTP.package/ZnMessage.class/instance/writeToTranscript.st new file mode 100644 index 00000000..47e55be0 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMessage.class/instance/writeToTranscript.st @@ -0,0 +1,7 @@ +writing +writeToTranscript + "Write the receiver on the Transcript like when sent or received over the network. + Useful for debugging, obviously" + + self writeOn: Transcript. + Transcript flush \ 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 e22902c1..4fec1de1 100644 --- a/repository/Zinc-HTTP.package/ZnMessage.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnMessage.class/methodProperties.json @@ -15,6 +15,7 @@ "entityReaderOn:" : "SvenVanCaekenberghe 5/1/2011 19:02", "hasEntity" : "SvenVanCaekenberghe 9/21/2010 12:02", "hasHeaders" : "SvenVanCaekenberghe 12/4/2010 20:32", + "hasSession" : "SvenVanCaekenberghe 11/10/2012 18:58", "headers" : "SvenVanCaekenberghe 9/6/2010 22:34", "headers:" : "SvenVanCaekenberghe 9/30/2010 19:53", "headersDo:" : "SvenVanCaekenberghe 9/21/2010 12:04", @@ -26,6 +27,10 @@ "readHeaderFrom:" : "SvenVanCaekenberghe 9/21/2010 11:32", "readStreamingFrom:" : "SvenVanCaekenberghe 9/27/2010 12:17", "resetEntity:" : "SvenVanCaekenberghe 9/19/2011 10:26", + "server" : "SvenVanCaekenberghe 11/10/2012 17:32", + "session" : "SvenVanCaekenberghe 11/10/2012 19:02", "setConnectionClose" : "SvenVanCaekenberghe 9/7/2010 22:32", "setConnectionKeepAlive" : "SvenVanCaekenberghe 12/14/2010 13:58", - "writeOn:" : "SvenVanCaekenberghe 12/14/2010 11:34" } } + "wantsConnectionClose" : "SvenVanCaekenberghe 8/20/2012 16:07", + "writeOn:" : "SvenVanCaekenberghe 12/14/2010 11:34", + "writeToTranscript" : "SvenVanCaekenberghe 1/24/2013 10:00" } } diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/README.md b/repository/Zinc-HTTP.package/ZnMimeType.class/README.md deleted file mode 100644 index 7132406b..00000000 --- a/repository/Zinc-HTTP.package/ZnMimeType.class/README.md +++ /dev/null @@ -1,10 +0,0 @@ -I am ZnMimeType. - -I know whether I am binary or not and know my charset when applicable. - -My class side offers access to some common constants. -Note that for text types we default to UTF-8 encoding. - -I started life as a copy of WAMineType. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnMimeType.class/methodProperties.json deleted file mode 100644 index 8dc7f1b3..00000000 --- a/repository/Zinc-HTTP.package/ZnMimeType.class/methodProperties.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "class" : { - "any" : "SvenVanCaekenberghe 12/6/2011 19:59", - "applicationFormUrlEncoded" : "SvenVanCaekenberghe 12/6/2011 19:59", - "applicationJavascript" : "SvenVanCaekenberghe 12/6/2011 19:59", - "applicationJson" : "SvenVanCaekenberghe 12/6/2011 19:59", - "applicationOctetStream" : "SvenVanCaekenberghe 12/6/2011 19:59", - "applicationPdf" : "SvenVanCaekenberghe 5/27/2012 18:42", - "applicationXml" : "SvenVanCaekenberghe 12/6/2011 20:00", - "default" : "SvenVanCaekenberghe 9/16/2010 15:48", - "forFilenameExtension:" : "SvenVanCaekenberghe 9/16/2010 20:29", - "fromString:" : "SvenVanCaekenberghe 1/8/2012 14:17", - "imageGif" : "SvenVanCaekenberghe 12/6/2011 20:00", - "imageJpeg" : "SvenVanCaekenberghe 12/6/2011 20:00", - "imagePng" : "SvenVanCaekenberghe 12/6/2011 20:00", - "initialize" : "SvenVanCaekenberghe 9/16/2010 20:27", - "initializeExtensionsMap" : "SvenVanCaekenberghe 5/27/2012 18:42", - "initializeMimeTypes" : "SvenVanCaekenberghe 5/27/2012 18:41", - "main:sub:" : "SvenVanCaekenberghe 8/18/2011 14:22", - "main:sub:parameters:" : "SvenVanCaekenberghe 8/18/2011 14:22", - "multiPartFormData" : "SvenVanCaekenberghe 12/6/2011 20:00", - "predefinedInstanceAt:" : "SvenVanCaekenberghe 12/6/2011 20:43", - "sharedInstanceAt:" : "SvenVanCaekenberghe 12/6/2011 19:58", - "text" : "SvenVanCaekenberghe 12/6/2011 20:00", - "textCss" : "SvenVanCaekenberghe 12/6/2011 20:00", - "textHtml" : "SvenVanCaekenberghe 12/6/2011 20:00", - "textJavascript" : "SvenVanCaekenberghe 12/6/2011 20:01", - "textPlain" : "SvenVanCaekenberghe 12/6/2011 20:01" }, - "instance" : { - "=" : "SvenVanCaekenberghe 8/18/2011 14:22", - "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", - "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 8/18/2011 14:21", - "parameterAt:" : "SvenVanCaekenberghe 3/6/2012 11:00", - "parameterAt:ifAbsent:" : "SvenVanCaekenberghe 3/6/2012 10:53", - "parameterAt:put:" : "SvenVanCaekenberghe 9/7/2010 14:50", - "parameters" : "SvenVanCaekenberghe 12/6/2011 20:40", - "parameters:" : "SvenVanCaekenberghe 9/7/2010 14:47", - "postCopy" : "SvenVanCaekenberghe 12/6/2011 20:41", - "printOn:" : "SvenVanCaekenberghe 9/11/2010 20:49", - "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" } } diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/properties.json b/repository/Zinc-HTTP.package/ZnMimeType.class/properties.json deleted file mode 100644 index 8cef134a..00000000 --- a/repository/Zinc-HTTP.package/ZnMimeType.class/properties.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "category" : "Zinc-HTTP-Support", - "classinstvars" : [ - ], - "classvars" : [ - "ExtensionsMap", - "MimeTypes" ], - "commentStamp" : "SvenVanCaekenberghe 12/6/2011 20:52", - "instvars" : [ - "main", - "sub", - "parameters" ], - "name" : "ZnMimeType", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/methodProperties.json deleted file mode 100644 index 2588d95d..00000000 --- a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/methodProperties.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "directory" : "SvenVanCaekenberghe 9/17/2010 10:20", - "directory:" : "SvenVanCaekenberghe 9/17/2010 10:20", - "handleGetMczEntry:" : "SvenVanCaekenberghe 1/4/2011 14:49", - "handleListMczEntries:" : "SvenVanCaekenberghe 8/18/2011 14:25", - "handlePutMczEntry:" : "SvenVanCaekenberghe 1/4/2011 14:49", - "handleRequest:" : "SvenVanCaekenberghe 1/4/2011 13:42", - "isValidMczName:" : "SvenVanCaekenberghe 9/17/2010 10:24", - "mczEntries" : "SvenVanCaekenberghe 9/17/2010 10:21", - "repositoryListing" : "SvenVanCaekenberghe 9/17/2010 11:00" } } diff --git a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/properties.json b/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/properties.json deleted file mode 100644 index e6920545..00000000 --- a/repository/Zinc-HTTP.package/ZnMonticelloServerDelegate.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Client-Server", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - "directory" ], - "name" : "ZnMonticelloServerDelegate", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeOneRequestResponseOn..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeOneRequestResponseOn..st new file mode 100644 index 00000000..1eb1aaed --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeOneRequestResponseOn..st @@ -0,0 +1,15 @@ +request handling +executeOneRequestResponseOn: stream + "Execute one HTTP request / response cycle on stream in 3 steps + #readRequest: #handleRequest: and #writeResponse:on: + Return true when the outer loop we are in should stop." + + | request response | + (request := self readRequestSafely: stream) + ifNil: [ ^ true ] + ifNotNil: [ + response := self handleRequest: request. + response setKeepAliveFor: 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/executeRequestResponseLoopOn..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeRequestResponseLoopOn..st index 12042601..4eec4c9f 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeRequestResponseLoopOn..st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/executeRequestResponseLoopOn..st @@ -1,13 +1,11 @@ -private +request handling executeRequestResponseLoopOn: stream - "Execute the HTTP request / response loop on stream in 3 steps - #readRequest: #handleRequest: and #writeResponse:on: + "Execute the HTTP request / response loop on stream one cycle at a time until the other end indicates it wants to stop or times out" - + | request response | - self log debug: 'Executing request/response loop'. - [ (request := self readRequestSafely: stream) notNil - ifTrue: [ - (response := self handleRequest: request) setKeepAliveFor: request. - self writeResponseSafely: response on: stream ]. - request isNil or: [ request wantsConnectionClose ] ] whileFalse \ No newline at end of file + self log debug: 'Executing request/response loop'. + ZnCurrentServer + value: self + during: [ + [ self executeOneRequestResponseOn: stream ] whileFalse ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/listenLoop.st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/listenLoop.st index 9bf4d8e4..653e3c95 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/listenLoop.st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/listenLoop.st @@ -1,4 +1,4 @@ -private +request handling listenLoop "We create a listening Socket, then wait for a connection. After each connection we also check that the listening Socket is still valid diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestExceptionSet.st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestExceptionSet.st new file mode 100644 index 00000000..9f38ec33 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestExceptionSet.st @@ -0,0 +1,8 @@ +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 c2cf4345..46a8df37 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestSafely..st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/readRequestSafely..st @@ -1,10 +1,9 @@ -private +request handling readRequestSafely: stream "Read request from stream, returning nil when the connection is closed or times out" - + ^ [ self readRequest: stream ] - on: (self exceptionSet: #(ConnectionClosed ConnectionTimedOut PrimitiveFailed - ZnParseError ZnTooManyDictionaryEntries ZnEntityTooLarge)) - do: [ :exception | - self log debug: [ exception printString, ' while reading request' ]. + on: self readRequestExceptionSet + 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/serveConnectionsOn..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/serveConnectionsOn..st index a017a2f4..c2d464e6 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/serveConnectionsOn..st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/serveConnectionsOn..st @@ -1,4 +1,4 @@ -private +request handling serveConnectionsOn: listeningSocket "We wait up to acceptWaitTimeout seconds for an incoming connection. If we get one we wrap it in a SocketStream and #executeRequestResponseLoopOn: on it" diff --git a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseExceptionSet.st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseExceptionSet.st new file mode 100644 index 00000000..3bf01cf5 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseExceptionSet.st @@ -0,0 +1,6 @@ +private +writeResponseExceptionSet + "Returnt 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/instance/writeResponseSafely.on..st b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseSafely.on..st index 05c74ef1..ea76b3a6 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseSafely.on..st +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/instance/writeResponseSafely.on..st @@ -1,8 +1,7 @@ -private +request handling 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 exceptionSet: #(ConnectionClosed ConnectionTimedOut PrimitiveFailed)) - do: [ :exception | - self log debug: [ exception printString, ' while writing response' ] ] \ No newline at end of file + on: self writeResponseExceptionSet + 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/methodProperties.json b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/methodProperties.json index 867d319a..4331dab2 100644 --- a/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnMultiThreadedServer.class/methodProperties.json @@ -4,9 +4,12 @@ "instance" : { "closeSocketStream:" : "SvenVanCaekenberghe 9/5/2011 14:15", "exceptionSet:" : "SvenVanCaekenberghe 10/4/2011 09:46", - "executeRequestResponseLoopOn:" : "SvenVanCaekenberghe 9/4/2011 13:50", + "executeOneRequestResponseOn:" : "SvenVanCaekenberghe 1/10/2013 15:06", + "executeRequestResponseLoopOn:" : "SvenVanCaekenberghe 1/10/2013 15:08", "listenLoop" : "SvenVanCaekenberghe 12/10/2010 16:00", - "readRequestSafely:" : "SvenVanCaekenberghe 2/1/2012 09:00", + "readRequestExceptionSet" : "SvenVanCaekenberghe 1/10/2013 15:22", + "readRequestSafely:" : "SvenVanCaekenberghe 1/10/2013 15:20", "serveConnectionsOn:" : "SvenVanCaekenberghe 9/4/2011 12:38", "workerProcessName" : "SvenVanCaekenberghe 12/13/2010 16:33", - "writeResponseSafely:on:" : "SvenVanCaekenberghe 10/4/2011 09:41" } } + "writeResponseExceptionSet" : "SvenVanCaekenberghe 1/10/2013 15:23", + "writeResponseSafely:on:" : "SvenVanCaekenberghe 1/10/2013 15:19" } } diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/README.md b/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/README.md deleted file mode 100644 index 0eb7d9da..00000000 --- a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/README.md +++ /dev/null @@ -1,10 +0,0 @@ -I am ZnMultiValueDictionary. -I am a Dictionary. - -I offer an #at:add: method to transparently create Array valued multi entries when needed. -My #keysAndValuesDo: is overwritten to transparently deal with multi entries. -I normally limit the number of entries to protect me from resource abuse. - -Note that most other methods will show the actual value. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/add..st b/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/add..st deleted file mode 100644 index 32b0f1cc..00000000 --- a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/add..st +++ /dev/null @@ -1,15 +0,0 @@ -adding -add: anAssociation - "Overridden to signal an exception when the limit, if present, is exceeded." - - | index element | - index := self findElementOrNil: anAssociation key. - element := array at: index. - element == nil - ifTrue: [ - (self limit notNil and: [ self size >= self limit ]) - ifTrue: [ (ZnTooManyDictionaryEntries limit: self limit) signal ]. - self atNewIndex: index put: anAssociation ] - ifFalse: [ - element value: anAssociation value ]. - ^ anAssociation \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/at.put..st b/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/at.put..st deleted file mode 100644 index 899bff85..00000000 --- a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/at.put..st +++ /dev/null @@ -1,17 +0,0 @@ -accessing -at: key put: anObject - "Set the value at key to be anObject. If key is not found, create a - new entry for key and set is value to anObject. Answer anObject. - Overridden to signal an exception when the limit, if present, is exceeded." - - | index assoc | - index := self findElementOrNil: key. - assoc := array at: index. - assoc - ifNil: [ - (self limit notNil and: [ self size >= self limit ]) - ifTrue: [ (ZnTooManyDictionaryEntries limit: self limit) signal ]. - self atNewIndex: index put: (Association key: key value: anObject) ] - ifNotNil: [ - assoc value: anObject ]. - ^ anObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/limit.st b/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/limit.st deleted file mode 100644 index 581fc0dd..00000000 --- a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/limit.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -limit - ^ limit ifNil: [ limit := ZnConstants maximumNumberOfDictionaryEntries ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/methodProperties.json deleted file mode 100644 index ae398d27..00000000 --- a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/methodProperties.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "add:" : "SvenVanCaekenberghe 1/2/2012 19:44", - "at:add:" : "SvenVanCaekenberghe 1/12/2011 11:19", - "at:put:" : "SvenVanCaekenberghe 1/2/2012 19:40", - "keysAndValuesDo:" : "SvenVanCaekenberghe 1/12/2011 11:10", - "limit" : "SvenVanCaekenberghe 1/2/2012 19:35", - "limit:" : "SvenVanCaekenberghe 1/2/2012 19:35", - "unlimited" : "SvenVanCaekenberghe 1/2/2012 19:36" } } diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/properties.json b/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/properties.json deleted file mode 100644 index 444e3c8b..00000000 --- a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Support", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 1/2/2012 19:41", - "instvars" : [ - "limit" ], - "name" : "ZnMultiValueDictionary", - "pools" : [ - ], - "super" : "Dictionary", - "type" : "normal" } 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 4d799cc6..83f55175 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 @@ -as yet unclassified +networking serverSocketOn: port interface: address ^ self default serverSocketOn: port interface: address \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/bufferSize.st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/bufferSize.st new file mode 100644 index 00000000..777f3dcb --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/bufferSize.st @@ -0,0 +1,3 @@ +accessing +bufferSize + ^ self class socketBufferSize \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/setSocketStreamParameters..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/setSocketStreamParameters..st index d286de6e..0b4a46aa 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/setSocketStreamParameters..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/setSocketStreamParameters..st @@ -4,5 +4,5 @@ setSocketStreamParameters: stream binary; shouldSignal: true; autoFlush: false; - bufferSize: self class socketBufferSize; - timeout: self class socketStreamTimeout. + bufferSize: self bufferSize; + timeout: self timeout. diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/shouldProxyUrl..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/shouldProxyUrl..st index 4873d5da..4d66d6fd 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/shouldProxyUrl..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/shouldProxyUrl..st @@ -2,6 +2,12 @@ proxy shouldProxyUrl: url "Even when a proxy is set, some URLs should not be proxied. There is no setting for this in the image. - We exclude localhost access from being proxied." - - ^ self isProxySet and: [ url isLocalHost not ] \ No newline at end of file + We exclude localhost and explicit exceptions from being proxied." + + ^ self isProxySet + and: [ + url isLocalHost not + or: [ + [ (NetworkSystemSettings isAnExceptionFor: url) not ] + on: MessageNotUnderstood + do: [ true ] ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToHostNamed.port..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToHostNamed.port..st deleted file mode 100644 index 3f6dc61b..00000000 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToHostNamed.port..st +++ /dev/null @@ -1,7 +0,0 @@ -private -socketStreamToHostNamed: hostName port: port - | stream | - stream := SocketStream openConnectionToHostNamed: hostName port: port. - self setSocketStreamParameters: stream. - ^ stream - \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToProxy.st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToProxy.st index 46cb9589..b42bb928 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToProxy.st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToProxy.st @@ -1,4 +1,4 @@ -private +proxy socketStreamToProxy | proxyUrl | "System settings do currently not support HTTPS proxies." diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToUrlDirectly..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToUrlDirectly..st index ee62884d..a69cd134 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToUrlDirectly..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/socketStreamToUrlDirectly..st @@ -1,9 +1,11 @@ public socketStreamToUrlDirectly: url - | stream | + | stream address | + address := NetNameResolver addressForName: url host timeout: self timeout. stream := (self streamClassForScheme: url scheme) - openConnectionToHostNamed: url host - port: url portOrDefault. + openConnectionToHost: address + port: url portOrDefault + timeout: self timeout. self setSocketStreamParameters: stream. - url isHttps ifTrue: [ stream connect ]. + (#(https wss) includes: url scheme) ifTrue: [ stream connect ]. ^ stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/streamClassForScheme..st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/streamClassForScheme..st index 19796d04..b77a47ee 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/streamClassForScheme..st +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/streamClassForScheme..st @@ -1,4 +1,4 @@ -private +accessing streamClassForScheme: scheme (#(http ws) includes: scheme) ifTrue: [ ^ self socketStreamClass ]. diff --git a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/timeout.st b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/timeout.st new file mode 100644 index 00000000..857f3b7d --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/instance/timeout.st @@ -0,0 +1,3 @@ +accessing +timeout + ^ self class socketStreamTimeout \ 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 5b46368a..9cf42fa8 100644 --- a/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnNetworkingUtils.class/methodProperties.json @@ -16,6 +16,7 @@ "socketStreamTimeout" : "SvenVanCaekenberghe 8/18/2011 22:19", "socketStreamToUrl:" : "SvenVanCaekenberghe 5/2/2011 22:40" }, "instance" : { + "bufferSize" : "SvenVanCaekenberghe 9/18/2012 09:30", "httpProxyPassword" : "SvenVanCaekenberghe 6/16/2011 22:54", "httpProxyPort" : "SvenVanCaekenberghe 6/16/2011 22:51", "httpProxyServer" : "SvenVanCaekenberghe 6/16/2011 22:54", @@ -29,13 +30,13 @@ "serverSocketOn:" : "SvenVanCaekenberghe 5/2/2011 22:41", "serverSocketOn:interface:" : "SvenVanCaekenberghe 3/12/2012 19:22", "setServerSocketOptions:" : "SvenVanCaekenberghe 5/2/2011 22:41", - "setSocketStreamParameters:" : "SvenVanCaekenberghe 5/2/2011 22:42", - "shouldProxyUrl:" : "SvenVanCaekenberghe 6/16/2011 22:38", + "setSocketStreamParameters:" : "SvenVanCaekenberghe 9/18/2012 09:30", + "shouldProxyUrl:" : "SvenVanCaekenberghe 12/24/2012 14:27", "socketStreamClass" : "SvenVanCaekenberghe 11/10/2011 13:47", "socketStreamClass:" : "SvenVanCaekenberghe 11/10/2011 13:15", "socketStreamOn:" : "SvenVanCaekenberghe 11/10/2011 13:16", - "socketStreamToHostNamed:port:" : "SvenVanCaekenberghe 8/18/2011 14:41", "socketStreamToProxy" : "SvenVanCaekenberghe 11/10/2011 13:30", "socketStreamToUrl:" : "SvenVanCaekenberghe 8/11/2011 19:37", - "socketStreamToUrlDirectly:" : "SvenVanCaekenberghe 11/10/2011 13:30", - "streamClassForScheme:" : "SvenVanCaekenberghe 7/19/2012 16:09" } } + "socketStreamToUrlDirectly:" : "SvenVanCaekenberghe 9/18/2012 09:36", + "streamClassForScheme:" : "SvenVanCaekenberghe 7/19/2012 16:09", + "timeout" : "SvenVanCaekenberghe 9/18/2012 09:30" } } diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/README.md b/repository/Zinc-HTTP.package/ZnNullEncoder.class/README.md deleted file mode 100644 index 122c7a5c..00000000 --- a/repository/Zinc-HTTP.package/ZnNullEncoder.class/README.md +++ /dev/null @@ -1,5 +0,0 @@ -I am ZnNullEncoder, a concrete subclass of ZnCharacterEncoder. -I perform no encoding or decoding at all for all characters with a code value below 256. -I can only be used for ASCII and Latin1 (ISO-8859-1). - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/class/handlesEncoding..st b/repository/Zinc-HTTP.package/ZnNullEncoder.class/class/handlesEncoding..st deleted file mode 100644 index 76d41d26..00000000 --- a/repository/Zinc-HTTP.package/ZnNullEncoder.class/class/handlesEncoding..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -handlesEncoding: string - "Return true when my instances handle the encoding described by string" - - ^ #( 'ascii' 'latin1' 'latin-1' 'iso-8859-1' ) includes: string \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnNullEncoder.class/methodProperties.json deleted file mode 100644 index 3521c186..00000000 --- a/repository/Zinc-HTTP.package/ZnNullEncoder.class/methodProperties.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "class" : { - "handlesEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:11", - "newForEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:19" }, - "instance" : { - "decodeBytes:" : "SvenVanCaekenberghe 5/3/2012 11:32", - "encodeString:" : "SvenVanCaekenberghe 5/3/2012 11:32", - "encodedByteCountFor:" : "SvenVanCaekenberghe 11/29/2010 21:17", - "encodedByteCountForString:" : "SvenVanCaekenberghe 5/3/2012 11:32", - "nextFromStream:" : "SvenVanCaekenberghe 1/4/2011 20:52", - "nextPut:toStream:" : "SvenVanCaekenberghe 1/25/2011 12:36" } } diff --git a/repository/Zinc-HTTP.package/ZnNullEncoder.class/properties.json b/repository/Zinc-HTTP.package/ZnNullEncoder.class/properties.json deleted file mode 100644 index 5f992dd0..00000000 --- a/repository/Zinc-HTTP.package/ZnNullEncoder.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Streaming", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 12/6/2010 12:53", - "instvars" : [ - ], - "name" : "ZnNullEncoder", - "pools" : [ - ], - "super" : "ZnCharacterEncoder", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/README.md b/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/README.md deleted file mode 100644 index 6125ae33..00000000 --- a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/README.md +++ /dev/null @@ -1,3 +0,0 @@ -ZnPercentEncodingWrong is signalled when a wrong percent encoding is encountered. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/class/string..st b/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/class/string..st deleted file mode 100644 index a9b22e24..00000000 --- a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/class/string..st +++ /dev/null @@ -1,5 +0,0 @@ -instance creation -string: string - ^ self new - string: string; - yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/instance/string..st b/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/instance/string..st deleted file mode 100644 index 879442d0..00000000 --- a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/instance/string..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -string: anObject - string := anObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/instance/string.st b/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/instance/string.st deleted file mode 100644 index f75c6933..00000000 --- a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/instance/string.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -string - ^ string \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/methodProperties.json deleted file mode 100644 index 6095658f..00000000 --- a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/methodProperties.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "class" : { - "string:" : "SvenVanCaekenberghe 2/28/2011 15:50" }, - "instance" : { - "string" : "SvenVanCaekenberghe 2/28/2011 15:49", - "string:" : "SvenVanCaekenberghe 2/28/2011 15:49" } } diff --git a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/properties.json b/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/properties.json deleted file mode 100644 index 8aed506e..00000000 --- a/repository/Zinc-HTTP.package/ZnPercentEncodingWrong.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Exceptions", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 2/28/2011 15:50", - "instvars" : [ - "string" ], - "name" : "ZnPercentEncodingWrong", - "pools" : [ - ], - "super" : "ZnParseError", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnPortNotANumber.class/properties.json b/repository/Zinc-HTTP.package/ZnPortNotANumber.class/properties.json deleted file mode 100644 index a4c27698..00000000 --- a/repository/Zinc-HTTP.package/ZnPortNotANumber.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Exceptions", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 2/28/2011 15:23", - "instvars" : [ - "port" ], - "name" : "ZnPortNotANumber", - "pools" : [ - ], - "super" : "ZnParseError", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/absoluteUrl.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/absoluteUrl.st new file mode 100644 index 00000000..aaf3aeb7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/absoluteUrl.st @@ -0,0 +1,5 @@ +accessing +absoluteUrl + ^ self host + ifNil: [ self url ] + ifNotNil: [ :hostUrl | self url inContextOf: hostUrl ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/host.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/host.st new file mode 100644 index 00000000..3698150a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/host.st @@ -0,0 +1,6 @@ +accessing +host + | host scheme | + host := self headers at: 'Host' ifAbsent: [ ^ nil ]. + scheme :=ZnCurrentServer value ifNil: [ #http ] ifNotNil: [ :server | server scheme ]. + ^ ZnUrl fromString: host defaultScheme: scheme \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/mergedFields.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/mergedFields.st new file mode 100644 index 00000000..6023a3e0 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/mergedFields.st @@ -0,0 +1,13 @@ +accessing +mergedFields + "Return a new ZnMultiValueDictionary containing all query fields, if any, + merged with all ZnApplicationFormUrlEncodedEntity fields, if any, + preserving multi values for identical keys" + + | fields | + fields := ZnMultiValueDictionary new. + self uri hasQuery + ifTrue: [ fields addAllMulti: self uri query ]. + (self contentType = ZnMimeType applicationFormUrlEncoded and: [ self hasEntity ]) + ifTrue: [ fields addAllMulti: self entity fields ]. + ^ fields \ 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 new file mode 100644 index 00000000..53539a0f --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/relativeUrl.st @@ -0,0 +1,3 @@ +accessing +relativeUrl + ^ self url asRelativeUrl \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/session.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/session.st new file mode 100644 index 00000000..83fdca13 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/session.st @@ -0,0 +1,12 @@ +accessing +session + "Return the current server session. + If necessary a new session is created. + This only returns a value during #handleRequest:" + + ^ super session + ifNil: [ + | session | + session := self server sessionFor: self. + ZnCurrentServerSession value: session. + session ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnRequest.class/instance/wantsConnectionClose.st b/repository/Zinc-HTTP.package/ZnRequest.class/instance/wantsConnectionClose.st index c3f3839e..970399b4 100644 --- a/repository/Zinc-HTTP.package/ZnRequest.class/instance/wantsConnectionClose.st +++ b/repository/Zinc-HTTP.package/ZnRequest.class/instance/wantsConnectionClose.st @@ -1,4 +1,8 @@ testing wantsConnectionClose + "Return if the HTTP protocol should close the connection after processing the receiver. + Overwritten to return true in case of the presense of an explicit connection close request header + or the absense of a keep alive header when using the old HTTP 1.0 protocol." + ^ self isConnectionClose or: [ self isHttp10 and: [ self isConnectionKeepAlive not ] ] \ 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 5ba11e34..57802535 100644 --- a/repository/Zinc-HTTP.package/ZnRequest.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnRequest.class/methodProperties.json @@ -8,18 +8,23 @@ "post:" : "SvenVanCaekenberghe 9/21/2010 11:08", "put:" : "SvenVanCaekenberghe 9/21/2010 11:08" }, "instance" : { + "absoluteUrl" : "SvenVanCaekenberghe 1/7/2013 09:06", "accept" : "SvenVanCaekenberghe 8/17/2011 16:28", "authorization" : "SvenVanCaekenberghe 2/23/2012 22:05", "basicAuthentication" : "SvenVanCaekenberghe 2/23/2012 22:12", "cookies" : "SvenVanCaekenberghe 8/30/2011 22:41", + "host" : "SvenVanCaekenberghe 1/7/2013 11:44", "isHttp10" : "SvenVanCaekenberghe 12/14/2010 14:33", "isHttp11" : "SvenVanCaekenberghe 12/14/2010 14:33", + "mergedFields" : "SvenVanCaekenberghe 1/7/2013 10:52", "method" : "SvenVanCaekenberghe 9/8/2010 10:35", "method:" : "SvenVanCaekenberghe 7/27/2011 14:45", "printOn:" : "SvenVanCaekenberghe 12/14/2010 11:00", "readHeaderFrom:" : "SvenVanCaekenberghe 9/21/2010 11:33", + "relativeUrl" : "SvenVanCaekenberghe 1/7/2013 09:07", "requestLine" : "SvenVanCaekenberghe 9/6/2010 21:06", "requestLine:" : "SvenVanCaekenberghe 9/6/2010 21:06", + "session" : "SvenVanCaekenberghe 11/10/2012 19:04", "setAccept:" : "SvenVanCaekenberghe 9/7/2010 20:00", "setAcceptEncodingGzip" : "SvenVanCaekenberghe 9/27/2010 19:28", "setAuthorization:" : "SvenVanCaekenberghe 2/23/2012 22:04", @@ -29,5 +34,5 @@ "uri" : "SvenVanCaekenberghe 9/8/2010 10:36", "url" : "SvenVanCaekenberghe 9/21/2010 21:48", "url:" : "SvenVanCaekenberghe 7/27/2011 14:44", - "wantsConnectionClose" : "SvenVanCaekenberghe 12/14/2010 14:33", + "wantsConnectionClose" : "SvenVanCaekenberghe 8/20/2012 16:09", "writeOn:" : "SvenVanCaekenberghe 12/14/2010 11:36" } } diff --git a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/uri..st b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/uri..st index 5a8f54c0..653ba7ed 100644 --- a/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/uri..st +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/instance/uri..st @@ -1,3 +1,4 @@ accessing uri: anURI - uri := anURI asZnUrl \ No newline at end of file + uri := anURI asZnUrl. + uri enforceKnownScheme \ 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 20d2c299..797c11c1 100644 --- a/repository/Zinc-HTTP.package/ZnRequestLine.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnRequestLine.class/methodProperties.json @@ -12,7 +12,7 @@ "printOn:" : "SvenVanCaekenberghe 8/18/2011 14:34", "readFrom:" : "SvenVanCaekenberghe 9/27/2010 19:25", "uri" : "SvenVanCaekenberghe 9/6/2010 13:45", - "uri:" : "SvenVanCaekenberghe 2/28/2011 14:25", + "uri:" : "SvenVanCaekenberghe 1/30/2013 17:19", "uriPathQueryFragment" : "SvenVanCaekenberghe 1/4/2011 13:56", "version" : "SvenVanCaekenberghe 9/6/2010 13:45", "version:" : "DamienPollet 8/4/2011 14:04", diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/class/badRequest..st b/repository/Zinc-HTTP.package/ZnResponse.class/class/badRequest..st index 5357245f..c4e95390 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/class/badRequest..st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/class/badRequest..st @@ -1,7 +1,7 @@ instance creation badRequest: request ^ self new - statusLine: (ZnStatusLine badRequest); + statusLine: ZnStatusLine badRequest; headers: ZnHeaders defaultResponseHeaders; - entity: (ZnEntity text: 'Bad Request ', request method, ' ', request uri pathQueryFragmentPrintString, String crlf); + entity: (ZnEntity textCRLF: 'Bad Request ' , request method , ' ' , request uri pathQueryFragmentPrintString); yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/class/created..st b/repository/Zinc-HTTP.package/ZnResponse.class/class/created..st index 662261d9..3f616a68 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/class/created..st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/class/created..st @@ -1,10 +1,10 @@ instance creation created: url | location | - location := url asZnUrl pathQueryFragmentPrintString. + location := url asString. ^ self new - statusLine: (ZnStatusLine created); + statusLine: ZnStatusLine created; headers: ZnHeaders defaultResponseHeaders; setLocation: location; - entity: (ZnEntity text: 'Created ', location, String crlf); + entity: (ZnEntity textCRLF: 'Created ' , location); yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/class/methodNotAllowed..st b/repository/Zinc-HTTP.package/ZnResponse.class/class/methodNotAllowed..st index 23e45bca..1cb6d6ee 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/class/methodNotAllowed..st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/class/methodNotAllowed..st @@ -1,7 +1,7 @@ instance creation methodNotAllowed: request ^ self new - statusLine: (ZnStatusLine methodNotAllowed); + statusLine: ZnStatusLine methodNotAllowed; headers: ZnHeaders defaultResponseHeaders; - entity: (ZnEntity text: 'Method Not Allowed ', request method, ' ', request uri pathQueryFragmentPrintString, String crlf); + entity: (ZnEntity textCRLF: 'Method Not Allowed ' , request method , ' ' , request uri pathQueryFragmentPrintString); yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/class/notFound..st b/repository/Zinc-HTTP.package/ZnResponse.class/class/notFound..st index 3003c62f..37d858ff 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/class/notFound..st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/class/notFound..st @@ -1,7 +1,7 @@ instance creation notFound: url ^ self new - statusLine: (ZnStatusLine notFound); + statusLine: ZnStatusLine notFound; headers: ZnHeaders defaultResponseHeaders; - entity: (ZnEntity text: 'Not Found ', url asZnUrl pathQueryFragmentPrintString, String crlf); + entity: (ZnEntity textCRLF: 'Not Found ' , url asZnUrl pathQueryFragmentPrintString); yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/class/ok..st b/repository/Zinc-HTTP.package/ZnResponse.class/class/ok..st index cd3f5d03..be6c4a41 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/class/ok..st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/class/ok..st @@ -1,7 +1,7 @@ instance creation ok: entity ^ self new - statusLine: (ZnStatusLine ok); + statusLine: ZnStatusLine ok; headers: ZnHeaders defaultResponseHeaders; entity: entity; yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/class/redirect..st b/repository/Zinc-HTTP.package/ZnResponse.class/class/redirect..st index 8807fb2d..0c17d60f 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/class/redirect..st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/class/redirect..st @@ -1,10 +1,10 @@ instance creation redirect: url | location | - location := url asZnUrl pathQueryFragmentPrintString. + location := url asString. ^ self new - statusLine: (ZnStatusLine redirect); + statusLine: ZnStatusLine redirect; headers: ZnHeaders defaultResponseHeaders; setLocation: location; - entity: (ZnEntity text: 'Redirect ', location, String crlf); + entity: (ZnEntity textCRLF: 'Redirect ' , location); yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/class/serverError..st b/repository/Zinc-HTTP.package/ZnResponse.class/class/serverError..st index 724bf609..a1ca9f1e 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/class/serverError..st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/class/serverError..st @@ -1,7 +1,7 @@ instance creation serverError: string ^ self new - statusLine: (ZnStatusLine internalServerError); + statusLine: ZnStatusLine internalServerError; headers: ZnHeaders defaultResponseHeaders; - entity: (ZnEntity text: string, String crlf); + entity: (ZnEntity textCRLF: string); yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/class/unauthorized..st b/repository/Zinc-HTTP.package/ZnResponse.class/class/unauthorized..st index 09198953..0355e58f 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/class/unauthorized..st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/class/unauthorized..st @@ -1,8 +1,8 @@ instance creation unauthorized: authString ^ self new - statusLine: (ZnStatusLine unauthorized); + statusLine: ZnStatusLine unauthorized; headers: ZnHeaders defaultResponseHeaders; setWWWAuthenticate: authString; - entity: (ZnEntity text: 'Unauthorized', String crlf); + entity: (ZnEntity textCRLF: 'Unauthorized'); yourself \ 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 new file mode 100644 index 00000000..79587d9b --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/isNotFound.st @@ -0,0 +1,3 @@ +testing +isNotFound + ^ self code = 404 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/isRedirect.st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/isRedirect.st index 28bcc480..1e6de099 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/instance/isRedirect.st +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/isRedirect.st @@ -1,3 +1,3 @@ testing isRedirect - ^ #(301 302) includes: self code \ No newline at end of file + ^ #(301 302 303 307) includes: self code \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnResponse.class/instance/useConnection..st b/repository/Zinc-HTTP.package/ZnResponse.class/instance/useConnection..st new file mode 100644 index 00000000..32550dd7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnResponse.class/instance/useConnection..st @@ -0,0 +1,4 @@ +accessing +useConnection: connection + "Hook method that can be overwritten to give subclasses the chance to + keep using connection in the current thread/process after the server wrote the response" \ 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 f0956b7d..f430aac9 100644 --- a/repository/Zinc-HTTP.package/ZnResponse.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnResponse.class/methodProperties.json @@ -1,15 +1,15 @@ { "class" : { - "badRequest:" : "NickAger 5/10/2011 09:00", - "created:" : "NickAger 5/10/2011 09:01", - "methodNotAllowed:" : "SvenVanCaekenberghe 8/18/2011 12:44", - "notFound:" : "NickAger 5/10/2011 08:59", + "badRequest:" : "SvenVanCaekenberghe 1/6/2013 22:47", + "created:" : "SvenVanCaekenberghe 1/6/2013 22:47", + "methodNotAllowed:" : "SvenVanCaekenberghe 1/6/2013 22:47", + "notFound:" : "SvenVanCaekenberghe 1/6/2013 22:48", "notModified" : "PaulDeBruicker 5/12/2012 09:54", - "ok:" : "NickAger 5/10/2011 09:01", - "redirect:" : "NickAger 5/10/2011 09:01", - "serverError:" : "NickAger 5/10/2011 09:02", + "ok:" : "SvenVanCaekenberghe 1/6/2013 22:39", + "redirect:" : "SvenVanCaekenberghe 1/6/2013 22:48", + "serverError:" : "SvenVanCaekenberghe 1/6/2013 22:48", "unauthorized" : "MattKennedy 9/30/2010 15:46", - "unauthorized:" : "NickAger 5/10/2011 09:03" }, + "unauthorized:" : "SvenVanCaekenberghe 1/6/2013 22:48" }, "instance" : { "addCookie:" : "SvenVanCaekenberghe 8/30/2011 21:44", "code" : "SvenVanCaekenberghe 9/16/2010 20:44", @@ -20,8 +20,9 @@ "isError" : "SvenVanCaekenberghe 4/20/2012 10:26", "isInformational" : "SvenVanCaekenberghe 6/28/2011 10:28", "isNoContent" : "SvenVanCaekenberghe 6/28/2011 10:27", + "isNotFound" : "SvenVanCaekenberghe 12/10/2012 20:05", "isNotModified" : "SvenVanCaekenberghe 3/21/2011 10:45", - "isRedirect" : "SvenVanCaekenberghe 1/12/2011 10:03", + "isRedirect" : "SvenVanCaekenberghe 9/27/2012 21:31", "isSuccess" : "SvenVanCaekenberghe 9/28/2010 12:38", "location" : "SvenVanCaekenberghe 1/12/2011 13:31", "printOn:" : "SvenVanCaekenberghe 12/14/2010 12:54", @@ -33,5 +34,6 @@ "status" : "SvenVanCaekenberghe 9/7/2010 18:35", "statusLine" : "SvenVanCaekenberghe 9/6/2010 22:36", "statusLine:" : "SvenVanCaekenberghe 9/6/2010 22:36", + "useConnection:" : "SvenVanCaekenberghe 8/20/2012 16:55", "writeOn:" : "SvenVanCaekenberghe 12/14/2010 11:36", "wwwAuthenticate" : "SvenVanCaekenberghe 1/12/2011 13:28" } } diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/alwaysRestart..st b/repository/Zinc-HTTP.package/ZnServer.class/class/alwaysRestart..st new file mode 100644 index 00000000..a13d69e2 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/alwaysRestart..st @@ -0,0 +1,5 @@ +accessing +alwaysRestart: boolean + "Set if managed servers should always restart on image save, as opposed to only when quiting." + + ^ AlwaysRestart := boolean \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/alwaysRestart.st b/repository/Zinc-HTTP.package/ZnServer.class/class/alwaysRestart.st new file mode 100644 index 00000000..8438c51d --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/alwaysRestart.st @@ -0,0 +1,3 @@ +accessing +alwaysRestart + ^ AlwaysRestart ifNil: [ AlwaysRestart := true ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/initialize.st b/repository/Zinc-HTTP.package/ZnServer.class/class/initialize.st index 562e7fd0..496f753f 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/class/initialize.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/initialize.st @@ -1,5 +1,6 @@ class initialization initialize ManagedServers := IdentitySet new. + AlwaysRestart := true. Smalltalk addToStartUpList: self. Smalltalk addToShutDownList: self \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/shutDown..st b/repository/Zinc-HTTP.package/ZnServer.class/class/shutDown..st new file mode 100644 index 00000000..1d30a41b --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/shutDown..st @@ -0,0 +1,7 @@ +system startup +shutDown: quiting + "Our system shutDown hook: stop all servers we manage" + + (quiting or: [ self alwaysRestart ]) + ifTrue: [ + self managedServers do: [ :each | each stop: false ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/shutDown.st b/repository/Zinc-HTTP.package/ZnServer.class/class/shutDown.st deleted file mode 100644 index 36e8ab8a..00000000 --- a/repository/Zinc-HTTP.package/ZnServer.class/class/shutDown.st +++ /dev/null @@ -1,5 +0,0 @@ -system startup -shutDown - "Our system shutDown hook: stop all servers we manage" - - self managedServers do: [ :each | each stop: false ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/startUp..st b/repository/Zinc-HTTP.package/ZnServer.class/class/startUp..st new file mode 100644 index 00000000..e14e5623 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/class/startUp..st @@ -0,0 +1,9 @@ +system startup +startUp: resuming + "Our system startUp hook: start all servers we manage. + We do this using deferred startup actions to allow normal error handling." + + (resuming or: [ self alwaysRestart ]) + ifTrue: [ + Smalltalk addDeferredStartupAction: [ + self managedServers do: [ :each | each start ] ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/class/startUp.st b/repository/Zinc-HTTP.package/ZnServer.class/class/startUp.st deleted file mode 100644 index 15f20797..00000000 --- a/repository/Zinc-HTTP.package/ZnServer.class/class/startUp.st +++ /dev/null @@ -1,5 +0,0 @@ -system startup -startUp - "Our system startUp hook: start all servers we manage" - - self managedServers do: [ :each | each start ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticator..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/authenticator..st similarity index 84% rename from repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticator..st rename to repository/Zinc-HTTP.package/ZnServer.class/instance/authenticator..st index f102c723..34a4d4d6 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticator..st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/authenticator..st @@ -1,8 +1,8 @@ -accessing +options authenticator: object "Set the object that will be sent #authenticateRequest:do: to authenticate or refuse the requests. Can be nil. When authentication succeeds, the block should be executed, when authentication fails, a appropriate response should be returned" - authenticator := object \ No newline at end of file + self optionAt: #authenticator put: object \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticator.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/authenticator.st similarity index 85% rename from repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticator.st rename to repository/Zinc-HTTP.package/ZnServer.class/instance/authenticator.st index 3f5226fc..213a0d4f 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticator.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/authenticator.st @@ -1,4 +1,4 @@ -accessing +options authenticator "Return the optional authenticator, the object that will be sent #authenticateRequest:do: @@ -7,4 +7,4 @@ authenticator when authentication fails, a appropriate response should be returned. If there is no authenticator, all requests will pass" - ^ authenticator \ No newline at end of file + ^ self optionAt: #authenticator ifAbsent: [ nil ] \ 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 c54d291d..74224c24 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/bindingAddress..st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/bindingAddress..st @@ -1,8 +1,8 @@ -accessing +options bindingAddress: address "Set the interface address we will be listening on. Specify nil to listen on all/any interfaces, the default. Address must be a 4 element ByteArray, like #[127 0 0 1]. Cannot be changed after the server is already running." - self subclassResponsibility \ No newline at end of file + self optionAt: #bindAddress put: address \ 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 92b1db0e..52945902 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/bindingAddress.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/bindingAddress.st @@ -1,6 +1,6 @@ -accessing +options 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 subclassResponsibility \ 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 new file mode 100644 index 00000000..7fec49ac --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/debugMode..st @@ -0,0 +1,7 @@ +options +debugMode: boolean + "Set my debug mode, the default being false. + In debug mode, Smalltalk Error during #handleRequest: will raise a Debugger. + When not in debug mode, a Smalltalk Error during #handleRequest: will result in an HTTP Server Error response." + + ^ self optionAt: #debugMode put: boolean \ 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 new file mode 100644 index 00000000..57193561 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/debugMode.st @@ -0,0 +1,5 @@ +options +debugMode + "Return whether we are in debug mode, the default is false." + + ^ self optionAt: #debugMode ifAbsent: [ false ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/delegate..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/delegate..st similarity index 75% rename from repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/delegate..st rename to repository/Zinc-HTTP.package/ZnServer.class/instance/delegate..st index 55221cb5..871feb99 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/delegate..st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/delegate..st @@ -1,6 +1,6 @@ -accessing +options delegate: object "Set the delegate to object. Can be nil. This will be sent #handleRequest: to handle a request and produce a response" - delegate := object \ No newline at end of file + self optionAt: #delegate put: object \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/delegate.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/delegate.st new file mode 100644 index 00000000..3a77faf0 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/delegate.st @@ -0,0 +1,7 @@ +options +delegate + "Return the optional delegate, + the object that will be sent #handleRequest: to handle a request and produce a response. + The default delegate is ZnDefaultServerDelegate" + + ^ self optionAt: #delegate ifAbsentPut: [ ZnDefaultServerDelegate new ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/localUrl.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/localUrl.st index b5b25c4c..fd8978d1 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/localUrl.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/localUrl.st @@ -3,7 +3,7 @@ localUrl "Return a ZnUrl to access me." ^ ZnUrl new - scheme: #http; + scheme: self scheme; host: NetNameResolver loopBackName; port: self port; yourself \ 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 new file mode 100644 index 00000000..519d747b --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/logServerErrorDetails..st @@ -0,0 +1,5 @@ +options +logServerErrorDetails: boolean + "Set whether we log server error details including a short strack trace, the default is true." + + self optionAt: #debugMode put: boolean \ 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 new file mode 100644 index 00000000..5d78ca42 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/logServerErrorDetails.st @@ -0,0 +1,5 @@ +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 diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/maximumEntitySize..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/maximumEntitySize..st new file mode 100644 index 00000000..20dbdc23 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/maximumEntitySize..st @@ -0,0 +1,5 @@ +options +maximumEntitySize: integer + "Set the maximum entity size in bytes that I will read from a stream before signalling ZnEntityTooLarge" + + ^ self optionAt: #maximumEntitySize put: integer \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/maximumEntitySize.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/maximumEntitySize.st new file mode 100644 index 00000000..9a1ba7cf --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/maximumEntitySize.st @@ -0,0 +1,5 @@ +options +maximumEntitySize + "Return the maximum entity size in bytes that I will read from a stream before signalling ZnEntityTooLarge" + + ^ self optionAt: #maximumEntitySize ifAbsent: [ ZnConstants defaultMaximumEntitySize ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/optionAt.ifAbsent..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/optionAt.ifAbsent..st new file mode 100644 index 00000000..27db9a24 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/optionAt.ifAbsent..st @@ -0,0 +1,8 @@ +accessing +optionAt: key ifAbsent: block + "Return my option/settings stored under key. + Execute block if I have no such option/setting. + This is a generic interface, see my options protocol for specific usages." + + options ifNil: [ ^ block value ]. + ^ options at: key ifAbsent: block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/optionAt.ifAbsentPut..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/optionAt.ifAbsentPut..st new file mode 100644 index 00000000..a6bc21bb --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/optionAt.ifAbsentPut..st @@ -0,0 +1,7 @@ +accessing +optionAt: key ifAbsentPut: block + "Return my option/settings stored under key. + If I have no such option/setting, store the result of evaluating block as new value and return it. + This is a generic interface, see my options protocol for specific usages." + + ^ options at: key ifAbsentPut: block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/optionAt.put..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/optionAt.put..st new file mode 100644 index 00000000..b1166be3 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/optionAt.put..st @@ -0,0 +1,7 @@ +accessing +optionAt: key put: value + "Set my option/setting identified by key to be value. + This is a generic interface, see my options protocol for specific usages." + + options ifNil: [ options := Dictionary new ]. + options at: key put: value \ 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 d5f41d56..c4c57eba 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/port..st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/port..st @@ -1,6 +1,8 @@ -accessing +options port: integer "Set the port number we will be listening on. Cannot be changed after the server is already running." - self subclassResponsibility \ No newline at end of file + (self isRunning and: [ self port ~= integer ]) + ifTrue: [ self error: 'Stop me before changing my port' ]. + self optionAt: #port put: integer \ 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 5edae2b7..e7f0d0c4 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/instance/port.st +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/port.st @@ -1,5 +1,5 @@ -accessing +options port "Return the integer port number we are (or will be) listening on" - self subclassResponsibility \ 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/reader..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/reader..st new file mode 100644 index 00000000..8a20219c --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/reader..st @@ -0,0 +1,5 @@ +options +reader: block + "Customize how entities are read from a stream, see #reader" + + self optionAt: #reader put: block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/reader.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/reader.st new file mode 100644 index 00000000..69d5ea2e --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/reader.st @@ -0,0 +1,5 @@ +options +reader + "Return a block that when given a stream reads an entity from it." + + ^ self optionAt: #reader ifAbsentPut: [ [ :stream | ZnRequest readFrom: stream ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/route..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/route..st new file mode 100644 index 00000000..2e55faad --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/route..st @@ -0,0 +1,8 @@ +options +route: object + "Set the route of the server. + This is a short identification string to be appended at the end of server session ids, separated by a dot. + Routes are used by load balancers and proxies to correctly implement session affiinity or stickyness. + The default is nil, meaning that no route has to be appended." + + self optionAt: #route put: object \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/route.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/route.st new file mode 100644 index 00000000..a8a63dd2 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/route.st @@ -0,0 +1,8 @@ +options +route + "Return the route of the server. + This is a short identification string to be appended at the end of server session ids, separated by a dot. + Routes are used by load balancers and proxies to correctly implement session affiinity or stickyness. + The default is nil, meaning that no route has to be appended." + + ^ self optionAt: #route ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/scheme.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/scheme.st new file mode 100644 index 00000000..87569e5d --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/scheme.st @@ -0,0 +1,3 @@ +accessing +scheme + ^ #http \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/serverUrl..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/serverUrl..st new file mode 100644 index 00000000..11bbdf4a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/serverUrl..st @@ -0,0 +1,7 @@ +options +serverUrl: urlObject + "Set the explicit external server URL to urlObject. Defaults to nil. + urlObject should be a ZnUrl or a String that parses correctly to one. + See also #url." + + ^ self optionAt: #serverUrl put: urlObject asZnUrl \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/serverUrl.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/serverUrl.st new file mode 100644 index 00000000..02de727c --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/serverUrl.st @@ -0,0 +1,5 @@ +options +serverUrl + "Return the explicitely set external server URL, if any. Defaults to nil." + + ^ self optionAt: #serverUrl ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/sessionFor..st b/repository/Zinc-HTTP.package/ZnServer.class/instance/sessionFor..st new file mode 100644 index 00000000..ee16c34d --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/sessionFor..st @@ -0,0 +1,5 @@ +accessing +sessionFor: request + "Bind an existing session to request or create a new session" + + ^ self sessionManager sessionFor: request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/sessionManager.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/sessionManager.st new file mode 100644 index 00000000..58558742 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/sessionManager.st @@ -0,0 +1,5 @@ +accessing +sessionManager + "Return my session manager" + + ^ sessionManager ifNil: [ sessionManager := ZnServerSessionManager new ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServer.class/instance/url.st b/repository/Zinc-HTTP.package/ZnServer.class/instance/url.st new file mode 100644 index 00000000..2241061b --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServer.class/instance/url.st @@ -0,0 +1,9 @@ +accessing +url + "Return the base external URL (a new ZnUrl instance) to access me. + This defaults to #localUrl but can be set explicitely using the #serverUrl option. + Missing elements from #serverUrl are merged in from #localUrl." + + ^ self serverUrl + ifNil: [ self localUrl ] + ifNotNil: [ :serverUrl | serverUrl inContextOf: self localUrl ] \ 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 7d1ba51c..13cc0214 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnServer.class/methodProperties.json @@ -1,30 +1,55 @@ { "class" : { + "alwaysRestart" : "SvenVanCaekenberghe 9/18/2012 13:49", + "alwaysRestart:" : "SvenVanCaekenberghe 9/18/2012 13:37", "default" : "SvenVanCaekenberghe 12/22/2011 11:27", "defaultOn:" : "SvenVanCaekenberghe 12/22/2011 12:03", "defaultServerClass" : "SvenVanCaekenberghe 3/4/2012 20:05", - "initialize" : "SvenVanCaekenberghe 6/19/2011 12:00", + "initialize" : "SvenVanCaekenberghe 9/18/2012 13:49", "managedServers" : "SvenVanCaekenberghe 6/19/2011 12:17", "on:" : "SvenVanCaekenberghe 12/22/2011 11:28", "register:" : "SvenVanCaekenberghe 6/19/2011 12:17", - "shutDown" : "SvenVanCaekenberghe 12/22/2011 12:22", + "shutDown:" : "SvenVanCaekenberghe 9/18/2012 13:38", "startDefaultOn:" : "SvenVanCaekenberghe 12/22/2011 12:04", "startOn:" : "SvenVanCaekenberghe 12/22/2011 11:30", - "startUp" : "SvenVanCaekenberghe 6/19/2011 12:18", + "startUp:" : "SvenVanCaekenberghe 9/29/2012 20:51", "stopDefault" : "SvenVanCaekenberghe 12/22/2011 11:29", "unregister:" : "SvenVanCaekenberghe 8/18/2011 14:10" }, "instance" : { - "bindingAddress" : "SvenVanCaekenberghe 4/13/2012 13:13", - "bindingAddress:" : "SvenVanCaekenberghe 4/13/2012 13:15", + "authenticator" : "SvenVanCaekenberghe 9/5/2012 11:17", + "authenticator:" : "SvenVanCaekenberghe 9/5/2012 11:17", + "bindingAddress" : "SvenVanCaekenberghe 9/5/2012 10:07", + "bindingAddress:" : "SvenVanCaekenberghe 9/5/2012 10:07", + "debugMode" : "SvenVanCaekenberghe 1/31/2013 11:44", + "debugMode:" : "SvenVanCaekenberghe 1/31/2013 11:44", + "delegate" : "SvenVanCaekenberghe 9/5/2012 11:17", + "delegate:" : "SvenVanCaekenberghe 9/5/2012 11:17", "isListening" : "SvenVanCaekenberghe 12/15/2010 21:22", "isRunning" : "SvenVanCaekenberghe 12/15/2010 15:26", - "localUrl" : "SvenVanCaekenberghe 3/12/2012 20:34", - "port" : "SvenVanCaekenberghe 12/15/2010 15:25", - "port:" : "SvenVanCaekenberghe 12/15/2010 15:25", + "localUrl" : "SvenVanCaekenberghe 1/4/2013 13:15", + "logServerErrorDetails" : "SvenVanCaekenberghe 1/31/2013 11:44", + "logServerErrorDetails:" : "SvenVanCaekenberghe 1/31/2013 11:45", + "maximumEntitySize" : "SvenVanCaekenberghe 9/5/2012 12:47", + "maximumEntitySize:" : "SvenVanCaekenberghe 9/5/2012 12:47", + "optionAt:ifAbsent:" : "SvenVanCaekenberghe 9/5/2012 09:15", + "optionAt:ifAbsentPut:" : "SvenVanCaekenberghe 9/5/2012 11:15", + "optionAt:put:" : "SvenVanCaekenberghe 9/5/2012 09:15", + "port" : "SvenVanCaekenberghe 9/5/2012 09:19", + "port:" : "SvenVanCaekenberghe 9/5/2012 09:18", "process" : "SvenVanCaekenberghe 12/15/2010 15:25", + "reader" : "SvenVanCaekenberghe 9/5/2012 11:17", + "reader:" : "SvenVanCaekenberghe 9/5/2012 11:17", "register" : "SvenVanCaekenberghe 6/19/2011 12:00", + "route" : "SvenVanCaekenberghe 12/31/2012 16:58", + "route:" : "SvenVanCaekenberghe 12/31/2012 16:57", + "scheme" : "SvenVanCaekenberghe 1/4/2013 13:15", "serverSocket" : "SvenVanCaekenberghe 12/15/2010 15:25", + "serverUrl" : "SvenVanCaekenberghe 1/4/2013 13:40", + "serverUrl:" : "SvenVanCaekenberghe 1/4/2013 13:40", + "sessionFor:" : "SvenVanCaekenberghe 11/10/2012 19:17", + "sessionManager" : "SvenVanCaekenberghe 11/10/2012 19:17", "start" : "SvenVanCaekenberghe 12/15/2010 15:25", "stop" : "SvenVanCaekenberghe 12/22/2011 12:19", "stop:" : "SvenVanCaekenberghe 12/22/2011 12:19", - "unregister" : "SvenVanCaekenberghe 6/19/2011 12:00" } } + "unregister" : "SvenVanCaekenberghe 6/19/2011 12:00", + "url" : "SvenVanCaekenberghe 1/4/2013 13:52" } } diff --git a/repository/Zinc-HTTP.package/ZnServer.class/properties.json b/repository/Zinc-HTTP.package/ZnServer.class/properties.json index 23c2ae0f..5f2b233b 100644 --- a/repository/Zinc-HTTP.package/ZnServer.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnServer.class/properties.json @@ -3,10 +3,12 @@ "classinstvars" : [ ], "classvars" : [ + "AlwaysRestart", "ManagedServers" ], "commentStamp" : "SvenVanCaekenberghe 12/22/2011 12:01", "instvars" : [ - ], + "options", + "sessionManager" ], "name" : "ZnServer", "pools" : [ ], diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/README.md b/repository/Zinc-HTTP.package/ZnServerSession.class/README.md new file mode 100644 index 00000000..965840dd --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/README.md @@ -0,0 +1,6 @@ +I am ZnServerSession. +I represent an HTTP session in the context of a ZnServer. + +To get a reference to the current session, send #session to a ZnMessage (request or response). + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/age.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/age.st new file mode 100644 index 00000000..b677eeea --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/age.st @@ -0,0 +1,3 @@ +accessing +age + ^ DateAndTime now - created \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt..st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt..st new file mode 100644 index 00000000..a2eb5f39 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt..st @@ -0,0 +1,3 @@ +accessing +attributeAt: key + ^ attributes at: key \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt.ifAbsent..st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt.ifAbsent..st new file mode 100644 index 00000000..74baa5fc --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt.ifAbsent..st @@ -0,0 +1,3 @@ +accessing +attributeAt: key ifAbsent: block + ^ attributes at: key ifAbsent: block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt.ifAbsentPut..st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt.ifAbsentPut..st new file mode 100644 index 00000000..5c4b9e3d --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt.ifAbsentPut..st @@ -0,0 +1,3 @@ +accessing +attributeAt: key ifAbsentPut: block + ^ attributes at: key ifAbsentPut: block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt.put..st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt.put..st new file mode 100644 index 00000000..1614b43b --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeAt.put..st @@ -0,0 +1,3 @@ +accessing +attributeAt: key put: value + ^ attributes at: key put: value \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeKeys.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeKeys.st new file mode 100644 index 00000000..c42a7b7c --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/attributeKeys.st @@ -0,0 +1,3 @@ +accessing +attributeKeys + ^ attributes keys \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/created.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/created.st new file mode 100644 index 00000000..dd73b5c9 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/created.st @@ -0,0 +1,3 @@ +accessing +created + ^ created \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/id..st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/id..st new file mode 100644 index 00000000..a9a33378 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/id..st @@ -0,0 +1,3 @@ +initialize-release +id: anObject + id := anObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/id.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/id.st new file mode 100644 index 00000000..41241a32 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/id.st @@ -0,0 +1,3 @@ +accessing +id + ^ id \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/inactivity.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/inactivity.st new file mode 100644 index 00000000..034632b6 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/inactivity.st @@ -0,0 +1,3 @@ +accessing +inactivity + ^ DateAndTime now - modified \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/initialize.st new file mode 100644 index 00000000..eb93c3a4 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + super initialize. + attributes := SmallDictionary new. + created := modified := DateAndTime now \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/isValid.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/isValid.st new file mode 100644 index 00000000..c20be312 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/isValid.st @@ -0,0 +1,3 @@ +testing +isValid + ^ self inactivity < 1 hour \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/modified.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/modified.st new file mode 100644 index 00000000..03bca2bd --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/modified.st @@ -0,0 +1,3 @@ +accessing +modified + ^ modified \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/printOn..st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/printOn..st new file mode 100644 index 00000000..c0f5917f --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/printOn..st @@ -0,0 +1,9 @@ +printing +printOn: stream + super printOn: stream. + id + ifNotNil: [ + stream + nextPut: $(; + print: id; + nextPut: $) ] \ 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 new file mode 100644 index 00000000..1b8185c7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/removeAttribute..st @@ -0,0 +1,3 @@ +accessing +removeAttribute: key + attributes removeKey: key ifAbsent: [ ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/instance/touch.st b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/touch.st new file mode 100644 index 00000000..b3159418 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/instance/touch.st @@ -0,0 +1,3 @@ +accessing +touch + modified := DateAndTime now \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnServerSession.class/methodProperties.json new file mode 100644 index 00000000..786a7e56 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/methodProperties.json @@ -0,0 +1,20 @@ +{ + "class" : { + }, + "instance" : { + "age" : "SvenVanCaekenberghe 11/11/2012 20:06", + "attributeAt:" : "SvenVanCaekenberghe 11/10/2012 17:28", + "attributeAt:ifAbsent:" : "SvenVanCaekenberghe 11/10/2012 17:28", + "attributeAt:ifAbsentPut:" : "SvenVanCaekenberghe 12/7/2012 12:21", + "attributeAt:put:" : "SvenVanCaekenberghe 11/10/2012 17:29", + "attributeKeys" : "SvenVanCaekenberghe 12/20/2012 23:53", + "created" : "SvenVanCaekenberghe 11/11/2012 08:01", + "id" : "SvenVanCaekenberghe 11/10/2012 17:27", + "id:" : "SvenVanCaekenberghe 11/10/2012 17:27", + "inactivity" : "SvenVanCaekenberghe 11/11/2012 20:08", + "initialize" : "SvenVanCaekenberghe 11/11/2012 08:01", + "isValid" : "SvenVanCaekenberghe 11/11/2012 20:08", + "modified" : "SvenVanCaekenberghe 11/11/2012 08:01", + "printOn:" : "SvenVanCaekenberghe 11/10/2012 17:30", + "removeAttribute:" : "SvenVanCaekenberghe 12/20/2012 23:35", + "touch" : "SvenVanCaekenberghe 11/11/2012 08:01" } } diff --git a/repository/Zinc-HTTP.package/ZnServerSession.class/properties.json b/repository/Zinc-HTTP.package/ZnServerSession.class/properties.json new file mode 100644 index 00000000..88d8049a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSession.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Zinc-HTTP-Support", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "id", + "attributes", + "created", + "modified" ], + "name" : "ZnServerSession", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/README.md b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/README.md new file mode 100644 index 00000000..9f954b23 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/README.md @@ -0,0 +1,6 @@ +I am ZnServerSessionManager. +I manage a collection of ZnServerSession on behalf of a ZnServer. + +Session ids are stored in cookies. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/cleanupInvalidSessions.st b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/cleanupInvalidSessions.st new file mode 100644 index 00000000..d66151cf --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/cleanupInvalidSessions.st @@ -0,0 +1,5 @@ +accessing +cleanupInvalidSessions + "Remove all expired sessions" + + sessions keysAndValuesRemove: [ :key :value | value isValid not ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/cookieName.st b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/cookieName.st new file mode 100644 index 00000000..c8bde72f --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/cookieName.st @@ -0,0 +1,3 @@ +accessing +cookieName + ^ 'session-id' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/initialize.st new file mode 100644 index 00000000..1921296c --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + sessions := Dictionary new \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/newSessionForRequest..st b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/newSessionForRequest..st new file mode 100644 index 00000000..12a37492 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/newSessionForRequest..st @@ -0,0 +1,8 @@ +private +newSessionForRequest: request + | id session | + id := self newSessionId. + session := ZnServerSession new. + session id: id. + sessions at: id put: session. + ^ session \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/newSessionId.st b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/newSessionId.st new file mode 100644 index 00000000..99fadecf --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/newSessionId.st @@ -0,0 +1,14 @@ +private +newSessionId + "Create a new session id. + If the server has a route, append it at the end with a dot as separator." + + ^ ZnCurrentServer value route + ifNil: [ UUID new asString36 ] + ifNotNil: [ :route | + String + streamContents: [ :stream | + stream + << UUID new asString36; + nextPut: $.; + << route ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/removeSessionWithId..st b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/removeSessionWithId..st new file mode 100644 index 00000000..41ec66a8 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/removeSessionWithId..st @@ -0,0 +1,6 @@ +accessing +removeSessionWithId: id + "Remove the session with id. + If there is no such session, do nothing" + + ^ sessions removeKey: id ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/sessionFor..st b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/sessionFor..st new file mode 100644 index 00000000..721df7d8 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/sessionFor..st @@ -0,0 +1,13 @@ +accessing +sessionFor: request + "Bind an existing session to request or create a new session" + + | id | + id := self sessionIdFromRequest: request. + sessions + at: id + ifPresent: [ :session | + session isValid + ifTrue: [ ^ session touch; yourself ] + ifFalse: [ sessions removeKey: id ] ]. + ^ self newSessionForRequest: request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/sessionIdFromRequest..st b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/sessionIdFromRequest..st new file mode 100644 index 00000000..92080372 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/sessionIdFromRequest..st @@ -0,0 +1,7 @@ +private +sessionIdFromRequest: request + | cookie | + cookie := request cookies + detect: [ :each | each name = self cookieName ] + ifNone: [ ^ nil ]. + ^ cookie value \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/setSession.in..st b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/setSession.in..st new file mode 100644 index 00000000..996e0d34 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/instance/setSession.in..st @@ -0,0 +1,9 @@ +accessing +setSession: session in: response + "Bind session in response" + + | cookie | + session ifNil: [ ^ self ]. + (cookie := ZnCookie name: self cookieName value: session id) + path: '/'. + response addCookie: cookie \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/methodProperties.json new file mode 100644 index 00000000..3eeee03f --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/methodProperties.json @@ -0,0 +1,13 @@ +{ + "class" : { + }, + "instance" : { + "cleanupInvalidSessions" : "SvenVanCaekenberghe 12/31/2012 16:45", + "cookieName" : "SvenVanCaekenberghe 11/10/2012 19:33", + "initialize" : "SvenVanCaekenberghe 11/10/2012 19:06", + "newSessionForRequest:" : "SvenVanCaekenberghe 12/31/2012 16:34", + "newSessionId" : "SvenVanCaekenberghe 12/31/2012 16:46", + "removeSessionWithId:" : "SvenVanCaekenberghe 12/31/2012 16:45", + "sessionFor:" : "SvenVanCaekenberghe 12/25/2012 21:26", + "sessionIdFromRequest:" : "SvenVanCaekenberghe 12/31/2012 16:40", + "setSession:in:" : "SvenVanCaekenberghe 11/10/2012 22:57" } } diff --git a/repository/Zinc-HTTP.package/ZnServerSessionManager.class/properties.json b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/properties.json new file mode 100644 index 00000000..1e5ce908 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnServerSessionManager.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-HTTP-Support", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "sessions" ], + "name" : "ZnServerSessionManager", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnSignalProgress.class/properties.json b/repository/Zinc-HTTP.package/ZnSignalProgress.class/properties.json index b23afe0c..9627df72 100644 --- a/repository/Zinc-HTTP.package/ZnSignalProgress.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnSignalProgress.class/properties.json @@ -1,5 +1,5 @@ { - "category" : "Zinc-HTTP-Support", + "category" : "Zinc-HTTP-Variables", "classinstvars" : [ ], "classvars" : [ diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/acceptWaitTimeout.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/acceptWaitTimeout.st index a3cd05de..727ad4ae 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/acceptWaitTimeout.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/acceptWaitTimeout.st @@ -1,5 +1,5 @@ constants acceptWaitTimeout - "How many seconds to we wait for a server socket listening for an accept ?" + "How many seconds to wait for a server socket listening for an accept ?" ^ 300 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticateAndDelegateRequest..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticateAndDelegateRequest..st new file mode 100644 index 00000000..ed13395a --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticateAndDelegateRequest..st @@ -0,0 +1,13 @@ +request handling +authenticateAndDelegateRequest: request + "Handle request and return a response. + If we have a delegate, pass the responsability. + If we have no delegate, we return a page not found. + Make sure to pass via our authenticator." + + ^ self + authenticateRequest: request + do: [ + self delegate + ifNil: [ ZnResponse notFound: request uri ] + ifNotNil: [ :delegate | delegate handleRequest: request ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticateRequest.do..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticateRequest.do..st index 64f0b33e..bf773408 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticateRequest.do..st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/authenticateRequest.do..st @@ -1,8 +1,8 @@ -private +request handling authenticateRequest: request do: block "Validate request and execute block. When our authenticator is not nil, pass the responsability" - ^ self authenticator isNil - ifTrue: [ block value ] - ifFalse: [ self authenticator authenticateRequest: request do: block ] \ No newline at end of file + ^ self authenticator + ifNil: [ block value ] + ifNotNil: [ :authenticator | authenticator authenticateRequest: request do: block ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/bindingAddress..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/bindingAddress..st deleted file mode 100644 index e44fb6d3..00000000 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/bindingAddress..st +++ /dev/null @@ -1,8 +0,0 @@ -accessing -bindingAddress: address - "Set the interface address we will be listening on. - Specify nil to listen on all/any interfaces, the default. - Address must be a 4 element ByteArray, like #[127 0 0 1]. - Cannot be changed after the server is already running." - - interface := address \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/bindingAddress.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/bindingAddress.st deleted file mode 100644 index 848647c5..00000000 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/bindingAddress.st +++ /dev/null @@ -1,6 +0,0 @@ -accessing -bindingAddress - "Return the interface address we are (or will be) listening on. - Nil means that we are (or will be) listening on all interfaces." - - ^ interface \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/closeDelegate.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/closeDelegate.st index ecd3009e..00d9bc1e 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/closeDelegate.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/closeDelegate.st @@ -1,6 +1,8 @@ private closeDelegate - (delegate notNil and: [ delegate respondsTo: #close ]) - ifTrue: [ - self log debug: 'Closing delegate'. - delegate close ] \ No newline at end of file + self delegate + ifNotNil: [ :delegate | + (delegate respondsTo: #close) + ifTrue: [ + self log debug: 'Closing delegate'. + delegate close ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/delegate.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/delegate.st deleted file mode 100644 index 63b50083..00000000 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/delegate.st +++ /dev/null @@ -1,8 +0,0 @@ -accessing -delegate - "Return the optional delegate, - the object that will be sent #handleRequest: to handle a request and produce a response. - The default delegate is ZnDefaultServerDelegate" - - delegate isNil ifTrue: [ delegate := ZnDefaultServerDelegate new ]. - ^ delegate \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/executeOneRequestResponseOn..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/executeOneRequestResponseOn..st index 1748b7e1..d473dd81 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/executeOneRequestResponseOn..st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/executeOneRequestResponseOn..st @@ -1,4 +1,4 @@ -private +request handling executeOneRequestResponseOn: stream "Execute one single HTTP request / response cycle on stream in 3 steps: #readRequest: #handleRequest: and #writeResponse:on: @@ -6,6 +6,10 @@ executeOneRequestResponseOn: stream | request response | self log debug: 'Executing 1 request/response cycle'. - request := self readRequest: stream. - (response := self handleRequest: request) setConnectionClose. - self writeResponse: response on: stream \ No newline at end of file + ZnCurrentServer + value: self + during: [ + request := self readRequest: stream. + response := self handleRequest: request. + response setConnectionClose. + self writeResponse: response on: stream ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/handleRequest..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/handleRequest..st index 6b2730bf..c0b37a27 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/handleRequest..st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/handleRequest..st @@ -1,19 +1,16 @@ -private +request handling handleRequest: request "Handle request and return a response. - If we have a delegate, pass the responsability. - If we have no delegate, we return a page not found" + Do logging and timing. Set a dynamic variable referencing the server. + If necessary do session management in the response." | response initialMilliseconds | - initialMilliseconds := Time millisecondClockValue. - response := self - authenticateRequest: request - do: [ - self delegate isNil - ifTrue: [ ZnResponse notFound: request uri ] - ifFalse: [ self delegate handleRequest: request ] ]. + ZnCurrentServerSession value: nil. + response := self handleRequestProtected: request. request method = #HEAD ifTrue: [ response clearEntity ]. self logRequest: request response: response started: initialMilliseconds. + ZnCurrentServerSession value + ifNotNil: [ :session | self sessionManager setSession: session in: response ]. ^ response \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/handleRequestProtected..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/handleRequestProtected..st new file mode 100644 index 00000000..75fa6910 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/handleRequestProtected..st @@ -0,0 +1,13 @@ +request handling +handleRequestProtected: request + "Handle request and return a response. + If a Smalltalk Error is thrown, return a HTTP Server Error response." + + ^ [ self authenticateAndDelegateRequest: request ] + on: Error + do: [ :exception | + self debugMode + ifTrue: [ exception pass ] + ifFalse: [ + self logServerError: exception. + ZnResponse serverError: exception printString ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/initializeServerSocket.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/initializeServerSocket.st index 40936d7c..1bbefebf 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/initializeServerSocket.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/initializeServerSocket.st @@ -3,6 +3,6 @@ initializeServerSocket "Set up a new server socket and listen on it" self log debug: 'Initializing server socket'. - serverSocket := interface - ifNil: [ ZnNetworkingUtils serverSocketOn: port ] - ifNotNil: [ ZnNetworkingUtils serverSocketOn: port interface: interface ] \ No newline at end of file + serverSocket := self bindingAddress + ifNil: [ ZnNetworkingUtils serverSocketOn: self port ] + ifNotNil: [ ZnNetworkingUtils serverSocketOn: self port interface: self bindingAddress ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/listenLoop.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/listenLoop.st index bb219c6c..62a0f814 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/listenLoop.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/listenLoop.st @@ -1,4 +1,4 @@ -private +request handling listenLoop "We create a listening Socket, then wait for a connection. After each connection we also check that the listening Socket is still valid diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logServerError..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logServerError..st new file mode 100644 index 00000000..954873f4 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/logServerError..st @@ -0,0 +1,9 @@ +logging +logServerError: exception + (self logServerErrorDetails and: [ self log enabled ]) + ifTrue: [ | report | + report := String streamContents: [ :out | + out print: exception; cr. + exception signalerContext printDetails: out. + exception signalerContext sender debugStack: 8 on: out ]. + report linesDo: [ :each | self log debug: each ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/periodicTasks.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/periodicTasks.st index 41b93e84..8a928ba7 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/periodicTasks.st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/periodicTasks.st @@ -1,4 +1,6 @@ private periodicTasks "Every #acceptWaitTimeout seconds this method is called. - Note that during this time the server is not actively listening for connections." \ No newline at end of file + Note that during this time the server is not actively listening for connections." + + sessionManager ifNotNil: [ sessionManager cleanupInvalidSessions ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/port..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/port..st deleted file mode 100644 index dd772939..00000000 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/port..st +++ /dev/null @@ -1,8 +0,0 @@ -accessing -port: integer - "Set the port number we will be listening on. - Cannot be changed after the server is already running." - - (self isRunning and: [ port ~= integer ]) - ifTrue: [ self error: 'Stop me before changing my port' ]. - port := integer \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/port.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/port.st deleted file mode 100644 index f6688607..00000000 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/port.st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -port - "Return the integer port number we are (or will be) listening on" - - ^ port \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/printOn..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/printOn..st index 4db042c7..9e178147 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/printOn..st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/printOn..st @@ -3,6 +3,6 @@ printOn: stream super printOn: stream. stream nextPut: $(. stream nextPutAll: (self isRunning ifTrue: [ 'running' ] ifFalse: [ 'stopped' ]). - self port ifNotNil: [ stream space; print: self port ]. - self bindingAddress ifNotNil: [ stream space; print: self bindingAddress ]. + self port ifNotNil: [ :port | stream space; print: port ]. + self bindingAddress ifNotNil: [ :bindingAddress | stream space; print: bindingAddress ]. stream nextPut: $) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/readRequest..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/readRequest..st index bdea424c..c952c435 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/readRequest..st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/readRequest..st @@ -1,10 +1,10 @@ -private +request handling readRequest: stream "Read a request from stream. We add a virtual header containing the remote IP address of the client" | request | - request := self reader value: stream. + request := self withMaximumEntitySizeDo: [ self reader value: stream ]. request headers at: ZnConstants remoteAddressHeader put: (ZnNetworkingUtils ipAddressToString: stream socket remoteAddress). diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/reader..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/reader..st deleted file mode 100644 index 3fb91857..00000000 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/reader..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -reader: block - "Customize how entities are read from a stream, see #reader" - - reader := block \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/reader.st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/reader.st deleted file mode 100644 index e03c8c82..00000000 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/reader.st +++ /dev/null @@ -1,6 +0,0 @@ -accessing -reader - "Return a block that when given a stream reads an entity from it." - - ^ reader ifNil: [ - reader := [ :stream | ZnRequest readFrom: stream ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/serveConnectionOn..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/serveConnectionOn..st index 31800002..74fae312 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/serveConnectionOn..st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/serveConnectionOn..st @@ -1,14 +1,18 @@ -private +request handling serveConnectionOn: listeningSocket "We wait up to acceptWaitTimeout seconds for an incoming connection. - If we get one we wrap it in a SocketStream and #executeOneRequestResponseOn: on it" - + If we get one we wrap it in a SocketStream and #executeOneRequestResponseOn: on it. + We do not fork a worker thread/process but stay in the current one for just one request/response cycle." + | stream socket | - socket := (listeningSocket waitForAcceptFor: self acceptWaitTimeout) ifNil: [ - ^ self noteAcceptWaitTimedOut ]. + socket := listeningSocket waitForAcceptFor: self acceptWaitTimeout. + socket ifNil: [ ^ self noteAcceptWaitTimedOut ]. stream := self socketStreamOn: socket. - [ [ [ self executeOneRequestResponseOn: stream ] - ensure: [ self log debug: 'Closing stream'. stream close ] ] - ifCurtailed: [ self log debug: 'Destroying socket'. socket destroy ] ] - forkAt: Processor highIOPriority - named: 'Zinc HTTP Server Worker' \ No newline at end of file + [ + [ self executeOneRequestResponseOn: stream ] + ensure: [ + self log debug: 'Closing stream'. + stream close ] ] + ifCurtailed: [ + self log debug: 'Destroying socket'. + socket destroy ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/withMaximumEntitySizeDo..st b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/withMaximumEntitySizeDo..st new file mode 100644 index 00000000..496d59f5 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/withMaximumEntitySizeDo..st @@ -0,0 +1,9 @@ +private +withMaximumEntitySizeDo: block + ^ ZnMaximumEntitySize value + ifNil: [ + ZnMaximumEntitySize + value: self maximumEntitySize + during: [ ^ block value ] ] + ifNotNil: [ + block value ] \ 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 8cace6fe..493fa766 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/writeResponse.on..st +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/instance/writeResponse.on..st @@ -1,4 +1,4 @@ -private +request handling writeResponse: response on: stream "Write response to stream and flush the stream" diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/methodProperties.json index c195bcec..b02f8d7f 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/methodProperties.json @@ -8,18 +8,14 @@ "startOn:" : "SvenVanCaekenberghe 12/22/2011 11:37", "stopDefault" : "SvenVanCaekenberghe 12/22/2011 11:59" }, "instance" : { - "acceptWaitTimeout" : "SvenVanCaekenberghe 3/30/2011 19:15", - "authenticateRequest:do:" : "SvenVanCaekenberghe 12/10/2010 13:58", - "authenticator" : "SvenVanCaekenberghe 12/10/2010 13:50", - "authenticator:" : "SvenVanCaekenberghe 12/10/2010 13:48", - "bindingAddress" : "SvenVanCaekenberghe 4/13/2012 13:12", - "bindingAddress:" : "SvenVanCaekenberghe 4/13/2012 13:15", - "closeDelegate" : "SvenVanCaekenberghe 9/27/2011 18:51", - "delegate" : "SvenVanCaekenberghe 12/10/2010 15:32", - "delegate:" : "SvenVanCaekenberghe 12/10/2010 13:48", - "executeOneRequestResponseOn:" : "SvenVanCaekenberghe 3/29/2011 13:05", - "handleRequest:" : "PaulDeBruicker 4/19/2012 16:29", - "initializeServerSocket" : "SvenVanCaekenberghe 3/12/2012 19:26", + "acceptWaitTimeout" : "SvenVanCaekenberghe 12/31/2012 16:08", + "authenticateAndDelegateRequest:" : "SvenVanCaekenberghe 1/10/2013 15:12", + "authenticateRequest:do:" : "SvenVanCaekenberghe 1/10/2013 15:13", + "closeDelegate" : "SvenVanCaekenberghe 1/10/2013 15:14", + "executeOneRequestResponseOn:" : "SvenVanCaekenberghe 1/10/2013 14:56", + "handleRequest:" : "SvenVanCaekenberghe 1/10/2013 15:15", + "handleRequestProtected:" : "SvenVanCaekenberghe 1/31/2013 10:09", + "initializeServerSocket" : "SvenVanCaekenberghe 9/5/2012 10:11", "isListening" : "SvenVanCaekenberghe 12/15/2010 21:24", "isRunning" : "SvenVanCaekenberghe 12/10/2010 13:57", "lastRequest" : "SvenVanCaekenberghe 12/14/2010 14:13", @@ -29,24 +25,22 @@ "logRequest:" : "SvenVanCaekenberghe 3/29/2011 13:00", "logRequest:response:started:" : "SvenVanCaekenberghe 3/29/2011 13:51", "logResponse:" : "SvenVanCaekenberghe 3/29/2011 13:00", + "logServerError:" : "SvenVanCaekenberghe 2/1/2013 16:09", "logToStandardOutput" : "SvenVanCaekenberghe 3/4/2012 20:08", "logToTranscript" : "SvenVanCaekenberghe 3/29/2011 15:40", "noteAcceptWaitTimedOut" : "SvenVanCaekenberghe 3/30/2011 19:15", "onRequestRespond:" : "SvenVanCaekenberghe 7/1/2011 14:07", - "periodicTasks" : "SvenVanCaekenberghe 3/30/2011 19:16", - "port" : "SvenVanCaekenberghe 12/10/2010 13:51", - "port:" : "SvenVanCaekenberghe 12/10/2010 13:53", - "printOn:" : "SvenVanCaekenberghe 4/13/2012 13:12", + "periodicTasks" : "SvenVanCaekenberghe 11/11/2012 20:07", + "printOn:" : "SvenVanCaekenberghe 1/10/2013 15:17", "process" : "SvenVanCaekenberghe 12/10/2010 13:54", - "readRequest:" : "SvenVanCaekenberghe 4/7/2012 17:53", - "reader" : "SvenVanCaekenberghe 4/7/2012 17:52", - "reader:" : "SvenVanCaekenberghe 4/7/2012 17:53", + "readRequest:" : "SvenVanCaekenberghe 9/5/2012 12:49", "releaseServerSocket" : "SvenVanCaekenberghe 4/20/2011 12:11", - "serveConnectionOn:" : "SvenVanCaekenberghe 11/10/2011 13:18", + "serveConnectionOn:" : "SvenVanCaekenberghe 12/31/2012 16:10", "serverProcessName" : "SvenVanCaekenberghe 12/13/2010 16:42", "serverSocket" : "SvenVanCaekenberghe 12/10/2010 13:54", "socketStreamOn:" : "SvenVanCaekenberghe 11/10/2011 13:18", "start" : "SvenVanCaekenberghe 12/22/2011 12:00", "stop:" : "SvenVanCaekenberghe 12/22/2011 12:20", "stopLogging" : "SvenVanCaekenberghe 10/4/2011 12:35", + "withMaximumEntitySizeDo:" : "SvenVanCaekenberghe 9/5/2012 12:49", "writeResponse:on:" : "SvenVanCaekenberghe 12/14/2010 14:37" } } diff --git a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/properties.json b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/properties.json index 03bf59eb..126f02c4 100644 --- a/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/properties.json +++ b/repository/Zinc-HTTP.package/ZnSingleThreadedServer.class/properties.json @@ -6,13 +6,8 @@ ], "commentStamp" : "SvenVanCaekenberghe 12/15/2010 15:38", "instvars" : [ - "port", - "interface", "process", "serverSocket", - "delegate", - "authenticator", - "reader", "log", "lastRequest", "lastResponse" ], diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/initializeEncoder.st b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/initializeEncoder.st index 0e7fb0fe..81162621 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/initializeEncoder.st +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/initializeEncoder.st @@ -1,8 +1,12 @@ private initializeEncoder | charSet newEncoder | - self hasEncoder ifTrue: [ ^ self ]. + self hasEncoder + ifTrue: [ ^ self ]. newEncoder := (charSet := contentType charSet) isNil ifTrue: [ ZnNullEncoder new ] - ifFalse: [ ZnCharacterEncoder newForEncoding: charSet ]. + ifFalse: [ + (ZnCharacterEncoder newForEncoding: charSet) + beLenient; + yourself ]. self encoder: newEncoder \ 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 index 6b0b8833..bd03cab7 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readLimitedFrom..st +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readLimitedFrom..st @@ -1,11 +1,15 @@ private readLimitedFrom: stream - | readStream newString | + | 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) ] ]. + 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 index 110aebc6..ea4ba721 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readUpToEndFrom..st +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/readUpToEndFrom..st @@ -1,12 +1,15 @@ private readUpToEndFrom: stream - | newString limit | + | 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). - (limit := limit - 1) < 0 ifTrue: [ ZnEntityTooLarge signal ] ] ] - on: ConnectionClosed - do: [ :exception | exception return ] ]. + (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 d913289f..9f7aa4db 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/writeOn..st +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/instance/writeOn..st @@ -1,5 +1,9 @@ writing writeOn: stream + | bufferSize | self initializeEncoder. - self string do: [ :each | - encoder nextPut: each toStream: stream ] \ No newline at end of file + 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 diff --git a/repository/Zinc-HTTP.package/ZnStringEntity.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnStringEntity.class/methodProperties.json index f9912a89..94915dee 100644 --- a/repository/Zinc-HTTP.package/ZnStringEntity.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnStringEntity.class/methodProperties.json @@ -11,14 +11,14 @@ "encoder" : "SvenVanCaekenberghe 12/14/2010 11:59", "encoder:" : "SvenVanCaekenberghe 12/3/2010 15:11", "hasEncoder" : "SvenVanCaekenberghe 12/14/2010 12:09", - "initializeEncoder" : "SvenVanCaekenberghe 1/25/2011 13:42", + "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 4/15/2012 19:04", + "readLimitedFrom:" : "SvenVanCaekenberghe 9/17/2012 15:40", "readStream" : "SvenVanCaekenberghe 12/1/2010 20:57", - "readUpToEndFrom:" : "SvenVanCaekenberghe 1/31/2012 13:29", + "readUpToEndFrom:" : "SvenVanCaekenberghe 9/17/2012 15:48", "string" : "SvenVanCaekenberghe 12/1/2010 20:57", "string:" : "SvenVanCaekenberghe 12/3/2010 15:11", - "writeOn:" : "SvenVanCaekenberghe 12/2/2010 13:09" } } + "writeOn:" : "SvenVanCaekenberghe 9/17/2012 15:25" } } diff --git a/repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/properties.json b/repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/properties.json deleted file mode 100644 index f5422d2a..00000000 --- a/repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Exceptions", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 1/2/2012 19:22", - "instvars" : [ - "limit" ], - "name" : "ZnTooManyDictionaryEntries", - "pools" : [ - ], - "super" : "Error", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/nextFromStream..st b/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/nextFromStream..st deleted file mode 100644 index b6d50a8a..00000000 --- a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/nextFromStream..st +++ /dev/null @@ -1,22 +0,0 @@ -converting -nextFromStream: stream - | code byte next | - next := [ | nextByte | - ((nextByte := stream next) bitAnd: 2r11000000) = 2r10000000 - ifTrue: [ code := (code bitShift: 6) + (nextByte bitAnd: 2r00111111) ] - ifFalse: [ self error: 'illegal UTF-8 encoding' ] ]. - (byte := stream next) < 128 ifTrue: [ - ^ Character codePoint: byte ]. - (byte bitAnd: 2r11100000) = 2r11000000 ifTrue: [ - code := byte bitAnd: 2r00011111. - next value. - ^ Character codePoint: code ]. - (byte bitAnd: 2r11110000) = 2r11100000 ifTrue: [ - code := byte bitAnd: 2r00001111. - next value; value. - ^ Character codePoint: code ]. - (byte bitAnd: 2r11111000) = 2r11110000 ifTrue: [ - code := byte bitAnd: 2r00000111. - next value; value; value. - ^ Character codePoint: code ]. - self error: 'illegal UTF-8 encoding' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/nextPut.toStream..st b/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/nextPut.toStream..st deleted file mode 100644 index 2e8c9ee9..00000000 --- a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/instance/nextPut.toStream..st +++ /dev/null @@ -1,22 +0,0 @@ -converting -nextPut: character toStream: stream - | code next | - code := character charCode. - next := [ :shift | - stream nextPut: (2r10000000 + ((code bitShift: shift) bitAnd: 2r111111)) ]. - code < 128 ifTrue: [ - stream nextPut: code. - ^ character ]. - code < 2048 ifTrue: [ - stream nextPut: (2r11000000 + (code bitShift: -6)). - next value: 0. - ^ character ]. - code < 65535 ifTrue: [ - stream nextPut: (2r11100000 + (code bitShift: -12)). - next value: -6; value: 0. - ^ character ]. - code <= self maximumUTF8Code ifTrue: [ - stream nextPut: (2r11110000 + (code bitShift: -18)). - next value: -12; value: -6; value: 0. - ^ character ]. - self error: 'Unicode character code point outside range' diff --git a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/methodProperties.json deleted file mode 100644 index e42174df..00000000 --- a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/methodProperties.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "class" : { - "handlesEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:11", - "newForEncoding:" : "SvenVanCaekenberghe 1/25/2011 11:19" }, - "instance" : { - "encodedByteCountFor:" : "SvenVanCaekenberghe 11/29/2010 21:23", - "maximumUTF8Code" : "SvenVanCaekenberghe 11/29/2010 21:19", - "nextFromStream:" : "SvenVanCaekenberghe 1/4/2011 20:52", - "nextPut:toStream:" : "SvenVanCaekenberghe 11/30/2010 13:19" } } diff --git a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/properties.json b/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/properties.json deleted file mode 100644 index bfaafa8f..00000000 --- a/repository/Zinc-HTTP.package/ZnUTF8Encoder.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Streaming", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 12/6/2010 12:55", - "instvars" : [ - ], - "name" : "ZnUTF8Encoder", - "pools" : [ - ], - "super" : "ZnCharacterEncoder", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnUnknownScheme.class/properties.json b/repository/Zinc-HTTP.package/ZnUnknownScheme.class/properties.json deleted file mode 100644 index c2b96781..00000000 --- a/repository/Zinc-HTTP.package/ZnUnknownScheme.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Exceptions", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "DamienPollet 8/4/2011 14:07", - "instvars" : [ - "scheme" ], - "name" : "ZnUnknownScheme", - "pools" : [ - ], - "super" : "ZnParseError", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/README.md b/repository/Zinc-HTTP.package/ZnUrl.class/README.md deleted file mode 100644 index 45d65774..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/README.md +++ /dev/null @@ -1,67 +0,0 @@ -I am ZnUrl, an implementation of an interpreted HTTP(S) URL/URI. -Contrary to other implementations, this one is specific for HTTP(S). - -I consist of the following parts: - - scheme - either #http, #https or nil - - host - hostname string or nil - - port - port integer or nil - - segments - collection of path segments, ends with #/ for directories - - query - query dictionary or nil - - fragment - fragment string or nil - -The syntax of my external representation informally looks like this - - scheme://host:port/segments?query#fragment - -I am most often created by parsing my external representation using either my #fromString: class method or by sending the #asZnUrl convenience method to a String. Using #asZnUrl helps in accepting both Strings and ZnUrls arguments. - - ZnUrl fromString: 'http://www.google.com/search?q=Smalltalk'. - -I can also be constucted programmatically. - - ZnUrl new - scheme: #https; - host: 'encrypted.google.com'; - addPathSegment: 'search'; - queryAt: 'q' put: 'Smalltalk'; - yourself. - -My components can be manipulated destructively. Here is an example: - - ('http://www.google.com/?one=1&two=2' asZnUrl) - queryAt: 'three' put: '3'; - queryRemoveKey: 'one'; - yourself. - -Some characters of parts of a URL are illegal because they would interfere with the syntax and further processing and thus have to be encoded. The methods in accessing protocols do not do any encoding, those in parsing and printing do. Here is an example: - - ('http://www.google.com' asZnUrl) - addPathSegment: 'some encoding here'; - queryAt: 'and some encoding' put: 'here, too'; - yourself - -My parser is somewhat forgiving and accepts some unencoded URLs as well, like most browsers would. - - 'http://www.example.com:8888/a path?q=a, b, c' asZnUrl. - -I can parse in the context of a default scheme, like a browser would do. - - ZnUrl fromString: 'www.example.com' defaultScheme: #http - -Given a scheme, I know its default port, try #portOrDefault. - -A path defaults to what is commonly referred to as slash, test with #isSlash. Paths are most often (but don't have to be) interpreted as filesystem paths. To support this, I have #isFile and #isDirectory tests and #file and #directory accessors. - -I have some support to handle one URL in the context of another one, this is also known as a relative URL in the context of an absolute URL. Refer to #isAbsolute, #isRelative and #inContextOf: - - '/folder/file.txt' asZnUrl inContextOf: ('http://fileserver.example.net:4400' asZnUrl). - -Sometimes, the combination of my host and port are referred to as authority, see #authority. - -URL/URI/URN (Uniform/Universal Resource Locator/Identifier/Name) are closely related and can be and are used as synonyms is many contexts. Refer to http://en.wikipedia.org/wiki/Url for more information. - -There is a convenience method #retrieveContents to download the resource a ZnUrl points to, - - 'http://zn.stfx.eu/zn/numbers.txt' asZnUrl retrieveContents. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/authorityPrintString.st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/authorityPrintString.st deleted file mode 100644 index fd292734..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/authorityPrintString.st +++ /dev/null @@ -1,4 +0,0 @@ -printing -authorityPrintString - ^ String streamContents: [ :stream | - self printAuthorityOn: stream ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/directory.st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/directory.st deleted file mode 100644 index 94f360c6..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/directory.st +++ /dev/null @@ -1,5 +0,0 @@ -accessing-path -directory - ^ self isDirectory - ifTrue: [ self path ] - ifFalse: [ self joinSegments: segments allButLast ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/encode.on..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/encode.on..st deleted file mode 100644 index 920fa9fa..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/encode.on..st +++ /dev/null @@ -1,3 +0,0 @@ -private -encode: string on: stream - stream nextPutAll: string encodeForHTTP diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/file.st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/file.st deleted file mode 100644 index f295c832..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/file.st +++ /dev/null @@ -1,5 +0,0 @@ -accessing-path -file - ^ self isDirectory - ifTrue: [ false ] - ifFalse: [ segments last ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/hasQuery.st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/hasQuery.st deleted file mode 100644 index bbaca31a..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/hasQuery.st +++ /dev/null @@ -1,3 +0,0 @@ -testing -hasQuery - ^ query notNil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/host..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/host..st deleted file mode 100644 index 9cb5a0f3..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/host..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -host: hostName - host := hostName asLowercase \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/host.st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/host.st deleted file mode 100644 index 5fb3a743..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/host.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -host - ^ host \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isAbsolute.st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/isAbsolute.st deleted file mode 100644 index a89f84f4..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isAbsolute.st +++ /dev/null @@ -1,3 +0,0 @@ -testing -isAbsolute - ^ self hasScheme \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isDirectory.st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/isDirectory.st deleted file mode 100644 index 07592770..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isDirectory.st +++ /dev/null @@ -1,6 +0,0 @@ -testing -isDirectory - ^ self hasPath - ifTrue: [ segments last = #/ ] - ifFalse: [ true ] - \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isEmpty.st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/isEmpty.st deleted file mode 100644 index e7f441a0..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isEmpty.st +++ /dev/null @@ -1,3 +0,0 @@ -testing -isEmpty - ^ (self hasScheme | self hasHost | self hasPath | self hasQuery | self hasFragment) not \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isFile.st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/isFile.st deleted file mode 100644 index 6bbc0899..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isFile.st +++ /dev/null @@ -1,3 +0,0 @@ -testing -isFile - ^ self isDirectory not \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/parseAuthority..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/parseAuthority..st deleted file mode 100644 index 6deed92d..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/parseAuthority..st +++ /dev/null @@ -1,9 +0,0 @@ -parsing -parseAuthority: stream - | hostString | - (hostString := stream upTo: $:) isEmpty - ifFalse: [ - self host: (ZnUtils decodePercent: hostString) ]. - stream atEnd - ifFalse: [ - self port: (Integer readFrom: stream ifFail: [ ZnPortNotANumber signal ]) ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/parseFrom.defaultScheme..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/parseFrom.defaultScheme..st deleted file mode 100644 index 74b9faad..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/parseFrom.defaultScheme..st +++ /dev/null @@ -1,28 +0,0 @@ -parsing -parseFrom: string defaultScheme: defaultScheme - | start end index | - start := 1. - end := string size. - (index := string indexOf: $#) > 0 - ifTrue: [ - self fragment: (ZnUtils decodePercent: (string copyFrom: index + 1 to: end)). - end := index - 1 ]. - (index := string indexOf: $?) > 0 - ifTrue: [ - self query: (ZnUtils parseQueryFrom: (ReadStream on: string from: index + 1 to: end)). - end := index - 1 ]. - (index := string indexOfSubCollection: '://') > 0 - ifTrue: [ - self scheme: (string copyFrom: 1 to: index - 1). - start := index + 3 ] - ifFalse: [ - defaultScheme ifNotNil: [ self scheme: defaultScheme ] ]. - self hasScheme - ifTrue: [ - (index := string indexOf: $/ startingAt: start) > 0 - ifTrue: [ - self parseAuthority: (ReadStream on: string from: start to: index - 1). - start := index ] - ifFalse: [ - ^ self parseAuthority: (ReadStream on: string from: start to: end) ] ]. - self parsePath: (ReadStream on: string from: start to: end) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/port..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/port..st deleted file mode 100644 index d0d266b2..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/port..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -port: integer - port := integer \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/printAuthorityOn..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/printAuthorityOn..st deleted file mode 100644 index de639ae0..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/printAuthorityOn..st +++ /dev/null @@ -1,7 +0,0 @@ -printing -printAuthorityOn: stream - self hasHost ifTrue: [ - stream nextPut: $/; nextPut: $/. - self encode: self host on: stream ]. - self hasPort ifTrue: [ - stream nextPut: $:; print: self port ] diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/printOn..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/printOn..st deleted file mode 100644 index 8fa66cdc..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/printOn..st +++ /dev/null @@ -1,6 +0,0 @@ -printing -printOn: stream - self hasScheme ifTrue: [ - stream nextPutAll: self scheme; nextPut: $: ]. - self printAuthorityOn: stream. - self printPathQueryFragmentOn: stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/printQueryOn..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/printQueryOn..st deleted file mode 100644 index b29ef9a2..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/printQueryOn..st +++ /dev/null @@ -1,4 +0,0 @@ -printing -printQueryOn: stream - stream nextPut: $?. - ZnUtils writeQueryFields: self query on: stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAddAll..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAddAll..st deleted file mode 100644 index 11f59750..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAddAll..st +++ /dev/null @@ -1,7 +0,0 @@ -accessing-query -queryAddAll: keyedCollection - "Note that we use #at:add:" - - keyedCollection keysAndValuesDo: [ :key :value | - self queryAt: key add: value ]. - ^ keyedCollection \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt..st deleted file mode 100644 index 027087b5..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing-query -queryAt: key - ^ self hasQuery - ifTrue: [ self query at: key ] - ifFalse: [ KeyNotFound signalFor: key printString ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt.ifAbsent..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt.ifAbsent..st deleted file mode 100644 index 97f21780..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt.ifAbsent..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing-query -queryAt: key ifAbsent: block - ^ self hasQuery - ifTrue: [ self query at: key ifAbsent: block ] - ifFalse: [ block value ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryRemoveKey..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryRemoveKey..st deleted file mode 100644 index d6abfae3..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryRemoveKey..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing-query -queryRemoveKey: key - self hasQuery - ifTrue: [ self query removeKey: key ifAbsent: [ ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/scheme..st b/repository/Zinc-HTTP.package/ZnUrl.class/instance/scheme..st deleted file mode 100644 index 428f6b9d..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/scheme..st +++ /dev/null @@ -1,8 +0,0 @@ -accessing -scheme: symbol - symbol isNil - ifTrue: [ scheme := nil ] - ifFalse: [ - (#(http https ws wws) includes: symbol) - ifTrue: [ scheme := symbol asSymbol ] - ifFalse: [ (ZnUnknownScheme scheme: symbol) signal ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnUrl.class/methodProperties.json deleted file mode 100644 index 4887c646..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/methodProperties.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "class" : { - "defaultPortForScheme:" : "SvenVanCaekenberghe 7/19/2012 11:42", - "fromString:" : "SvenVanCaekenberghe 1/3/2011 19:35", - "fromString:defaultScheme:" : "SvenVanCaekenberghe 8/11/2011 14:47" }, - "instance" : { - "&" : "SvenVanCaekenberghe 7/9/2012 16:27", - "/" : "SvenVanCaekenberghe 7/9/2012 16:26", - "=" : "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", - "asZnUrl" : "SvenVanCaekenberghe 1/4/2011 11:24", - "asZnUrlWithDefaults" : "SvenVanCaekenberghe 8/11/2011 12:05", - "authority" : "SvenVanCaekenberghe 8/18/2011 21:01", - "authorityPrintString" : "SvenVanCaekenberghe 1/4/2011 12:59", - "closePath" : "SvenVanCaekenberghe 1/4/2011 11:56", - "directory" : "SvenVanCaekenberghe 1/3/2011 22:21", - "encode:on:" : "SvenVanCaekenberghe 1/3/2011 16:17", - "equals:" : "SvenVanCaekenberghe 1/4/2011 10:59", - "file" : "SvenVanCaekenberghe 1/3/2011 22:15", - "firstPathSegment" : "SvenVanCaekenberghe 1/4/2011 14:46", - "fragment" : "SvenVanCaekenberghe 1/3/2011 15:51", - "fragment:" : "SvenVanCaekenberghe 1/3/2011 15:51", - "hasFragment" : "SvenVanCaekenberghe 1/3/2011 15:48", - "hasHost" : "SvenVanCaekenberghe 1/3/2011 15:48", - "hasNonDefaultPort" : "SvenVanCaekenberghe 8/18/2011 21:01", - "hasPath" : "SvenVanCaekenberghe 1/4/2011 12:03", - "hasPort" : "SvenVanCaekenberghe 1/3/2011 15:48", - "hasQuery" : "SvenVanCaekenberghe 1/3/2011 15:47", - "hasScheme" : "SvenVanCaekenberghe 1/3/2011 15:48", - "hash" : "SvenVanCaekenberghe 1/4/2011 10:43", - "host" : "SvenVanCaekenberghe 1/3/2011 15:09", - "host:" : "SvenVanCaekenberghe 8/18/2011 14:41", - "inContextOf:" : "SvenVanCaekenberghe 10/4/2011 15:38", - "isAbsolute" : "SvenVanCaekenberghe 1/3/2011 15:55", - "isDirectory" : "SvenVanCaekenberghe 1/3/2011 15:57", - "isEmpty" : "SvenVanCaekenberghe 1/3/2011 20:06", - "isFile" : "SvenVanCaekenberghe 1/3/2011 15:56", - "isHttp" : "SvenVanCaekenberghe 1/4/2011 10:50", - "isHttps" : "SvenVanCaekenberghe 1/4/2011 10:50", - "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:" : "SvenVanCaekenberghe 8/11/2011 15:08", - "parseFrom:" : "SvenVanCaekenberghe 8/11/2011 14:47", - "parseFrom:defaultScheme:" : "SvenVanCaekenberghe 8/11/2011 15:00", - "parsePath:" : "SvenVanCaekenberghe 2/28/2011 15:53", - "path" : "SvenVanCaekenberghe 1/3/2011 22:21", - "pathPrintString" : "SvenVanCaekenberghe 1/4/2011 11:16", - "pathQueryFragmentPrintString" : "SvenVanCaekenberghe 1/4/2011 11:17", - "pathSegments" : "SvenVanCaekenberghe 1/4/2011 14:51", - "port" : "SvenVanCaekenberghe 1/3/2011 15:09", - "port:" : "SvenVanCaekenberghe 1/3/2011 15:14", - "portOrDefault" : "SvenVanCaekenberghe 8/11/2011 14:37", - "postCopy" : "SvenVanCaekenberghe 4/26/2011 12:34", - "printAuthorityOn:" : "SvenVanCaekenberghe 1/4/2011 12:58", - "printOn:" : "SvenVanCaekenberghe 1/4/2011 15:10", - "printPathOn:" : "SvenVanCaekenberghe 4/17/2011 10:27", - "printPathQueryFragmentOn:" : "SvenVanCaekenberghe 8/18/2011 14:34", - "printQueryOn:" : "SvenVanCaekenberghe 1/12/2011 11:22", - "query" : "SvenVanCaekenberghe 1/3/2011 16:26", - "query:" : "SvenVanCaekenberghe 1/3/2011 20:15", - "queryAddAll:" : "SvenVanCaekenberghe 1/12/2011 11:26", - "queryAt:" : "SvenVanCaekenberghe 1/29/2012 19:29", - "queryAt:add:" : "SvenVanCaekenberghe 7/9/2012 16:20", - "queryAt:ifAbsent:" : "SvenVanCaekenberghe 1/3/2011 19:35", - "queryAt:put:" : "SvenVanCaekenberghe 7/9/2012 16:20", - "queryDo:" : "SvenVanCaekenberghe 1/31/2011 12:18", - "queryKeys" : "SvenVanCaekenberghe 12/13/2011 14:07", - "queryRemoveKey:" : "SvenVanCaekenberghe 8/18/2011 14:11", - "removeLastPathSegment" : "SvenVanCaekenberghe 1/4/2011 11:55", - "retrieveContents" : "SvenVanCaekenberghe 1/24/2012 11:46", - "scheme" : "SvenVanCaekenberghe 1/3/2011 15:09", - "scheme:" : "SvenVanCaekenberghe 7/19/2012 11:40", - "schemeOrDefault" : "SvenVanCaekenberghe 8/11/2011 11:05", - "segments" : "SvenVanCaekenberghe 1/4/2011 10:56", - "segments:" : "SvenVanCaekenberghe 1/4/2011 13:22", - "setDefaults" : "SvenVanCaekenberghe 8/11/2011 12:04", - "withPathSegment:" : "SvenVanCaekenberghe 7/9/2012 16:22", - "withPathSegments:" : "SvenVanCaekenberghe 7/9/2012 16:23", - "withQuery:" : "SvenVanCaekenberghe 7/9/2012 16:25" } } diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/properties.json b/repository/Zinc-HTTP.package/ZnUrl.class/properties.json deleted file mode 100644 index 582b3d2c..00000000 --- a/repository/Zinc-HTTP.package/ZnUrl.class/properties.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "category" : "Zinc-HTTP-Support", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 1/24/2012 11:48", - "instvars" : [ - "scheme", - "host", - "port", - "segments", - "query", - "fragment" ], - "name" : "ZnUrl", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/retrieveContents.st b/repository/Zinc-HTTP.package/ZnUrl.extension/instance/retrieveContents.st similarity index 96% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/retrieveContents.st rename to repository/Zinc-HTTP.package/ZnUrl.extension/instance/retrieveContents.st index 46a67ac7..7b4a7bc5 100644 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/retrieveContents.st +++ b/repository/Zinc-HTTP.package/ZnUrl.extension/instance/retrieveContents.st @@ -1,4 +1,4 @@ -downloading +*zinc-http retrieveContents "Download and return the resource that I refer to. This will typically return a String or a ByteArray (see ZnClient>>#get:). diff --git a/repository/Zinc-HTTP.package/ZnUrl.extension/methodProperties.json b/repository/Zinc-HTTP.package/ZnUrl.extension/methodProperties.json new file mode 100644 index 00000000..e37048cb --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnUrl.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "retrieveContents" : "SvenVanCaekenberghe 1/24/2012 11:46" } } diff --git a/repository/Zinc-HTTP.package/ZnUrl.extension/properties.json b/repository/Zinc-HTTP.package/ZnUrl.extension/properties.json new file mode 100644 index 00000000..778489a7 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnUrl.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "ZnUrl" } diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/README.md b/repository/Zinc-HTTP.package/ZnUserAgent.class/README.md deleted file mode 100644 index cf376db2..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/README.md +++ /dev/null @@ -1,12 +0,0 @@ -I implement a client for making HTTP requests. I can maintain session state across multiple requests, automatically follow redirects and notify observers of my request and response activity. The contents of my request headers can be modified easily. - -DEPRECATED: Please use ZnNeoClient - -Much of my behavior can be controlled with an instance of ZnUserAgentSettings. - -Some examples of my use: - -client := ZnUserAgent new. -response := client get: 'pharo-project.org'. -args := (Dictionary new) at: 'foo' put: 'bar'; yourself. -response := client post: 'mytestdomain.com/form' data: args. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/class/new.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/class/new.st deleted file mode 100644 index a3d71f46..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/class/new.st +++ /dev/null @@ -1,4 +0,0 @@ -instance creation -new - self deprecated: 'Please use ZnEasy' on: '8 Nov 2011' in: 'Zinc HTTP Components'. - ^ super new \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/cookieAt..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/cookieAt..st deleted file mode 100644 index 02ddd033..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/cookieAt..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -cookieAt: aName - "Answers the named cookie for the current request or nil if non exists." - - ^ self session cookieJar cookieAt: aName forUrl: self request url \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/defaultErrorHandler.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/defaultErrorHandler.st deleted file mode 100644 index 97237eff..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/defaultErrorHandler.st +++ /dev/null @@ -1,5 +0,0 @@ -private -defaultErrorHandler - ^ [ :error | - self log debug: [ error description ]. - error defaultAction ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/delete..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/delete..st deleted file mode 100644 index 7d687a17..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/delete..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -delete: urlObject - ^ self delete: urlObject headers: nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/delete.headers..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/delete.headers..st deleted file mode 100644 index cc524e8f..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/delete.headers..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -delete: urlObject headers: headerCollection - ^ self method: #DELETE for: urlObject headers: headerCollection data: nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/errorHandler..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/errorHandler..st deleted file mode 100644 index cf4ec5e9..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/errorHandler..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -errorHandler: aBlock - errorHandler := aBlock \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/errorHandler.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/errorHandler.st deleted file mode 100644 index 34b4ec6f..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/errorHandler.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -errorHandler - ^ errorHandler ifNil: [ errorHandler := self defaultErrorHandler ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/get..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/get..st deleted file mode 100644 index 4c5f2873..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/get..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -get: urlObject - ^ self get: urlObject headers: nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/get.headers..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/get.headers..st deleted file mode 100644 index 67ce761e..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/get.headers..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -get: urlObject headers: headerCollection - ^ self method: #GET for: urlObject headers: headerCollection data: nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/head..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/head..st deleted file mode 100644 index c310496b..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/head..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -head: urlObject - ^ self head: urlObject headers: nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/head.headers..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/head.headers..st deleted file mode 100644 index 640230a0..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/head.headers..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -head: urlObject headers: headerCollection - ^ self method: #HEAD for: urlObject headers: headerCollection data: nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/log.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/log.st deleted file mode 100644 index 5aaed937..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/log.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -log - ^ log ifNil: [ log := ZnLogSupport new ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/logProgressToTranscript.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/logProgressToTranscript.st deleted file mode 100644 index 6089a86c..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/logProgressToTranscript.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -logProgressToTranscript - self logToTranscript \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/logToTranscript.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/logToTranscript.st deleted file mode 100644 index 5dcecb6f..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/logToTranscript.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -logToTranscript - self log addListener: ZnTranscriptLogger new \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/method.for.headers.data..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/method.for.headers.data..st deleted file mode 100644 index 4ea521ee..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/method.for.headers.data..st +++ /dev/null @@ -1,6 +0,0 @@ -private-protocol -method: aMethod for: urlObject headers: headerCollection data: dataEntity - | limit | - limit := self settings followRedirect ifTrue: [ self settings redirectLimit ] ifFalse: [ 0 ]. - ^ self method: aMethod for: urlObject headers: headerCollection data: dataEntity limit: limit - \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/method.for.headers.data.limit..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/method.for.headers.data.limit..st deleted file mode 100644 index 29f3ff3e..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/method.for.headers.data.limit..st +++ /dev/null @@ -1,16 +0,0 @@ -private-protocol -method: method for: url headers: headerCollection data: dataEntity limit: limit - | stream redirects continue | - redirects := 0. - continue := true. - self prepareRequest: url method: method headers: headerCollection data: dataEntity. - [ [ continue ] whileTrue: [ - stream := self openConnection. - request setConnectionClose. - [ self sendRequest: stream ] ensure: [ stream close ]. - (self response isRedirect and: [ redirects < limit ]) - ifTrue: [ self prepareRedirect: headerCollection. redirects := redirects + 1 ] - ifFalse: [ continue := false ] ] ] - on: Error - do: self errorHandler. - ^ self response \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/openConnection.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/openConnection.st deleted file mode 100644 index f10fbaf9..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/openConnection.st +++ /dev/null @@ -1,7 +0,0 @@ -private-protocol -openConnection - | socketStream | - socketStream := ZnNetworkingUtils socketStreamToUrl: request url. - self settings timeout - ifNotNil: [ :timeout | socketStream timeout: timeout ]. - ^ socketStream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/post.data..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/post.data..st deleted file mode 100644 index 5aba3e73..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/post.data..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -post: urlObject data: dataEntity - ^ self post: urlObject headers: nil data: dataEntity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/post.headers.data..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/post.headers.data..st deleted file mode 100644 index 58e5d30c..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/post.headers.data..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -post: urlObject headers: headerCollection data: dataEntity - ^ self method: #POST for: urlObject headers: headerCollection data: dataEntity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareCredentials.for.method..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareCredentials.for.method..st deleted file mode 100644 index d21c1216..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareCredentials.for.method..st +++ /dev/null @@ -1,8 +0,0 @@ -private-protocol -prepareCredentials: headers for: urlObject method: method - (self session credentialsForUrl: urlObject) do: [ :cred | - cred isComplete ifTrue: [ - [ cred setAuthorizationHeader: headers for: urlObject method: method ] - on: Error - do: self errorHandler ] ] - \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareData..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareData..st deleted file mode 100644 index 1bc066f0..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareData..st +++ /dev/null @@ -1,7 +0,0 @@ -private-protocol -prepareData: dataEntity - "Prepare the ZnEntity for the request." - - dataEntity ifNil: [ ^ dataEntity ]. - (dataEntity isKindOf: ZnEntity) ifTrue: [ ^ dataEntity ]. - ^ ZnApplicationFormUrlEncodedEntity withAll: dataEntity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareHeaders.for.method..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareHeaders.for.method..st deleted file mode 100644 index 47a2c8bf..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareHeaders.for.method..st +++ /dev/null @@ -1,13 +0,0 @@ -private-protocol -prepareHeaders: headerCollection for: urlObject method: method - | headers | - headers := (ZnHeaders requestHeadersFor: urlObject) - at: 'User-Agent' put: self settings agent; - yourself. - headerCollection isNil - ifFalse: [ headers addAll: headerCollection ]. - (self session cookieJar cookiesForUrl: urlObject) do: [ :cookie | - headers at: 'Cookie' add: cookie nameValueString ]. - self prepareCredentials: headers for: urlObject method: method. - ^ headers - \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareRedirect..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareRedirect..st deleted file mode 100644 index 61f23860..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareRedirect..st +++ /dev/null @@ -1,10 +0,0 @@ -private-protocol -prepareRedirect: headerCollection - "We implement the common behavior that POST/PUT redirects turn into GET request. - Note also that the body data is dropped" - - | method | - (#(POST PUT) includes: request method) - ifTrue: [ method := #GET ] - ifFalse: [ method := self request method ]. - self prepareRequest: self redirectUrl method: method headers: headerCollection data: nil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareRequest.method.headers.data..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareRequest.method.headers.data..st deleted file mode 100644 index 29fc7213..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/prepareRequest.method.headers.data..st +++ /dev/null @@ -1,9 +0,0 @@ -private-protocol -prepareRequest: urlObject method: method headers: headerCollection data: dataEntity - | url | - url := urlObject asZnUrl. - request := ZnRequest new - requestLine: (ZnRequestLine method: method uri: url); - headers: (self prepareHeaders: headerCollection for: url method: method); - entity: (self prepareData: dataEntity); - yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/processResponse..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/processResponse..st deleted file mode 100644 index 19e0d25d..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/processResponse..st +++ /dev/null @@ -1,12 +0,0 @@ -private-protocol -processResponse: stream - | cookies | - response := (request method = #HEAD) - ifTrue: [ ZnResponse readHeaderFrom: stream ] - ifFalse: [ ZnResponse readFrom: stream ]. - self log debug: [ response printString ]. - cookies := response headers at: 'Set-Cookie' ifAbsent: [ ^ response ]. - cookies := (cookies isCollection & cookies isString) ifTrue: [ Array with: cookies ] ifFalse: [ cookies ]. - cookies do: [ :cookie | - self session cookieJar add: (ZnCookie fromString: cookie for: self request url) ]. - ^ response \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/put.data..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/put.data..st deleted file mode 100644 index cf90b3b9..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/put.data..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -put: urlObject data: dataEntity - ^ self put: urlObject headers: nil data: dataEntity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/put.headers.data..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/put.headers.data..st deleted file mode 100644 index af7f63f4..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/put.headers.data..st +++ /dev/null @@ -1,3 +0,0 @@ -operations -put: urlObject headers: headerCollection data: dataEntity - ^ self method: #PUT for: urlObject headers: headerCollection data: dataEntity \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/redirectUrl.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/redirectUrl.st deleted file mode 100644 index 99825b90..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/redirectUrl.st +++ /dev/null @@ -1,14 +0,0 @@ -private-protocol -redirectUrl - "We support relative locations although they are not the standard (http://en.wikipedia.org/wiki/HTTP_location)" - - | redirectUrl | - redirectUrl := self response location asZnUrl. - redirectUrl isAbsolute - ifFalse: [ | baseUrl | - baseUrl := self request url. - redirectUrl - scheme: baseUrl scheme; - host: baseUrl host; - port: baseUrl port ]. - ^ redirectUrl diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/request..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/request..st deleted file mode 100644 index 21bc1941..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/request..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -request: znRequest - request := znRequest \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/request.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/request.st deleted file mode 100644 index d44e0071..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/request.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -request - ^ request \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/response..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/response..st deleted file mode 100644 index 468cbd62..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/response..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -response: znResponse - response := znResponse \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/sendRequest..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/sendRequest..st deleted file mode 100644 index 52ead97a..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/sendRequest..st +++ /dev/null @@ -1,6 +0,0 @@ -private-protocol -sendRequest: stream - self log debug: [ request printString ]. - request writeOn: stream. - stream flush. - ^ self processResponse: stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/session..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/session..st deleted file mode 100644 index 5d8a99e6..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/session..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -session: userAgentSession - session := userAgentSession \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/session.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/session.st deleted file mode 100644 index ba70fb94..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/session.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -session - ^ session ifNil: [ session := self settings loadSession ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/settings..st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/settings..st deleted file mode 100644 index f10b97b9..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/settings..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -settings: userAgentSettings - settings := userAgentSettings \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/settings.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/settings.st deleted file mode 100644 index bee90f6f..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/settings.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -settings - settings ifNil: [ settings := ZnUserAgentSettings defaultSettingsClass new ]. - ^ settings \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/url.st b/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/url.st deleted file mode 100644 index e8a0f2c7..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/url.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -url - ^ self request url \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnUserAgent.class/methodProperties.json deleted file mode 100644 index 161a76ee..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/methodProperties.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "class" : { - "new" : "SvenVanCaekenberghe 3/4/2012 10:32" }, - "instance" : { - "cookieAt:" : "SvenVanCaekenberghe 8/30/2011 22:00", - "defaultErrorHandler" : "SvenVanCaekenberghe 3/29/2011 14:47", - "delete:" : "SvenVanCaekenberghe 8/18/2011 14:24", - "delete:headers:" : "SvenVanCaekenberghe 8/18/2011 14:23", - "errorHandler" : "SvenVanCaekenberghe 8/18/2011 14:23", - "errorHandler:" : "MattKennedy 10/1/2010 13:45", - "get:" : "SvenVanCaekenberghe 8/18/2011 14:23", - "get:headers:" : "SvenVanCaekenberghe 8/18/2011 14:23", - "head:" : "SvenVanCaekenberghe 8/18/2011 14:23", - "head:headers:" : "SvenVanCaekenberghe 8/18/2011 14:23", - "log" : "SvenVanCaekenberghe 3/29/2011 14:41", - "logProgressToTranscript" : "SvenVanCaekenberghe 3/29/2011 14:41", - "logToTranscript" : "SvenVanCaekenberghe 3/29/2011 15:40", - "method:for:headers:data:" : "SvenVanCaekenberghe 8/18/2011 14:23", - "method:for:headers:data:limit:" : "SvenVanCaekenberghe 1/20/2011 21:10", - "openConnection" : "SvenVanCaekenberghe 1/20/2011 19:36", - "post:data:" : "SvenVanCaekenberghe 8/18/2011 14:23", - "post:headers:data:" : "SvenVanCaekenberghe 8/18/2011 14:23", - "prepareCredentials:for:method:" : "SvenVanCaekenberghe 8/18/2011 14:12", - "prepareData:" : "SvenVanCaekenberghe 1/12/2011 10:12", - "prepareHeaders:for:method:" : "SvenVanCaekenberghe 8/30/2011 22:00", - "prepareRedirect:" : "SvenVanCaekenberghe 8/31/2011 11:36", - "prepareRequest:method:headers:data:" : "SvenVanCaekenberghe 1/4/2011 14:21", - "processResponse:" : "SvenVanCaekenberghe 8/30/2011 22:00", - "put:data:" : "SvenVanCaekenberghe 8/18/2011 14:23", - "put:headers:data:" : "SvenVanCaekenberghe 8/18/2011 14:22", - "redirectUrl" : "SvenVanCaekenberghe 1/20/2011 21:12", - "request" : "MattKennedy 9/24/2010 17:24", - "request:" : "SvenVanCaekenberghe 1/12/2011 10:09", - "response" : "MattKennedy 9/24/2010 17:24", - "response:" : "SvenVanCaekenberghe 1/12/2011 10:09", - "sendRequest:" : "SvenVanCaekenberghe 3/29/2011 14:46", - "session" : "MattKennedy 9/28/2010 11:17", - "session:" : "SvenVanCaekenberghe 1/12/2011 10:10", - "settings" : "SvenVanCaekenberghe 8/18/2011 14:11", - "settings:" : "SvenVanCaekenberghe 1/12/2011 10:10", - "url" : "SvenVanCaekenberghe 1/12/2011 13:47" } } diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/properties.json b/repository/Zinc-HTTP.package/ZnUserAgent.class/properties.json deleted file mode 100644 index b600bb97..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgent.class/properties.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "category" : "Zinc-HTTP-Deprecated", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 10/4/2011 19:02", - "instvars" : [ - "session", - "settings", - "request", - "response", - "log", - "errorHandler" ], - "name" : "ZnUserAgent", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSession.class/instance/credentialsForUrl..st b/repository/Zinc-HTTP.package/ZnUserAgentSession.class/instance/credentialsForUrl..st index 8616ed74..f7687b9a 100644 --- a/repository/Zinc-HTTP.package/ZnUserAgentSession.class/instance/credentialsForUrl..st +++ b/repository/Zinc-HTTP.package/ZnUserAgentSession.class/instance/credentialsForUrl..st @@ -1,3 +1,3 @@ accessing credentialsForUrl: urlObject - ^ self credentials values select: [ :cred | urlObject authority includesSubString: (cred domain) ] \ No newline at end of file + ^ self credentials values select: [ :cred | urlObject authority includesSubstring: (cred domain) ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSession.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnUserAgentSession.class/methodProperties.json index 8589952d..cc1e7ccd 100644 --- a/repository/Zinc-HTTP.package/ZnUserAgentSession.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnUserAgentSession.class/methodProperties.json @@ -8,7 +8,7 @@ "credentialAt:forUrl:" : "SvenVanCaekenberghe 8/18/2011 14:24", "credentials" : "SvenVanCaekenberghe 8/18/2011 14:14", "credentials:" : "MattKennedy 9/28/2010 10:50", - "credentialsForUrl:" : "SvenVanCaekenberghe 8/18/2011 14:24", + "credentialsForUrl:" : "SvenVanCaekenberghe 8/23/2012 14:34", "currentRealm" : "MattKennedy 9/28/2010 17:24", "currentRealm:" : "MattKennedy 9/28/2010 17:24", "resetCookies" : "SvenVanCaekenberghe 2/29/2012 17:40" } } diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/README.md b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/README.md deleted file mode 100644 index a5e97e02..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/README.md +++ /dev/null @@ -1,5 +0,0 @@ -I manage the settings for a ZnUserAgent instance. - -I can be subclassed to extend capabilities to include loading settings from a configuration store or maintaining persistent storage for a cookie jar. - -Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/commentString.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/commentString.st deleted file mode 100644 index da40400b..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/commentString.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -commentString - ^ '(', self platform platformName, '; ', self encryptionStrengthComment, '; ', self platformDetails, '; ', self localeComment, ')' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultCookieJar.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultCookieJar.st deleted file mode 100644 index f4d1174f..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultCookieJar.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -defaultCookieJar - ^ ZnCookieJar \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultSessionClass.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultSessionClass.st deleted file mode 100644 index 2c89ab17..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultSessionClass.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -defaultSessionClass - ^ ZnUserAgentSession \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultSettingsClass.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultSettingsClass.st deleted file mode 100644 index 6f209907..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultSettingsClass.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -defaultSettingsClass - ^ self \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultUserAgentString.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultUserAgentString.st deleted file mode 100644 index 29e7552e..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/defaultUserAgentString.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -defaultUserAgentString - ^ ZnConstants frameworkNameAndVersion, ' ', self commentString, ' ', self platform version asString \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/encryptionStrengthComment.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/encryptionStrengthComment.st deleted file mode 100644 index f014776b..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/encryptionStrengthComment.st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -encryptionStrengthComment - "For user agent comment. Standard values are U, I, or N. Currently returning N until standardize https transport is available." - - ^ 'N' \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/localeComment.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/localeComment.st deleted file mode 100644 index b5b56895..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/localeComment.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -localeComment - ^ LocaleID current isoString \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/platform.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/platform.st deleted file mode 100644 index d0299e5b..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/platform.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -platform - ^ SmalltalkImage current os \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/platformDetails.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/platformDetails.st deleted file mode 100644 index d686c407..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/class/platformDetails.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -platformDetails - ^ self platform platformName, ' ', self platform platformSubtype \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/agent..st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/agent..st deleted file mode 100644 index 9a98da9a..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/agent..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -agent: aString - settings at: #agent put: aString \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/agent.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/agent.st deleted file mode 100644 index 7d7cdf7c..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/agent.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -agent - ^ settings at: #agent ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/followRedirect..st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/followRedirect..st deleted file mode 100644 index d7e6b5db..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/followRedirect..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -followRedirect: aBoolean - settings at: #followRedirect put: aBoolean \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/followRedirect.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/followRedirect.st deleted file mode 100644 index 71646996..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/followRedirect.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -followRedirect - ^ settings at: #followRedirect ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/initialize.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/initialize.st deleted file mode 100644 index d682f305..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/initialize.st +++ /dev/null @@ -1,7 +0,0 @@ -initialize-release -initialize - super initialize. - self settings at: #agent put: self class defaultUserAgentString. - self followRedirect: true. - self redirectLimit: 7. - self timeout: 180 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/loadSession.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/loadSession.st deleted file mode 100644 index b1ee739b..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/loadSession.st +++ /dev/null @@ -1,3 +0,0 @@ -operations -loadSession - ^ self class defaultSessionClass withCookieJar: self class defaultCookieJar new \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/redirectLimit..st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/redirectLimit..st deleted file mode 100644 index 969212a8..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/redirectLimit..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -redirectLimit: anInteger - settings at: #redirectLimit put: anInteger \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/redirectLimit.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/redirectLimit.st deleted file mode 100644 index df467ccb..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/redirectLimit.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -redirectLimit - ^ settings at: #redirectLimit ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/settings..st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/settings..st deleted file mode 100644 index 4fd8c15e..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/settings..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -settings: anObject - settings := anObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/settings.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/settings.st deleted file mode 100644 index cf84a760..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/settings.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -settings - ^ settings isNil ifTrue: [ settings := Dictionary new ] ifFalse: [ settings ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/timeout..st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/timeout..st deleted file mode 100644 index faa611ff..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/timeout..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -timeout: anInteger - settings at: #timeout put: anInteger \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/timeout.st b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/timeout.st deleted file mode 100644 index d6645ded..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/instance/timeout.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -timeout - ^ settings at: #timeout ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/methodProperties.json b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/methodProperties.json deleted file mode 100644 index 2d789e01..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/methodProperties.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "class" : { - "commentString" : "SvenVanCaekenberghe 8/18/2011 14:25", - "defaultCookieJar" : "SvenVanCaekenberghe 12/7/2010 00:00", - "defaultSessionClass" : "SvenVanCaekenberghe 8/18/2011 14:25", - "defaultSettingsClass" : "SvenVanCaekenberghe 1/4/2011 21:00", - "defaultUserAgentString" : "SvenVanCaekenberghe 8/18/2011 14:25", - "encryptionStrengthComment" : "SvenVanCaekenberghe 8/18/2011 14:25", - "localeComment" : "SvenVanCaekenberghe 8/18/2011 14:24", - "platform" : "SvenVanCaekenberghe 10/6/2010 09:32", - "platformDetails" : "SvenVanCaekenberghe 7/16/2012 11:47" }, - "instance" : { - "agent" : "SvenVanCaekenberghe 8/18/2011 14:15", - "agent:" : "SvenVanCaekenberghe 1/12/2011 13:38", - "followRedirect" : "SvenVanCaekenberghe 8/18/2011 14:15", - "followRedirect:" : "SvenVanCaekenberghe 1/12/2011 13:39", - "initialize" : "MattKennedy 9/26/2010 16:12", - "loadSession" : "SvenVanCaekenberghe 8/18/2011 14:24", - "redirectLimit" : "SvenVanCaekenberghe 8/18/2011 14:14", - "redirectLimit:" : "SvenVanCaekenberghe 1/12/2011 13:39", - "settings" : "SvenVanCaekenberghe 8/18/2011 14:14", - "settings:" : "MattKennedy 9/25/2010 21:30", - "timeout" : "SvenVanCaekenberghe 8/18/2011 14:15", - "timeout:" : "SvenVanCaekenberghe 1/12/2011 13:39" } } diff --git a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/properties.json b/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/properties.json deleted file mode 100644 index 8270beea..00000000 --- a/repository/Zinc-HTTP.package/ZnUserAgentSettings.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-HTTP-Deprecated", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "SvenVanCaekenberghe 12/6/2010 13:04", - "instvars" : [ - "settings" ], - "name" : "ZnUserAgentSettings", - "pools" : [ - ], - "super" : "Object", - "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/decodePercent..st b/repository/Zinc-HTTP.package/ZnUtils.class/class/decodePercent..st deleted file mode 100644 index 8e00bb12..00000000 --- a/repository/Zinc-HTTP.package/ZnUtils.class/class/decodePercent..st +++ /dev/null @@ -1,5 +0,0 @@ -conversions -decodePercent: string - ^ [ string unescapePercents ] - on: Error - do: [ (ZnPercentEncodingWrong string: string) signal ] \ 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 88370af7..0ca2ba48 100644 --- a/repository/Zinc-HTTP.package/ZnUtils.class/class/readUpToEnd.limit..st +++ b/repository/Zinc-HTTP.package/ZnUtils.class/class/readUpToEnd.limit..st @@ -1,7 +1,7 @@ streaming readUpToEnd: inputStream limit: limit | species bufferSize buffer totalRead | - bufferSize := limit ifNil: [ 4096 ] ifNotNil: [ 4096 min: limit ]. + bufferSize := limit ifNil: [ self streamingBufferSize ] ifNotNil: [ self streamingBufferSize min: limit ]. species := inputStream isBinary ifTrue: [ ByteArray ] ifFalse: [ String ]. buffer := species new: bufferSize. totalRead := 0. @@ -10,4 +10,5 @@ readUpToEnd: inputStream limit: limit 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 ] ] \ No newline at end of file + out next: readCount putAll: buffer startingAt: 1. + self signalProgress: totalRead total: limit ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/signalProgress.total..st b/repository/Zinc-HTTP.package/ZnUtils.class/class/signalProgress.total..st new file mode 100644 index 00000000..b27aee14 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnUtils.class/class/signalProgress.total..st @@ -0,0 +1,13 @@ +streaming +signalProgress: amount total: total + ZnSignalProgress enabled + ifTrue: [ + total + ifNil: [ + HTTPProgress new + signal: ('Tranferred {1} bytes ...' format: { amount asBytesDescription }) ] + ifNotNil: [ + HTTPProgress new + total: total; + amount: amount; + signal: 'Tranferring...' ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/streamFrom.to..st b/repository/Zinc-HTTP.package/ZnUtils.class/class/streamFrom.to..st index 9f8caeec..0f49a011 100644 --- a/repository/Zinc-HTTP.package/ZnUtils.class/class/streamFrom.to..st +++ b/repository/Zinc-HTTP.package/ZnUtils.class/class/streamFrom.to..st @@ -1,7 +1,7 @@ streaming streamFrom: inputStream to: outputStream | buffer totalRead | - buffer := (inputStream isBinary ifTrue: [ ByteArray ] ifFalse: [ String ]) new: 16384. + buffer := (inputStream isBinary ifTrue: [ ByteArray ] ifFalse: [ String ]) new: self streamingBufferSize. totalRead := 0. [ inputStream atEnd ] whileFalse: [ | readCount | @@ -12,8 +12,5 @@ streamFrom: inputStream to: outputStream outputStream next: readCount putAll: buffer startingAt: 1 ]. inputStream atEnd ifFalse: [ - ZnSignalProgress enabled - ifTrue: [ - HTTPProgress new - signal: ('Tranferred {0} bytes ...' format: { totalRead asBytesDescription }) ]. + self signalProgress: totalRead total: nil. outputStream flush ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/streamFrom.to.size..st b/repository/Zinc-HTTP.package/ZnUtils.class/class/streamFrom.to.size..st index fd7a0cf2..4cea2176 100644 --- a/repository/Zinc-HTTP.package/ZnUtils.class/class/streamFrom.to.size..st +++ b/repository/Zinc-HTTP.package/ZnUtils.class/class/streamFrom.to.size..st @@ -1,7 +1,7 @@ streaming streamFrom: inputStream to: outputStream size: totalSize | bufferSize buffer leftToRead | - bufferSize := 16384 min: totalSize. + bufferSize := self streamingBufferSize min: totalSize. buffer := (inputStream isBinary ifTrue: [ ByteArray ] ifFalse: [ String ]) new: bufferSize. leftToRead := totalSize. [ leftToRead > 0 ] @@ -12,10 +12,5 @@ streamFrom: inputStream to: outputStream size: totalSize outputStream next: readCount putAll: buffer startingAt: 1. leftToRead > 0 ifTrue: [ - ZnSignalProgress enabled - ifTrue: [ - HTTPProgress new - total: totalSize; - amount: (totalSize - leftToRead); - signal: 'Tranferring...' ]. + self signalProgress: (totalSize - leftToRead) total: totalSize. outputStream flush ] ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/streamingBufferSize.st b/repository/Zinc-HTTP.package/ZnUtils.class/class/streamingBufferSize.st new file mode 100644 index 00000000..4aa42251 --- /dev/null +++ b/repository/Zinc-HTTP.package/ZnUtils.class/class/streamingBufferSize.st @@ -0,0 +1,5 @@ +streaming +streamingBufferSize + "Return the byte count used as buffer size when streaming" + + ^ 16384 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/writeQueryFields.withTextEncoding.on..st b/repository/Zinc-HTTP.package/ZnUtils.class/class/writeQueryFields.withTextEncoding.on..st deleted file mode 100644 index ccb66a93..00000000 --- a/repository/Zinc-HTTP.package/ZnUtils.class/class/writeQueryFields.withTextEncoding.on..st +++ /dev/null @@ -1,12 +0,0 @@ -conversions -writeQueryFields: dictionary withTextEncoding: encoding on: stream - | first | - first := true. - dictionary keysAndValuesDo: [ :key :value | - first ifFalse: [ stream nextPut: $& ]. - first := false. - stream nextPutAll: (key encodeForHTTPWithTextEncoding: encoding). - value isNil ifFalse: [ - stream - nextPut: $=; - nextPutAll: (value encodeForHTTPWithTextEncoding: encoding) ] ] \ 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 7bff3ddd..5ce4029d 100644 --- a/repository/Zinc-HTTP.package/ZnUtils.class/methodProperties.json +++ b/repository/Zinc-HTTP.package/ZnUtils.class/methodProperties.json @@ -3,19 +3,17 @@ "capitalizeString:" : "SvenVanCaekenberghe 9/10/2010 20:14", "currentProcessID" : "SvenVanCaekenberghe 12/14/2010 13:10", "decodeBase64:" : "SvenVanCaekenberghe 3/21/2011 20:11", - "decodePercent:" : "SvenVanCaekenberghe 2/28/2011 15:51", "encodeBase64:" : "SvenVanCaekenberghe 4/26/2011 18:58", "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", "parseHttpDate:" : "SeanDeNigris 5/10/2012 12:19", - "parseQueryFrom:" : "SvenVanCaekenberghe 2/28/2011 15:52", - "readUpToEnd:limit:" : "SvenVanCaekenberghe 1/31/2012 12:55", - "streamFrom:to:" : "SvenVanCaekenberghe 8/3/2012 22:37", - "streamFrom:to:size:" : "SvenVanCaekenberghe 7/12/2012 21:04", - "trimString:" : "SvenVanCaekenberghe 10/5/2010 21:24", - "writeQueryFields:on:" : "NorbertHartl 12/6/2011 17:34", - "writeQueryFields:withTextEncoding:on:" : "NorbertHartl 12/6/2011 17:34" }, + "readUpToEnd:limit:" : "SvenVanCaekenberghe 9/17/2012 14:46", + "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", + "streamingBufferSize" : "SvenVanCaekenberghe 9/17/2012 14:27", + "trimString:" : "SvenVanCaekenberghe 10/5/2010 21:24" }, "instance" : { } } diff --git a/repository/Zinc-HTTP.package/monticello.meta/categories.st b/repository/Zinc-HTTP.package/monticello.meta/categories.st index 596d8372..859af1db 100644 --- a/repository/Zinc-HTTP.package/monticello.meta/categories.st +++ b/repository/Zinc-HTTP.package/monticello.meta/categories.st @@ -1,8 +1,9 @@ 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'! SystemOrganization addCategory: #'Zinc-HTTP-Support'! -SystemOrganization addCategory: #'Zinc-HTTP-Support-Tests'! +SystemOrganization addCategory: #'Zinc-HTTP-Variables'! diff --git a/repository/Zinc-HTTP.package/monticello.meta/version b/repository/Zinc-HTTP.package/monticello.meta/version index cd6c4844..63148f7f 100644 --- a/repository/Zinc-HTTP.package/monticello.meta/version +++ b/repository/Zinc-HTTP.package/monticello.meta/version @@ -1 +1 @@ -(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 ()) \ No newline at end of file +(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 diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet..st index 536387c3..3d771dc0 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet..st @@ -2,4 +2,6 @@ httpGet: url "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpGet: url \ 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 83f1a053..476d3955 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 @@ -2,4 +2,6 @@ httpGet: url accept: mimeType "Forward to Zinc HTTP Components" + 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 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 b8920105..b773d487 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 @@ -2,4 +2,6 @@ httpGet: url args: queryArguments accept: mimeType "Forward to Zinc HTTP Components" + 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 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 34726df3..754f788f 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 @@ -2,4 +2,6 @@ httpGet: url args: queryArguments accept: mimeType request: extraHeaders "Forward to Zinc HTTP Components" + 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 diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.user.passwd..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.user.passwd..st index 5cd5e91e..79e3793d 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.user.passwd..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGet.args.user.passwd..st @@ -2,4 +2,6 @@ httpGet: url args: queryArguments user: username passwd: password "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpGet: url args: queryArguments user: username passwd: password \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument..st index 4aaaf166..7e271e9d 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument..st @@ -2,4 +2,6 @@ httpGetDocument: url "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpGetDocument: url \ 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 477fdb7e..c4a49b0e 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 @@ -2,4 +2,6 @@ httpGetDocument: url accept: mimeType "Forward to Zinc HTTP Components" + 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 diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args..st index cf1f6bda..c03ee942 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args..st @@ -2,4 +2,6 @@ httpGetDocument: url args: queryArguments "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpGetDocument: url args: queryArguments \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args.accept..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args.accept..st index 3fef6cbc..0727170b 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args.accept..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args.accept..st @@ -2,4 +2,6 @@ httpGetDocument: url args: queryArguments accept: mimeType "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpGetDocument: url args: queryArguments accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args.accept.request..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args.accept.request..st index 83d519c0..a311e18f 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args.accept.request..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGetDocument.args.accept.request..st @@ -2,4 +2,6 @@ httpGetDocument: url args: queryArguments accept: mimeType request: extraHeaders "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpGetDocument: url args: queryArguments accept: mimeType request: extraHeaders \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGif..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGif..st index 640f1a65..0e1e3f52 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGif..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpGif..st @@ -2,4 +2,6 @@ httpGif: url "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpGif: url \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpJpeg..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpJpeg..st index 524eb136..256d340b 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpJpeg..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpJpeg..st @@ -2,4 +2,6 @@ httpJpeg: url "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpJpeg: url \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPng..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPng..st index 93692af2..a265e827 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPng..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPng..st @@ -2,4 +2,6 @@ httpPng: url "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpPng: url \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPost.args.accept..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPost.args.accept..st index 9c976d05..91ad3edc 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPost.args.accept..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPost.args.accept..st @@ -2,4 +2,6 @@ httpPost: url args: arguments accept: mimeType "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpPost: url args: arguments accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPost.args.user.passwd..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPost.args.user.passwd..st index de55c628..47c10753 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPost.args.user.passwd..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPost.args.user.passwd..st @@ -2,4 +2,6 @@ httpPost: url args: arguments user: username passwd: password "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpPost: url args: arguments user: username passwd: password \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args..st index 70efd13a..1eddc0bf 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args..st @@ -2,4 +2,6 @@ httpPostDocument: url args: arguments "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpPostDocument: url args: arguments \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args.accept..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args.accept..st index a6707960..aeb3e109 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args.accept..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args.accept..st @@ -2,4 +2,6 @@ httpPostDocument: url args: arguments accept: mimeType "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpPostDocument: url args: arguments accept: mimeType \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args.accept.request..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args.accept.request..st index c1de1547..217b3648 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args.accept.request..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostDocument.args.accept.request..st @@ -2,4 +2,6 @@ httpPostDocument: url args: arguments accept: mimeType request: extraHeaders "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpPostDocument: url args: arguments accept: mimeType request: extraHeaders \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostMultipart.args.accept.request..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostMultipart.args.accept.request..st index b6dfe58f..2fb1e0c4 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostMultipart.args.accept.request..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPostMultipart.args.accept.request..st @@ -2,4 +2,6 @@ httpPostMultipart: url args: arguments accept: mimeType request: extraHeaders "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpPostMultipart: url args: arguments accept: mimeType request: extraHeaders \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPut.to.user.passwd..st b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPut.to.user.passwd..st index e1eda2ad..d4062e1f 100644 --- a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPut.to.user.passwd..st +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/class/httpPut.to.user.passwd..st @@ -2,4 +2,6 @@ httpPut: stream to: url user: username passwd: password "Forward to Zinc HTTP Components" + self deprecated: 'Use ZnClient' on: ' 2012-10-03T18:02:49Z' in: 'Pharo 2.0'. + ^ ZnHTTPSocketFacade httpPut: stream to: url user: username passwd: password \ No newline at end of file diff --git a/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/methodProperties.json b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/methodProperties.json new file mode 100644 index 00000000..452f5425 --- /dev/null +++ b/repository/Zinc-Patch-HTTPSocket.package/HTTPSocket.extension/methodProperties.json @@ -0,0 +1,24 @@ +{ + "class" : { + "httpGet:" : "SvenVanCaekenberghe 10/3/2012 20:04", + "httpGet:accept:" : "SvenVanCaekenberghe 10/3/2012 20:04", + "httpGet:args:accept:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpGet:args:accept:request:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpGet:args:user:passwd:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpGetDocument:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpGetDocument:accept:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpGetDocument:args:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpGetDocument:args:accept:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpGetDocument:args:accept:request:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpGif:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpJpeg:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpPng:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpPost:args:accept:" : "SvenVanCaekenberghe 10/3/2012 20:05", + "httpPost:args:user:passwd:" : "SvenVanCaekenberghe 10/3/2012 20:06", + "httpPostDocument:args:" : "SvenVanCaekenberghe 10/3/2012 20:06", + "httpPostDocument:args:accept:" : "SvenVanCaekenberghe 10/3/2012 20:06", + "httpPostDocument:args:accept:request:" : "SvenVanCaekenberghe 10/3/2012 20:06", + "httpPostMultipart:args:accept:request:" : "SvenVanCaekenberghe 10/3/2012 20:06", + "httpPut:to:user:passwd:" : "SvenVanCaekenberghe 10/3/2012 20:06" }, + "instance" : { + } } diff --git a/repository/Zinc-Patch-HTTPSocket.package/monticello.meta/version b/repository/Zinc-Patch-HTTPSocket.package/monticello.meta/version index 8c7bb6e5..4dc7f1f0 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-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 ()) \ 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 '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 diff --git a/repository/Zinc-Pharo-Forward-Compatibility.package/.filetree b/repository/Zinc-Pharo-Forward-Compatibility.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-Pharo-Forward-Compatibility.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-Pharo-Forward-Compatibility.package/String.extension/instance/includesSubstring..st b/repository/Zinc-Pharo-Forward-Compatibility.package/String.extension/instance/includesSubstring..st new file mode 100644 index 00000000..1b3f8f46 --- /dev/null +++ b/repository/Zinc-Pharo-Forward-Compatibility.package/String.extension/instance/includesSubstring..st @@ -0,0 +1,3 @@ +*zinc-pharo-forward-compatibility +includesSubstring: subString + ^ self includesSubString: subString \ No newline at end of file diff --git a/repository/Zinc-Pharo-Forward-Compatibility.package/String.extension/methodProperties.json b/repository/Zinc-Pharo-Forward-Compatibility.package/String.extension/methodProperties.json new file mode 100644 index 00000000..cd464080 --- /dev/null +++ b/repository/Zinc-Pharo-Forward-Compatibility.package/String.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "includesSubstring:" : "SvenVanCaekenberghe 8/27/2012 21:54" } } diff --git a/repository/Zinc-HTTP.package/String.extension/properties.json b/repository/Zinc-Pharo-Forward-Compatibility.package/String.extension/properties.json similarity index 100% rename from repository/Zinc-HTTP.package/String.extension/properties.json rename to repository/Zinc-Pharo-Forward-Compatibility.package/String.extension/properties.json diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/README.md b/repository/Zinc-Pharo-Forward-Compatibility.package/monticello.meta/initializers.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/README.md rename to repository/Zinc-Pharo-Forward-Compatibility.package/monticello.meta/initializers.st diff --git a/repository/Zinc-Pharo-Forward-Compatibility.package/monticello.meta/package b/repository/Zinc-Pharo-Forward-Compatibility.package/monticello.meta/package new file mode 100644 index 00000000..a878808d --- /dev/null +++ b/repository/Zinc-Pharo-Forward-Compatibility.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-Pharo-Forward-Compatibility') \ No newline at end of file diff --git a/repository/Zinc-Pharo-Forward-Compatibility.package/monticello.meta/version b/repository/Zinc-Pharo-Forward-Compatibility.package/monticello.meta/version new file mode 100644 index 00000000..ee5ee322 --- /dev/null +++ b/repository/Zinc-Pharo-Forward-Compatibility.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-Pharo-Forward-Compatibility-SvenVanCaekenberghe.1' message 'added String>>#includesSubstring: as synomym' id 'cf8479af-20ab-4286-b1e6-b7a7a4ae863c' date '27 August 2012' time '9:57:23.067 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Pharo-Forward-Compatibility.package/properties.json b/repository/Zinc-Pharo-Forward-Compatibility.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-Pharo-Forward-Compatibility.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 new file mode 100644 index 00000000..1ac0e050 --- /dev/null +++ b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/isAbstract.st @@ -0,0 +1,3 @@ +accessing +isAbstract + ^ 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 4d436e5d..a77d9ba6 100644 --- a/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/match..st +++ b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/class/match..st @@ -1,5 +1,6 @@ accessing match: request + self isAbstract ifTrue: [ ^ nil ]. ^ ZnRestServerUtils matchPath: request uri pathSegments pattern: self pattern \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/methodProperties.json b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/methodProperties.json index 965225bc..ef967ad0 100644 --- a/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/methodProperties.json +++ b/repository/Zinc-REST.package/ZnAutoMatchedRestCall.class/methodProperties.json @@ -1,6 +1,7 @@ { "class" : { - "match:" : "SvenVanCaekenberghe 6/15/2011 17:30", + "isAbstract" : "SvenVanCaekenberghe 12/9/2012 17:45", + "match:" : "SvenVanCaekenberghe 12/9/2012 19:45", "pattern" : "SvenVanCaekenberghe 6/15/2011 21:47" }, "instance" : { } } diff --git a/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/instance/match..st b/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/instance/match..st index 1e55c9bc..1a0dc75d 100644 --- a/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/instance/match..st +++ b/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/instance/match..st @@ -1,6 +1,6 @@ public match: request - rootClass subclassesDo: [ :each | + rootClass withAllSubclassesDo: [ :each | (each match: request) ifNotNil: [ :variables | ^ each new diff --git a/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/methodProperties.json b/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/methodProperties.json index 7b88ddf6..8ca17cdd 100644 --- a/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/methodProperties.json +++ b/repository/Zinc-REST.package/ZnCallHierarchyRestUriSpace.class/methodProperties.json @@ -2,6 +2,6 @@ "class" : { }, "instance" : { - "match:" : "SvenVanCaekenberghe 6/15/2011 17:32", + "match:" : "SvenVanCaekenberghe 12/9/2012 17:43", "rootClass" : "SvenVanCaekenberghe 6/15/2011 10:57", "rootClass:" : "SvenVanCaekenberghe 6/15/2011 10:57" } } diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/README.md b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/README.md new file mode 100644 index 00000000..e25c833c --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/README.md @@ -0,0 +1,15 @@ +ZnExampleStorageObjectRestCall. + +GET /storage/object/ + + return the map stored under id + +DELETE /storage/object/ + + delete the map stored under id + +PUT /storage/object/ + + overwrite the map stored under id with MAP + + #'object-uri' is a reserved key in MAP \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/class/pattern.st b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/class/pattern.st new file mode 100644 index 00000000..0478f5b0 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/class/pattern.st @@ -0,0 +1,3 @@ +accessing +pattern + ^ #( 'storage' 'objects' '*' ) \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/delete.st b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/delete.st new file mode 100644 index 00000000..995e3237 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/delete.st @@ -0,0 +1,6 @@ +public +delete + | objectUri | + objectUri := '/storage/objects/{1}' format: { variables first }. + self delegate storage removeKey: objectUri ifAbsent: [ ^ self notFound ]. + self emptyOkResponse \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/get.st b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/get.st new file mode 100644 index 00000000..fcf49e12 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/get.st @@ -0,0 +1,6 @@ +public +get + | data objectUri | + objectUri := '/storage/objects/{1}' format: { variables first }. + data := self delegate storage at: objectUri ifAbsent: [ ^ self notFound ]. + self jsonResponse: data \ 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 new file mode 100644 index 00000000..1e0de2f2 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/instance/put.st @@ -0,0 +1,9 @@ +public +put + | data objectUri | + objectUri := '/storage/objects/{1}' format: { variables first }. + (self delegate storage includesKey: objectUri) ifFalse: [ ^ self notFound ]. + data := self jsonRequest. + data at: #'object-uri' put: objectUri. + self delegate storage at: objectUri put: data. + self emptyOkResponse \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/methodProperties.json b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/methodProperties.json new file mode 100644 index 00000000..10fa6bed --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + "pattern" : "SvenVanCaekenberghe 12/10/2012 16:03" }, + "instance" : { + "delete" : "SvenVanCaekenberghe 12/10/2012 16:41", + "get" : "SvenVanCaekenberghe 12/10/2012 16:39", + "put" : "SvenVanCaekenberghe 12/10/2012 16:47" } } diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/properties.json b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/properties.json new file mode 100644 index 00000000..f173d46b --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectRestCall.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-REST-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnExampleStorageObjectRestCall", + "pools" : [ + ], + "super" : "ZnExampleStorageRestCall", + "type" : "normal" } diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/README.md b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/README.md new file mode 100644 index 00000000..c0a23885 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/README.md @@ -0,0 +1,15 @@ +ZnExampleStorageObjectsRestCall. + +GET /storage/objects + + list all stored maps as a list of object-uris + +GET /storage/objects?key1=value1&key2=value2 + + as above with conjunctive condition specified + +POST /storage/objects + + store a new map, returns the created object-uri + + #'object-uri' is a reserved key in MAP \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/class/pattern.st b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/class/pattern.st new file mode 100644 index 00000000..cea5ea7e --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/class/pattern.st @@ -0,0 +1,3 @@ +accessing +pattern + ^ #( 'storage' 'objects' ) \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/instance/get.st b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/instance/get.st new file mode 100644 index 00000000..b357ccb4 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/instance/get.st @@ -0,0 +1,14 @@ +public +get + | predicateKeys | + predicateKeys := request uri queryKeys. + predicateKeys isEmpty + ifTrue: [ self jsonResponse: self delegate storage keys ] + ifFalse: [ + | objectKeys | + objectKeys := OrderedCollection new. + self delegate storage + keysAndValuesDo: [ :key :value | + (predicateKeys allSatisfy: [ :each | (value at: each ifAbsent: [ nil ]) = (request uri queryAt: each) ]) + ifTrue: [ objectKeys add: key ] ]. + self jsonResponse: objectKeys ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/instance/post.st b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/instance/post.st new file mode 100644 index 00000000..b4f09fa9 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/instance/post.st @@ -0,0 +1,11 @@ +public +post + | data newUri | + data := self jsonRequest. + data isDictionary + ifTrue: [ + newUri := '/storage/objects/{1}' format: { self delegate nextId printString }. + data at: #'object-uri' put: newUri. + self delegate storage at: newUri put: data. + self created: newUri ] + ifFalse: [ self badRequest: 'JSON map expected' ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/methodProperties.json b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/methodProperties.json new file mode 100644 index 00000000..d1b56dcb --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + "pattern" : "SvenVanCaekenberghe 12/10/2012 13:27" }, + "instance" : { + "get" : "SvenVanCaekenberghe 12/10/2012 15:58", + "post" : "SvenVanCaekenberghe 12/10/2012 16:34" } } diff --git a/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/properties.json b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/properties.json new file mode 100644 index 00000000..991a19c4 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageObjectsRestCall.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-REST-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnExampleStorageObjectsRestCall", + "pools" : [ + ], + "super" : "ZnExampleStorageRestCall", + "type" : "normal" } diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/README.md b/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/README.md new file mode 100644 index 00000000..b79ae402 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/README.md @@ -0,0 +1,3 @@ +I am ZnExampleStorageRestCall, the root of a hierarchy of REST calls implementing a simple storage service with CRUD operations. + +The calls implemented by my subclasses are used by ZnExampleStorageRestServerDelegate. \ 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 new file mode 100644 index 00000000..ed058330 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/class/isAbstract.st @@ -0,0 +1,3 @@ +accessing +isAbstract + ^ self = ZnExampleStorageRestCall \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/methodProperties.json b/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/methodProperties.json new file mode 100644 index 00000000..802c746d --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "isAbstract" : "SvenVanCaekenberghe 12/10/2012 13:18" }, + "instance" : { + } } diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/properties.json b/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/properties.json new file mode 100644 index 00000000..d36977ac --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestCall.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-REST-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnExampleStorageRestCall", + "pools" : [ + ], + "super" : "ZnJSONRestCall", + "type" : "normal" } diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/README.md b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/README.md new file mode 100644 index 00000000..6929ebfd --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/README.md @@ -0,0 +1,16 @@ +I am ZnExampleStorageRestServerDelegate. + +I offer a REST interface on /storage with CRUD operations on JSON maps. I automatically use the call hierarchy below ZnExampleStorageRestCall. + +To install me you can do: + + ZnServer startDefaultOn: 1701. + ZnServer default logToTranscript. + + ZnServer default delegate + map: 'storage' + to: ZnExampleStorageRestServerDelegate new. + + ZnServer stopDefault. + +See ZnExampleStorageRestServerDelegateTests for example client usage. diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/instance/initialize.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/instance/initialize.st new file mode 100644 index 00000000..1d53776f --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + idCounter := 1000. + self uriSpace: ZnCallHierarchyRestUriSpace new. + self uriSpace rootClass: ZnExampleStorageRestCall \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/instance/nextId.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/instance/nextId.st new file mode 100644 index 00000000..0e6d3a1f --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/instance/nextId.st @@ -0,0 +1,3 @@ +accessing +nextId + ^ idCounter := idCounter + 1 \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/instance/storage.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/instance/storage.st new file mode 100644 index 00000000..24d786d5 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/instance/storage.st @@ -0,0 +1,3 @@ +accessing +storage + ^ storage ifNil: [ storage := Dictionary new ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/methodProperties.json b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/methodProperties.json new file mode 100644 index 00000000..01ef4b31 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "initialize" : "SvenVanCaekenberghe 12/10/2012 15:47", + "nextId" : "SvenVanCaekenberghe 12/10/2012 15:47", + "storage" : "SvenVanCaekenberghe 12/10/2012 13:13" } } diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/properties.json b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/properties.json new file mode 100644 index 00000000..fc935998 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegate.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-REST-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "storage", + "idCounter" ], + "name" : "ZnExampleStorageRestServerDelegate", + "pools" : [ + ], + "super" : "ZnJSONRestServerDelegate", + "type" : "normal" } diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/README.md b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/README.md new file mode 100644 index 00000000..0f3faf6c --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/README.md @@ -0,0 +1 @@ +ZnExampleStorageRestServerDelegateTest contains unit tests for the ZnExampleStorageRestServerDelegate in combination with the calls under ZnExampleStorageRestCall. diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/setUp.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/setUp.st new file mode 100644 index 00000000..180622c4 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/setUp.st @@ -0,0 +1,11 @@ +running +setUp + server := ZnServer startOn: 1700 + 10 atRandom. + server delegate: ZnExampleStorageRestServerDelegate new. + client := ZnClient new + url: server localUrl; + addPathSegment: #storage; + accept: ZnMimeType applicationJson; + contentReader: [ :entity | entity ifNotNil: [ NeoJSONReader fromString: entity contents ] ]; + contentWriter: [ :object | ZnEntity with: (NeoJSONWriter toString: object) type: ZnMimeType applicationJson ]; + yourself \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/tearDown.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/tearDown.st new file mode 100644 index 00000000..e5ace0ae --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/tearDown.st @@ -0,0 +1,4 @@ +running +tearDown + client close. + server stop \ 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 new file mode 100644 index 00000000..5ecf08ca --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testCreate.st @@ -0,0 +1,28 @@ +testing +testCreate + "You create a new entry by posting a JSON map representation to /storage/objects + The result is a 201 Created response with the URI of the new object both + returned as a JSON string and as the Location header" + + | data objectUri | + data := Dictionary with: #x -> 'foo' with: #y -> 'bar'. + client + addPathSegment: 'objects'; + contents: data; + post. + self assert: client isSuccess. + self assert: client isCreated. + objectUri := client response location. + self assert: objectUri isString & objectUri isEmpty not. + self assert: client contents equals: objectUri. + client resetEntity. + client get. + self assert: client isSuccess. + self assert: (client contents includes: objectUri). + client + url: objectUri; + get. + 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 diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testDelete.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testDelete.st new file mode 100644 index 00000000..a2b374f6 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testDelete.st @@ -0,0 +1,22 @@ +testing +testDelete + "You delete an existing entry by doing a DELETE on its uri" + + | data objectUri | + data := Dictionary with: #x -> 'foo' with: #y -> 'bar'. + client + addPathSegment: 'objects'; + contents: data; + post. + self assert: client isCreated. + objectUri := client response location. + client resetEntity. + client + url: objectUri; + get. + self assert: client isSuccess. + client delete. + self assert: client isSuccess. + client get. + self deny: client isSuccess. + self assert: client isNotFound \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testEmpty.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testEmpty.st new file mode 100644 index 00000000..dfe31d9b --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testEmpty.st @@ -0,0 +1,9 @@ +testing +testEmpty + "An empty database returns a empty array for GET /storage/objects" + + client + addPathSegment: 'objects'; + get. + self assert: client isSuccess. + self assert: client contents equals: #() \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testQuery.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testQuery.st new file mode 100644 index 00000000..92241a47 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testQuery.st @@ -0,0 +1,25 @@ +testing +testQuery + "Any query parameters are seen as a conjunctive filter. + Here we execute a GET /storage/object?string=five to find a entry where + the key 'string' equals 'five'. Note that the uri is returned." + + | data objectUri | + client addPathSegment: 'objects'. + 1 to: 10 do: [ :each | + data := Dictionary with: #int -> each with: #string -> each asWords. + client + contents: data; + post. + self assert: client isCreated ]. + client resetEntity. + client + queryAt: #string put: 'five'; + get. + self assert: client isSuccess. + objectUri := client contents first. + client + url: objectUri; + get. + self assert: client isSuccess. + self assert: (client contents at: #int) equals: 5 \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testUpdate.st b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testUpdate.st new file mode 100644 index 00000000..ecfd2311 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/instance/testUpdate.st @@ -0,0 +1,26 @@ +testing +testUpdate + "To update an existing object you PUT a new JSON map representation to an existing uri" + + | data objectUri | + data := Dictionary with: #x -> 'foo' with: #y -> 'bar'. + client + addPathSegment: 'objects'; + contents: data; + post. + self assert: client isCreated. + objectUri := client response location. + client resetEntity. + data at: #z put: 100. + client + url: objectUri; + contents: data; + put. + self assert: client isSuccess. + client resetEntity. + client get. + self assert: client isSuccess. + data keysAndValuesDo: [ :key :value | + (client contents at: key) = value ]. + self assert: (client contents at: #'object-uri') equals: objectUri. + self assert: (client contents at: #z) equals: 100 \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/methodProperties.json b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/methodProperties.json new file mode 100644 index 00000000..ef8796ad --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "setUp" : "SvenVanCaekenberghe 12/10/2012 20:03", + "tearDown" : "SvenVanCaekenberghe 12/10/2012 19:18", + "testCreate" : "SvenVanCaekenberghe 12/12/2012 10:26", + "testDelete" : "SvenVanCaekenberghe 12/12/2012 10:26", + "testEmpty" : "SvenVanCaekenberghe 12/10/2012 21:25", + "testQuery" : "SvenVanCaekenberghe 12/12/2012 10:27", + "testUpdate" : "SvenVanCaekenberghe 12/12/2012 10:28" } } diff --git a/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/properties.json b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/properties.json new file mode 100644 index 00000000..6ea4aed7 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleStorageRestServerDelegateTest.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-REST-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "server", + "client" ], + "name" : "ZnExampleStorageRestServerDelegateTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCall.class/README.md b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/README.md new file mode 100644 index 00000000..1c3bd1f7 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/README.md @@ -0,0 +1,50 @@ +I am ZnExampleSumRestCall. +I am a ZnAutoMatchedRestCall. + +I handle REST requests for /sum + +For a GET request, I accept numbers as path elements or as a query parameter. + + GET /sum/1/2/3 + GET /sum?numbers=1,2,3 + +For a POST requests, I accept a text/plain entity containing numbers. + + POST /sum '1,2,3' + +To install me, try: + + ZnServer startDefaultOn: 1701. + ZnServer default logToTranscript. + + ZnServer default delegate + map: 'sum' + to: (ZnRestServerDelegate new + uriSpace: (ZnCallHierarchyRestUriSpace new + rootClass: ZnExampleSumRestCall; + yourself); + yourself). + + ZnServer stopDefault. + +Here are some example invocations: + + ZnClient new + url: ZnServer default localUrl; + addPathSegment: #sum; + queryAt: #numbers put: '1,2,3'; + get. + + ZnClient new + url: ZnServer default localUrl; + addPathSegment: #sum; + addPathSegment: '1'; + addPathSegment: '2'; + addPathSegment: '3'; + get. + + ZnClient new + url: ZnServer default localUrl; + addPathSegment: #sum; + entity: (ZnEntity text: '1,2,3'); + post. \ 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 new file mode 100644 index 00000000..bf5f6c1a --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/class/match..st @@ -0,0 +1,5 @@ +public +match: request + ^ request uri firstPathSegment = 'sum' + ifTrue: [ request uri pathSegments allButFirst ] + ifFalse: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/get.st b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/get.st new file mode 100644 index 00000000..8599edc7 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/get.st @@ -0,0 +1,5 @@ +public +get + | sum | + sum := self numbersForGet inject: 0 into: [ :sub :next | sub + next ]. + self response: (ZnResponse ok: (ZnEntity with: sum asString)) \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/numbersForGet.st b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/numbersForGet.st new file mode 100644 index 00000000..59d29309 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/numbersForGet.st @@ -0,0 +1,9 @@ +accessing +numbersForGet + variables isEmpty ifFalse: [ ^ variables collect: [ :each | + [ each asNumber ] on: Error do: [ 0 ] ] ]. + (self request uri queryAt: #numbers ifAbsent: [ nil ]) + ifNotNil: [ :numbers | + ^ (numbers findTokens: { Character space. Character tab. $, }) collect: [ :each | + [ each asNumber ] on: Error do: [ 0 ] ] ]. + ^ #() \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/numbersForPost.st b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/numbersForPost.st new file mode 100644 index 00000000..1c487018 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/numbersForPost.st @@ -0,0 +1,7 @@ +accessing +numbersForPost + (self request hasEntity and: [ self request entity contentType = ZnMimeType textPlain]) + ifNotNil: [ :numbers | + ^ (self request entity contents findTokens: { Character space. Character tab. Character cr. Character lf. $, }) collect: [ :each | + [ each asNumber ] on: Error do: [ 0 ] ] ]. + ^ #() \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/post.st b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/post.st new file mode 100644 index 00000000..907a5261 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/instance/post.st @@ -0,0 +1,5 @@ +public +post + | sum | + sum := self numbersForPost inject: 0 into: [ :sub :next | sub + next ]. + self response: (ZnResponse ok: (ZnEntity with: sum asString)) \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCall.class/methodProperties.json b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/methodProperties.json new file mode 100644 index 00000000..556241f2 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + "match:" : "SvenVanCaekenberghe 12/9/2012 17:47" }, + "instance" : { + "get" : "SvenVanCaekenberghe 12/9/2012 19:17", + "numbersForGet" : "SvenVanCaekenberghe 12/9/2012 19:16", + "numbersForPost" : "SvenVanCaekenberghe 12/9/2012 19:18", + "post" : "SvenVanCaekenberghe 12/9/2012 19:18" } } diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCall.class/properties.json b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/properties.json new file mode 100644 index 00000000..981be640 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCall.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-REST-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnExampleSumRestCall", + "pools" : [ + ], + "super" : "ZnAutoMatchedRestCall", + "type" : "normal" } diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/README.md b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/README.md new file mode 100644 index 00000000..fd034aff --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/README.md @@ -0,0 +1 @@ +ZnExampleSumRestCallTest contains unit tests for ZnExampleRestCall. \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/setUp.st b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/setUp.st new file mode 100644 index 00000000..ca37d60c --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/setUp.st @@ -0,0 +1,13 @@ +running +setUp + server := ZnServer startOn: 1700 + 10 atRandom. + server delegate: + (ZnRestServerDelegate new + uriSpace: (ZnCallHierarchyRestUriSpace new + rootClass: ZnExampleSumRestCall; + yourself); + yourself). + client := ZnClient new + url: server localUrl; + addPathSegment: #sum; + yourself \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/tearDown.st b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/tearDown.st new file mode 100644 index 00000000..e5ace0ae --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/tearDown.st @@ -0,0 +1,4 @@ +running +tearDown + client close. + server stop \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/testPostSum.st b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/testPostSum.st new file mode 100644 index 00000000..f19ef6e1 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/testPostSum.st @@ -0,0 +1,10 @@ +testing +testPostSum + "Here we test POSTing a text file with a number per line to /sum" + + | input output | + input := #(1 2 3). + client entity: (ZnEntity text: (String crlf join: input)). + output := client post. + self assert: client isSuccess. + self assert: output equals: input sum asString \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/testQuerySum.st b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/testQuerySum.st new file mode 100644 index 00000000..cbce84d4 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/testQuerySum.st @@ -0,0 +1,10 @@ +testing +testQuerySum + "Here we test a GET /sum?numbers=1,2,3" + + | input output | + input := #(1 2 3). + client queryAt: #numbers put: ($, join: input). + output := client get. + self assert: client isSuccess. + self assert: output equals: input sum asString \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/testUriSum.st b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/testUriSum.st new file mode 100644 index 00000000..933a3374 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/instance/testUriSum.st @@ -0,0 +1,10 @@ +testing +testUriSum + "Here we test doing a GET /sum/1/2/3" + + | input output | + input := #(1 2 3). + input do: [ :each | client addPathSegment: each asString ]. + output := client get. + self assert: client isSuccess. + self assert: output equals: input sum asString \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/methodProperties.json b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/methodProperties.json new file mode 100644 index 00000000..1804bd6b --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "setUp" : "SvenVanCaekenberghe 12/10/2012 17:28", + "tearDown" : "SvenVanCaekenberghe 12/10/2012 17:28", + "testPostSum" : "SvenVanCaekenberghe 12/10/2012 21:22", + "testQuerySum" : "SvenVanCaekenberghe 12/11/2012 09:09", + "testUriSum" : "SvenVanCaekenberghe 12/10/2012 21:21" } } diff --git a/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/properties.json b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/properties.json new file mode 100644 index 00000000..5179a3d7 --- /dev/null +++ b/repository/Zinc-REST.package/ZnExampleSumRestCallTest.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-REST-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "server", + "client" ], + "name" : "ZnExampleSumRestCallTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/README.md b/repository/Zinc-REST.package/ZnJSONRestCall.class/README.md new file mode 100644 index 00000000..0a97314c --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/README.md @@ -0,0 +1,6 @@ +I am ZnJSONRestCall. +I am a ZnAutoMatchedRestCall and a ZnRestCall. + +I offer extra support for the common case where most responses or requests use JSON as representation. + +I work together with ZnJSONRestServerDelegate. \ 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 new file mode 100644 index 00000000..09b85571 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/class/isAbstract.st @@ -0,0 +1,3 @@ +accessing +isAbstract + ^ self = ZnJSONRestCall \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/acceptMethods..st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/acceptMethods..st new file mode 100644 index 00000000..6e793c37 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/acceptMethods..st @@ -0,0 +1,11 @@ +public +acceptMethods: allowedMethods + "Allow and execute allowedMethods (#put or #delete) as POST ? method=put" + + | method | + method := (request uri queryAt: 'method' ifAbsent: [ #error ]) asLowercase asSymbol. + (allowedMethods includes: method) + ifTrue: [ + self perform: method ] + ifFalse: [ + self wrongMethod ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/badRequest..st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/badRequest..st new file mode 100644 index 00000000..3cc37299 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/badRequest..st @@ -0,0 +1,6 @@ +error handling +badRequest: message + response := self delegate + errorResponse: request + code: 400 + message: message \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/callUnauthorized.st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/callUnauthorized.st new file mode 100644 index 00000000..10dc4d93 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/callUnauthorized.st @@ -0,0 +1,6 @@ +error handling +callUnauthorized + response := self delegate + errorResponse: request + code: 401 + message: 'Unauthorized during ', self class name \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/created..st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/created..st new file mode 100644 index 00000000..22fb0619 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/created..st @@ -0,0 +1,8 @@ +public +created: uri + ^ (response := ZnResponse new) + statusLine: ZnStatusLine created; + headers: ZnHeaders defaultResponseHeaders; + setLocation: uri; + entity: (ZnEntity with: (NeoJSONWriter toString: uri) , String crlf type: ZnMimeType applicationJson); + yourself \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/emptyOkResponse.st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/emptyOkResponse.st new file mode 100644 index 00000000..6cd5a513 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/emptyOkResponse.st @@ -0,0 +1,3 @@ +public +emptyOkResponse + ^ response := ZnResponse ok: (ZnEntity text: '') \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/jsonRequest.st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/jsonRequest.st new file mode 100644 index 00000000..f75e795c --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/jsonRequest.st @@ -0,0 +1,7 @@ +accessing +jsonRequest + ^ self request contentType = ZnMimeType applicationJson + ifTrue: [ + NeoJSONReader fromString: self request contents ] + ifFalse: [ + self error: 'JSON content expected' ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/jsonResponse..st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/jsonResponse..st new file mode 100644 index 00000000..4a1bb486 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/jsonResponse..st @@ -0,0 +1,11 @@ +accessing +jsonResponse: data + | json | + json := String + streamContents: [ :stream | + (NeoJSONWriter on: stream) + prettyPrint: true; + newLine: String crlf; + nextPut: data. + stream crlf ]. + self response: (ZnResponse ok: (ZnEntity with: json type: ZnMimeType applicationJson)) \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/notFound.st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/notFound.st new file mode 100644 index 00000000..22742e5b --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/notFound.st @@ -0,0 +1,6 @@ +error handling +notFound + response := self delegate + errorResponse: request + code: 404 + message: 'Resource not found during ', self class name \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/queryAt.ifAbsent..st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/queryAt.ifAbsent..st new file mode 100644 index 00000000..590bc1cf --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/queryAt.ifAbsent..st @@ -0,0 +1,3 @@ +accessing +queryAt: key ifAbsent: block + ^ self request uri queryAt: key ifAbsent: block \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/serverError..st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/serverError..st new file mode 100644 index 00000000..27e76718 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/serverError..st @@ -0,0 +1,5 @@ +error handling +serverError: message + response := self delegate + serverError: request + exception: message \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/wrongMethod.st b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/wrongMethod.st new file mode 100644 index 00000000..9f75951b --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/instance/wrongMethod.st @@ -0,0 +1,6 @@ +error handling +wrongMethod + response := self delegate + errorResponse: request + code: 405 + message: 'Wrong method' \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/methodProperties.json b/repository/Zinc-REST.package/ZnJSONRestCall.class/methodProperties.json new file mode 100644 index 00000000..f05fc94f --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/methodProperties.json @@ -0,0 +1,15 @@ +{ + "class" : { + "isAbstract" : "SvenVanCaekenberghe 12/10/2012 13:18" }, + "instance" : { + "acceptMethods:" : "SvenVanCaekenberghe 12/10/2012 13:08", + "badRequest:" : "SvenVanCaekenberghe 12/10/2012 13:08", + "callUnauthorized" : "SvenVanCaekenberghe 12/10/2012 13:09", + "created:" : "SvenVanCaekenberghe 12/10/2012 16:15", + "emptyOkResponse" : "SvenVanCaekenberghe 12/10/2012 13:08", + "jsonRequest" : "SvenVanCaekenberghe 12/10/2012 13:10", + "jsonResponse:" : "SvenVanCaekenberghe 12/10/2012 16:28", + "notFound" : "SvenVanCaekenberghe 12/10/2012 13:09", + "queryAt:ifAbsent:" : "SvenVanCaekenberghe 12/10/2012 13:07", + "serverError:" : "SvenVanCaekenberghe 12/10/2012 13:09", + "wrongMethod" : "SvenVanCaekenberghe 12/10/2012 13:09" } } diff --git a/repository/Zinc-REST.package/ZnJSONRestCall.class/properties.json b/repository/Zinc-REST.package/ZnJSONRestCall.class/properties.json new file mode 100644 index 00000000..724e3cfe --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestCall.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-REST-Server", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnJSONRestCall", + "pools" : [ + ], + "super" : "ZnAutoMatchedRestCall", + "type" : "normal" } diff --git a/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/README.md b/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/README.md new file mode 100644 index 00000000..10dd0ae6 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/README.md @@ -0,0 +1,6 @@ +I am ZnJSONRestServerDelegate. +I am a ZnRestServerDelegate. + +I offer extra support for the common case where most responses or requests use JSON as representation. + +I work together with ZnJSONRestCall. \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/instance/errorResponse.code.message..st b/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/instance/errorResponse.code.message..st new file mode 100644 index 00000000..2c5f3a4d --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/instance/errorResponse.code.message..st @@ -0,0 +1,22 @@ +error handling +errorResponse: request code: code message: message + | statusLine data json | + statusLine := ZnStatusLine code: code. + (data := Dictionary new) + at: 'method' put: request method; + at: 'uri' put: request uri printString; + at: 'status-code' put: statusLine code; + at: 'status-message' put: statusLine reason; + at: 'message' put: message. + json := String + streamContents: [ :stream | + (NeoJSONWriter on: stream) + prettyPrint: true; + newLine: String crlf; + nextPut: data. + stream crlf ]. + ^ ZnResponse new + statusLine: statusLine; + headers: ZnHeaders defaultResponseHeaders; + entity: (ZnEntity with: json type: ZnMimeType applicationJson); + yourself \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/methodProperties.json b/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/methodProperties.json new file mode 100644 index 00000000..1a7106f2 --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "errorResponse:code:message:" : "SvenVanCaekenberghe 12/10/2012 16:30" } } diff --git a/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/properties.json b/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/properties.json new file mode 100644 index 00000000..40897fad --- /dev/null +++ b/repository/Zinc-REST.package/ZnJSONRestServerDelegate.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-REST-Server", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnJSONRestServerDelegate", + "pools" : [ + ], + "super" : "ZnRestServerDelegate", + "type" : "normal" } diff --git a/repository/Zinc-REST.package/ZnRestCallUnauthorized.class/README.md b/repository/Zinc-REST.package/ZnRestCallUnauthorized.class/README.md index e69de29b..0a45e32c 100644 --- a/repository/Zinc-REST.package/ZnRestCallUnauthorized.class/README.md +++ b/repository/Zinc-REST.package/ZnRestCallUnauthorized.class/README.md @@ -0,0 +1 @@ +I am ZnRestCallUnauthorized, an Exception signaling that a REST call was not authorized to be executed. \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestCallUnauthorized.class/properties.json b/repository/Zinc-REST.package/ZnRestCallUnauthorized.class/properties.json index 05d05241..9fe0ff21 100644 --- a/repository/Zinc-REST.package/ZnRestCallUnauthorized.class/properties.json +++ b/repository/Zinc-REST.package/ZnRestCallUnauthorized.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "commentStamp" : "", "instvars" : [ "call" ], "name" : "ZnRestCallUnauthorized", diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/README.md b/repository/Zinc-REST.package/ZnRestServerDelegate.class/README.md index 762ef6d7..184e5865 100644 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/README.md +++ b/repository/Zinc-REST.package/ZnRestServerDelegate.class/README.md @@ -1,4 +1,4 @@ I am ZnRestServerDelegate. I am a ZnServer delegate. -Based on my URI space is dispatch requests to REST call objects. \ No newline at end of file +Based on my URI space I dispatch requests to REST call objects. \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/debug..st b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/debug..st deleted file mode 100644 index d6b37ba6..00000000 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/debug..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -debug: anObject - debug := anObject \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/debug.st b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/debug.st deleted file mode 100644 index 4899e67f..00000000 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/debug.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -debug - ^ debug ifNil: [ debug := 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 b8f3605d..b01c97d7 100644 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/handleRequest..st +++ b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/handleRequest..st @@ -1,13 +1,13 @@ public handleRequest: request | call | - (call := self match: request) + (call := self match: request) ifNil: [ ^ self noHandlerFound: request ]. (self authenticate: call) ifFalse: [ ^ self callUnauthorized: request ]. - ^ self debug - ifTrue: [ self execute: call ] - ifFalse: [ - [ self execute: call ] - on: Exception - do: [ :exception | self serverError: request exception: exception ] ] \ No newline at end of file + ^ [ self execute: call ] + on: Exception + do: [ :exception | + request server debugMode + ifTrue: [ exception pass ] + ifFalse: [ self serverError: request exception: exception ] ] \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/server..st b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/server..st deleted file mode 100644 index c4626627..00000000 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/server..st +++ /dev/null @@ -1,3 +0,0 @@ -initialize-release -server: anObject - server := anObject \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/server.st b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/server.st deleted file mode 100644 index 30bc977b..00000000 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/server.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -server - ^ server \ No newline at end of file diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/value..st b/repository/Zinc-REST.package/ZnRestServerDelegate.class/instance/value..st new file mode 100644 index 00000000..17bc2c2a --- /dev/null +++ b/repository/Zinc-REST.package/ZnRestServerDelegate.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-REST.package/ZnRestServerDelegate.class/methodProperties.json b/repository/Zinc-REST.package/ZnRestServerDelegate.class/methodProperties.json index 5fbf46a4..f2eacc0e 100644 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/methodProperties.json +++ b/repository/Zinc-REST.package/ZnRestServerDelegate.class/methodProperties.json @@ -4,17 +4,14 @@ "instance" : { "authenticate:" : "SvenVanCaekenberghe 6/16/2011 15:22", "callUnauthorized:" : "SvenVanCaekenberghe 6/16/2011 21:10", - "debug" : "SvenVanCaekenberghe 6/15/2011 10:58", - "debug:" : "SvenVanCaekenberghe 6/15/2011 10:57", "errorResponse:code:message:" : "SvenVanCaekenberghe 6/16/2011 14:01", "execute:" : "SvenVanCaekenberghe 6/16/2011 15:19", - "handleRequest:" : "SvenVanCaekenberghe 6/17/2011 15:36", + "handleRequest:" : "SvenVanCaekenberghe 1/10/2013 14:07", "isAuthorizationValid:" : "SvenVanCaekenberghe 6/16/2011 15:20", "match:" : "SvenVanCaekenberghe 6/15/2011 17:34", "noHandlerFound:" : "SvenVanCaekenberghe 6/16/2011 21:10", - "server" : "SvenVanCaekenberghe 6/15/2011 10:57", - "server:" : "SvenVanCaekenberghe 6/15/2011 10:57", "serverError:exception:" : "SvenVanCaekenberghe 6/20/2011 17:34", "uriSpace" : "SvenVanCaekenberghe 6/15/2011 10:57", "uriSpace:" : "SvenVanCaekenberghe 6/15/2011 10:57", + "value:" : "SvenVanCaekenberghe 12/9/2012 18:07", "wrongMethod:" : "SvenVanCaekenberghe 6/16/2011 21:11" } } diff --git a/repository/Zinc-REST.package/ZnRestServerDelegate.class/properties.json b/repository/Zinc-REST.package/ZnRestServerDelegate.class/properties.json index cc4b8ad3..1aaeb4d4 100644 --- a/repository/Zinc-REST.package/ZnRestServerDelegate.class/properties.json +++ b/repository/Zinc-REST.package/ZnRestServerDelegate.class/properties.json @@ -4,11 +4,9 @@ ], "classvars" : [ ], - "commentStamp" : "SvenVanCaekenberghe 6/15/2011 16:14", + "commentStamp" : "", "instvars" : [ - "uriSpace", - "server", - "debug" ], + "uriSpace" ], "name" : "ZnRestServerDelegate", "pools" : [ ], diff --git a/repository/Zinc-REST.package/monticello.meta/categories.st b/repository/Zinc-REST.package/monticello.meta/categories.st index 587d1834..82ef692f 100644 --- a/repository/Zinc-REST.package/monticello.meta/categories.st +++ b/repository/Zinc-REST.package/monticello.meta/categories.st @@ -1 +1,2 @@ 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 585c648e..3925fcca 100644 --- a/repository/Zinc-REST.package/monticello.meta/version +++ b/repository/Zinc-REST.package/monticello.meta/version @@ -1 +1 @@ -(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 ()) \ No newline at end of file +(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 diff --git a/repository/Zinc-Resource-Meta-Core.package/.filetree b/repository/Zinc-Resource-Meta-Core.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-Resource-Meta-Core.package/MIMEType.extension/instance/asZnMimeType.st b/repository/Zinc-Resource-Meta-Core.package/MIMEType.extension/instance/asZnMimeType.st new file mode 100644 index 00000000..6cc837a3 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/MIMEType.extension/instance/asZnMimeType.st @@ -0,0 +1,3 @@ +*zinc-resource-meta-core +asZnMimeType + ^ ZnMimeType main: self main sub: self diff --git a/repository/Zinc-HTTP.package/MIMEType.extension/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/MIMEType.extension/methodProperties.json similarity index 100% rename from repository/Zinc-HTTP.package/MIMEType.extension/methodProperties.json rename to repository/Zinc-Resource-Meta-Core.package/MIMEType.extension/methodProperties.json diff --git a/repository/Zinc-HTTP.package/MIMEType.extension/properties.json b/repository/Zinc-Resource-Meta-Core.package/MIMEType.extension/properties.json similarity index 100% rename from repository/Zinc-HTTP.package/MIMEType.extension/properties.json rename to repository/Zinc-Resource-Meta-Core.package/MIMEType.extension/properties.json diff --git a/repository/Zinc-Resource-Meta-Core.package/String.extension/instance/asZnMimeType.st b/repository/Zinc-Resource-Meta-Core.package/String.extension/instance/asZnMimeType.st new file mode 100644 index 00000000..0c95ecdb --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/String.extension/instance/asZnMimeType.st @@ -0,0 +1,3 @@ +*zinc-resource-meta-core +asZnMimeType + ^ ZnMimeType fromString: self \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/String.extension/instance/asZnUrl.st b/repository/Zinc-Resource-Meta-Core.package/String.extension/instance/asZnUrl.st new file mode 100644 index 00000000..8fa4cd9a --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/String.extension/instance/asZnUrl.st @@ -0,0 +1,3 @@ +*zinc-resource-meta-core +asZnUrl + ^ ZnUrl fromString: self \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/String.extension/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/String.extension/methodProperties.json similarity index 100% rename from repository/Zinc-HTTP.package/String.extension/methodProperties.json rename to repository/Zinc-Resource-Meta-Core.package/String.extension/methodProperties.json diff --git a/repository/Zinc-Resource-Meta-Core.package/String.extension/properties.json b/repository/Zinc-Resource-Meta-Core.package/String.extension/properties.json new file mode 100644 index 00000000..c2138507 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/String.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "String" } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/README.md b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/README.md new file mode 100644 index 00000000..34c2c950 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/README.md @@ -0,0 +1,30 @@ +I am ZnMimeType. +Mime types are an element used in describing resources, more specifically their format. + +Here are some examples MIME types: + + text/plain + text/html + text/plain;charset=utf-8 + image/png + text/* + +A mime type has a main/sub form with optional parameters. + +For more information: http://en.wikipedia.org/wiki/MIME_type +I know whether I am binary or not and know my charset when applicable. +My class side offers access to some common constants. +Note that for text types we default to UTF-8 encoding. + +Examples: + + ZnMimeType textPlain = 'text/plain' asZnMimeType. + ZnMimeType textPlain charSet. + ZnMimeType textHtml matches: ZnMimeType text. + ZnMimeType default matches: ZnMimeType any. + ZnMimeType imagePng isBinary. + ZnMimeType forFilenameExtension: 'html'. + +I started life as a copy of WAMineType. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/any.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/any.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/any.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/any.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationFormUrlEncoded.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationFormUrlEncoded.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationFormUrlEncoded.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationFormUrlEncoded.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationJavascript.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationJavascript.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationJavascript.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationJavascript.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationJson.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationJson.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationJson.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationJson.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationOctetStream.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationOctetStream.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationOctetStream.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationOctetStream.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationPdf.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationPdf.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationPdf.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationPdf.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationXml.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationXml.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/applicationXml.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/applicationXml.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/default.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/default.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/default.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/default.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/forFilenameExtension..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/forFilenameExtension..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/forFilenameExtension..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/forFilenameExtension..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/fromString..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/fromString..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/fromString..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/fromString..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/imageGif.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/imageGif.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/imageGif.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/imageGif.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/imageJpeg.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/imageJpeg.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/imageJpeg.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/imageJpeg.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/imagePng.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/imagePng.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/imagePng.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/imagePng.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/imageSvg.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/imageSvg.st new file mode 100644 index 00000000..df2e88d1 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/imageSvg.st @@ -0,0 +1,3 @@ +convenience +imageSvg + ^ self predefinedInstanceAt: #imageSvg diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/initialize.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/initialize.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/initialize.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/initialize.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/initializeExtensionsMap.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/initializeExtensionsMap.st similarity index 94% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/initializeExtensionsMap.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/initializeExtensionsMap.st index b6918733..4631f145 100644 --- a/repository/Zinc-HTTP.package/ZnMimeType.class/class/initializeExtensionsMap.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/initializeExtensionsMap.st @@ -15,4 +15,5 @@ initializeExtensionsMap at: 'xml' put: self applicationXml; at: 'css' put: self textCss; at: 'pdf' put: self applicationPdf; + at: 'svg' put: self imageSvg; yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/initializeMimeTypes.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/initializeMimeTypes.st similarity index 95% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/initializeMimeTypes.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/initializeMimeTypes.st index 5d995678..962844c3 100644 --- a/repository/Zinc-HTTP.package/ZnMimeType.class/class/initializeMimeTypes.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/initializeMimeTypes.st @@ -12,6 +12,7 @@ initializeMimeTypes at: #imageGif put: (self main: 'image' sub: 'gif'); at: #imageJpeg put: (self main: 'image' sub: 'jpeg'); at: #imagePng put: (self main: 'image' sub: 'png'); + at: #imageSvg put: (self main: 'image' sub: 'svg+xml'); at: #textPlain put: ((self main: 'text' sub: 'plain') setCharSetUTF8; yourself); at: #textHtml put: ((self main: 'text' sub: 'html') setCharSetUTF8; yourself); at: #textCss put: (self main: 'text' sub: 'css'); diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/main.sub..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/main.sub..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/main.sub..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/main.sub..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/main.sub.parameters..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/main.sub.parameters..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/main.sub.parameters..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/main.sub.parameters..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/multiPartFormData.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/multiPartFormData.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/multiPartFormData.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/multiPartFormData.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/predefinedInstanceAt..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/predefinedInstanceAt..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/predefinedInstanceAt..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/predefinedInstanceAt..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/sharedInstanceAt..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/sharedInstanceAt..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/sharedInstanceAt..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/sharedInstanceAt..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/text.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/text.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/text.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/text.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/textCss.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/textCss.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/textCss.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/textCss.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/textHtml.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/textHtml.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/textHtml.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/textHtml.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/textJavascript.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/textJavascript.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/textJavascript.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/textJavascript.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/class/textPlain.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/textPlain.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/class/textPlain.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/class/textPlain.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/^equals.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/^equals.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/^equals.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/^equals.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/asZnMimeType.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/asZnMimeType.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/asZnMimeType.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/asZnMimeType.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/charSet..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/charSet..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/charSet..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/charSet..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/charSet.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/charSet.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/charSet.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/charSet.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/clearCharSet.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/clearCharSet.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/clearCharSet.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/clearCharSet.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/hash.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/hash.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/hash.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/hash.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/isBinary.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isBinary.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/isBinary.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isBinary.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/isCharSetUTF8.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isCharSetUTF8.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/isCharSetUTF8.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isCharSetUTF8.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/isNonStandard.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isNonStandard.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/isNonStandard.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isNonStandard.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/isVendorSpecific.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isVendorSpecific.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/isVendorSpecific.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/isVendorSpecific.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/main..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/main..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/main..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/main..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/main.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/main.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/main.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/main.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/matches..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/matches..st similarity index 99% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/matches..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/matches..st index 4a7e7dfb..1ab2fd68 100644 --- a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/matches..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/matches..st @@ -1,6 +1,7 @@ testing matches: aMimeType "aMimeType is the pattern to match, it is a normal instance where main or sub can be wildcards" + ^ (aMimeType main = '*' or: [ aMimeType main = self main ]) and: [ diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameterAt..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameterAt..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameterAt..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameterAt..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameterAt.ifAbsent..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameterAt.ifAbsent..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameterAt.ifAbsent..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameterAt.ifAbsent..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameterAt.put..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameterAt.put..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameterAt.put..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameterAt.put..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameters..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameters..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameters..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameters..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameters.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameters.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/parameters.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/parameters.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/postCopy.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/postCopy.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/postCopy.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/postCopy.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/printOn..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/printOn..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/printOn..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/printOn..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/removeParameter..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/removeParameter..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/removeParameter..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/removeParameter..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/setCharSetUTF8.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/setCharSetUTF8.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/setCharSetUTF8.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/setCharSetUTF8.st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/sub..st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/sub..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/sub..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/sub..st diff --git a/repository/Zinc-HTTP.package/ZnMimeType.class/instance/sub.st b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/sub.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMimeType.class/instance/sub.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/instance/sub.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/methodProperties.json new file mode 100644 index 00000000..fb0b3f2e --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/methodProperties.json @@ -0,0 +1,54 @@ +{ + "class" : { + "any" : "SvenVanCaekenberghe 12/6/2011 19:59", + "applicationFormUrlEncoded" : "SvenVanCaekenberghe 12/6/2011 19:59", + "applicationJavascript" : "SvenVanCaekenberghe 12/6/2011 19:59", + "applicationJson" : "SvenVanCaekenberghe 12/6/2011 19:59", + "applicationOctetStream" : "SvenVanCaekenberghe 12/6/2011 19:59", + "applicationPdf" : "SvenVanCaekenberghe 5/27/2012 18:42", + "applicationXml" : "SvenVanCaekenberghe 12/6/2011 20:00", + "default" : "SvenVanCaekenberghe 9/16/2010 15:48", + "forFilenameExtension:" : "SvenVanCaekenberghe 9/16/2010 20:29", + "fromString:" : "SvenVanCaekenberghe 1/8/2012 14:17", + "imageGif" : "SvenVanCaekenberghe 12/6/2011 20:00", + "imageJpeg" : "SvenVanCaekenberghe 12/6/2011 20:00", + "imagePng" : "SvenVanCaekenberghe 12/6/2011 20:00", + "imageSvg" : "SvenVanCaekenberghe 9/27/2012 14:35", + "initialize" : "SvenVanCaekenberghe 9/16/2010 20:27", + "initializeExtensionsMap" : "SvenVanCaekenberghe 9/27/2012 14:36", + "initializeMimeTypes" : "SvenVanCaekenberghe 9/27/2012 14:36", + "main:sub:" : "SvenVanCaekenberghe 8/18/2011 14:22", + "main:sub:parameters:" : "SvenVanCaekenberghe 8/18/2011 14:22", + "multiPartFormData" : "SvenVanCaekenberghe 12/6/2011 20:00", + "predefinedInstanceAt:" : "SvenVanCaekenberghe 12/6/2011 20:43", + "sharedInstanceAt:" : "SvenVanCaekenberghe 12/6/2011 19:58", + "text" : "SvenVanCaekenberghe 12/6/2011 20:00", + "textCss" : "SvenVanCaekenberghe 12/6/2011 20:00", + "textHtml" : "SvenVanCaekenberghe 12/6/2011 20:00", + "textJavascript" : "SvenVanCaekenberghe 12/6/2011 20:01", + "textPlain" : "SvenVanCaekenberghe 12/6/2011 20:01" }, + "instance" : { + "=" : "SvenVanCaekenberghe 8/18/2011 14:22", + "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", + "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", + "parameterAt:" : "SvenVanCaekenberghe 3/6/2012 11:00", + "parameterAt:ifAbsent:" : "SvenVanCaekenberghe 3/6/2012 10:53", + "parameterAt:put:" : "SvenVanCaekenberghe 9/7/2010 14:50", + "parameters" : "SvenVanCaekenberghe 12/6/2011 20:40", + "parameters:" : "SvenVanCaekenberghe 9/7/2010 14:47", + "postCopy" : "SvenVanCaekenberghe 12/6/2011 20:41", + "printOn:" : "SvenVanCaekenberghe 9/11/2010 20:49", + "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" } } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/properties.json b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/properties.json new file mode 100644 index 00000000..2517115d --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMimeType.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Zinc-Resource-Meta-Core", + "classinstvars" : [ + ], + "classvars" : [ + "ExtensionsMap", + "MimeTypes" ], + "commentStamp" : "", + "instvars" : [ + "main", + "sub", + "parameters" ], + "name" : "ZnMimeType", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/README.md b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/README.md new file mode 100644 index 00000000..0e8c9d8e --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/README.md @@ -0,0 +1,11 @@ +I am ZnMultiValueDictionary. +I am a Dictionary. + +I offer an #at:add: method to transparently create Array valued multi entries when needed. +My #keysAndValuesDo: is overwritten to transparently deal with multi entries. +To merge two instance preserving multiple values you can use #addAllMulti: +I normally limit the number of entries to protect me from resource abuse. + +Note that most other methods will show the actual value. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/add..st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/add..st new file mode 100644 index 00000000..39737c75 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/add..st @@ -0,0 +1,4 @@ +adding +add: anAssociation + self checkLimitForKey: anAssociation key. + ^ super add: anAssociation \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/addAllMulti..st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/addAllMulti..st new file mode 100644 index 00000000..5d92e27c --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/addAllMulti..st @@ -0,0 +1,6 @@ +adding +addAllMulti: keyedCollection + "Note that we use #at:add:" + + keyedCollection keysAndValuesDo: [ :key :value | + self at: key add: value ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/at.add..st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/at.add..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/at.add..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/at.add..st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/at.put..st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/at.put..st new file mode 100644 index 00000000..d5ff6fd0 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/at.put..st @@ -0,0 +1,4 @@ +accessing +at: key put: anObject + self checkLimitForKey: key. + ^ super at: key put: anObject \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/checkLimitForKey..st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/checkLimitForKey..st new file mode 100644 index 00000000..ba751d48 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/checkLimitForKey..st @@ -0,0 +1,6 @@ +private +checkLimitForKey: aKey + "Signal an exception when the limit, if present, is exceeded." + + (self limit notNil and: [ self size >= self limit and: [ (self includesKey: aKey) not ]]) + ifTrue: [ (ZnTooManyDictionaryEntries limit: self limit) signal ]. diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/defaultLimit.st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/defaultLimit.st new file mode 100644 index 00000000..e25ac125 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/defaultLimit.st @@ -0,0 +1,8 @@ +accessing +defaultLimit + "Return the maximum number dictionary entries to accept. + Used by ZnMultiValueDictionary and thus for reading headers, + url query and application form url encoded entity fields. + This helps to protect us from malicious content." + + ^ 256 \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/keysAndValuesDo..st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/keysAndValuesDo..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/keysAndValuesDo..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/keysAndValuesDo..st diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/limit..st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/limit..st rename to repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit..st 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 new file mode 100644 index 00000000..ff417ecb --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/limit.st @@ -0,0 +1,3 @@ +accessing +limit + ^ limit ifNil: [ limit := self defaultLimit ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/unlimited.st b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/unlimited.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnMultiValueDictionary.class/instance/unlimited.st rename to repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/instance/unlimited.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/methodProperties.json new file mode 100644 index 00000000..26264d47 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/methodProperties.json @@ -0,0 +1,14 @@ +{ + "class" : { + }, + "instance" : { + "add:" : "KenTreis 01/19/2013 10:41", + "addAllMulti:" : "SvenVanCaekenberghe 1/7/2013 10:28", + "at:add:" : "SvenVanCaekenberghe 1/12/2011 11:19", + "at:put:" : "KenTreis 01/19/2013 10:41", + "checkLimitForKey:" : "KenTreis 01/19/2013 10:42", + "defaultLimit" : "SvenVanCaekenberghe 12/8/2012 19:49", + "keysAndValuesDo:" : "SvenVanCaekenberghe 1/12/2011 11:10", + "limit" : "SvenVanCaekenberghe 12/8/2012 19:50", + "limit:" : "SvenVanCaekenberghe 1/2/2012 19:35", + "unlimited" : "SvenVanCaekenberghe 1/2/2012 19:36" } } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/properties.json b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/properties.json new file mode 100644 index 00000000..517b07af --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnMultiValueDictionary.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "limit" ], + "name" : "ZnMultiValueDictionary", + "pools" : [ + ], + "super" : "Dictionary", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnPortNotANumber.class/README.md b/repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/README.md similarity index 100% rename from repository/Zinc-HTTP.package/ZnPortNotANumber.class/README.md rename to repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/README.md diff --git a/repository/Zinc-HTTP.package/ZnPortNotANumber.class/class/port..st b/repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/class/port..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnPortNotANumber.class/class/port..st rename to repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/class/port..st diff --git a/repository/Zinc-HTTP.package/ZnPortNotANumber.class/instance/port..st b/repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/instance/port..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnPortNotANumber.class/instance/port..st rename to repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/instance/port..st diff --git a/repository/Zinc-HTTP.package/ZnPortNotANumber.class/instance/port.st b/repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/instance/port.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnPortNotANumber.class/instance/port.st rename to repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/instance/port.st diff --git a/repository/Zinc-HTTP.package/ZnPortNotANumber.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/methodProperties.json similarity index 100% rename from repository/Zinc-HTTP.package/ZnPortNotANumber.class/methodProperties.json rename to repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/methodProperties.json diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/properties.json b/repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/properties.json new file mode 100644 index 00000000..6f60a60d --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnPortNotANumber.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "SvenVanCaekenberghe 2/28/2011 15:23", + "instvars" : [ + "port" ], + "name" : "ZnPortNotANumber", + "pools" : [ + ], + "super" : "Error", + "type" : "normal" } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/README.md b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/README.md new file mode 100644 index 00000000..2b68b48c --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/README.md @@ -0,0 +1,5 @@ +I am ZnResourceMetaUtils. + +I contain some class side utility methods. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/decodePercent..st b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/decodePercent..st new file mode 100644 index 00000000..d883ff40 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/decodePercent..st @@ -0,0 +1,3 @@ +conversions +decodePercent: string + ^ ZnPercentEncoder new decode: string \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/encodePercent.withEncoding..st b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/encodePercent.withEncoding..st new file mode 100644 index 00000000..b176fcd9 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/encodePercent.withEncoding..st @@ -0,0 +1,5 @@ +conversions +encodePercent: string withEncoding: encoding + ^ ZnPercentEncoder new + characterEncoder: (ZnCharacterEncoder newForEncoding: encoding); + encode: string \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/parseQueryFrom..st b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/parseQueryFrom..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUtils.class/class/parseQueryFrom..st rename to repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/parseQueryFrom..st diff --git a/repository/Zinc-HTTP.package/ZnUtils.class/class/writeQueryFields.on..st b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/writeQueryFields.on..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUtils.class/class/writeQueryFields.on..st rename to repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/writeQueryFields.on..st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/writeQueryFields.withTextEncoding.on..st b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/writeQueryFields.withTextEncoding.on..st new file mode 100644 index 00000000..a9083b0d --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/class/writeQueryFields.withTextEncoding.on..st @@ -0,0 +1,12 @@ +conversions +writeQueryFields: dictionary withTextEncoding: encoding on: stream + | first | + first := true. + dictionary keysAndValuesDo: [ :key :value | + first ifFalse: [ stream nextPut: $& ]. + first := false. + stream nextPutAll: (self encodePercent: key withEncoding: encoding). + value isNil ifFalse: [ + stream + nextPut: $=; + nextPutAll: (self encodePercent: value withEncoding: encoding) ] ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/methodProperties.json new file mode 100644 index 00000000..07843f4d --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + "decodePercent:" : "SvenVanCaekenberghe 12/17/2012 13:08", + "encodePercent:withEncoding:" : "SvenVanCaekenberghe 12/17/2012 13:07", + "parseQueryFrom:" : "SvenVanCaekenberghe 12/8/2012 20:46", + "writeQueryFields:on:" : "SvenVanCaekenberghe 12/8/2012 20:47", + "writeQueryFields:withTextEncoding:on:" : "SvenVanCaekenberghe 12/17/2012 13:07" }, + "instance" : { + } } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/properties.json b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/properties.json new file mode 100644 index 00000000..4d5d9ac2 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnResourceMetaUtils.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnResourceMetaUtils", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/README.md b/repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/README.md similarity index 100% rename from repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/README.md rename to repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/README.md diff --git a/repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/class/limit..st b/repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/class/limit..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/class/limit..st rename to repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/class/limit..st diff --git a/repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/instance/limit..st b/repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/instance/limit..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/instance/limit..st rename to repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/instance/limit..st diff --git a/repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/instance/limit.st b/repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/instance/limit.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/instance/limit.st rename to repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/instance/limit.st diff --git a/repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/methodProperties.json similarity index 100% rename from repository/Zinc-HTTP.package/ZnTooManyDictionaryEntries.class/methodProperties.json rename to repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/methodProperties.json diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/properties.json b/repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/properties.json new file mode 100644 index 00000000..5198f9cd --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnTooManyDictionaryEntries.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "SvenVanCaekenberghe 1/2/2012 19:22", + "instvars" : [ + "limit" ], + "name" : "ZnTooManyDictionaryEntries", + "pools" : [ + ], + "super" : "Error", + "type" : "normal" } diff --git a/repository/Zinc-HTTP.package/ZnUnknownScheme.class/README.md b/repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/README.md similarity index 100% rename from repository/Zinc-HTTP.package/ZnUnknownScheme.class/README.md rename to repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/README.md diff --git a/repository/Zinc-HTTP.package/ZnUnknownScheme.class/class/scheme..st b/repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/class/scheme..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUnknownScheme.class/class/scheme..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/class/scheme..st diff --git a/repository/Zinc-HTTP.package/ZnUnknownScheme.class/instance/scheme..st b/repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/instance/scheme..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUnknownScheme.class/instance/scheme..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/instance/scheme..st diff --git a/repository/Zinc-HTTP.package/ZnUnknownScheme.class/instance/scheme.st b/repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/instance/scheme.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUnknownScheme.class/instance/scheme.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/instance/scheme.st diff --git a/repository/Zinc-HTTP.package/ZnUnknownScheme.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/methodProperties.json similarity index 100% rename from repository/Zinc-HTTP.package/ZnUnknownScheme.class/methodProperties.json rename to repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/methodProperties.json diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/properties.json b/repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/properties.json new file mode 100644 index 00000000..13312af7 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUnknownScheme.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "DamienPollet 8/4/2011 14:07", + "instvars" : [ + "scheme" ], + "name" : "ZnUnknownScheme", + "pools" : [ + ], + "super" : "Error", + "type" : "normal" } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/README.md b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/README.md new file mode 100644 index 00000000..69431551 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/README.md @@ -0,0 +1,69 @@ +I am ZnUrl, an implementation of an interpreted URL/URI. +URLs are an element used in describing resources, more specifically to identify them. + +I consist of the following parts: + - scheme - like #http, #https, #ws, #wws, #file or nil + - host - hostname string or nil + - port - port integer or nil + - segments - collection of path segments, ends with #/ for directories + - query - query dictionary or nil + - fragment - fragment string or nil + - username - username string or nil + - password - password string or nil + +The syntax of my external representation informally looks like this + + scheme://username:password@host:port/segments?query#fragment + +I am most often created by parsing my external representation using either my #fromString: class method or by sending the #asZnUrl convenience method to a String. Using #asZnUrl helps in accepting both Strings and ZnUrls arguments. + + ZnUrl fromString: 'http://www.google.com/search?q=Smalltalk'. + +I can also be constucted programmatically. + + ZnUrl new + scheme: #https; + host: 'encrypted.google.com'; + addPathSegment: 'search'; + queryAt: 'q' put: 'Smalltalk'; + yourself. + +My components can be manipulated destructively. Here is an example: + + ('http://www.google.com/?one=1&two=2' asZnUrl) + queryAt: 'three' put: '3'; + queryRemoveKey: 'one'; + yourself. + +Some characters of parts of a URL are illegal because they would interfere with the syntax and further processing and thus have to be encoded. The methods in accessing protocols do not do any encoding, those in parsing and printing do. Here is an example: + + ('http://www.google.com' asZnUrl) + addPathSegment: 'some encoding here'; + queryAt: 'and some encoding' put: 'here, too'; + yourself + +My parser is somewhat forgiving and accepts some unencoded URLs as well, like most browsers would. + + 'http://www.example.com:8888/a path?q=a, b, c' asZnUrl. + +I can parse in the context of a default scheme, like a browser would do. + + ZnUrl fromString: 'www.example.com' defaultScheme: #http + +Given a scheme, I know its default port, try #portOrDefault. + +A path defaults to what is commonly referred to as slash, test with #isSlash. Paths are most often (but don't have to be) interpreted as filesystem paths. To support this, I have #isFile and #isDirectory tests and #file and #directory accessors. + +I have some support to handle one URL in the context of another one, this is also known as a relative URL in the context of an absolute URL. Refer to #isAbsolute, #isRelative and #inContextOf: + + '/folder/file.txt' asZnUrl inContextOf: ('http://fileserver.example.net:4400' asZnUrl). + +Sometimes, the combination of my host and port are referred to as authority, see #authority. + +URL/URI/URN (Uniform/Universal Resource Locator/Identifier/Name) are closely related and can be and are used as synonyms is many contexts. Refer to http://en.wikipedia.org/wiki/Url for more information. + +There is a convenience method #retrieveContents to download the resource a ZnUrl points to, + + 'http://zn.stfx.eu/zn/numbers.txt' asZnUrl retrieveContents. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/class/defaultPortForScheme..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/defaultPortForScheme..st similarity index 83% rename from repository/Zinc-HTTP.package/ZnUrl.class/class/defaultPortForScheme..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/defaultPortForScheme..st index ea4d7b8d..131d13ad 100644 --- a/repository/Zinc-HTTP.package/ZnUrl.class/class/defaultPortForScheme..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/defaultPortForScheme..st @@ -1,5 +1,6 @@ accessing defaultPortForScheme: scheme + scheme = #file ifTrue: [ ^ nil ]. (#(http ws) includes: scheme) ifTrue: [ ^ 80 ]. (#(https wss) includes: scheme) ifTrue: [ ^ 443 ]. (ZnUnknownScheme scheme: scheme) signal \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/class/fromString..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/class/fromString..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/class/fromString.defaultScheme..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString.defaultScheme..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/class/fromString.defaultScheme..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/class/fromString.defaultScheme..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/^and.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^and.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/^and.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^and.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/^equals.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^equals.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/^equals.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^equals.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/^slash.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^slash.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/^slash.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^slash.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/^wat.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^wat.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/^wat.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/^wat.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/addPathSegment..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/addPathSegment..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/addPathSegment..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/addPathSegment..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/addPathSegments..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/addPathSegments..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/addPathSegments..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/addPathSegments..st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/asRelativeUrl.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/asRelativeUrl.st new file mode 100644 index 00000000..219c1bd9 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/asRelativeUrl.st @@ -0,0 +1,9 @@ +converting +asRelativeUrl + "Copy the receiver, with scheme, host and port cleared" + + ^ self copy + scheme: nil; + host: nil; + port: nil; + yourself \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/asZnUrl.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/asZnUrl.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/asZnUrl.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/asZnUrl.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/asZnUrlWithDefaults.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/asZnUrlWithDefaults.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/asZnUrlWithDefaults.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/asZnUrlWithDefaults.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/authority.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/authority.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/authority.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/authority.st 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 new file mode 100644 index 00000000..ba0aeb94 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/clearPath.st @@ -0,0 +1,4 @@ +accessing-path +clearPath + segments isEmpty + ifFalse: [ segments removeAll ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/closePath.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/closePath.st similarity index 80% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/closePath.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/closePath.st index bdd65163..a8c30f0b 100644 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/closePath.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/closePath.st @@ -1,4 +1,4 @@ -private +accessing-path closePath self isSlash ifFalse: [ self addPathSegment: #/ ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/decodePercent..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/decodePercent..st new file mode 100644 index 00000000..efb48447 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/decodePercent..st @@ -0,0 +1,3 @@ +private +decodePercent: string + ^ ZnResourceMetaUtils decodePercent: string \ 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 new file mode 100644 index 00000000..f1110b9c --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/directory.st @@ -0,0 +1,5 @@ +accessing-path +directory + ^ self isDirectoryPath + ifTrue: [ self path ] + ifFalse: [ self joinSegments: segments allButLast ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/encode.on..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/encode.on..st new file mode 100644 index 00000000..bec97eb7 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/encode.on..st @@ -0,0 +1,3 @@ +private +encode: string on: stream + stream nextPutAll: (ZnPercentEncoder new encode: string) \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/enforceKnownScheme.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/enforceKnownScheme.st new file mode 100644 index 00000000..78d566b3 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/enforceKnownScheme.st @@ -0,0 +1,4 @@ +convenience +enforceKnownScheme + (scheme isNil or: [ #(#http #https #ws #wss #file) includes: scheme ]) + ifFalse: [ (ZnUnknownScheme scheme: scheme) signal ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/equals..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/equals..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/equals..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/equals..st 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 new file mode 100644 index 00000000..2c567443 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/file.st @@ -0,0 +1,5 @@ +accessing-path +file + ^ self isDirectoryPath + ifTrue: [ '' ] + ifFalse: [ segments last ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/firstPathSegment.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/firstPathSegment.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/firstPathSegment.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/firstPathSegment.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/fragment..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/fragment..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/fragment..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/fragment..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/fragment.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/fragment.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/fragment.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/fragment.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/hasFragment.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasFragment.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/hasFragment.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasFragment.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/hasHost.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasHost.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/hasHost.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasHost.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/hasNonDefaultPort.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasNonDefaultPort.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/hasNonDefaultPort.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasNonDefaultPort.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasPassword.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasPassword.st new file mode 100644 index 00000000..6bd8c011 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasPassword.st @@ -0,0 +1,3 @@ +testing +hasPassword + ^ password notNil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/hasPath.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasPath.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/hasPath.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasPath.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/hasPort.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasPort.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/hasPort.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasPort.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasQuery.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasQuery.st new file mode 100644 index 00000000..80578ae5 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasQuery.st @@ -0,0 +1,3 @@ +testing +hasQuery + ^ query notNil and: [ query isEmpty not ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/hasScheme.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasScheme.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/hasScheme.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasScheme.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasUsername.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasUsername.st new file mode 100644 index 00000000..79d41f1f --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hasUsername.st @@ -0,0 +1,3 @@ +testing +hasUsername + ^ username notNil \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/hash.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hash.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/hash.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/hash.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/host..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/host..st new file mode 100644 index 00000000..0d9726be --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/host..st @@ -0,0 +1,3 @@ +accessing +host: hostName + host := hostName ifNil: [ nil ] ifNotNil: [ hostName asLowercase ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/host.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/host.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnFixedClient.class/instance/host.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/host.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/inContextOf..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/inContextOf..st similarity index 91% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/inContextOf..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/inContextOf..st index 57a6acb7..5e38f93f 100644 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/inContextOf..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/inContextOf..st @@ -1,7 +1,8 @@ converting inContextOf: absoluteUrl "Return a copy of the receiver where scheme, host and port - are taken from absoluteUrl unless they are already in the receiver" + are taken from absoluteUrl unless they are already in the receiver. + Path merging is not supported." | copy | copy := self copy. diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isAbsolute.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isAbsolute.st new file mode 100644 index 00000000..dd32e48b --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isAbsolute.st @@ -0,0 +1,6 @@ +testing +isAbsolute + "We consider URLs with scheme://host as absolute (port is not relevant here). + See also #inContextOf: Path merging is not supported." + + ^ self hasScheme and: [ self hasHost ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isDirectoryPath.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isDirectoryPath.st new file mode 100644 index 00000000..92a6d61b --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isDirectoryPath.st @@ -0,0 +1,6 @@ +testing +isDirectoryPath + ^ self hasPath + ifTrue: [ segments last = #/ ] + ifFalse: [ true ] + \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isEmpty.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isEmpty.st new file mode 100644 index 00000000..224cb189 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isEmpty.st @@ -0,0 +1,3 @@ +testing +isEmpty + ^ (self hasScheme | self hasHost | self hasPath | self hasQuery | self hasFragment | self hasUsername | self hasPassword) not \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isFile.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isFile.st new file mode 100644 index 00000000..4d0f71e8 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isFile.st @@ -0,0 +1,3 @@ +testing +isFile + ^ scheme = #file \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isFilePath.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isFilePath.st new file mode 100644 index 00000000..cd29a003 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isFilePath.st @@ -0,0 +1,3 @@ +testing +isFilePath + ^ self isDirectoryPath not \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isHttp.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isHttp.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/isHttp.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isHttp.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isHttps.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isHttps.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/isHttps.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isHttps.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isLocalHost.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isLocalHost.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/isLocalHost.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isLocalHost.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isRelative.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isRelative.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/isRelative.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isRelative.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/isSlash.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isSlash.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/isSlash.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/isSlash.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/joinSegments..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/joinSegments..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/joinSegments..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/joinSegments..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/lastPathSegment.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/lastPathSegment.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/lastPathSegment.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/lastPathSegment.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseAuthority.from.to..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseAuthority.from.to..st new file mode 100644 index 00000000..f10f0526 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseAuthority.from.to..st @@ -0,0 +1,9 @@ +parsing +parseAuthority: string from: start to: stop + | index | + (index := string indexOf: $@ startingAt: start) > 0 + ifTrue: [ + self parseUserInfo: (ReadStream on: string from: start to: index - 1). + self parseHostPort: (ReadStream on: string from: index + 1 to: stop ) ] + ifFalse: [ + self parseHostPort: (ReadStream on: string from: start to: stop ) ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/parseFrom..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseFrom..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/parseFrom..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseFrom..st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseFrom.defaultScheme..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseFrom.defaultScheme..st new file mode 100644 index 00000000..fae5a6e9 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseFrom.defaultScheme..st @@ -0,0 +1,28 @@ +parsing +parseFrom: string defaultScheme: defaultScheme + | start end index | + start := 1. + end := string size. + (index := string indexOf: $#) > 0 + ifTrue: [ + self fragment: (self decodePercent: (string copyFrom: index + 1 to: end)). + end := index - 1 ]. + (index := string indexOf: $?) > 0 + ifTrue: [ + self query: (ZnResourceMetaUtils parseQueryFrom: (ReadStream on: string from: index + 1 to: end)). + end := index - 1 ]. + (index := string indexOfSubCollection: '://') > 0 + ifTrue: [ + self scheme: (string copyFrom: 1 to: index - 1). + start := index + 3 ] + ifFalse: [ + defaultScheme ifNotNil: [ self scheme: defaultScheme ] ]. + self hasScheme + ifTrue: [ + (index := string indexOf: $/ startingAt: start) > 0 + ifTrue: [ + self parseAuthority: string from: start to: index - 1. + start := index ] + ifFalse: [ + ^ self parseAuthority: string from: start to: end ] ]. + self parsePath: (ReadStream on: string from: start to: end) \ 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 new file mode 100644 index 00000000..63731d60 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseHostPort..st @@ -0,0 +1,9 @@ +parsing +parseHostPort: stream + | hostString | + (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-HTTP.package/ZnUrl.class/instance/parsePath..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parsePath..st similarity index 85% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/parsePath..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parsePath..st index 5e5c1500..a5d76d7d 100644 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/parsePath..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parsePath..st @@ -9,6 +9,6 @@ parsePath: stream ifFalse: [ segment = '..' ifTrue: [ self removeLastPathSegment ] - ifFalse: [ self addPathSegment: (ZnUtils decodePercent: segment) ] ]. + ifFalse: [ self addPathSegment: (self decodePercent: segment) ] ]. ((stream peekFor: $/) and: [ stream atEnd ]) ifTrue: [ self closePath ] ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseUserInfo..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseUserInfo..st new file mode 100644 index 00000000..258ff042 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/parseUserInfo..st @@ -0,0 +1,9 @@ +parsing +parseUserInfo: stream + | userString | + (userString := stream upTo: $:) isEmpty + ifFalse: [ + self username: (self decodePercent: userString) ]. + stream atEnd + ifFalse: [ + self password: (self decodePercent: stream upToEnd) ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/password..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/password..st new file mode 100644 index 00000000..afd58ac6 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/password..st @@ -0,0 +1,3 @@ +accessing +password: string + password := string \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/password.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/password.st new file mode 100644 index 00000000..494767e1 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/password.st @@ -0,0 +1,3 @@ +accessing +password + ^ password \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/path.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/path.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/path.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/path.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/pathPrintString.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/pathPrintString.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/pathPrintString.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/pathPrintString.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/pathQueryFragmentPrintString.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/pathQueryFragmentPrintString.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/pathQueryFragmentPrintString.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/pathQueryFragmentPrintString.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/pathSegments.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/pathSegments.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/pathSegments.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/pathSegments.st diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/port..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/port..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnFixedClient.class/instance/port..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/port..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/port.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/port.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/port.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/port.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/portOrDefault.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/portOrDefault.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/portOrDefault.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/portOrDefault.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/postCopy.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/postCopy.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/postCopy.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/postCopy.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printAuthorityOn..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printAuthorityOn..st new file mode 100644 index 00000000..54f4de27 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printAuthorityOn..st @@ -0,0 +1,12 @@ +printing +printAuthorityOn: stream + self hasUsername ifTrue: [ + self encode: self username on: stream. + self hasPassword ifTrue: [ + stream nextPut: $:. + self encode: self password on: stream ]. + stream nextPut: $@ ]. + self hasHost ifTrue: [ + self encode: self host on: stream ]. + self hasPort ifTrue: [ + stream nextPut: $:; print: self port ] diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printOn..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printOn..st new file mode 100644 index 00000000..069d1a60 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printOn..st @@ -0,0 +1,6 @@ +printing +printOn: stream + self hasScheme ifTrue: [ + stream nextPutAll: self scheme; nextPutAll: '://' ]. + self printAuthorityOn: stream. + self printPathQueryFragmentOn: stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/printPathOn..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printPathOn..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/printPathOn..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printPathOn..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/printPathQueryFragmentOn..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printPathQueryFragmentOn..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/printPathQueryFragmentOn..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printPathQueryFragmentOn..st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printQueryOn..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printQueryOn..st new file mode 100644 index 00000000..f722b3e5 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/printQueryOn..st @@ -0,0 +1,4 @@ +printing +printQueryOn: stream + stream nextPut: $?. + ZnResourceMetaUtils writeQueryFields: self query on: stream \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/query..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/query..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/query..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/query..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/query.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/query.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/query.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/query.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAddAll..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAddAll..st new file mode 100644 index 00000000..5231ab4f --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAddAll..st @@ -0,0 +1,9 @@ +accessing-query +queryAddAll: keyedCollection + "Note that we use #addAllMulti:" + + keyedCollection isEmpty + ifFalse: [ + query ifNil: [ query := ZnMultiValueDictionary new ]. + query addAllMulti: keyedCollection ]. + ^ keyedCollection \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt..st new file mode 100644 index 00000000..8cf79878 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt..st @@ -0,0 +1,3 @@ +accessing-query +queryAt: key + ^ self queryAt: key ifAbsent: [ KeyNotFound signalFor: key printString ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt.add..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt.add..st similarity index 77% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt.add..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt.add..st index c6cd1d8d..3c84277d 100644 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt.add..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt.add..st @@ -5,4 +5,4 @@ queryAt: key add: value query isNil ifTrue: [ query := ZnMultiValueDictionary new ]. - query at: key add: value \ No newline at end of file + query at: key asString add: (value ifNotNil: [value asString]) \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt.ifAbsent..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt.ifAbsent..st new file mode 100644 index 00000000..3f1f4c73 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt.ifAbsent..st @@ -0,0 +1,5 @@ +accessing-query +queryAt: key ifAbsent: block + ^ self hasQuery + ifTrue: [ self query at: key asString ifAbsent: block ] + ifFalse: [ block value ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt.put..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt.put..st similarity index 77% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt.put..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt.put..st index 712a2dfe..9db3ea0d 100644 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryAt.put..st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryAt.put..st @@ -5,4 +5,4 @@ queryAt: key put: value query isNil ifTrue: [ query := ZnMultiValueDictionary new ]. - query at: key put: value \ No newline at end of file + query at: key asString put: (value ifNotNil: [value asString]) \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryDo..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryDo..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/queryDo..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryDo..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/queryKeys.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryKeys.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/queryKeys.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryKeys.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryRemoveAll.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryRemoveAll.st new file mode 100644 index 00000000..dc24851e --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryRemoveAll.st @@ -0,0 +1,4 @@ +accessing-query +queryRemoveAll + self hasQuery + ifTrue: [ self query removeAll ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryRemoveKey..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryRemoveKey..st new file mode 100644 index 00000000..05609e42 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/queryRemoveKey..st @@ -0,0 +1,4 @@ +accessing-query +queryRemoveKey: key + self hasQuery + ifTrue: [ self query removeKey: key asString ifAbsent: [ ] ] \ 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 new file mode 100644 index 00000000..0eeb8990 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeFirstPathSegment.st @@ -0,0 +1,4 @@ +accessing-path +removeFirstPathSegment + segments isEmpty + ifFalse: [ segments removeFirst ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/removeLastPathSegment.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeLastPathSegment.st similarity index 83% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/removeLastPathSegment.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeLastPathSegment.st index fad517ab..561f0166 100644 --- a/repository/Zinc-HTTP.package/ZnUrl.class/instance/removeLastPathSegment.st +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/removeLastPathSegment.st @@ -1,4 +1,4 @@ -private +accessing-path removeLastPathSegment segments isEmpty ifFalse: [ segments removeLast ] \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/scheme..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/scheme..st new file mode 100644 index 00000000..fc7fbd9c --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/scheme..st @@ -0,0 +1,5 @@ +accessing +scheme: anObject + anObject isNil + ifTrue: [ scheme := nil ] + ifFalse: [ scheme := anObject asSymbol ] \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/scheme.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/scheme.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/scheme.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/scheme.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/schemeOrDefault.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/schemeOrDefault.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/schemeOrDefault.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/schemeOrDefault.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/segments..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/segments..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/segments..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/segments..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/segments.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/segments.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/segments.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/segments.st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/setDefaults.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/setDefaults.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/setDefaults.st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/setDefaults.st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/username..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/username..st new file mode 100644 index 00000000..ef6ebfe8 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/username..st @@ -0,0 +1,3 @@ +accessing +username: string + username := string \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/username.st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/username.st new file mode 100644 index 00000000..3c228b2c --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/username.st @@ -0,0 +1,3 @@ +accessing +username + ^ username \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/withPathSegment..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/withPathSegment..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/withPathSegment..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/withPathSegment..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/withPathSegments..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/withPathSegments..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/withPathSegments..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/withPathSegments..st diff --git a/repository/Zinc-HTTP.package/ZnUrl.class/instance/withQuery..st b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/withQuery..st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUrl.class/instance/withQuery..st rename to repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/instance/withQuery..st diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/methodProperties.json b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/methodProperties.json new file mode 100644 index 00000000..bf99cf78 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/methodProperties.json @@ -0,0 +1,97 @@ +{ + "class" : { + "defaultPortForScheme:" : "SvenVanCaekenberghe 12/8/2012 15:26", + "fromString:" : "SvenVanCaekenberghe 1/3/2011 19:35", + "fromString:defaultScheme:" : "SvenVanCaekenberghe 8/11/2011 14:47" }, + "instance" : { + "&" : "SvenVanCaekenberghe 7/9/2012 16:27", + "/" : "SvenVanCaekenberghe 7/9/2012 16:26", + "=" : "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", + "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", + "closePath" : "SvenVanCaekenberghe 1/4/2011 11:56", + "decodePercent:" : "SvenVanCaekenberghe 1/30/2013 16:27", + "directory" : "SvenVanCaekenberghe 1/14/2013 11:38", + "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", + "firstPathSegment" : "SvenVanCaekenberghe 1/4/2011 14:46", + "fragment" : "SvenVanCaekenberghe 1/3/2011 15:51", + "fragment:" : "SvenVanCaekenberghe 1/3/2011 15:51", + "hasFragment" : "SvenVanCaekenberghe 1/3/2011 15:48", + "hasHost" : "SvenVanCaekenberghe 1/3/2011 15:48", + "hasNonDefaultPort" : "SvenVanCaekenberghe 8/18/2011 21:01", + "hasPassword" : "SvenVanCaekenberghe 1/30/2013 16:19", + "hasPath" : "SvenVanCaekenberghe 1/4/2011 12:03", + "hasPort" : "SvenVanCaekenberghe 1/3/2011 15:48", + "hasQuery" : "SvenVanCaekenberghe 1/6/2013 20:12", + "hasScheme" : "SvenVanCaekenberghe 1/3/2011 15:48", + "hasUsername" : "SvenVanCaekenberghe 1/30/2013 16:19", + "hash" : "SvenVanCaekenberghe 1/4/2011 10:43", + "host" : "SvenVanCaekenberghe 1/3/2011 15:09", + "host:" : "SvenVanCaekenberghe 1/6/2013 19:19", + "inContextOf:" : "SvenVanCaekenberghe 1/7/2013 09:59", + "isAbsolute" : "SvenVanCaekenberghe 1/7/2013 09:59", + "isDirectoryPath" : "SvenVanCaekenberghe 1/14/2013 11:36", + "isEmpty" : "SvenVanCaekenberghe 1/30/2013 17:15", + "isFile" : "SvenVanCaekenberghe 1/14/2013 11:42", + "isFilePath" : "SvenVanCaekenberghe 1/14/2013 11:37", + "isHttp" : "SvenVanCaekenberghe 1/4/2011 10:50", + "isHttps" : "SvenVanCaekenberghe 1/4/2011 10:50", + "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", + "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", + "pathPrintString" : "SvenVanCaekenberghe 1/4/2011 11:16", + "pathQueryFragmentPrintString" : "SvenVanCaekenberghe 1/4/2011 11:17", + "pathSegments" : "SvenVanCaekenberghe 1/4/2011 14:51", + "port" : "SvenVanCaekenberghe 1/3/2011 15:09", + "port:" : "SvenVanCaekenberghe 1/3/2011 15:14", + "portOrDefault" : "SvenVanCaekenberghe 8/11/2011 14:37", + "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", + "printPathQueryFragmentOn:" : "SvenVanCaekenberghe 8/18/2011 14:34", + "printQueryOn:" : "SvenVanCaekenberghe 12/8/2012 21:02", + "query" : "SvenVanCaekenberghe 1/3/2011 16:26", + "query:" : "SvenVanCaekenberghe 1/3/2011 20:15", + "queryAddAll:" : "SvenVanCaekenberghe 1/7/2013 11:14", + "queryAt:" : "KenTreis 01/19/2013 12:20", + "queryAt:add:" : "KenTreis 01/19/2013 12:35", + "queryAt:ifAbsent:" : "KenTreis 01/19/2013 12:16", + "queryAt:put:" : "KenTreis 01/19/2013 12:35", + "queryDo:" : "SvenVanCaekenberghe 1/31/2011 12:18", + "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", + "scheme" : "SvenVanCaekenberghe 1/3/2011 15:09", + "scheme:" : "SvenVanCaekenberghe 1/30/2013 17:18", + "schemeOrDefault" : "SvenVanCaekenberghe 8/11/2011 11:05", + "segments" : "SvenVanCaekenberghe 1/4/2011 10:56", + "segments:" : "SvenVanCaekenberghe 1/4/2011 13:22", + "setDefaults" : "SvenVanCaekenberghe 8/11/2011 12:04", + "username" : "SvenVanCaekenberghe 1/30/2013 16:42", + "username:" : "SvenVanCaekenberghe 1/30/2013 16:19", + "withPathSegment:" : "SvenVanCaekenberghe 7/9/2012 16:22", + "withPathSegments:" : "SvenVanCaekenberghe 7/9/2012 16:23", + "withQuery:" : "SvenVanCaekenberghe 7/9/2012 16:25" } } diff --git a/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/properties.json b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/properties.json new file mode 100644 index 00000000..74bb26a7 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/ZnUrl.class/properties.json @@ -0,0 +1,21 @@ +{ + "category" : "Zinc-Resource-Meta-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "scheme", + "host", + "port", + "segments", + "query", + "fragment", + "username", + "password" ], + "name" : "ZnUrl", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Resource-Meta-Core.package/monticello.meta/categories.st b/repository/Zinc-Resource-Meta-Core.package/monticello.meta/categories.st new file mode 100644 index 00000000..7fc65f0e --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-Resource-Meta-Core'! diff --git a/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/README.md b/repository/Zinc-Resource-Meta-Core.package/monticello.meta/initializers.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/README.md rename to repository/Zinc-Resource-Meta-Core.package/monticello.meta/initializers.st diff --git a/repository/Zinc-Resource-Meta-Core.package/monticello.meta/package b/repository/Zinc-Resource-Meta-Core.package/monticello.meta/package new file mode 100644 index 00000000..cdb5715a --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-Resource-Meta-Core') \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Core.package/monticello.meta/version b/repository/Zinc-Resource-Meta-Core.package/monticello.meta/version new file mode 100644 index 00000000..e91a645d --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/monticello.meta/version @@ -0,0 +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 diff --git a/repository/Zinc-Resource-Meta-Core.package/properties.json b/repository/Zinc-Resource-Meta-Core.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-Resource-Meta-Core.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/.filetree b/repository/Zinc-Resource-Meta-FileSystem.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/AbsolutePath.extension/instance/asZnUrl.st b/repository/Zinc-Resource-Meta-FileSystem.package/AbsolutePath.extension/instance/asZnUrl.st new file mode 100644 index 00000000..1ebf6438 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/AbsolutePath.extension/instance/asZnUrl.st @@ -0,0 +1,9 @@ +*zinc-resource-meta-filesystem +asZnUrl + "Convert the receiver in a file:// ZnUrl" + + | fileUrl | + fileUrl := ZnUrl new. + fileUrl scheme: #file. + self do: [ :each | fileUrl addPathSegment: each ]. + ^ fileUrl \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/AbsolutePath.extension/methodProperties.json b/repository/Zinc-Resource-Meta-FileSystem.package/AbsolutePath.extension/methodProperties.json new file mode 100644 index 00000000..2dc82580 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/AbsolutePath.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "asZnUrl" : "SvenVanCaekenberghe 1/14/2013 10:03" } } diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/AbsolutePath.extension/properties.json b/repository/Zinc-Resource-Meta-FileSystem.package/AbsolutePath.extension/properties.json new file mode 100644 index 00000000..191cc382 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/AbsolutePath.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "AbsolutePath" } diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/AbstractFileReference.extension/instance/asZnUrl.st b/repository/Zinc-Resource-Meta-FileSystem.package/AbstractFileReference.extension/instance/asZnUrl.st new file mode 100644 index 00000000..a962fa66 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/AbstractFileReference.extension/instance/asZnUrl.st @@ -0,0 +1,6 @@ +*zinc-resource-meta-filesystem +asZnUrl + "Convert the receiver in a file:// ZnUrl. + Only an absolute path can be represented as a file:// URL" + + ^ self asAbsolute path asZnUrl \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/AbstractFileReference.extension/methodProperties.json b/repository/Zinc-Resource-Meta-FileSystem.package/AbstractFileReference.extension/methodProperties.json new file mode 100644 index 00000000..d70fc6ef --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/AbstractFileReference.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "asZnUrl" : "SvenVanCaekenberghe 1/14/2013 10:01" } } diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/AbstractFileReference.extension/properties.json b/repository/Zinc-Resource-Meta-FileSystem.package/AbstractFileReference.extension/properties.json new file mode 100644 index 00000000..cde87df9 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/AbstractFileReference.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "AbstractFileReference" } diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/README.md b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/README.md similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/README.md rename to repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/README.md diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testAsFileReference.st b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testAsFileReference.st new file mode 100644 index 00000000..4f41c14d --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testAsFileReference.st @@ -0,0 +1,8 @@ +testing +testAsFileReference + | fileUrl fileReference | + fileUrl := 'file:///foo/bar/test.txt' asZnUrl. + fileReference := fileUrl asFileReference. + self assert: fileReference basename equals: 'test.txt'. + self assert: fileReference pathSegments asArray equals: #( 'foo' 'bar' 'test.txt' ). + self assert: fileReference isAbsolute \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testAsZnUrl.st b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testAsZnUrl.st new file mode 100644 index 00000000..469377d7 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testAsZnUrl.st @@ -0,0 +1,15 @@ +testing +testAsZnUrl + | fileReference fileUrl | + fileReference := FileLocator root / 'foo' / 'bar' / 'test.txt'. + fileUrl := fileReference asZnUrl. + self assert: fileUrl isFile. + self assert: fileUrl directory equals: 'foo/bar'. + self assert: fileUrl file equals: 'test.txt'. + self assert: fileUrl pathSegments asArray equals: #( 'foo' 'bar' 'test.txt'). + self assert: fileUrl pathPrintString equals: '/foo/bar/test.txt'. + self assert: fileUrl printString equals: 'file:///foo/bar/test.txt'. + self deny: fileUrl hasHost. + self deny: fileUrl hasPort. + self deny: fileUrl hasQuery. + self deny: fileUrl hasFragment \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testRelative.st b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testRelative.st new file mode 100644 index 00000000..ecb5ec25 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testRelative.st @@ -0,0 +1,9 @@ +testing +testRelative + | fileReference fileUrl | + fileReference := 'foo/bar/test.txt' asFileReference. + self assert: fileReference isRelative. + fileUrl := fileReference asZnUrl. + self assert: fileUrl isFile. + self assert: fileUrl pathSegments size >= fileReference pathSegments size. + self assert: (fileUrl pathSegments asArray endsWith: fileReference pathSegments asArray) \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testRoot.st b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testRoot.st new file mode 100644 index 00000000..0d58bd0e --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testRoot.st @@ -0,0 +1,8 @@ +testing +testRoot + | fileUrl fileReference | + fileReference := FileLocator root. + self assert: fileReference isRoot. + fileUrl := fileReference asZnUrl. + self assert: fileUrl isFile. + self assert: fileUrl isSlash \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testSlash.st b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testSlash.st new file mode 100644 index 00000000..346f4e3e --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testSlash.st @@ -0,0 +1,8 @@ +testing +testSlash + | fileUrl fileReference | + fileUrl := 'file:///' asZnUrl. + self assert: fileUrl isSlash. + self assert: fileUrl isFile. + fileReference := fileUrl asFileReference. + self assert: fileReference isRoot \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testSpaces.st b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testSpaces.st new file mode 100644 index 00000000..d044bff2 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testSpaces.st @@ -0,0 +1,8 @@ +testing +testSpaces + self + assert: 'file:///foo%20bar/test.st' asZnUrl asFileReference + equals: FileLocator root / 'foo bar' / 'test.st'. + self + assert: (FileLocator root / 'foo bar' / 'test.st') asZnUrl + equals: 'file:///foo%20bar/test.st' asZnUrl \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testTrailingSlash.st b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testTrailingSlash.st new file mode 100644 index 00000000..118473e6 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testTrailingSlash.st @@ -0,0 +1,13 @@ +testing +testTrailingSlash + | fileReference1 fileReference2 fileUrl1 fileUrl2 | + + fileReference1 := '/foo/bar' asFileReference. + fileReference2 := '/foo/bar/' asFileReference. + self assert: fileReference1 equals: fileReference2. + self assert: fileReference1 asZnUrl equals: fileReference2 asZnUrl. + + fileUrl1 := 'file:///foo/bar' asZnUrl. + fileUrl2 := 'file:///foo/bar/' asZnUrl. + self deny: fileUrl1 = fileUrl2. + self assert: fileUrl1 asFileReference equals: fileUrl2 asFileReference \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testWrongScheme.st b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testWrongScheme.st new file mode 100644 index 00000000..906704da --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/instance/testWrongScheme.st @@ -0,0 +1,3 @@ +testing +testWrongScheme + self should: [ 'http://zn.stfx.eu/zn/small.html' asZnUrl asFileReference ] raise: AssertionFailure \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/methodProperties.json b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/methodProperties.json new file mode 100644 index 00000000..276b1a44 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + }, + "instance" : { + "testAsFileReference" : "SvenVanCaekenberghe 2/6/2013 04:56", + "testAsZnUrl" : "SvenVanCaekenberghe 2/6/2013 04:54", + "testRelative" : "SvenVanCaekenberghe 1/14/2013 12:30", + "testRoot" : "SvenVanCaekenberghe 2/6/2013 04:51", + "testSlash" : "SvenVanCaekenberghe 1/14/2013 12:10", + "testSpaces" : "SvenVanCaekenberghe 2/6/2013 04:53", + "testTrailingSlash" : "SvenVanCaekenberghe 1/14/2013 12:23", + "testWrongScheme" : "SvenVanCaekenberghe 1/14/2013 12:17" } } diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/properties.json b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/properties.json new file mode 100644 index 00000000..1191a6bf --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnFileUrlTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-FileSystem", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnFileUrlTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnUrl.extension/instance/asFileReference.st b/repository/Zinc-Resource-Meta-FileSystem.package/ZnUrl.extension/instance/asFileReference.st new file mode 100644 index 00000000..eabfdb5f --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnUrl.extension/instance/asFileReference.st @@ -0,0 +1,13 @@ +*zinc-resource-meta-filesystem +asFileReference + "Convert the receiver into a new FileReference object. + Note that for a FileReference a trailing slash is not relevant" + + | path | + self assert: self scheme = #file description: 'Only a file:// URL can be converted to a FileReference'. + self isSlash + ifTrue: [ ^ FileSystem root ]. + path := self isDirectoryPath + ifTrue: [ segments allButLast ] + ifFalse: [ segments copy ]. + ^ FileReference fileSystem: FileSystem disk path: (AbsolutePath withAll: path) \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnUrl.extension/methodProperties.json b/repository/Zinc-Resource-Meta-FileSystem.package/ZnUrl.extension/methodProperties.json new file mode 100644 index 00000000..3f298d8d --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnUrl.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "asFileReference" : "SvenVanCaekenberghe 1/14/2013 11:37" } } diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/ZnUrl.extension/properties.json b/repository/Zinc-Resource-Meta-FileSystem.package/ZnUrl.extension/properties.json new file mode 100644 index 00000000..778489a7 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/ZnUrl.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "ZnUrl" } diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/categories.st b/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/categories.st new file mode 100644 index 00000000..7d7d2b52 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-Resource-Meta-FileSystem'! diff --git a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/README.md b/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/initializers.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/README.md rename to repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/initializers.st diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/package b/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/package new file mode 100644 index 00000000..6fe2f199 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-Resource-Meta-FileSystem') \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/version b/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/version new file mode 100644 index 00000000..a7e9f270 --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-Resource-Meta-FileSystem-SvenVanCaekenberghe.2' message 'Fixing ZnFileUrlTests so that constant FileReferences are constructed instead of being parsed from Strings assuming an OS with / as separator' id '6979def2-c69b-3042-9003-b68b947a2cef' date '6 February 2013' time '5:06:46.864 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-Resource-Meta-FileSystem-SvenVanCaekenberghe.1' message 'New package to contain bidirectional conversions between ZnUrl and FileReference using #asZnUrl and #asFileReference; Includes ZnFileUrlTests; Needs both Zinc-Resource-Meta-Core and (Pharo 2) FileSystem' id 'aeee949c-7c54-4c53-b5e7-0228ab78e1a1' date '14 January 2013' time '1:21:16.612 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-FileSystem.package/properties.json b/repository/Zinc-Resource-Meta-FileSystem.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-Resource-Meta-FileSystem.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-Resource-Meta-Tests.package/.filetree b/repository/Zinc-Resource-Meta-Tests.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/README.md b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/README.md similarity index 100% rename from repository/Zinc-Tests.package/ZnUserAgentTests.class/README.md rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/README.md diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testAsMimeType.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testAsMimeType.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testAsMimeType.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testAsMimeType.st diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testCharset.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testCharset.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testCharset.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testCharset.st diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testCopying.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testCopying.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testCopying.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testCopying.st diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testDefault.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testDefault.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testDefault.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testDefault.st diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testIdentity.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testIdentity.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testIdentity.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testIdentity.st diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testParameters.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testParameters.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testParameters.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testParameters.st diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testReading.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testReading.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testReading.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testReading.st diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testWriting.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testWriting.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/instance/testWriting.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/instance/testWriting.st diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/methodProperties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/methodProperties.json similarity index 100% rename from repository/Zinc-Tests.package/ZnMimeTypeTests.class/methodProperties.json rename to repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/methodProperties.json diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/properties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/properties.json new file mode 100644 index 00000000..3d5fd6ee --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnMimeTypeTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnMimeTypeTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/README.md b/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/instance/testMultiValues.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/instance/testMultiValues.st similarity index 100% rename from repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/instance/testMultiValues.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/instance/testMultiValues.st diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/instance/testTooManyEntries.st b/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/instance/testTooManyEntries.st new file mode 100644 index 00000000..b7ba6e68 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/instance/testTooManyEntries.st @@ -0,0 +1,8 @@ +testing +testTooManyEntries + | dictionary | + dictionary := ZnMultiValueDictionary new. + self + should: [ 1 to: dictionary limit + 1 do: [ :each | + dictionary at: each put: each ] ] + raise: ZnTooManyDictionaryEntries \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/methodProperties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/methodProperties.json new file mode 100644 index 00000000..4a0afba3 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "testMultiValues" : "PaulDeBruicker 04/10/2011 10:48", + "testTooManyEntries" : "SvenVanCaekenberghe 12/8/2012 19:50" } } diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/properties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/properties.json new file mode 100644 index 00000000..8302c085 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnMultiValueDictionaryTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnMultiValueDictionaryTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/README.md b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/README.md new file mode 100644 index 00000000..e69de29b 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 new file mode 100644 index 00000000..623b045f --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testDecodePercent.st @@ -0,0 +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 diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testQueryParsing.st b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testQueryParsing.st new file mode 100644 index 00000000..2a191ebc --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testQueryParsing.st @@ -0,0 +1,8 @@ +testing +testQueryParsing + | string fields | + string := 'foo=100&x=', (ZnPercentEncoder new encode: '/a b'). + fields := ZnResourceMetaUtils parseQueryFrom: string readStream. + self assert: (fields at: 'foo') = '100'. + self assert: (fields at: 'x') = '/a b'. + \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testQueryWriting.st b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testQueryWriting.st new file mode 100644 index 00000000..990c9774 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/instance/testQueryWriting.st @@ -0,0 +1,10 @@ +testing +testQueryWriting + | fields string | + (fields := Dictionary new) + at: 'foo' put: '100'; + at: 'bar' put: 'a b'. + string := String streamContents: [ :stream | + ZnResourceMetaUtils writeQueryFields: fields on: stream ]. + self assert: (string includesSubstring: 'foo=1'). + self assert: (string includesSubstring: 'bar=a%20b'). \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/methodProperties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/methodProperties.json new file mode 100644 index 00000000..a816d636 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "testDecodePercent" : "SvenVanCaekenberghe 12/17/2012 13:12", + "testQueryParsing" : "SvenVanCaekenberghe 12/17/2012 13:11", + "testQueryWriting" : "SvenVanCaekenberghe 12/8/2012 21:00" } } diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/properties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/properties.json new file mode 100644 index 00000000..02bb8364 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnResourceMetaUtilsTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnResourceMetaUtilsTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/README.md b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testAsRelativeUrl.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testAsRelativeUrl.st new file mode 100644 index 00000000..59de402d --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testAsRelativeUrl.st @@ -0,0 +1,14 @@ +testing +testAsRelativeUrl + | url | + url := 'http://api.foo.com:8080/foo/bar.txt' asZnUrl. + self assert: url hasHost. + self assert: url hasScheme. + self assert: url hasPort. + self assert: url path equals: 'foo/bar.txt'. + url := url asRelativeUrl. + self deny: url hasHost. + self deny: url hasScheme. + self deny: url hasPort. + self assert: url path equals: 'foo/bar.txt'. + self assert: url asString equals: '/foo/bar.txt' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testAuthority.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testAuthority.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testAuthority.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testAuthority.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testConvenienceMethods.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testConvenienceMethods.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testConvenienceMethods.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testConvenienceMethods.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testDefaultScheme.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testDefaultScheme.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testDefaultScheme.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testDefaultScheme.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testDefaultSchemeAndPort.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testDefaultSchemeAndPort.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testDefaultSchemeAndPort.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testDefaultSchemeAndPort.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testDefaults.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testDefaults.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testDefaults.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testDefaults.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testEncodedSlash.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testEncodedSlash.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testEncodedSlash.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testEncodedSlash.st 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 new file mode 100644 index 00000000..50af4b8a --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testFileUrl.st @@ -0,0 +1,7 @@ +testing +testFileUrl + | url | + 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 diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testInContextOf.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testInContextOf.st new file mode 100644 index 00000000..f4f65ff5 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testInContextOf.st @@ -0,0 +1,8 @@ +testing +testInContextOf + | baseUrl url | + baseUrl := 'http://zn.stfx.eu/foo.txt' asZnUrl. + url := ZnUrl new addPathSegment: 'bar.txt'. + self assert: (url inContextOf: baseUrl) equals: 'http://zn.stfx.eu/bar.txt' asZnUrl. + "The following holds for all URLs" + self assert: (baseUrl asRelativeUrl inContextOf: baseUrl) equals: baseUrl \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testIsSlash.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testIsSlash.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testIsSlash.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testIsSlash.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testLocalHost.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testLocalHost.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testLocalHost.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testLocalHost.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testMissingScheme.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testMissingScheme.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testMissingScheme.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testMissingScheme.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsePathOnly.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsePathOnly.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsePathOnly.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsePathOnly.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingEmpty.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingEmpty.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingEmpty.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingEmpty.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingEscape.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingEscape.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingEscape.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingEscape.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingSimple.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingSimple.st similarity index 92% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingSimple.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingSimple.st index c4f6b2a9..e6397c5b 100644 --- a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingSimple.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingSimple.st @@ -6,7 +6,7 @@ testParsingSimple self assert: url host = 'www.example.com'. self assert: url port = 8080. self assert: url hasPath. - self assert: url isFile. + self assert: url isFilePath. self assert: url hasQuery. self assert: url hasFragment. self assert: url fragment = 'm1' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscape.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscape.st similarity index 75% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscape.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscape.st index b9806c39..f691215f 100644 --- a/repository/Zinc-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: ZnPercentEncodingWrong \ 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 new file mode 100644 index 00000000..b592279f --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscapeQuery.st @@ -0,0 +1,3 @@ +testing +testParsingWrongEscapeQuery + self should: [ ZnUrl fromString: 'http://foo:8080/foo?%%bar=1' ] raise: ZnCharacterEncodingError \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongPort.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongPort.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongPort.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongPort.st 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 new file mode 100644 index 00000000..ee92ef4f --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testParsingWrongScheme.st @@ -0,0 +1,9 @@ +testing +testParsingWrongScheme + | url | + url := ZnUrl fromString: 'git://user@foo.com/bar'. + self assert: url scheme equals: #git. + 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 diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testPathRemoval.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testPathRemoval.st new file mode 100644 index 00000000..e8c328fb --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testPathRemoval.st @@ -0,0 +1,16 @@ +testing +testPathRemoval + | url | + url := 'http://api.foo.com:8080/foo/123/bar.txt?x=1&y=2' asZnUrl. + self assert: url path equals: 'foo/123/bar.txt'. + url removeFirstPathSegment. + self assert: url path equals: '123/bar.txt'. + url removeLastPathSegment. + self assert: url path equals: '123'. + url clearPath. + self deny: url hasPath. + self assert: (url queryAt: #x) equals: '1'. + self assert: (url queryAt: #y) equals: '2'. + self assert: url scheme equals: #http. + self assert: url host equals: 'api.foo.com'. + self assert: url port equals: 8080 \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testPrintingSimple.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testPrintingSimple.st similarity index 95% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testPrintingSimple.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testPrintingSimple.st index dbe3e57c..e8547840 100644 --- a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testPrintingSimple.st +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testPrintingSimple.st @@ -11,7 +11,7 @@ testPrintingSimple fragment: 'mark'. self assert: url authority = 'www.seaside.st:8080'. self assert: url isAbsolute. - self assert: url isFile. + self assert: url isFilePath. self assert: url printString = 'http://www.seaside.st:8080/example/foo.html?q=100#mark'. self assert: url file = 'foo.html'. self assert: url directory = 'example'. diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testQuery.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testQuery.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testQuery.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testQuery.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testQueryEncoding.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testQueryEncoding.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testQueryEncoding.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testQueryEncoding.st diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testQueryManipulation.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testQueryManipulation.st new file mode 100644 index 00000000..06923cfa --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testQueryManipulation.st @@ -0,0 +1,11 @@ +testing +testQueryManipulation + | url | + url := 'http://www.google.com/?one=1&two=2' asZnUrl. + url queryAt: 'three' put: '3'. + url queryRemoveKey: 'one'. + self assert: url queryKeys sorted = #(three two). + self assert: (url queryAt: 'two') = '2'. + self assert: (url queryAt: 'three') = '3'. + url queryRemoveAll. + self deny: url hasQuery \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testRelative.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testRelative.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testRelative.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testRelative.st diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testRetrieveContents.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testRetrieveContents.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testRetrieveContents.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testRetrieveContents.st diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testUserInfo.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testUserInfo.st new file mode 100644 index 00000000..70f55130 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testUserInfo.st @@ -0,0 +1,17 @@ +testing +testUserInfo + | url | + url := 'http://john:secret@www.foo.com:8888/foo/bar.txt' asZnUrl. + self assert: url scheme equals: #http. + self assert: url username equals: 'john'. + self assert: url password equals: 'secret'. + self assert: url host equals: 'www.foo.com'. + self assert: url port equals: 8888. + self assert: url pathSegments asArray equals: #('foo' 'bar.txt'). + url := 'http://john@www.foo.com:8888/foo/bar.txt' asZnUrl. + self assert: url scheme equals: #http. + self assert: url username equals: 'john'. + self deny: url hasPassword. + self assert: url host equals: 'www.foo.com'. + self assert: url port equals: 8888. + self assert: url pathSegments asArray equals: #('foo' 'bar.txt') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testWriteUrlPathQueryFragmentOfOn.st b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testWriteUrlPathQueryFragmentOfOn.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testWriteUrlPathQueryFragmentOfOn.st rename to repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/instance/testWriteUrlPathQueryFragmentOfOn.st diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/methodProperties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/methodProperties.json new file mode 100644 index 00000000..1172bd98 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/methodProperties.json @@ -0,0 +1,33 @@ +{ + "class" : { + }, + "instance" : { + "testAsRelativeUrl" : "SvenVanCaekenberghe 1/6/2013 20:43", + "testAuthority" : "SvenVanCaekenberghe 1/4/2011 13:05", + "testConvenienceMethods" : "SvenVanCaekenberghe 7/9/2012 16:33", + "testDefaultScheme" : "SvenVanCaekenberghe 8/11/2011 15:13", + "testDefaultSchemeAndPort" : "SvenVanCaekenberghe 8/11/2011 15:14", + "testDefaults" : "SvenVanCaekenberghe 8/11/2011 15:14", + "testEncodedSlash" : "SvenVanCaekenberghe 4/17/2011 10:29", + "testFileUrl" : "SvenVanCaekenberghe 1/14/2013 11:42", + "testInContextOf" : "SvenVanCaekenberghe 1/6/2013 20:53", + "testIsSlash" : "SvenVanCaekenberghe 1/4/2011 13:42", + "testLocalHost" : "SvenVanCaekenberghe 5/13/2011 10:44", + "testMissingScheme" : "SvenVanCaekenberghe 8/11/2011 14:55", + "testParsePathOnly" : "SvenVanCaekenberghe 8/11/2011 15:20", + "testParsingEmpty" : "SvenVanCaekenberghe 1/4/2011 12:17", + "testParsingEscape" : "SvenVanCaekenberghe 2/28/2011 15:36", + "testParsingSimple" : "SvenVanCaekenberghe 1/14/2013 11:38", + "testParsingWrongEscape" : "SvenVanCaekenberghe 12/17/2012 13:12", + "testParsingWrongEscapeQuery" : "SvenVanCaekenberghe 12/17/2012 13:12", + "testParsingWrongPort" : "SvenVanCaekenberghe 2/28/2011 15:28", + "testParsingWrongScheme" : "SvenVanCaekenberghe 1/30/2013 17:25", + "testPathRemoval" : "SvenVanCaekenberghe 1/6/2013 20:43", + "testPrintingSimple" : "SvenVanCaekenberghe 1/14/2013 11:38", + "testQuery" : "SvenVanCaekenberghe 1/4/2011 15:26", + "testQueryEncoding" : "SvenVanCaekenberghe 12/13/2011 14:16", + "testQueryManipulation" : "SvenVanCaekenberghe 1/6/2013 20:11", + "testRelative" : "SvenVanCaekenberghe 8/11/2011 15:10", + "testRetrieveContents" : "SvenVanCaekenberghe 1/24/2012 11:44", + "testUserInfo" : "SvenVanCaekenberghe 1/30/2013 16:45", + "testWriteUrlPathQueryFragmentOfOn" : "SvenVanCaekenberghe 1/4/2011 13:57" } } diff --git a/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/properties.json b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/properties.json new file mode 100644 index 00000000..5816c996 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/ZnUrlTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Resource-Meta-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnUrlTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/categories.st b/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/categories.st new file mode 100644 index 00000000..427c73d9 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-Resource-Meta-Tests'! diff --git a/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/initializers.st b/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/package b/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/package new file mode 100644 index 00000000..09584f97 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-Resource-Meta-Tests') \ No newline at end of file diff --git a/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/version b/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/version new file mode 100644 index 00000000..c2235856 --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/monticello.meta/version @@ -0,0 +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 diff --git a/repository/Zinc-Resource-Meta-Tests.package/properties.json b/repository/Zinc-Resource-Meta-Tests.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-Resource-Meta-Tests.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-SSO-Demo.package/.filetree b/repository/Zinc-SSO-Demo.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/README.md b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/README.md new file mode 100644 index 00000000..aba8bbfe --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/README.md @@ -0,0 +1,17 @@ +I am ZnSSOServerDelegate, an example/test using SSO. + +(ZnServer startOn: 8100) + delegate: (ZnSSOServerDelegate new + facebookData: (ZnOAuth2ConsumerData + key: '538399976180189' + secret: '***************' + redirectUrl: 'http://localhost:8100/sso-facebook-callback'); + googleData: (ZnOAuth2ConsumerData + key: '81499955779.apps.googleusercontent.com' + secret: '***************' + redirectUrl: 'http://localhost:8100/sso-google-callback'); + twitterData: (ZnOAuth1ConsumerData newForTwitterAuthentication + consumer: '5PAXu9CygKPD0aKwjnGdOA' ; + consumerSecret: '*********'); + yourself); + yourself. diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxData..st new file mode 100644 index 00000000..a6e70f89 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxData..st @@ -0,0 +1,3 @@ +accessing +dropboxData: anObject + dropboxData := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxData.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxData.st new file mode 100644 index 00000000..099015f6 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxData.st @@ -0,0 +1,3 @@ +accessing +dropboxData + ^ dropboxData \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxOAuth1Service.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxOAuth1Service.st new file mode 100644 index 00000000..2dbd96eb --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxOAuth1Service.st @@ -0,0 +1,6 @@ +accessing +dropboxOAuth1Service + + ^ ZnOAuth1Service new + providerAccount: self dropboxData ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxSessionFor.ifAbsent..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxSessionFor.ifAbsent..st new file mode 100644 index 00000000..f97a804c --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxSessionFor.ifAbsent..st @@ -0,0 +1,4 @@ +accessing-session +dropboxSessionFor: aRequest ifAbsent: aBlock + + ^ aRequest session attributeAt: 'dropbox-session' ifAbsent: aBlock \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxSessionFor.put..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxSessionFor.put..st new file mode 100644 index 00000000..bd21b451 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/dropboxSessionFor.put..st @@ -0,0 +1,4 @@ +accessing-session +dropboxSessionFor: aRequest put: anObject + + ^ aRequest session attributeAt: 'dropbox-session' put: anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/facebookData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/facebookData..st new file mode 100644 index 00000000..6354fe74 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/facebookData..st @@ -0,0 +1,3 @@ +accessing +facebookData: anObject + facebookData := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/facebookData.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/facebookData.st new file mode 100644 index 00000000..002f06d2 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/facebookData.st @@ -0,0 +1,3 @@ +accessing +facebookData + ^ facebookData \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/facebookSessionFor..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/facebookSessionFor..st new file mode 100644 index 00000000..58a768bd --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/facebookSessionFor..st @@ -0,0 +1,5 @@ +accessing-session +facebookSessionFor: aRequest + ^ aRequest session + attributeAt: 'facebook-session' + ifAbsentPut: [ ZnOAuth2Session facebook: self facebookData ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/generateInvalidCallbackRequest.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/generateInvalidCallbackRequest.st new file mode 100644 index 00000000..ed6ad7b0 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/generateInvalidCallbackRequest.st @@ -0,0 +1,11 @@ +private +generateInvalidCallbackRequest + + | html entity | + + html := String streamContents: [ :stream | + stream + nextPutAll: '

        Not a valid callback request

        ' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleData..st new file mode 100644 index 00000000..37850a92 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleData..st @@ -0,0 +1,3 @@ +accessing +googleData: anObject + googleData := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleData.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleData.st new file mode 100644 index 00000000..129f86a6 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleData.st @@ -0,0 +1,3 @@ +accessing +googleData + ^ googleData \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleOpenIDService.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleOpenIDService.st new file mode 100644 index 00000000..38b884e6 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleOpenIDService.st @@ -0,0 +1,4 @@ +accessing +googleOpenIDService + + ^ googleOpenIDService ifNil: [ googleOpenIDService := ZnOpenIDProvider newGoogleProvider createSession ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleSessionFor..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleSessionFor..st new file mode 100644 index 00000000..2db52e1c --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/googleSessionFor..st @@ -0,0 +1,5 @@ +accessing-session +googleSessionFor: aRequest + ^ aRequest session + attributeAt: 'google-session' + ifAbsentPut: [ ZnOAuth2Session google: self googleData ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/htmlPageTitled.do..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/htmlPageTitled.do..st new file mode 100644 index 00000000..d08ffc8b --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/htmlPageTitled.do..st @@ -0,0 +1,42 @@ +private +htmlPageTitled: title do: block + ^ String streamContents: [ :stream | + stream + << ' + + + +'; + << title; + << ' + + + + +

        '; + << title; + <<'

        '. + block value: stream. + stream << '' ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/initialize.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/initialize.st new file mode 100644 index 00000000..88ac006f --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/initialize.st @@ -0,0 +1,26 @@ +initialize-release +initialize + + super initialize. + + self prefixMap + at: 'sso-demo' put: #ssoDemo: ; + at: 'sso-reset' put: #ssoReset: ; + at: 'sso-google' put: #ssoGoogle: ; + at: 'sso-google-callback' put: #ssoGoogleCallback: ; + at: 'sso-google-data' put: #ssoGoogleData: ; + at: 'sso-facebook' put: #ssoFacebook: ; + at: 'sso-facebook-callback' put: #ssoFacebookCallback: ; + at: 'sso-facebook-data' put: #ssoFacebookData: ; + at: 'sso-microsoft' put: #ssoMicrosoft: ; + at: 'sso-microsoft-callback' put: #ssoMicrosoftCallback: ; + at: 'sso-microsoft-data' put: #ssoMicrosoftData: ; + at: 'sso-twitter' put: #ssoTwitter: ; + at: 'sso-twitter-callback' put: #ssoTwitterCallback: ; + at: 'sso-twitter-data' put: #ssoTwitterData: ; + at: 'sso-dropbox' put: #ssoDropbox: ; + at: 'sso-dropbox-callback' put: #ssoDropboxCallback: ; + at: 'sso-dropbox-data' put: #ssoDropboxData: ; + at: 'sso-openid' put: #ssoOpenID: ; + at: 'sso-openid-callback' put: #ssoOpenIDCallback: + diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/isOAuth2Callback..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/isOAuth2Callback..st new file mode 100644 index 00000000..984c40d7 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/isOAuth2Callback..st @@ -0,0 +1,4 @@ +testing +isOAuth2Callback: aRequest + + ^aRequest uri queryKeys includes: 'code' \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/manipulateDemoFile..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/manipulateDemoFile..st new file mode 100644 index 00000000..cee52f2b --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/manipulateDemoFile..st @@ -0,0 +1,22 @@ +private +manipulateDemoFile: dropboxUserAccess + "A little DropBox file manipulation demo." + + | demoFilePath contents id | + demoFilePath := #( 'demo.txt' ). + contents := [ dropboxUserAccess getFile: demoFilePath ] on: Error do: [ nil ]. + id := 0. + contents ifNotNil: [ + contents linesDo: [ :line | | tokens | + tokens := $: split: line. + (tokens size >= 2 and: [ tokens first trimBoth = 'id' ]) + ifTrue: [ id := Integer readFrom: tokens second trimBoth ifFail: [ 0 ] ] ] ]. + id := id + 1. + contents := String streamContents: [ :out | + out << 'file:demo.txt'; crlf. + out << 'description:created & updated automatically by ZnSSOServerDelegate>>#manipulateDemoFile:'; crlf. + out << 'timestamp:'; print: DateAndTime now; crlf. + out << 'id:'; print: id; crlf ]. + dropboxUserAccess putFile: demoFilePath data: (ZnEntity text: contents). + ^ id + \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/microsoftData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/microsoftData..st new file mode 100644 index 00000000..294f664c --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/microsoftData..st @@ -0,0 +1,3 @@ +accessing +microsoftData: anObject + microsoftData := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/microsoftData.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/microsoftData.st new file mode 100644 index 00000000..843b271c --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/microsoftData.st @@ -0,0 +1,3 @@ +accessing +microsoftData + ^ microsoftData \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/microsoftSessionFor..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/microsoftSessionFor..st new file mode 100644 index 00000000..4ec0d8f8 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/microsoftSessionFor..st @@ -0,0 +1,5 @@ +accessing-session +microsoftSessionFor: aRequest + ^ aRequest session + attributeAt: 'microsoft-session' + ifAbsentPut: [ ZnOAuth2Session microsoft: self microsoftData ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/openIdServiceFor..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/openIdServiceFor..st new file mode 100644 index 00000000..10e25408 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/openIdServiceFor..st @@ -0,0 +1,10 @@ +private +openIdServiceFor: aProviderName + + aProviderName = 'Google' + ifTrue: [ ^ self googleOpenIDService ]. + + aProviderName = 'Yahoo' + ifTrue: [ ^ self yahooOpenIDService ]. + + self error: 'Unknown OpenID Provider' \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/printDictionary.asHtmlOn..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/printDictionary.asHtmlOn..st new file mode 100644 index 00000000..a06d1775 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/printDictionary.asHtmlOn..st @@ -0,0 +1,17 @@ +private +printDictionary: aDictionary asHtmlOn: aStream + + aStream + nextPutAll: '
          '. + aDictionary keysAndValuesDo: [ :key :value | + aStream + nextPutAll: '
        • ' ; + nextPutAll: key. + value isDictionary + ifTrue: [ self printDictionary: value asHtmlOn: aStream ] + ifFalse: [ + aStream + nextPutAll: ' --> ' ; + nextPutAll: value asString ]. + aStream nextPutAll: '
        • ' ]. + aStream nextPutAll: '
        ' \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/resetSessions..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/resetSessions..st new file mode 100644 index 00000000..b31bfcab --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/resetSessions..st @@ -0,0 +1,4 @@ +accessing-session +resetSessions: request + #(#google #microsoft #facebook #twitter) do: [ :each | + request session removeAttribute: each , '-session' ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDemo..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDemo..st new file mode 100644 index 00000000..21780e3d --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDemo..st @@ -0,0 +1,45 @@ +responses +ssoDemo: request + | html session service token | + html := self + htmlPageTitled: 'Zinc SSO Demo' + do: [ :stream | + stream << '

        OAuth2 Providers

        '. + #(#Google #Facebook ) + do: [ :each | + session := self perform: (each asLowercase, 'SessionFor:') asSymbol with: request. + stream + << ''; + << each; + << '' ] + separatedBy: [ stream << ' | ' ]. + stream << '

        OAuth1 Providers

        '. + service := self twitterOAuth1Service. + token := service getRequestTokenFor: request server url / 'sso-twitter-callback'. + self twitterSessionFor: request put: token. + stream + << ''; + << #Twitter; + << ''. + stream << '

        OpenID Providers

        '. + #( Google Yahoo ) + do: [ :each | + stream + << '' ; + << each ; + << '' ] + separatedBy: [ stream << ' | ' ]. + stream << '

        May the Source be with you!

        ' ]. + ^ ZnResponse ok: (ZnEntity html: html) \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDropbox..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDropbox..st new file mode 100644 index 00000000..310b0501 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDropbox..st @@ -0,0 +1,19 @@ +responses +ssoDropbox: request + + | oauthService requestToken html entity | + + oauthService := self dropboxOAuth1Service. + + requestToken := oauthService getRequestToken. + self dropboxSessionFor: request put: requestToken. + + html := self htmlPageTitled: 'Zinc SSO Dropbox Login' do: [ :stream | + stream + << '

        Dropbox SSO

        ' ; + << 'Login with Dropbox' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDropboxCallback..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDropboxCallback..st new file mode 100644 index 00000000..d02dda79 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDropboxCallback..st @@ -0,0 +1,17 @@ +responses +ssoDropboxCallback: request + + | requestToken oauthToken accessToken | + + requestToken := self dropboxSessionFor: request + ifAbsent: [ ^ self generateInvalidCallbackRequest ]. + + oauthToken := request uri queryAt: 'oauth_token' ifAbsent: [ nil ]. + + (oauthToken notNil and: [ oauthToken ~= requestToken value ]) + ifTrue: [ ^ self generateInvalidCallbackRequest ]. + + accessToken := self dropboxOAuth1Service getAccessToken: requestToken. + self dropboxSessionFor: request put: accessToken. + + ^ ZnResponse redirect: 'sso-dropbox-data' \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDropboxData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDropboxData..st new file mode 100644 index 00000000..0da445f5 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoDropboxData..st @@ -0,0 +1,26 @@ +responses +ssoDropboxData: request + + | accessToken userAccess accountInfo rootInfo id html entity | + + accessToken := self dropboxSessionFor: request + ifAbsent: [ ^ self generateInvalidCallbackRequest ]. + + userAccess := ZnOAuth1DropboxUserAccess new + oauth1Service: self dropboxOAuth1Service ; + accessToken: accessToken. + + accountInfo := userAccess getAccountInfo. + id := self manipulateDemoFile: userAccess. + rootInfo := userAccess getRootInfo. + + html := self htmlPageTitled: 'Zinc SSO Dropbox Account Info' do: [ :stream | + stream << '

        Dropbox Account Info

        '. + self printDictionary: accountInfo asHtmlOn: stream. + stream << '

        Dropbox Root Info

        '. + self printDictionary: rootInfo asHtmlOn: stream. + stream << ('
        demo.txt manipulation id {1}
        ' format: { id }). + stream << '

        Reset

        ' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoFacebook..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoFacebook..st new file mode 100644 index 00000000..fe7d0f90 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoFacebook..st @@ -0,0 +1,16 @@ +responses +ssoFacebook: request + + | facebookSession html entity | + + facebookSession := self facebookSessionFor: request. + + html := self htmlPageTitled: 'Zinc SSO Facebook Login' do: [ :stream | + stream + << '

        Facebook SSO

        ' ; + << 'Login with Facebook' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoFacebookCallback..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoFacebookCallback..st new file mode 100644 index 00000000..718aa968 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoFacebookCallback..st @@ -0,0 +1,12 @@ +responses +ssoFacebookCallback: request + + | facebookSession | + + (self isOAuth2Callback: request) + ifFalse: [ ^ self generateInvalidCallbackRequest ]. + + facebookSession := self facebookSessionFor: request. + facebookSession handleAuthenticationCallback: request uri query. + + ^ ZnResponse redirect: 'sso-facebook-data' \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoFacebookData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoFacebookData..st new file mode 100644 index 00000000..b046ec2f --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoFacebookData..st @@ -0,0 +1,15 @@ +responses +ssoFacebookData: request + + | facebookSession userData html entity | + + facebookSession := self facebookSessionFor: request. + userData := facebookSession getUserData. + + html := self htmlPageTitled: 'Zinc SSO Facebook UserData' do: [ :stream | + stream << '

        Facebook UserData

        '. + self printDictionary: userData asHtmlOn: stream. + stream << 'Reset' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoGoogle..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoGoogle..st new file mode 100644 index 00000000..197ff3e1 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoGoogle..st @@ -0,0 +1,16 @@ +responses +ssoGoogle: request + + | googleSession html entity | + + googleSession := self googleSessionFor: request. + + html := self htmlPageTitled: 'Zinc SSO Google Login' do: [ :stream | + stream + << '

        Google SSO

        ' ; + << 'Login with Google' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoGoogleCallback..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoGoogleCallback..st new file mode 100644 index 00000000..40c86767 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoGoogleCallback..st @@ -0,0 +1,12 @@ +responses +ssoGoogleCallback: request + + | googleSession | + + (self isOAuth2Callback: request) + ifFalse: [ ^ self generateInvalidCallbackRequest ]. + + googleSession := self googleSessionFor: request. + googleSession handleAuthenticationCallback: request uri query. + + ^ ZnResponse redirect: 'sso-google-data' \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoGoogleData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoGoogleData..st new file mode 100644 index 00000000..57353f9a --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoGoogleData..st @@ -0,0 +1,15 @@ +responses +ssoGoogleData: request + + | googleSession userData html entity | + + googleSession := self googleSessionFor: request. + userData := googleSession getUserData. + + html := self htmlPageTitled: 'Zinc SSO Google UserData' do: [ :stream | + stream << '

        Google UserData

        '. + self printDictionary: userData asHtmlOn: stream. + stream << 'Reset' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoMicrosoft..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoMicrosoft..st new file mode 100644 index 00000000..2bf4559b --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoMicrosoft..st @@ -0,0 +1,16 @@ +responses +ssoMicrosoft: request + + | microsoftSession html entity | + + microsoftSession := self microsoftSessionFor: request. + + html := self htmlPageTitled: 'Zinc SSO Microsoft Login' do: [ :stream | + stream + << '

        Microsoft SSO

        ' ; + << 'Login with Microsoft' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoMicrosoftCallback..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoMicrosoftCallback..st new file mode 100644 index 00000000..73e9d0ca --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoMicrosoftCallback..st @@ -0,0 +1,12 @@ +responses +ssoMicrosoftCallback: request + + | microsoftSession | + + (self isOAuth2Callback: request) + ifFalse: [ ^ self generateInvalidCallbackRequest ]. + + microsoftSession := self microsoftSessionFor: request. + microsoftSession handleAuthenticationCallback: request uri query. + + ^ ZnResponse redirect: 'sso-microsoft-data' \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoMicrosoftData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoMicrosoftData..st new file mode 100644 index 00000000..addea5e2 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoMicrosoftData..st @@ -0,0 +1,15 @@ +responses +ssoMicrosoftData: request + + | microsoftSession userData html entity | + + microsoftSession := self microsoftSessionFor: request. + userData := microsoftSession getUserData. + + html := self htmlPageTitled: 'Zinc SSO Microsoft UserData' do: [ :stream | + stream << '

        Microsoft UserData

        '. + self printDictionary: userData asHtmlOn: stream . + stream << 'Reset' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoOpenID..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoOpenID..st new file mode 100644 index 00000000..2d284564 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoOpenID..st @@ -0,0 +1,18 @@ +responses +ssoOpenID: request + + | service serverUrl callbackUrl authUrl | + + service := self openIdServiceFor: (request url queryAt: 'provider' ifAbsent: [ nil ]). + + serverUrl := request server url. + callbackUrl := (serverUrl / 'sso-openid-callback') + queryAt: 'provider' put: (request url queryAt: 'provider') ; + yourself. + + authUrl := service getAuthenticationRequestUrl: callbackUrl do: [ :authRequest | + authRequest realm: serverUrl asString. + authRequest axRequestNamesAndEmail + "self openIDoptionsForm updateAuthenticationRequest: authRequest "]. + + ^ ZnResponse redirect: authUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoOpenIDCallback..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoOpenIDCallback..st new file mode 100644 index 00000000..ce51674f --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoOpenIDCallback..st @@ -0,0 +1,15 @@ +responses +ssoOpenIDCallback: request + + | service authResponse html | + + service := self openIdServiceFor: (request url queryAt: 'provider' ifAbsent: [ nil ]). + + authResponse := service getValidatedAuthenticationResponseFrom: request url query. + + html := self htmlPageTitled: 'Zinc SSO OpenID result for ', service providerName do: [ :stream | + stream << '

        ' ; << service providerName ; << ' result

        '. + self printDictionary: authResponse properties asHtmlOn: stream . + stream << 'Reset' ]. + + ^ ZnResponse ok: (ZnEntity html: html) \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoReset..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoReset..st new file mode 100644 index 00000000..59f1328e --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoReset..st @@ -0,0 +1,6 @@ +responses +ssoReset: request + | target | + self resetSessions: request. + target := request uri queryAt: #target ifAbsent: [ 'sso-demo' ]. + ^ ZnResponse redirect: target \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoTwitter..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoTwitter..st new file mode 100644 index 00000000..5dd39415 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoTwitter..st @@ -0,0 +1,19 @@ +responses +ssoTwitter: request + + | oauthService requestToken html entity | + + oauthService := self twitterOAuth1Service. + + requestToken := oauthService getRequestTokenFor: request server url / 'sso-twitter-callback'. + self twitterSessionFor: request put: requestToken. + + html := self htmlPageTitled: 'Zinc SSO Twitter Login' do: [ :stream | + stream + << '

        Twitter SSO

        ' ; + << 'Login with Twitter' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoTwitterCallback..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoTwitterCallback..st new file mode 100644 index 00000000..2b73c3a4 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoTwitterCallback..st @@ -0,0 +1,21 @@ +responses +ssoTwitterCallback: request + + | requestToken oauthToken oauthVerifier accessToken | + + requestToken := self twitterSessionFor: request + ifAbsent: [ ^ self generateInvalidCallbackRequest ]. + + oauthToken := request uri queryAt: 'oauth_token'. + oauthVerifier := request uri queryAt: 'oauth_verifier'. + + (oauthToken isNil or: [ oauthVerifier isNil]) + ifTrue: [ ^ self generateInvalidCallbackRequest ]. + + oauthToken = requestToken value + ifFalse: [ ^ self generateInvalidCallbackRequest ]. + + accessToken := self twitterOAuth1Service getAccessToken: requestToken verifier: oauthVerifier. + self twitterSessionFor: request put: accessToken. + + ^ ZnResponse redirect: 'sso-twitter-data' \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoTwitterData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoTwitterData..st new file mode 100644 index 00000000..56ba88e0 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/ssoTwitterData..st @@ -0,0 +1,20 @@ +responses +ssoTwitterData: request + + | accessToken userData html entity | + + accessToken := self twitterSessionFor: request + ifAbsent: [ ^ self generateInvalidCallbackRequest ]. + + userData := ZnOAuth1TwitterUserAccess new + oauth1Service: self twitterOAuth1Service ; + accessToken: accessToken ; + accountVerifyCredentials. + + html := self htmlPageTitled: 'Zinc SSO Twitter UserData' do: [ :stream | + stream << '

        Twitter UserData

        '. + self printDictionary: userData asHtmlOn: stream . + stream << 'Reset' ]. + + entity := ZnEntity html: html. + ^ ZnResponse ok: entity \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterData..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterData..st new file mode 100644 index 00000000..e96e1c79 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterData..st @@ -0,0 +1,4 @@ +accessing +twitterData: aConsumerData + + twitterData := aConsumerData \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterData.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterData.st new file mode 100644 index 00000000..9c228290 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterData.st @@ -0,0 +1,4 @@ +accessing +twitterData + + ^ twitterData \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterOAuth1Service.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterOAuth1Service.st new file mode 100644 index 00000000..1d0b409c --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterOAuth1Service.st @@ -0,0 +1,6 @@ +accessing +twitterOAuth1Service + + ^ ZnOAuth1Service new + providerAccount: self twitterData ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterSessionFor.ifAbsent..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterSessionFor.ifAbsent..st new file mode 100644 index 00000000..fffd59f4 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterSessionFor.ifAbsent..st @@ -0,0 +1,4 @@ +accessing-session +twitterSessionFor: aRequest ifAbsent: aBlock + + ^ aRequest session attributeAt: 'twitter-session' ifAbsent: aBlock \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterSessionFor.put..st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterSessionFor.put..st new file mode 100644 index 00000000..eb2190cd --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/twitterSessionFor.put..st @@ -0,0 +1,4 @@ +accessing-session +twitterSessionFor: aRequest put: anObject + + ^ aRequest session attributeAt: 'twitter-session' put: anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/yahooOpenIDService.st b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/yahooOpenIDService.st new file mode 100644 index 00000000..de82f4dc --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/instance/yahooOpenIDService.st @@ -0,0 +1,4 @@ +accessing +yahooOpenIDService + + ^ yahooOpenIDService ifNil: [ yahooOpenIDService := ZnOpenIDProvider newYahooProvider createSession ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/methodProperties.json b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/methodProperties.json new file mode 100644 index 00000000..f85b5ecf --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/methodProperties.json @@ -0,0 +1,52 @@ +{ + "class" : { + }, + "instance" : { + "dropboxData" : "SvenVanCaekenberghe 1/23/2013 20:14", + "dropboxData:" : "SvenVanCaekenberghe 1/23/2013 20:14", + "dropboxOAuth1Service" : "SvenVanCaekenberghe 1/23/2013 20:17", + "dropboxSessionFor:ifAbsent:" : "SvenVanCaekenberghe 1/23/2013 20:14", + "dropboxSessionFor:put:" : "SvenVanCaekenberghe 1/23/2013 20:15", + "facebookData" : "JanVanDeSandt 10/7/2012 13:32", + "facebookData:" : "JanVanDeSandt 10/7/2012 13:32", + "facebookSessionFor:" : "SvenVanCaekenberghe 12/20/2012 09:50", + "generateInvalidCallbackRequest" : "JanVanDeSandt 12/7/2012 11:14", + "googleData" : "JanVanDeSandt 10/7/2012 13:32", + "googleData:" : "JanVanDeSandt 10/7/2012 13:32", + "googleOpenIDService" : "JanVanDeSandt 1/5/2013 19:40", + "googleSessionFor:" : "SvenVanCaekenberghe 12/20/2012 09:49", + "htmlPageTitled:do:" : "SvenVanCaekenberghe 2/4/2013 12:02", + "initialize" : "SvenVanCaekenberghe 1/23/2013 20:16", + "isOAuth2Callback:" : "JanVanDeSandt 12/7/2012 11:10", + "manipulateDemoFile:" : "SvenVanCaekenberghe 2/4/2013 11:57", + "microsoftData" : "SvenVanCaekenberghe 12/20/2012 23:21", + "microsoftData:" : "SvenVanCaekenberghe 12/20/2012 23:21", + "microsoftSessionFor:" : "SvenVanCaekenberghe 12/20/2012 23:34", + "openIdServiceFor:" : "JanVanDeSandt 1/5/2013 19:38", + "printDictionary:asHtmlOn:" : "JanVanDeSandt 10/7/2012 14:38", + "resetSessions:" : "JanVanDeSandt 12/24/2012 11:30", + "ssoDemo:" : "JanVanDeSandt 1/5/2013 19:35", + "ssoDropbox:" : "JanVanDeSandt 1/26/2013 13:28", + "ssoDropboxCallback:" : "JanVanDeSandt 1/26/2013 14:15", + "ssoDropboxData:" : "SvenVanCaekenberghe 2/4/2013 12:18", + "ssoFacebook:" : "SvenVanCaekenberghe 12/22/2012 18:54", + "ssoFacebookCallback:" : "SvenVanCaekenberghe 12/23/2012 19:26", + "ssoFacebookData:" : "SvenVanCaekenberghe 12/23/2012 19:24", + "ssoGoogle:" : "SvenVanCaekenberghe 12/22/2012 18:57", + "ssoGoogleCallback:" : "SvenVanCaekenberghe 12/23/2012 19:28", + "ssoGoogleData:" : "SvenVanCaekenberghe 12/23/2012 19:27", + "ssoMicrosoft:" : "SvenVanCaekenberghe 12/22/2012 18:58", + "ssoMicrosoftCallback:" : "SvenVanCaekenberghe 12/23/2012 19:28", + "ssoMicrosoftData:" : "SvenVanCaekenberghe 12/23/2012 19:27", + "ssoOpenID:" : "JanVanDeSandt 1/5/2013 20:41", + "ssoOpenIDCallback:" : "JanVanDeSandt 1/5/2013 21:09", + "ssoReset:" : "SvenVanCaekenberghe 12/22/2012 19:19", + "ssoTwitter:" : "SvenVanCaekenberghe 1/4/2013 13:54", + "ssoTwitterCallback:" : "JanVanDeSandt 12/24/2012 11:39", + "ssoTwitterData:" : "JanVanDeSandt 12/27/2012 11:45", + "twitterData" : "JanVanDeSandt 12/24/2012 10:28", + "twitterData:" : "JanVanDeSandt 12/24/2012 10:55", + "twitterOAuth1Service" : "JanVanDeSandt 12/24/2012 10:58", + "twitterSessionFor:ifAbsent:" : "JanVanDeSandt 12/24/2012 11:34", + "twitterSessionFor:put:" : "JanVanDeSandt 12/24/2012 11:42", + "yahooOpenIDService" : "JanVanDeSandt 1/5/2013 19:40" } } diff --git a/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/properties.json b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/properties.json new file mode 100644 index 00000000..55bec355 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/ZnSSOServerDelegate.class/properties.json @@ -0,0 +1,20 @@ +{ + "category" : "Zinc-SSO-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "facebookData", + "googleData", + "microsoftData", + "twitterData", + "dropboxData", + "googleOpenIDService", + "yahooOpenIDService" ], + "name" : "ZnSSOServerDelegate", + "pools" : [ + ], + "super" : "ZnDefaultServerDelegate", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Demo.package/monticello.meta/categories.st b/repository/Zinc-SSO-Demo.package/monticello.meta/categories.st new file mode 100644 index 00000000..2a08ffe8 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-SSO-Demo'! diff --git a/repository/Zinc-SSO-Demo.package/monticello.meta/initializers.st b/repository/Zinc-SSO-Demo.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-Demo.package/monticello.meta/package b/repository/Zinc-SSO-Demo.package/monticello.meta/package new file mode 100644 index 00000000..4893bc98 --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-SSO-Demo') \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/monticello.meta/version b/repository/Zinc-SSO-Demo.package/monticello.meta/version new file mode 100644 index 00000000..392e88fa --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-SSO-Demo-SvenVanCaekenberghe.5' message 'added ZnSSOServerDelegate>>#manipulateDemoFile:' id '4bb17785-f885-4db5-98f5-9c7d52d3add6' date '4 February 2013' time '12:28:14.601 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-Demo-SvenVanCaekenberghe.4' message 'extended the demo to use ZnOAuth1DropboxUserAccess>>#getRootInfo as an example of really using the Dropbox API for listing the contents of Apps/Zinc-SSO' id '9e67dc9b-b74b-4c6b-8fb1-d55b8183d3a0' date '27 January 2013' time '1:13:28.159 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-Demo-JanVanDeSandt.3' message 'User OAuth 1.0 protocol for Dropbox and not version 1.0a' id '93129956-fbe5-cc45-b49c-a229942d93c2' date '26 January 2013' time '2:17:25.385 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-Demo-SvenVanCaekenberghe.2' message 'added the first dropbox test code' id '7bc1afb5-b66c-4783-a218-1f3d8fc5b158' date '23 January 2013' time '9:31:25.875 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-Demo-JanVanDeSandt.1' message 'Moved ZnSSOServerDelegate to new package Zinc-SSO-Demo and added OpenID providers' id '500cdeb3-e882-4551-90b9-6bcb9c2c4db4' date '5 January 2013' time '9:25:31.09 pm' author 'JanVanDeSandt' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-SSO-Demo.package/properties.json b/repository/Zinc-SSO-Demo.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-SSO-Demo.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/.filetree b/repository/Zinc-SSO-OAuth1-Core.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/README.md new file mode 100644 index 00000000..3c63d62d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/README.md @@ -0,0 +1 @@ +Utility class to calculate the correct Authorization header for OAuth1 requests. \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/class/signStringSHA1.usingSecret..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/class/signStringSHA1.usingSecret..st new file mode 100644 index 00000000..a2f0daf2 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/class/signStringSHA1.usingSecret..st @@ -0,0 +1,11 @@ +utility +signStringSHA1: aString usingSecret: aSecret + "Signs a string with , and encode the + resulting byteArray into plain ASCII with base64." + + | hmac digest | + + hmac := SHA1 new hmac. + hmac key: aSecret asByteArray. + digest := hmac digestMessage: aString asByteArray. + ^ZnBase64Encoder new encode: digest \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/callback..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/callback..st new file mode 100644 index 00000000..ab008044 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/callback..st @@ -0,0 +1,3 @@ +accessing +callback: anObject + callback := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/callback.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/callback.st new file mode 100644 index 00000000..e450979c --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/callback.st @@ -0,0 +1,3 @@ +accessing +callback + ^ callback \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerKey..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerKey..st new file mode 100644 index 00000000..cebf1891 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerKey..st @@ -0,0 +1,3 @@ +accessing +consumerKey: anObject + consumerKey := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerKey.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerKey.st new file mode 100644 index 00000000..0f666801 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerKey.st @@ -0,0 +1,3 @@ +accessing +consumerKey + ^ consumerKey \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerSecret..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerSecret..st new file mode 100644 index 00000000..5bf6f09a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerSecret..st @@ -0,0 +1,3 @@ +accessing +consumerSecret: anObject + consumerSecret := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerSecret.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerSecret.st new file mode 100644 index 00000000..c4fada0d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/consumerSecret.st @@ -0,0 +1,3 @@ +accessing +consumerSecret + ^ consumerSecret \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getAuthorizationHeader..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getAuthorizationHeader..st new file mode 100644 index 00000000..89fbde1d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getAuthorizationHeader..st @@ -0,0 +1,27 @@ +api +getAuthorizationHeader: aRequest + "Create the OAuth1 Authorization header. See: http://code.google.com/apis/accounts/docs/OAuth_ref.html " + + | oauthParameters baseString signatureKey encoder | + + oauthParameters := self getOAuthParameters. + baseString := self getBaseString: aRequest with: oauthParameters. + signatureKey := self getSignatureKey. + encoder := ZnPercentEncoder new. + + self signatureMethod = 'HMAC-SHA1' + ifTrue: [ + oauthParameters add: 'oauth_signature' -> (self class signStringSHA1: baseString usingSecret: signatureKey) ] + ifFalse: [ + self error: 'Unsupported signature method' ]. + + ^String streamContents: [ :stream | + stream nextPutAll: 'OAuth '. + oauthParameters + do: [ :assoc | + stream + nextPutAll: assoc key ; + nextPutAll: '="'. + encoder encode: assoc value readStream to: stream. + stream nextPutAll: '"' ] + separatedBy: [ stream nextPutAll: ',' ] ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getBaseString.with..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getBaseString.with..st new file mode 100644 index 00000000..b75d867e --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getBaseString.with..st @@ -0,0 +1,38 @@ +actions +getBaseString: aRequest with: anOAuthParameters + "Create the OAuth1 baseString" + + | params paramsString percentEncoder | + + percentEncoder := ZnPercentEncoder new. + + params := OrderedCollection new + addAll: anOAuthParameters ; + yourself. + aRequest mergedFields keysAndValuesDo: [ :key :value | params add: key -> value ]. + + params sort: [ :a1 :a2 | + a1 key = a2 key + ifTrue: [ a1 value < a2 value ] + ifFalse: [ a1 key < a2 key ] ]. + + paramsString := String streamContents: [ :stream | + params + do: [ :assoc | + stream + nextPutAll: assoc key ; + nextPut: $=. + percentEncoder encode: assoc value readStream to: stream ] + separatedBy: [ stream nextPutAll: '&' ] ]. + + ^String streamContents: [ :stream | | baseUrl | + stream + nextPutAll: aRequest method ; + nextPut: $&. + baseUrl := aRequest uri copy + query: nil ; + fragment: nil ; + asString. + percentEncoder encode: baseUrl readStream to: stream. + stream nextPut: $&. + percentEncoder encode: paramsString readStream to: stream ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getOAuthParameters.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getOAuthParameters.st new file mode 100644 index 00000000..3e3eb812 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getOAuthParameters.st @@ -0,0 +1,20 @@ +actions +getOAuthParameters + + | list | + + list := OrderedCollection new + add: 'oauth_consumer_key' -> self consumerKey ; + add: 'oauth_nonce' -> self nonce ; + add: 'oauth_signature_method' -> self signatureMethod ; + add: 'oauth_timestamp' -> self timestamp ; + add: 'oauth_version' -> self version ; + yourself. + + self token notNil + ifTrue: [ list add: 'oauth_token' -> self token ]. + self callback notNil + ifTrue: [ list add: 'oauth_callback' -> self callback asString ]. + self verifier notNil + ifTrue: [ list add: 'oauth_verifier' -> self verifier ]. + ^ list \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getSignatureKey.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getSignatureKey.st new file mode 100644 index 00000000..6b30f61e --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/getSignatureKey.st @@ -0,0 +1,12 @@ +actions +getSignatureKey + "Create the OAuth1 signature key. " + + | percentEncoder | + + percentEncoder := ZnPercentEncoder new. + + ^String streamContents: [ :stream | + percentEncoder encode: self consumerSecret readStream to: stream. + stream nextPut: $&. + percentEncoder encode: (self tokenSecret ifNil: [ '' ]) readStream to: stream ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/initialize.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/initialize.st new file mode 100644 index 00000000..560a666f --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + + super initialize. + self setUp \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/nonce..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/nonce..st new file mode 100644 index 00000000..c8c9222c --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/nonce..st @@ -0,0 +1,3 @@ +accessing +nonce: anObject + nonce := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/nonce.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/nonce.st new file mode 100644 index 00000000..ffb9feea --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/nonce.st @@ -0,0 +1,3 @@ +accessing +nonce + ^ nonce \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/setUp.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/setUp.st new file mode 100644 index 00000000..d2c2f156 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/setUp.st @@ -0,0 +1,12 @@ +initialize-release +setUp + + | begin secondsSinceEpoch | + + begin := DateAndTime year: 1970 day: 1 hour: 0 minute: 0 second: 0 offset: Duration zero. + secondsSinceEpoch := (DateAndTime now asUTC - begin) asSeconds. + + self version: '1.0'. + self signatureMethod: 'HMAC-SHA1'. + self timestamp: secondsSinceEpoch asString. + self nonce: UUID new asString \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/signatureMethod..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/signatureMethod..st new file mode 100644 index 00000000..8a219539 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/signatureMethod..st @@ -0,0 +1,3 @@ +accessing +signatureMethod: anObject + signatureMethod := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/signatureMethod.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/signatureMethod.st new file mode 100644 index 00000000..f0818b65 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/signatureMethod.st @@ -0,0 +1,3 @@ +accessing +signatureMethod + ^ signatureMethod \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/timestamp..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/timestamp..st new file mode 100644 index 00000000..ea3ecd16 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/timestamp..st @@ -0,0 +1,3 @@ +accessing +timestamp: anObject + timestamp := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/timestamp.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/timestamp.st new file mode 100644 index 00000000..98b1f81e --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/timestamp.st @@ -0,0 +1,3 @@ +accessing +timestamp + ^ timestamp \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/token..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/token..st new file mode 100644 index 00000000..a3ac1166 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/token..st @@ -0,0 +1,3 @@ +accessing +token: anObject + token := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/token.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/token.st new file mode 100644 index 00000000..2f464887 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/token.st @@ -0,0 +1,3 @@ +accessing +token + ^ token \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/tokenSecret..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/tokenSecret..st new file mode 100644 index 00000000..4a63e47d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/tokenSecret..st @@ -0,0 +1,3 @@ +accessing +tokenSecret: anObject + tokenSecret := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/tokenSecret.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/tokenSecret.st new file mode 100644 index 00000000..a93c20ef --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/tokenSecret.st @@ -0,0 +1,3 @@ +accessing +tokenSecret + ^ tokenSecret \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/verifier..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/verifier..st new file mode 100644 index 00000000..658e0d12 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/verifier..st @@ -0,0 +1,3 @@ +accessing +verifier: anObject + verifier := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/verifier.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/verifier.st new file mode 100644 index 00000000..62b96de8 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/verifier.st @@ -0,0 +1,3 @@ +accessing +verifier + ^ verifier \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/version..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/version..st new file mode 100644 index 00000000..6b63c1ae --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/version..st @@ -0,0 +1,3 @@ +accessing +version: anObject + version := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/version.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/version.st new file mode 100644 index 00000000..a043da51 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/instance/version.st @@ -0,0 +1,3 @@ +accessing +version + ^ version \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/methodProperties.json new file mode 100644 index 00000000..3351ce91 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/methodProperties.json @@ -0,0 +1,30 @@ +{ + "class" : { + "signStringSHA1:usingSecret:" : "JanVanDeSandt 1/4/2013 10:47" }, + "instance" : { + "callback" : "JanVanDeSandt 12/26/2012 18:52", + "callback:" : "JanVanDeSandt 12/26/2012 18:52", + "consumerKey" : "JanVanDeSandt 12/26/2012 16:31", + "consumerKey:" : "JanVanDeSandt 12/26/2012 16:31", + "consumerSecret" : "JanVanDeSandt 12/26/2012 16:31", + "consumerSecret:" : "JanVanDeSandt 12/26/2012 16:31", + "getAuthorizationHeader:" : "JanVanDeSandt 1/4/2013 10:48", + "getBaseString:with:" : "JanVanDeSandt 1/7/2013 21:02", + "getOAuthParameters" : "JanVanDeSandt 1/26/2013 12:48", + "getSignatureKey" : "JanVanDeSandt 12/26/2012 16:32", + "initialize" : "JanVanDeSandt 12/26/2012 16:29", + "nonce" : "JanVanDeSandt 12/26/2012 16:31", + "nonce:" : "JanVanDeSandt 12/26/2012 16:31", + "setUp" : "JanVanDeSandt 12/26/2012 16:28", + "signatureMethod" : "JanVanDeSandt 12/26/2012 16:31", + "signatureMethod:" : "JanVanDeSandt 12/26/2012 16:31", + "timestamp" : "JanVanDeSandt 12/26/2012 16:31", + "timestamp:" : "JanVanDeSandt 12/26/2012 16:31", + "token" : "JanVanDeSandt 12/26/2012 16:31", + "token:" : "JanVanDeSandt 12/26/2012 16:31", + "tokenSecret" : "JanVanDeSandt 12/26/2012 16:31", + "tokenSecret:" : "JanVanDeSandt 12/26/2012 16:31", + "verifier" : "JanVanDeSandt 12/26/2012 21:49", + "verifier:" : "JanVanDeSandt 12/26/2012 21:49", + "version" : "JanVanDeSandt 12/26/2012 16:31", + "version:" : "JanVanDeSandt 12/26/2012 16:31" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/properties.json new file mode 100644 index 00000000..12fc7b48 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1AuthorizationCalculator.class/properties.json @@ -0,0 +1,23 @@ +{ + "category" : "Zinc-SSO-OAuth1-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "consumerKey", + "consumerSecret", + "signatureMethod", + "version", + "nonce", + "timestamp", + "token", + "tokenSecret", + "callback", + "verifier" ], + "name" : "ZnOAuth1AuthorizationCalculator", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForDropbox.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForDropbox.st new file mode 100644 index 00000000..ee3e4bef --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForDropbox.st @@ -0,0 +1,8 @@ +instance creation +newForDropbox + + ^self new + getRequestTokenUrl: 'https://api.dropbox.com/1/oauth/request_token' ; + authorizeTokenUrl: 'https://www.dropbox.com/1/oauth/authorize' ; + getAccessTokenUrl: 'https://api.dropbox.com/1/oauth/access_token' ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForGoogle.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForGoogle.st new file mode 100644 index 00000000..25e18a97 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForGoogle.st @@ -0,0 +1,8 @@ +instance creation +newForGoogle + + ^self new + getRequestTokenUrl: 'https://www.google.com/accounts/OAuthGetRequestToken' ; + authorizeTokenUrl: 'https://www.google.com/accounts/OAuthAuthorizeToken' ; + getAccessTokenUrl: 'https://www.google.com/accounts/OAuthGetAccessToken' ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForTwitter.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForTwitter.st new file mode 100644 index 00000000..55c90218 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForTwitter.st @@ -0,0 +1,9 @@ +instance creation +newForTwitter + + ^self new + getRequestTokenUrl: 'https://api.twitter.com/oauth/request_token' ; + authorizeTokenUrl: 'https://api.twitter.com/oauth/authorize' ; + getAccessTokenUrl: 'https://api.twitter.com/oauth/access_token' ; + accessTokenClass: ZnOAuth1TwitterAccessToken ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForTwitterAuthentication.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForTwitterAuthentication.st new file mode 100644 index 00000000..fe7e4260 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/class/newForTwitterAuthentication.st @@ -0,0 +1,7 @@ +instance creation +newForTwitterAuthentication + "Twitter variant for authentication instead of authorization." + + ^self newForTwitter + authorizeTokenUrl: 'https://api.twitter.com/oauth/authenticate' ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/accessTokenClass..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/accessTokenClass..st new file mode 100644 index 00000000..28fb047d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/accessTokenClass..st @@ -0,0 +1,3 @@ +accessing +accessTokenClass: anObject + accessTokenClass := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/accessTokenClass.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/accessTokenClass.st new file mode 100644 index 00000000..ea244e66 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/accessTokenClass.st @@ -0,0 +1,3 @@ +accessing +accessTokenClass + ^ accessTokenClass ifNil: [ accessTokenClass := ZnOAuth1Token ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/authorizeTokenUrl..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/authorizeTokenUrl..st new file mode 100644 index 00000000..782f6f5c --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/authorizeTokenUrl..st @@ -0,0 +1,3 @@ +accessing +authorizeTokenUrl: anObject + authorizeTokenUrl := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/authorizeTokenUrl.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/authorizeTokenUrl.st new file mode 100644 index 00000000..8d74f2ae --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/authorizeTokenUrl.st @@ -0,0 +1,3 @@ +accessing +authorizeTokenUrl + ^ authorizeTokenUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumer..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumer..st new file mode 100644 index 00000000..9ff168a7 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumer..st @@ -0,0 +1,3 @@ +accessing +consumer: anObject + consumer := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumer.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumer.st new file mode 100644 index 00000000..14323afc --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumer.st @@ -0,0 +1,3 @@ +accessing +consumer + ^ consumer \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumerSecret..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumerSecret..st new file mode 100644 index 00000000..5bf6f09a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumerSecret..st @@ -0,0 +1,3 @@ +accessing +consumerSecret: anObject + consumerSecret := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumerSecret.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumerSecret.st new file mode 100644 index 00000000..c4fada0d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/consumerSecret.st @@ -0,0 +1,3 @@ +accessing +consumerSecret + ^ consumerSecret \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getAccessTokenUrl..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getAccessTokenUrl..st new file mode 100644 index 00000000..c12f369e --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getAccessTokenUrl..st @@ -0,0 +1,3 @@ +accessing +getAccessTokenUrl: anObject + getAccessTokenUrl := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getAccessTokenUrl.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getAccessTokenUrl.st new file mode 100644 index 00000000..2150b73d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getAccessTokenUrl.st @@ -0,0 +1,3 @@ +accessing +getAccessTokenUrl + ^ getAccessTokenUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getRequestTokenUrl..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getRequestTokenUrl..st new file mode 100644 index 00000000..e0674742 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getRequestTokenUrl..st @@ -0,0 +1,3 @@ +accessing +getRequestTokenUrl: anObject + getRequestTokenUrl := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getRequestTokenUrl.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getRequestTokenUrl.st new file mode 100644 index 00000000..062f8148 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/getRequestTokenUrl.st @@ -0,0 +1,3 @@ +accessing +getRequestTokenUrl + ^ getRequestTokenUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/hasKeys.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/hasKeys.st new file mode 100644 index 00000000..19f05561 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/hasKeys.st @@ -0,0 +1,4 @@ +testing +hasKeys + + ^ self consumer notNil and: [ self consumerSecret notNil ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/newCalculator.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/newCalculator.st new file mode 100644 index 00000000..b6f5c3c2 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/instance/newCalculator.st @@ -0,0 +1,7 @@ +resources +newCalculator + + ^ ZnOAuth1AuthorizationCalculator new + consumerKey: self consumer ; + consumerSecret: self consumerSecret ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/methodProperties.json new file mode 100644 index 00000000..b416d8c5 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/methodProperties.json @@ -0,0 +1,21 @@ +{ + "class" : { + "newForDropbox" : "SvenVanCaekenberghe 1/23/2013 16:29", + "newForGoogle" : "jvds 2/13/2011 22:13", + "newForTwitter" : "JanVanDeSandt 12/23/2012 15:12", + "newForTwitterAuthentication" : "jvds 6/2/2011 16:31" }, + "instance" : { + "accessTokenClass" : "JanVanDeSandt 12/23/2012 15:12", + "accessTokenClass:" : "jvds 6/2/2011 16:29", + "authorizeTokenUrl" : "jvds 1/1/2011 21:01", + "authorizeTokenUrl:" : "jvds 1/1/2011 21:01", + "consumer" : "jvds 1/1/2011 21:01", + "consumer:" : "jvds 1/1/2011 21:01", + "consumerSecret" : "jvds 1/1/2011 21:01", + "consumerSecret:" : "jvds 1/1/2011 21:01", + "getAccessTokenUrl" : "jvds 1/1/2011 21:01", + "getAccessTokenUrl:" : "jvds 1/1/2011 21:01", + "getRequestTokenUrl" : "jvds 1/1/2011 21:01", + "getRequestTokenUrl:" : "jvds 1/1/2011 21:01", + "hasKeys" : "jvds 2/13/2011 22:14", + "newCalculator" : "JanVanDeSandt 12/26/2012 18:49" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/properties.json new file mode 100644 index 00000000..312e5c39 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1ConsumerData.class/properties.json @@ -0,0 +1,19 @@ +{ + "category" : "Zinc-SSO-OAuth1-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "getRequestTokenUrl", + "authorizeTokenUrl", + "getAccessTokenUrl", + "consumer", + "consumerSecret", + "accessTokenClass" ], + "name" : "ZnOAuth1ConsumerData", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/README.md new file mode 100644 index 00000000..e69de29b 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 new file mode 100644 index 00000000..2d538779 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getAccountInfo.st @@ -0,0 +1,10 @@ +api +getAccountInfo + | url response json | + + url := ZnUrl fromString: 'https://api.dropbox.com/1/account/info'. + + response := self oauth1Service httpGet: url using: self accessToken. + json := NeoJSONReader fromString: response. + + ^ json 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 new file mode 100644 index 00000000..8eec6f83 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/instance/getRootInfo.st @@ -0,0 +1,11 @@ +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 diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/methodProperties.json new file mode 100644 index 00000000..72659d22 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "getAccountInfo" : "SvenVanCaekenberghe 1/27/2013 13:03", + "getRootInfo" : "SvenVanCaekenberghe 1/27/2013 13:03" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/properties.json new file mode 100644 index 00000000..c1520e8a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1DropboxUserAccess.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OAuth1-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOAuth1DropboxUserAccess", + "pools" : [ + ], + "super" : "ZnOAuth1UserAccess", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/instance/getContacts.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/instance/getContacts.st new file mode 100644 index 00000000..2ac7bb9d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/instance/getContacts.st @@ -0,0 +1,9 @@ +api +getContacts + + | url result | + + url := ZnUrl fromString: 'https://www.google.com/m8/feeds/contacts/default/full'. + result := self oauth1Service httpGet: url using: self accessToken. + + ^result asString \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/methodProperties.json new file mode 100644 index 00000000..9525267b --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "getContacts" : "JanVanDeSandt 12/23/2012 15:40" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/properties.json new file mode 100644 index 00000000..711d4f2c --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1GoogleUserAccess.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OAuth1-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOAuth1GoogleUserAccess", + "pools" : [ + ], + "super" : "ZnOAuth1UserAccess", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/executeRequest.token..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/executeRequest.token..st new file mode 100644 index 00000000..cf8b4863 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/executeRequest.token..st @@ -0,0 +1,5 @@ +actions +executeRequest: aRequest token: anAccessToken + " Execute the HTTP request . Use to set the OAuth Authorization header." + + ^self executeRequest: aRequest token: anAccessToken followRedirects: true \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/executeRequest.token.followRedirects..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/executeRequest.token.followRedirects..st new file mode 100644 index 00000000..abfe720a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/executeRequest.token.followRedirects..st @@ -0,0 +1,27 @@ +actions +executeRequest: aRequest token: anAccessToken followRedirects: aBoolean + "Execute the HTTP request . Use to set the OAuth Authorization header." + + | calculator response | + + calculator := self providerAccount newCalculator. + anAccessToken notNil + ifTrue: [ + calculator + token: anAccessToken value; + tokenSecret: anAccessToken secret ]. + + aRequest setAuthorization: (calculator getAuthorizationHeader: aRequest). + response := self httpClient + request: aRequest ; + execute ; + response. + + (aBoolean and: [ response isRedirect ]) + ifTrue: [ + | newRequest | + newRequest := aRequest copy + url: (response headers at: 'Location') ; + yourself. + ^self executeRequest: newRequest token: anAccessToken ]. + ^response \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getAccessToken..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getAccessToken..st new file mode 100644 index 00000000..398d83fc --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getAccessToken..st @@ -0,0 +1,5 @@ +actions +getAccessToken: aToken + "The final step: Use the token that was authorized by the user to get the access token." + + ^self getAccessToken: aToken verifier: nil \ No newline at end of file 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 new file mode 100644 index 00000000..9c0c388e --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getAccessToken.verifier..st @@ -0,0 +1,30 @@ +actions +getAccessToken: aToken verifier: aVerifier + "The final step: Use the token that was authorized by the user to get the access token." + + | calculator request response responseProperties | + + calculator := self providerAccount newCalculator + token: aToken value ; + tokenSecret: aToken secret ; + verifier: aVerifier ; + yourself. + + request := ZnRequest get: self providerAccount getAccessTokenUrl. + request + setAccept: '*/*' ; + setAuthorization: (calculator getAuthorizationHeader: request). + + response := self httpClient + request: request ; + execute ; + response. + + response isSuccess + ifFalse: [ self error: 'Invalid response' ]. + + responseProperties := response contents. + responseProperties isString + ifTrue: [ responseProperties := self resourceMetaUtils parseQueryFrom: responseProperties readStream ]. + + ^self providerAccount accessTokenClass newFromDictionary: responseProperties \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getRequestToken.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getRequestToken.st new file mode 100644 index 00000000..109aba13 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getRequestToken.st @@ -0,0 +1,6 @@ +actions +getRequestToken + "The first step is to get a token and token_secret. Use this mthod only with OAuth 1.0 providers. + OAuth version 1.0a requires a callback url." + + ^self getRequestTokenFor: nil with: nil \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getRequestTokenFor..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getRequestTokenFor..st new file mode 100644 index 00000000..41cad77a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getRequestTokenFor..st @@ -0,0 +1,5 @@ +actions +getRequestTokenFor: aCallbackUrl + "The first step is to get a token and token_secret for ." + + ^self getRequestTokenFor: aCallbackUrl with: nil \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getRequestTokenFor.with..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getRequestTokenFor.with..st new file mode 100644 index 00000000..d3986d5e --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/getRequestTokenFor.with..st @@ -0,0 +1,33 @@ +actions +getRequestTokenFor: aCallbackUrl with: extraParameters + "The first step is to get a token and token_secret for . + Version 1.0a of OAuth requires a callback url. " + + | calculator request response responseProperties | + + calculator := self providerAccount newCalculator + callback: aCallbackUrl ; + yourself. + + request := ZnRequest get: self providerAccount getRequestTokenUrl. + extraParameters notNil + ifTrue: [ extraParameters keysAndValuesDo: [ :key :value | request uri queryAt: key put: value ] ]. + request + setAccept: '*/*' ; + setAuthorization: (calculator getAuthorizationHeader: request). + + response := self httpClient + request: request ; + execute ; + response. + + response isSuccess + ifFalse: [ self error: 'Invalid response' ]. + + responseProperties := response contents. + responseProperties isString + ifTrue: [ responseProperties := self resourceMetaUtils parseQueryFrom: responseProperties readStream ]. + (aCallbackUrl notNil and: [ (responseProperties at: 'oauth_callback_confirmed') ~= 'true' ]) + ifTrue: [ self error: 'Callback not confirmed' ]. + + ^ZnOAuth1Token newFromDictionary: responseProperties \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/hasKeys.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/hasKeys.st new file mode 100644 index 00000000..8c748104 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/hasKeys.st @@ -0,0 +1,3 @@ +testing +hasKeys + ^self providerAccount hasKeys \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpClient.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpClient.st new file mode 100644 index 00000000..50c162d1 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpClient.st @@ -0,0 +1,6 @@ +resources +httpClient + + ^ZnClient new + dontFollowRedirects ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpGet.using..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpGet.using..st new file mode 100644 index 00000000..8cf5cb2e --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/httpGet.using..st @@ -0,0 +1,10 @@ +actions +httpGet: anUrl using: aToken + + | response | + + response := self executeRequest: (ZnRequest get: anUrl) token: aToken. + response isSuccess + ifFalse: [ self error: 'httpGet failed' ]. + + ^response contents \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/loginUrlFor..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/loginUrlFor..st new file mode 100644 index 00000000..93515798 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/loginUrlFor..st @@ -0,0 +1,8 @@ +actions +loginUrlFor: aToken + "Answer the url to which we should redirect the user. If the user grants us access the provider will redirect + the user to the callbackUrl. The redirect will contain a new token which we can use to get an access token." + + ^self providerAccount authorizeTokenUrl asZnUrl + queryAt: 'oauth_token' put: aToken value ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/loginUrlFor.callbackUrl..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/loginUrlFor.callbackUrl..st new file mode 100644 index 00000000..66541956 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/loginUrlFor.callbackUrl..st @@ -0,0 +1,11 @@ +actions +loginUrlFor: aToken callbackUrl: anUrl + "Answer the url to which we should redirect the user. If the user grants us access the provider will redirect + the user to the callbackUrl. The redirect will contain a new token which we can use to get an access token. + + This method should be used with OAuth 1.0 providers. Use #loginUrlFor: with OAuth 1.0a providers." + + ^(self loginUrlFor: aToken) + queryAt: 'oauth_callback' put: anUrl ; + yourself + \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/providerAccount..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/providerAccount..st new file mode 100644 index 00000000..301936f5 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/providerAccount..st @@ -0,0 +1,3 @@ +accessing +providerAccount: anObject + providerAccount := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/providerAccount.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/providerAccount.st new file mode 100644 index 00000000..ae4b6ec5 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/providerAccount.st @@ -0,0 +1,3 @@ +accessing +providerAccount + ^ providerAccount \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/resourceMetaUtils.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/resourceMetaUtils.st new file mode 100644 index 00000000..177ac1d7 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/instance/resourceMetaUtils.st @@ -0,0 +1,4 @@ +resources +resourceMetaUtils + + ^ZnResourceMetaUtils \ 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 new file mode 100644 index 00000000..66a0a4b3 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/methodProperties.json @@ -0,0 +1,19 @@ +{ + "class" : { + }, + "instance" : { + "executeRequest:token:" : "jvds 3/4/2011 21:32", + "executeRequest:token:followRedirects:" : "JanVanDeSandt 1/16/2013 22:19", + "getAccessToken:" : "jvds 2/10/2011 22:19", + "getAccessToken:verifier:" : "JanVanDeSandt 1/26/2013 14:02", + "getRequestToken" : "JanVanDeSandt 1/26/2013 14:01", + "getRequestTokenFor:" : "jvds 2/10/2011 22:15", + "getRequestTokenFor:with:" : "JanVanDeSandt 1/26/2013 14:09", + "hasKeys" : "jvds 2/13/2011 22:22", + "httpClient" : "JanVanDeSandt 12/23/2012 16:11", + "httpGet:using:" : "JanVanDeSandt 12/23/2012 17:20", + "loginUrlFor:" : "JanVanDeSandt 12/27/2012 10:41", + "loginUrlFor:callbackUrl:" : "JanVanDeSandt 1/26/2013 12:45", + "providerAccount" : "jvds 1/2/2011 14:57", + "providerAccount:" : "jvds 1/2/2011 14:57", + "resourceMetaUtils" : "JanVanDeSandt 12/26/2012 19:54" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/properties.json new file mode 100644 index 00000000..1a10fcba --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Service.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OAuth1-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "providerAccount" ], + "name" : "ZnOAuth1Service", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/class/newFrom..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/class/newFrom..st new file mode 100644 index 00000000..5e6d2aed --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/class/newFrom..st @@ -0,0 +1,4 @@ +instance creation +newFrom: aString + + ^self newFromDictionary: (ZnResourceMetaUtils parseQueryFrom: aString readStream) \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/class/newFromDictionary..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/class/newFromDictionary..st new file mode 100644 index 00000000..26ba55f9 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/class/newFromDictionary..st @@ -0,0 +1,7 @@ +instance creation +newFromDictionary: aDictionary + + ^self new + value: (aDictionary at: 'oauth_token'); + secret: (aDictionary at: 'oauth_token_secret'); + yourself diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/secret..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/secret..st new file mode 100644 index 00000000..d1be3ba0 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/secret..st @@ -0,0 +1,3 @@ +accessing +secret: anObject + secret := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/secret.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/secret.st new file mode 100644 index 00000000..faa4c9a9 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/secret.st @@ -0,0 +1,3 @@ +accessing +secret + ^ secret \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/sessionid..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/sessionid..st new file mode 100644 index 00000000..5a79c1b3 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/sessionid..st @@ -0,0 +1,3 @@ +accessing +sessionid: anObject + sessionid := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/sessionid.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/sessionid.st new file mode 100644 index 00000000..a0f63301 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/sessionid.st @@ -0,0 +1,3 @@ +accessing +sessionid + ^ sessionid \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/value..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/value..st new file mode 100644 index 00000000..3ef6d3ac --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/value..st @@ -0,0 +1,3 @@ +accessing +value: anObject + value := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/value.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/value.st new file mode 100644 index 00000000..ead3df2c --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/instance/value.st @@ -0,0 +1,3 @@ +accessing +value + ^ value \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/methodProperties.json new file mode 100644 index 00000000..17c10ea5 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + "newFrom:" : "JanVanDeSandt 12/23/2012 17:24", + "newFromDictionary:" : "jvds 6/2/2011 16:32" }, + "instance" : { + "secret" : "jvds 1/3/2011 15:39", + "secret:" : "jvds 1/3/2011 15:39", + "sessionid" : "jvds 3/4/2011 23:17", + "sessionid:" : "jvds 3/4/2011 23:17", + "value" : "jvds 1/3/2011 15:39", + "value:" : "jvds 1/3/2011 15:39" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/properties.json new file mode 100644 index 00000000..1830c5eb --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1Token.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Zinc-SSO-OAuth1-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "value", + "secret", + "sessionid" ], + "name" : "ZnOAuth1Token", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/class/newFromDictionary..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/class/newFromDictionary..st new file mode 100644 index 00000000..64b555a5 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/class/newFromDictionary..st @@ -0,0 +1,7 @@ +instance creation +newFromDictionary: aDictionary + + ^(super newFromDictionary: aDictionary) + userId: (aDictionary at: 'user_id') ; + screenName: (aDictionary at: 'screen_name') ; + yourself diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/screenName..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/screenName..st new file mode 100644 index 00000000..aad6688d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/screenName..st @@ -0,0 +1,3 @@ +accessing +screenName: anObject + screenName := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/screenName.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/screenName.st new file mode 100644 index 00000000..3cfb929a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/screenName.st @@ -0,0 +1,3 @@ +accessing +screenName + ^ screenName \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/userId..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/userId..st new file mode 100644 index 00000000..7eaf7e23 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/userId..st @@ -0,0 +1,3 @@ +accessing +userId: anObject + userId := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/userId.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/userId.st new file mode 100644 index 00000000..7f712166 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/instance/userId.st @@ -0,0 +1,3 @@ +accessing +userId + ^ userId \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/methodProperties.json new file mode 100644 index 00000000..bc1d49e3 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + "newFromDictionary:" : "jvds 6/2/2011 16:37" }, + "instance" : { + "screenName" : "jvds 6/2/2011 16:27", + "screenName:" : "jvds 6/2/2011 16:27", + "userId" : "jvds 6/2/2011 16:27", + "userId:" : "jvds 6/2/2011 16:27" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/properties.json new file mode 100644 index 00000000..6da98491 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterAccessToken.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-OAuth1-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "userId", + "screenName" ], + "name" : "ZnOAuth1TwitterAccessToken", + "pools" : [ + ], + "super" : "ZnOAuth1Token", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/instance/accountVerifyCredentials.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/instance/accountVerifyCredentials.st new file mode 100644 index 00000000..16478169 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/instance/accountVerifyCredentials.st @@ -0,0 +1,12 @@ +twitter-api +accountVerifyCredentials + "https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials " + + | url response json | + + url := ZnUrl fromString: 'https://api.twitter.com/1.1/account/verify_credentials.json'. + + response := (self oauth1Service httpGet: url using: self accessToken) asString. + json := NeoJSONReader fromString: response. + + ^json diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/instance/getFriendsTimeline.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/instance/getFriendsTimeline.st new file mode 100644 index 00000000..4ba1cfb5 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/instance/getFriendsTimeline.st @@ -0,0 +1,11 @@ +twitter-api +getFriendsTimeline + + | url response json | + + url := ZnUrl fromString: 'http://api.twitter.com/1/statuses/friends_timeline.json'. + + response := (self oauth1Service httpGet: url using: self accessToken) asString. + json := NeoJSONReader fromString: response. + + ^json diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/instance/statusesUpdate..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/instance/statusesUpdate..st new file mode 100644 index 00000000..9a7bde43 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/instance/statusesUpdate..st @@ -0,0 +1,18 @@ +twitter-api +statusesUpdate: aString + "https://dev.twitter.com/docs/api/1.1/post/statuses/update" + + | request response json | + + request := ZnRequest post: 'https://api.twitter.com/1.1/statuses/update.json'. + request entity: (ZnApplicationFormUrlEncodedEntity new + at: 'status' put: aString ; + yourself). + + response := self oauth1Service executeRequest: request token: self accessToken. + response isSuccess + ifFalse: [ self error: 'Post failed: ', response contents printString ]. + + json := NeoJSONReader fromString: response contents. + + ^json diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/methodProperties.json new file mode 100644 index 00000000..65b0d148 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "accountVerifyCredentials" : "JanVanDeSandt 12/26/2012 22:22", + "getFriendsTimeline" : "JanVanDeSandt 12/23/2012 15:42", + "statusesUpdate:" : "JanVanDeSandt 12/27/2012 11:25" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/properties.json new file mode 100644 index 00000000..10c0eb4d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1TwitterUserAccess.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OAuth1-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOAuth1TwitterUserAccess", + "pools" : [ + ], + "super" : "ZnOAuth1UserAccess", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/README.md b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/accessToken..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/accessToken..st new file mode 100644 index 00000000..768e530d --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.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-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/accessToken.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/accessToken.st new file mode 100644 index 00000000..043cb7be --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/accessToken.st @@ -0,0 +1,3 @@ +accessing +accessToken + ^ accessToken \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/oauth1Service..st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/oauth1Service..st new file mode 100644 index 00000000..094daf2c --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/oauth1Service..st @@ -0,0 +1,3 @@ +accessing +oauth1Service: anObject + oauth1Service := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/oauth1Service.st b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/oauth1Service.st new file mode 100644 index 00000000..a9cdf362 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/instance/oauth1Service.st @@ -0,0 +1,3 @@ +accessing +oauth1Service + ^ oauth1Service \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/methodProperties.json new file mode 100644 index 00000000..3624e882 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "accessToken" : "JanVanDeSandt 12/23/2012 15:31", + "accessToken:" : "JanVanDeSandt 12/23/2012 15:31", + "oauth1Service" : "jvds 1/3/2011 10:58", + "oauth1Service:" : "jvds 1/3/2011 10:58" } } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/properties.json new file mode 100644 index 00000000..e9bdefb2 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/ZnOAuth1UserAccess.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-OAuth1-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "oauth1Service", + "accessToken" ], + "name" : "ZnOAuth1UserAccess", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/categories.st b/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/categories.st new file mode 100644 index 00000000..9b498814 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-SSO-OAuth1-Core'! diff --git a/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/initializers.st b/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/package b/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/package new file mode 100644 index 00000000..7c5a2d02 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-SSO-OAuth1-Core') \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/version b/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/version new file mode 100644 index 00000000..156fd7d4 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/monticello.meta/version @@ -0,0 +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 diff --git a/repository/Zinc-SSO-OAuth1-Core.package/properties.json b/repository/Zinc-SSO-OAuth1-Core.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Core.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/.filetree b/repository/Zinc-SSO-OAuth1-Tests.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/README.md b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/signStringSHA1.usingSecret..st b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/signStringSHA1.usingSecret..st new file mode 100644 index 00000000..3ab327b9 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/signStringSHA1.usingSecret..st @@ -0,0 +1,4 @@ +private +signStringSHA1: aString usingSecret: aSecret + + ^ ZnOAuth1AuthorizationCalculator signStringSHA1: aString usingSecret: aSecret \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/testGoogleSignature.st b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/testGoogleSignature.st new file mode 100644 index 00000000..5326cf15 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/testGoogleSignature.st @@ -0,0 +1,11 @@ +tests +testGoogleSignature + + | baseString key | + + baseString := 'GET&https%3A%2F%2Fwww.google.com%2Faccounts%2FOAuthGetRequestToken&oauth_callback%3Dhttp%253A%252F%252Fgooglecodesamples.com%252Foauth_playground%252Findex.php%26oauth_consumer_key%3Dtest2.doit.st%26oauth_nonce%3Daf4aa64aafe3b959d0b249225ee887a8%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1297166598%26oauth_version%3D1.0%26scope%3Dhttps%253A%252F%252Fwww.google.com%252Fcalendar%252Ffeeds%252F'. + + key := 'jXGgXXXXXXn28YYYYYavPHq&'. + + self assert: (self signStringSHA1: baseString usingSecret: key) = 'r4ELOrYf9Oqd2YhOu85hXs81muY=' + diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/testTwitterCalculator.st b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/testTwitterCalculator.st new file mode 100644 index 00000000..a8682dbb --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/testTwitterCalculator.st @@ -0,0 +1,28 @@ +tests +testTwitterCalculator + "Example from: https://dev.twitter.com/docs/auth/creating-signature" + + | calculator request header | + + calculator := ZnOAuth1AuthorizationCalculator new + consumerKey: 'xvz1evFS4wEEPTGEFPHBog' ; + consumerSecret: 'kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw' ; + token: '370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb' ; + tokenSecret: 'LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE' ; + nonce: 'kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg' ; + timestamp: '1318622958' ; + yourself. + + self assert: calculator getSignatureKey = 'kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw&LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE'. + + request := (ZnRequest post: 'https://api.twitter.com/1/statuses/update.json?include_entities=true') + entity: (ZnApplicationFormUrlEncodedEntity new + at: 'status' put: 'Hello Ladies + Gentlemen, a signed OAuth request!' ; + yourself) ; + yourself. + + self assert: (calculator getBaseString: request with: calculator getOAuthParameters) = + 'POST&https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.json&include_entities%3Dtrue%26oauth_consumer_key%3Dxvz1evFS4wEEPTGEFPHBog%26oauth_nonce%3DkYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1318622958%26oauth_token%3D370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb%26oauth_version%3D1.0%26status%3DHello%2520Ladies%2520%252B%2520Gentlemen%252C%2520a%2520signed%2520OAuth%2520request%2521'. + + header := calculator getAuthorizationHeader: request. + self assert: header = 'OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog",oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1318622958",oauth_version="1.0",oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb",oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D"' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/testTwitterSignature.st b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/testTwitterSignature.st new file mode 100644 index 00000000..74b6806a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/instance/testTwitterSignature.st @@ -0,0 +1,13 @@ +tests +testTwitterSignature + "Source: http://dev.twitter.com/pages/auth" + + | baseString key | + + baseString := 'POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252Fthe_dance%252Fprocess_callback%253Fservice_provider_id%253D11%26oauth_consumer_key%3DGDdmIQH6jhtmLUypg82g%26oauth_nonce%3DQP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1272323042%26oauth_version%3D1.0'. + + key := 'MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98&'. + + self assert: (self signStringSHA1: baseString usingSecret: key) = '8wUi7m5HFQy76nowoCThusfgB+Q=' + + diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/methodProperties.json b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/methodProperties.json new file mode 100644 index 00000000..c3105fd9 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "signStringSHA1:usingSecret:" : "SvenVanCaekenberghe 1/8/2013 12:49", + "testGoogleSignature" : "JanVanDeSandt 12/26/2012 13:06", + "testTwitterCalculator" : "JanVanDeSandt 12/29/2012 21:24", + "testTwitterSignature" : "JanVanDeSandt 12/26/2012 13:07" } } diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/properties.json b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/properties.json new file mode 100644 index 00000000..f6feddb5 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/ZnOAuth1MessageTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OAuth1-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOAuth1MessageTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/categories.st b/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/categories.st new file mode 100644 index 00000000..1c843525 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-SSO-OAuth1-Tests'! diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/initializers.st b/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/package b/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/package new file mode 100644 index 00000000..3168b5ee --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-SSO-OAuth1-Tests') \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/version b/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/version new file mode 100644 index 00000000..5c0b88e9 --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-SSO-OAuth1-Tests-SvenVanCaekenberghe.2' message 'Make ZnOAuth1MessageTest>>#signStringSHA1:usingSecret: use ZnOAuth1AuthorizationCalculator instead of ZnSSOMessage' id '8531b19d-2a3e-4f42-b8f3-f1ab0b37ec1e' date '8 January 2013' time '12:51:55.858 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-SSO-OAuth1-Tests-SvenVanCaekenberghe.1' message 'renamed Zinc-Tests-SSO-OAuth1 to Zinc-SSO-OAuth1-Tests' id '5a8c6dc5-6651-40bb-881a-f4377b1d536c' date '30 December 2012' time '2:18:14.031 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth1-Tests.package/properties.json b/repository/Zinc-SSO-OAuth1-Tests.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-SSO-OAuth1-Tests.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/.filetree b/repository/Zinc-SSO-OAuth2-Core.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/README.md b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/README.md new file mode 100644 index 00000000..28a57e9b --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/README.md @@ -0,0 +1,2 @@ +I am ZnFacebookOAuth2Session. +I am a ZnOAuth2Session. \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/scopeEmail.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/scopeEmail.st new file mode 100644 index 00000000..ee370df8 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/scopeEmail.st @@ -0,0 +1,6 @@ +resources +scopeEmail + "Provides access to the user's primary email address in the email property. + See: https://developers.facebook.com/docs/reference/login/email-permissions/ " + + ^ 'email' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/scopeUserLikes.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/scopeUserLikes.st new file mode 100644 index 00000000..eb3bdafc --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/scopeUserLikes.st @@ -0,0 +1,6 @@ +resources +scopeUserLikes + "Provides access to the list of all of the pages the user has liked as the likes connection + See: https://developers.facebook.com/docs/reference/login/extended-profile-properties/" + + ^ 'user_likes' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/scopeUserPhotos.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/scopeUserPhotos.st new file mode 100644 index 00000000..fb93d4e2 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/scopeUserPhotos.st @@ -0,0 +1,6 @@ +resources +scopeUserPhotos + "Provides access to the photos the user has uploaded. + See: https://developers.facebook.com/docs/reference/login/extended-profile-properties/" + + ^ 'user_photos' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/ssoScopes.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/ssoScopes.st new file mode 100644 index 00000000..6cfe448a --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/class/ssoScopes.st @@ -0,0 +1,5 @@ +resources +ssoScopes + "Answer a collection of scopes that can be used for Authentication. " + + ^ Array with: self scopeEmail \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/instance/authenticationUrl.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/instance/authenticationUrl.st new file mode 100644 index 00000000..d8b1f57c --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/instance/authenticationUrl.st @@ -0,0 +1,8 @@ +public +authenticationUrl + + ^ (ZnUrl fromString: 'https://graph.facebook.com/oauth/authorize') + queryAt: 'client_id' put: self consumerData key ; + queryAt: 'redirect_uri' put: self redirectUrl ; + queryAt: 'scope' put: self scopeParameter ; + yourself. diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/instance/getUserData.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/instance/getUserData.st new file mode 100644 index 00000000..a99d6e58 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/instance/getUserData.st @@ -0,0 +1,12 @@ +public +getUserData + + | url response | + + url := (ZnUrl fromString: 'https://graph.facebook.com/me') + queryAt: 'access_token' put: self accessToken; + yourself. + + response := ZnClient new get: url. + + ^ NeoJSONReader fromString: response \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/instance/handleAuthenticationCallback..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/instance/handleAuthenticationCallback..st new file mode 100644 index 00000000..882e23c7 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/instance/handleAuthenticationCallback..st @@ -0,0 +1,17 @@ +public +handleAuthenticationCallback: aParameterDictionary + + | code url oauthResponse | + + code := aParameterDictionary at: 'code' ifAbsent: [ ^nil ]. + + url := (ZnUrl fromString: 'https://graph.facebook.com/oauth/access_token') + queryAt: 'client_id' put: self consumerData key ; + queryAt: 'redirect_uri' put: self redirectUrl ; + queryAt: 'client_secret' put: self consumerData secret ; + queryAt: 'code' put: code; + yourself. + + oauthResponse := ZnClient new get: url. + + accessToken := (self fieldDictionaryFrom: oauthResponse) at: 'access_token'. \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/methodProperties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/methodProperties.json new file mode 100644 index 00000000..15e60e95 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + "scopeEmail" : "JanVanDeSandt 12/23/2012 23:10", + "scopeUserLikes" : "JanVanDeSandt 12/23/2012 23:14", + "scopeUserPhotos" : "JanVanDeSandt 12/23/2012 23:16", + "ssoScopes" : "JanVanDeSandt 12/23/2012 23:26" }, + "instance" : { + "authenticationUrl" : "JanVanDeSandt 12/23/2012 23:34", + "getUserData" : "JanVanDeSandt 10/7/2012 14:31", + "handleAuthenticationCallback:" : "JanVanDeSandt 12/7/2012 15:37" } } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/properties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/properties.json new file mode 100644 index 00000000..89322200 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnFacebookOAuth2Session.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OAuth2-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnFacebookOAuth2Session", + "pools" : [ + ], + "super" : "ZnOAuth2Session", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/README.md b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/README.md new file mode 100644 index 00000000..71a11073 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/README.md @@ -0,0 +1,4 @@ +I am ZnGoogleOAuth2Session. +I am a ZnOAuthSession. + +Google OAuth2 docs: https://developers.google.com/accounts/docs/OAuth2WebServer \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/class/scopeUserinfoEmail.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/class/scopeUserinfoEmail.st new file mode 100644 index 00000000..d673ad4e --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/class/scopeUserinfoEmail.st @@ -0,0 +1,5 @@ +resources +scopeUserinfoEmail + "Gain read-only access to the user's email address." + + ^ 'https://www.googleapis.com/auth/userinfo.email' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/class/scopeUserinfoProfile.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/class/scopeUserinfoProfile.st new file mode 100644 index 00000000..55e78829 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/class/scopeUserinfoProfile.st @@ -0,0 +1,6 @@ +resources +scopeUserinfoProfile + "Gain read-only access to basic profile information, including a user identifier, name, profile photo, + profile URL, country, language, timezone, and birthdate. " + + ^ 'https://www.googleapis.com/auth/userinfo.profile' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/class/ssoScopes.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/class/ssoScopes.st new file mode 100644 index 00000000..a0ddc933 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/class/ssoScopes.st @@ -0,0 +1,5 @@ +resources +ssoScopes + "Answer a collection of scopes that can be used for Authentication. " + + ^ Array with: self scopeUserinfoProfile with: self scopeUserinfoEmail \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/authenticationUrl.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/authenticationUrl.st new file mode 100644 index 00000000..8c3d4f4c --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/authenticationUrl.st @@ -0,0 +1,4 @@ +public +authenticationUrl + + ^self authenticationUrlWithState: 'no-op' \ 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 new file mode 100644 index 00000000..aaf19f3b --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/authenticationUrlWithState..st @@ -0,0 +1,15 @@ +public +authenticationUrlWithState: aStateString + + | authUrl | + + authUrl := (ZnUrl fromString: 'https://accounts.google.com/o/oauth2/auth') + queryAt: 'response_type' put: 'code' ; + queryAt: 'client_id' put: self consumerData key ; + queryAt: 'redirect_uri' put: self redirectUrl ; + queryAt: 'scope' put: self scopeParameter ; + queryAt: 'state' put: aStateString ; + queryAt: 'access_type' put: 'online' ; + yourself. + + ^authUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/getUserData.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/getUserData.st new file mode 100644 index 00000000..23ba0803 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/getUserData.st @@ -0,0 +1,12 @@ +public +getUserData + + | url response | + + url := (ZnUrl fromString: 'https://www.googleapis.com/oauth2/v1/userinfo') + queryAt: 'access_token' put: self accessToken; + yourself. + + response := ZnClient new get: url. + + ^ NeoJSONReader fromString: response \ 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 new file mode 100644 index 00000000..1c44153f --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/instance/handleAuthenticationCallback..st @@ -0,0 +1,23 @@ +public +handleAuthenticationCallback: aParameterDictionary + + | code tokenRequest tokenResponse tokenData | + + code := aParameterDictionary at: 'code' ifAbsent: [ ^nil ]. + + tokenRequest := (ZnRequest post: (ZnUrl fromString: 'https://accounts.google.com/o/oauth2/token')) + entity: (ZnApplicationFormUrlEncodedEntity new + at: 'code' put: code ; + at: 'client_id' put: self consumerData key ; + at: 'client_secret' put: self consumerData secret ; + at: 'redirect_uri' put: self redirectUrl ; + at: 'grant_type' put: 'authorization_code' ; + yourself) ; + yourself. + + tokenResponse := ZnClient new + request: tokenRequest ; + post. + tokenData := NeoJSONReader fromString: tokenResponse. + + accessToken := tokenData at: 'access_token'. \ 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 new file mode 100644 index 00000000..88f3a611 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + "scopeUserinfoEmail" : "JanVanDeSandt 12/23/2012 23:01", + "scopeUserinfoProfile" : "JanVanDeSandt 12/23/2012 23:00", + "ssoScopes" : "JanVanDeSandt 12/23/2012 23:25" }, + "instance" : { + "authenticationUrl" : "JanVanDeSandt 12/7/2012 16:11", + "authenticationUrlWithState:" : "JanVanDeSandt 12/23/2012 23:35", + "getUserData" : "JanVanDeSandt 10/7/2012 15:27", + "handleAuthenticationCallback:" : "JanVanDeSandt 12/7/2012 16:58" } } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/properties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/properties.json new file mode 100644 index 00000000..b87d7ab8 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnGoogleOAuth2Session.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OAuth2-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnGoogleOAuth2Session", + "pools" : [ + ], + "super" : "ZnOAuth2Session", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/README.md b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/README.md new file mode 100644 index 00000000..c10c6918 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/README.md @@ -0,0 +1,4 @@ +I am ZnMicrosoftOAuth2Session. +I am a ZnOAuth2Session. + +Also see: http://msdn.microsoft.com/en-us/library/live/hh243647.aspx \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/scopeBasic.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/scopeBasic.st new file mode 100644 index 00000000..c7cebf90 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/scopeBasic.st @@ -0,0 +1,6 @@ +resources +scopeBasic + "Read access to a user's basic profile info. Also enables read access to a user's list of contacts. + See: http://msdn.microsoft.com/en-us/library/live/hh243646.aspx " + + ^ 'wl.basic' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/scopeEmails.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/scopeEmails.st new file mode 100644 index 00000000..5b184814 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/scopeEmails.st @@ -0,0 +1,6 @@ +resources +scopeEmails + "Read access to a user's personal, preferred, and business email addresses. + See: http://msdn.microsoft.com/en-us/library/live/hh243646.aspx " + + ^ 'wl.emails' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/scopeSignin.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/scopeSignin.st new file mode 100644 index 00000000..8ca989a4 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/scopeSignin.st @@ -0,0 +1,7 @@ +resources +scopeSignin + "Single sign-in behavior. With single sign-in, users who are already signed in to Live Connect + are also signed in to your website. + See: http://msdn.microsoft.com/en-us/library/live/hh243646.aspx " + + ^ 'wl.signin' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/ssoScopes.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/ssoScopes.st new file mode 100644 index 00000000..045cdb58 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/class/ssoScopes.st @@ -0,0 +1,5 @@ +resources +ssoScopes + "Answer a collection of scopes that can be used for Authentication. " + + ^ Array with: self scopeSignin with: self scopeBasic with: self scopeEmails \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/instance/authenticationUrl.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/instance/authenticationUrl.st new file mode 100644 index 00000000..0177f42a --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/instance/authenticationUrl.st @@ -0,0 +1,9 @@ +public +authenticationUrl + + ^ (ZnUrl fromString: 'https://login.live.com/oauth20_authorize.srf') + queryAt: 'response_type' put: 'code' ; + queryAt: 'client_id' put: self consumerData key ; + queryAt: 'redirect_uri' put: self redirectUrl ; + queryAt: 'scope' put: self scopeParameter ; + yourself. diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/instance/getUserData.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/instance/getUserData.st new file mode 100644 index 00000000..fa369962 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/instance/getUserData.st @@ -0,0 +1,12 @@ +public +getUserData + + | url response | + + url := (ZnUrl fromString: 'https://apis.live.net/v5.0/me') + queryAt: 'access_token' put: self accessToken; + yourself. + + response := ZnClient new get: url. + + ^ NeoJSONReader fromString: response \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/instance/handleAuthenticationCallback..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/instance/handleAuthenticationCallback..st new file mode 100644 index 00000000..dd491182 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/instance/handleAuthenticationCallback..st @@ -0,0 +1,23 @@ +public +handleAuthenticationCallback: aParameterDictionary + + | code tokenRequest tokenResponse tokenData | + + code := aParameterDictionary at: 'code' ifAbsent: [ ^nil ]. + + tokenRequest := (ZnRequest post: (ZnUrl fromString: 'https://login.live.com/oauth20_token.srf')) + entity: (ZnApplicationFormUrlEncodedEntity new + at: 'code' put: code ; + at: 'client_id' put: self consumerData key ; + at: 'client_secret' put: self consumerData secret ; + at: 'redirect_uri' put: self redirectUrl ; + at: 'grant_type' put: 'authorization_code' ; + yourself) ; + yourself. + + tokenResponse := ZnClient new + request: tokenRequest ; + post. + tokenData := NeoJSONReader fromString: tokenResponse. + + accessToken := tokenData at: 'access_token' \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/methodProperties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/methodProperties.json new file mode 100644 index 00000000..e70ff7d2 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + "scopeBasic" : "JanVanDeSandt 12/23/2012 23:18", + "scopeEmails" : "JanVanDeSandt 12/23/2012 23:21", + "scopeSignin" : "JanVanDeSandt 12/23/2012 23:20", + "ssoScopes" : "JanVanDeSandt 12/23/2012 23:25" }, + "instance" : { + "authenticationUrl" : "JanVanDeSandt 12/23/2012 23:36", + "getUserData" : "JanVanDeSandt 12/7/2012 21:06", + "handleAuthenticationCallback:" : "JanVanDeSandt 12/7/2012 21:13" } } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/properties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/properties.json new file mode 100644 index 00000000..becfb2d7 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnMicrosoftOAuth2Session.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OAuth2-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnMicrosoftOAuth2Session", + "pools" : [ + ], + "super" : "ZnOAuth2Session", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/README.md b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/README.md new file mode 100644 index 00000000..93ced606 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/README.md @@ -0,0 +1,10 @@ +I am ZnOAuth2ConsumerData holding the data necessary to ask an OAuth2 provider to do authentication on our behalf. + +key + - the application key + +redirectUrl + - The url to which to provider will redirect to + +secret + - the application secret \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/class/key.secret..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/class/key.secret..st new file mode 100644 index 00000000..dc57cafc --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/class/key.secret..st @@ -0,0 +1,4 @@ +instance creation +key: aKey secret: aSecret + + ^ self new setKey: aKey andSecret: aSecret \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/class/key.secret.redirectUrl..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/class/key.secret.redirectUrl..st new file mode 100644 index 00000000..953ab7f8 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/class/key.secret.redirectUrl..st @@ -0,0 +1,4 @@ +instance creation +key: aKey secret: aSecret redirectUrl: anUrl + + ^ self new setKey: aKey andSecret: aSecret andRedirectUrl: anUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/key.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/key.st new file mode 100644 index 00000000..8df80551 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/key.st @@ -0,0 +1,3 @@ +accessing +key + ^ key \ No newline at end of file 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 new file mode 100644 index 00000000..61ed01f4 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/redirectUrl.st @@ -0,0 +1,4 @@ +accessing +redirectUrl + + ^ redirectUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/secret.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/secret.st new file mode 100644 index 00000000..faa4c9a9 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/secret.st @@ -0,0 +1,3 @@ +accessing +secret + ^ secret \ 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 new file mode 100644 index 00000000..236231e3 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/setKey.andSecret..st @@ -0,0 +1,5 @@ +initialize-release +setKey: aKey andSecret: aSecret + + key := aKey. + secret := aSecret \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/setKey.andSecret.andRedirectUrl..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/setKey.andSecret.andRedirectUrl..st new file mode 100644 index 00000000..fd478f52 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/instance/setKey.andSecret.andRedirectUrl..st @@ -0,0 +1,5 @@ +initialize-release +setKey: aKey andSecret: aSecret andRedirectUrl: anUrl + + self setKey: aKey andSecret: aSecret. + redirectUrl := anUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/methodProperties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/methodProperties.json new file mode 100644 index 00000000..7c8a43e6 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + "key:secret:" : "JanVanDeSandt 10/7/2012 16:04", + "key:secret:redirectUrl:" : "JanVanDeSandt 12/7/2012 15:40" }, + "instance" : { + "key" : "JanVanDeSandt 10/7/2012 13:37", + "redirectUrl" : "JanVanDeSandt 12/7/2012 15:23", + "secret" : "JanVanDeSandt 10/7/2012 13:37", + "setKey:andSecret:" : "JanVanDeSandt 10/7/2012 16:03", + "setKey:andSecret:andRedirectUrl:" : "JanVanDeSandt 12/7/2012 15:40" } } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/properties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/properties.json new file mode 100644 index 00000000..dae718f4 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2ConsumerData.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Zinc-SSO-OAuth2-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "key", + "secret", + "redirectUrl" ], + "name" : "ZnOAuth2ConsumerData", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/README.md b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/README.md new file mode 100644 index 00000000..33e2684e --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/README.md @@ -0,0 +1,13 @@ +I am ZnOAuth2Session, representing server side state tracking an OAuth2 session. + +consumerData + - needed to setup an authentication request with a provider + +accessToken + - the result of a successful authentication + +scopes + - collection of strings representing the permissions + +redirectUrl + - the URL needed by the provider to get back to us diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/facebook..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/facebook..st new file mode 100644 index 00000000..253fe703 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/facebook..st @@ -0,0 +1,6 @@ +instance creation +facebook: aConsumerData + + ^ ZnFacebookOAuth2Session new + setConsumerData: aConsumerData ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/google..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/google..st new file mode 100644 index 00000000..64d0f164 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/google..st @@ -0,0 +1,6 @@ +instance creation +google: aConsumerData + + ^ ZnGoogleOAuth2Session new + setConsumerData: aConsumerData ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/microsoft..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/microsoft..st new file mode 100644 index 00000000..63aaea98 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/microsoft..st @@ -0,0 +1,6 @@ +instance creation +microsoft: aConsumerData + + ^ ZnMicrosoftOAuth2Session new + setConsumerData: aConsumerData ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/ssoScopes.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/ssoScopes.st new file mode 100644 index 00000000..fb5abf69 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/class/ssoScopes.st @@ -0,0 +1,5 @@ +resources +ssoScopes + "Answer a collection of scopes that can be used for Authentication. " + + ^ #() \ 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..043cb7be --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/accessToken.st @@ -0,0 +1,3 @@ +accessing +accessToken + ^ accessToken \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/authenticationUrl.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/authenticationUrl.st new file mode 100644 index 00000000..d7f1e155 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/authenticationUrl.st @@ -0,0 +1,6 @@ +public +authenticationUrl + "Answer a URL to the login page of the Identity Provider" + + self subclassResponsibility + \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/consumerData.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/consumerData.st new file mode 100644 index 00000000..4b34a597 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/consumerData.st @@ -0,0 +1,3 @@ +accessing +consumerData + ^ consumerData \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/fieldDictionaryFrom..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/fieldDictionaryFrom..st new file mode 100644 index 00000000..c7a0bd79 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/fieldDictionaryFrom..st @@ -0,0 +1,10 @@ +private +fieldDictionaryFrom: aString + + | dict stream | + + dict := Dictionary new. + stream := aString readStream. + [ stream atEnd ] whileFalse: [ dict at: (stream upTo: $=) put: (stream upTo: $&) ]. + + ^dict \ 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 new file mode 100644 index 00000000..b3c7aa87 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/handleAuthenticationCallback..st @@ -0,0 +1,4 @@ +public +handleAuthenticationCallback: aParameterDictionary + + 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 new file mode 100644 index 00000000..57c13355 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/initialize.st @@ -0,0 +1,6 @@ +initialize-release +initialize + + super initialize. + + scopes := self class ssoScopes \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/redirectUrl..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/redirectUrl..st new file mode 100644 index 00000000..f3e48a2a --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/redirectUrl..st @@ -0,0 +1,3 @@ +accessing +redirectUrl: anObject + redirectUrl := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/redirectUrl.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/redirectUrl.st new file mode 100644 index 00000000..3dbf5ef9 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/redirectUrl.st @@ -0,0 +1,3 @@ +accessing +redirectUrl + ^ redirectUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/scopeParameter.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/scopeParameter.st new file mode 100644 index 00000000..7b0d7523 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/scopeParameter.st @@ -0,0 +1,7 @@ +private +scopeParameter + + ^ String streamContents: [ :stream | + self scopes + do: [ :each | stream nextPutAll: each ] + separatedBy: [ stream nextPut: Character space ] ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/scopes..st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/scopes..st new file mode 100644 index 00000000..87d0f546 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/scopes..st @@ -0,0 +1,4 @@ +accessing +scopes: aCollection + + scopes := aCollection \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/scopes.st b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/scopes.st new file mode 100644 index 00000000..ecc6e66e --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/scopes.st @@ -0,0 +1,4 @@ +accessing +scopes + + ^ scopes ifNil: [ scopes := OrderedCollection new ] \ 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 new file mode 100644 index 00000000..6efd4238 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/instance/setConsumerData..st @@ -0,0 +1,5 @@ +initialize-release +setConsumerData: aConsumerData + + consumerData := aConsumerData. + redirectUrl := aConsumerData redirectUrl \ 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 new file mode 100644 index 00000000..6dd1c475 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/methodProperties.json @@ -0,0 +1,19 @@ +{ + "class" : { + "facebook:" : "JanVanDeSandt 12/7/2012 15:32", + "google:" : "JanVanDeSandt 12/7/2012 15:32", + "microsoft:" : "JanVanDeSandt 12/7/2012 20:57", + "ssoScopes" : "JanVanDeSandt 12/23/2012 23:42" }, + "instance" : { + "accessToken" : "JanVanDeSandt 10/7/2012 14:04", + "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", + "redirectUrl" : "JanVanDeSandt 12/7/2012 15:34", + "redirectUrl:" : "JanVanDeSandt 12/7/2012 15:34", + "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" } } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/properties.json b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/properties.json new file mode 100644 index 00000000..62d7c35f --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/ZnOAuth2Session.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Zinc-SSO-OAuth2-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "consumerData", + "redirectUrl", + "scopes", + "accessToken" ], + "name" : "ZnOAuth2Session", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/categories.st b/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/categories.st new file mode 100644 index 00000000..64cd93d7 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-SSO-OAuth2-Core'! diff --git a/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/initializers.st b/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/package b/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/package new file mode 100644 index 00000000..2f6c77cc --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-SSO-OAuth2-Core') \ No newline at end of file diff --git a/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/version b/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/version new file mode 100644 index 00000000..96a8e172 --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/monticello.meta/version @@ -0,0 +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 diff --git a/repository/Zinc-SSO-OAuth2-Core.package/properties.json b/repository/Zinc-SSO-OAuth2-Core.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-SSO-OAuth2-Core.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-SSO-OpenID-Core.package/.filetree b/repository/Zinc-SSO-OpenID-Core.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/README.md new file mode 100644 index 00000000..5e013a60 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/README.md @@ -0,0 +1,7 @@ +A ZnGoogleAppsOpenIDProvider is a specialized OpenIDProvider for use with Google Apps. + +Instance Variables + domain: + +domain + - Google Apps domain name diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/class/forDomain..st b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/class/forDomain..st new file mode 100644 index 00000000..522b8857 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/class/forDomain..st @@ -0,0 +1,4 @@ +instance creation +forDomain: aString + + ^ self new setDomain: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/domain.st b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/domain.st new file mode 100644 index 00000000..6d11b08a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/domain.st @@ -0,0 +1,3 @@ +accessing +domain + ^ domain \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/isGoogleAppsProvider.st b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/isGoogleAppsProvider.st new file mode 100644 index 00000000..1593777d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/isGoogleAppsProvider.st @@ -0,0 +1,3 @@ +testing +isGoogleAppsProvider + ^true \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/printOn..st b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/printOn..st new file mode 100644 index 00000000..7b1ddffe --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/printOn..st @@ -0,0 +1,7 @@ +printing +printOn: stream + + super printOn: stream. + stream + nextPutAll: '-' ; + print: self domain \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/setDomain..st b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/setDomain..st new file mode 100644 index 00000000..82591fbd --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/instance/setDomain..st @@ -0,0 +1,21 @@ +initialize-release +setDomain: aString + + | url response | + + domain := aString. + + "Getting the eindpoint for a Google Apps hosted domains works a little bit different. + See https://developers.google.com/google-apps/sso/openid_reference_implementation" + + url := 'https://www.google.com/accounts/o8/.well-known/host-meta?hd=', domain. + response := self httpClient + url: url ; + get ; + response. + response isSuccess + ifFalse: [ ZnOpenIDNoSuchDomain signal: domain ]. + + discoveryUrl := response contents asString readStream + upTo: $< ; + upTo: $> \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/methodProperties.json new file mode 100644 index 00000000..2d070af0 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + "forDomain:" : "JanVanDeSandt 1/2/2013 16:09" }, + "instance" : { + "domain" : "jvds 3/29/2011 16:23", + "isGoogleAppsProvider" : "JanVanDeSandt 1/1/2013 16:20", + "printOn:" : "jvds 3/29/2011 16:35", + "setDomain:" : "JanVanDeSandt 1/2/2013 16:14" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/properties.json new file mode 100644 index 00000000..ef5d04de --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnGoogleAppsOpenIDProvider.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "domain" ], + "name" : "ZnGoogleAppsOpenIDProvider", + "pools" : [ + ], + "super" : "ZnOpenIDProvider", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/README.md new file mode 100644 index 00000000..753121db --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/README.md @@ -0,0 +1 @@ +A ZnOpenIDAssociationRequest represents a Association Session Request message. This message is sent by the Relying Party to an OP Endpoint \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/class/modeAssociate.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/class/modeAssociate.st new file mode 100644 index 00000000..96f18c9f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/class/modeAssociate.st @@ -0,0 +1,3 @@ +constants +modeAssociate + ^'associate' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/class/new.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/class/new.st new file mode 100644 index 00000000..06729a95 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/class/new.st @@ -0,0 +1,8 @@ +instance creation +new + "Answer a new and initialized instance of the receiver." + + ^super new + sessionType: 'no-encryption'; + assocType: self assocTypeHmacSHA1; + yourself diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/assocType..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/assocType..st new file mode 100644 index 00000000..648d360c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/assocType..st @@ -0,0 +1,3 @@ +accessing-openid +assocType: aString + self propertyAt: 'openid.assoc_type' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/assocType.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/assocType.st new file mode 100644 index 00000000..10f8c75d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/assocType.st @@ -0,0 +1,3 @@ +accessing-openid +assocType + ^self propertyAt: 'openid.assoc_type' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/initialize.st new file mode 100644 index 00000000..2cc391ff --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/initialize.st @@ -0,0 +1,7 @@ +initialize-release +initialize + + super initialize. + self + ns: self class nsOpenId2; + mode: self class modeAssociate \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/mode..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/mode..st new file mode 100644 index 00000000..f989924a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/mode..st @@ -0,0 +1,3 @@ +accessing-openid +mode: aString + self propertyAt: 'openid.mode' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/mode.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/mode.st new file mode 100644 index 00000000..2bc190cc --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/mode.st @@ -0,0 +1,3 @@ +accessing-openid +mode + ^self propertyAt: 'openid.mode' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/ns..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/ns..st new file mode 100644 index 00000000..fce4a804 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/ns..st @@ -0,0 +1,3 @@ +accessing-openid +ns: aString + self propertyAt: 'openid.ns' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/ns.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/ns.st new file mode 100644 index 00000000..ea0318b1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/ns.st @@ -0,0 +1,3 @@ +accessing-openid +ns + ^self propertyAt: 'openid.ns' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/sessionType..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/sessionType..st new file mode 100644 index 00000000..7d1a5b7e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/sessionType..st @@ -0,0 +1,3 @@ +accessing-openid +sessionType: aString + self propertyAt: 'openid.session_type' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/sessionType.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/sessionType.st new file mode 100644 index 00000000..1deb7c12 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/instance/sessionType.st @@ -0,0 +1,3 @@ +accessing-openid +sessionType + ^self propertyAt: 'openid.session_type' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/methodProperties.json new file mode 100644 index 00000000..620852fe --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/methodProperties.json @@ -0,0 +1,14 @@ +{ + "class" : { + "modeAssociate" : "jvds 3/2/2010 11:48", + "new" : "jvds 3/2/2010 14:20" }, + "instance" : { + "assocType" : "jvds 3/2/2010 11:30", + "assocType:" : "jvds 3/2/2010 11:30", + "initialize" : "jvds 3/2/2010 11:49", + "mode" : "jvds 3/2/2010 11:29", + "mode:" : "jvds 3/2/2010 11:29", + "ns" : "jvds 3/2/2010 11:31", + "ns:" : "jvds 3/2/2010 11:31", + "sessionType" : "jvds 3/2/2010 11:30", + "sessionType:" : "jvds 3/2/2010 11:30" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/properties.json new file mode 100644 index 00000000..436c22e1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationRequest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDAssociationRequest", + "pools" : [ + ], + "super" : "ZnSSOMessage", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/README.md new file mode 100644 index 00000000..3e0cf024 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/README.md @@ -0,0 +1 @@ +A ZnOpenIDAssociationResponse represents a Association Session Response message. This message is the respone to a association session request message. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/assocHandle.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/assocHandle.st new file mode 100644 index 00000000..2e0b26cd --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/assocHandle.st @@ -0,0 +1,3 @@ +accessing-openid +assocHandle + ^self propertyAt: 'assoc_handle' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/assocType.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/assocType.st new file mode 100644 index 00000000..7b380511 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/assocType.st @@ -0,0 +1,3 @@ +accessing-openid +assocType + ^self propertyAt: 'assoc_type' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/expiresIn.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/expiresIn.st new file mode 100644 index 00000000..56ddb2bb --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/expiresIn.st @@ -0,0 +1,3 @@ +accessing-openid +expiresIn + ^self propertyAt: 'expires_in' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/isHmacSHA1.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/isHmacSHA1.st new file mode 100644 index 00000000..ab4c2b59 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/isHmacSHA1.st @@ -0,0 +1,4 @@ +testing +isHmacSHA1 + + ^self assocType = self class assocTypeHmacSHA1 \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/macKey.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/macKey.st new file mode 100644 index 00000000..4f75dbd3 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/macKey.st @@ -0,0 +1,3 @@ +accessing-openid +macKey + ^self propertyAt: 'mac_key' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/sessionType.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/sessionType.st new file mode 100644 index 00000000..d758f196 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/sessionType.st @@ -0,0 +1,3 @@ +accessing-openid +sessionType + ^self propertyAt: 'session_type' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/sign.andCheck..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/sign.andCheck..st new file mode 100644 index 00000000..e2a88811 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/instance/sign.andCheck..st @@ -0,0 +1,14 @@ +actions +sign: aString andCheck: aSignature + "Answer whether the calculated signature for ==aString== is equal to ==aSignature==." + + | calculatedSig checkSignature key | + + self isHmacSHA1 + ifFalse: [ self error: 'Cannot sign, unknown assoc_type' ]. + + key := ZnBase64Encoder new decode: self macKey. + calculatedSig := self class signStringSHA1: aString usingSecret: key. + checkSignature := aSignature collect: [ :ch | ch = Character space ifTrue: [ $+ ] ifFalse: [ ch ]]. + ^calculatedSig = checkSignature + diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/methodProperties.json new file mode 100644 index 00000000..f37b7d78 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "assocHandle" : "jvds 3/2/2010 11:58", + "assocType" : "jvds 3/2/2010 14:18", + "expiresIn" : "jvds 3/5/2010 16:50", + "isHmacSHA1" : "jvds 3/2/2010 14:20", + "macKey" : "jvds 3/2/2010 14:18", + "sessionType" : "jvds 3/2/2010 14:18", + "sign:andCheck:" : "JanVanDeSandt 1/2/2013 12:29" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/properties.json new file mode 100644 index 00000000..50996df9 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAssociationResponse.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDAssociationResponse", + "pools" : [ + ], + "super" : "ZnSSOMessage", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/class/modeImmediate.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/class/modeImmediate.st new file mode 100644 index 00000000..716fb1a0 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/class/modeImmediate.st @@ -0,0 +1,3 @@ +constants +modeImmediate + ^'checkid_immediate' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/class/modeSetup.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/class/modeSetup.st new file mode 100644 index 00000000..66aa9399 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/class/modeSetup.st @@ -0,0 +1,3 @@ +constants +modeSetup + ^'checkid_setup' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/class/selectId.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/class/selectId.st new file mode 100644 index 00000000..5c69158b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/class/selectId.st @@ -0,0 +1,3 @@ +constants +selectId + ^'http://specs.openid.net/auth/2.0/identifier_select' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/assocHandle..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/assocHandle..st new file mode 100644 index 00000000..7f572f5a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/assocHandle..st @@ -0,0 +1,4 @@ +accessing +assocHandle: aString + + self propertyAt: 'openid.assoc_handle' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/assocHandle.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/assocHandle.st new file mode 100644 index 00000000..cbbb63a1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/assocHandle.st @@ -0,0 +1,4 @@ +accessing +assocHandle + + ^self propertyAt: 'openid.assoc_handle' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axMode..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axMode..st new file mode 100644 index 00000000..81fbdd7b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axMode..st @@ -0,0 +1,4 @@ +accessing attribute exchange +axMode: aString + + self propertyAt: 'openid.ax.mode' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestCountry.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestCountry.st new file mode 100644 index 00000000..9d301ad1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestCountry.st @@ -0,0 +1,10 @@ +accessing attribute exchange +axRequestCountry + + self + nsAx: self class nsAttributeExchangeExtension; + axMode: 'fetch_request'; + axTypeCountry: 'http://axschema.org/contact/country/home'; + axRequired: (self axRequired isNil + ifTrue: [ '' ] + ifFalse: [ self axRequired, ',']), 'country' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestEmail.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestEmail.st new file mode 100644 index 00000000..d8d9f159 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestEmail.st @@ -0,0 +1,10 @@ +accessing attribute exchange +axRequestEmail + + self + nsAx: self class nsAttributeExchangeExtension; + axMode: 'fetch_request'; + axTypeEmail: 'http://axschema.org/contact/email'; + axRequired: (self axRequired isNil + ifTrue: [ '' ] + ifFalse: [ self axRequired, ',']), 'email' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestLanguage.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestLanguage.st new file mode 100644 index 00000000..9735b6d1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestLanguage.st @@ -0,0 +1,10 @@ +accessing attribute exchange +axRequestLanguage + + self + nsAx: self class nsAttributeExchangeExtension; + axMode: 'fetch_request'; + axTypeLanguage: 'http://axschema.org/pref/language'; + axRequired: (self axRequired isNil + ifTrue: [ '' ] + ifFalse: [ self axRequired, ',']), 'language' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestNames.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestNames.st new file mode 100644 index 00000000..d5c65d84 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestNames.st @@ -0,0 +1,11 @@ +accessing attribute exchange +axRequestNames + + self + nsAx: self class nsAttributeExchangeExtension; + axMode: 'fetch_request'; + axTypeFirstname: 'http://axschema.org/namePerson/first'; + axTypeLastname: 'http://axschema.org/namePerson/last'; + axRequired: (self axRequired isNil + ifTrue: [ '' ] + ifFalse: [ self axRequired, ',']), 'firstname,lastname' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestNamesAndEmail.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestNamesAndEmail.st new file mode 100644 index 00000000..e63e64fe --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequestNamesAndEmail.st @@ -0,0 +1,6 @@ +accessing attribute exchange +axRequestNamesAndEmail + + self + axRequestNames; + axRequestEmail \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequired..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequired..st new file mode 100644 index 00000000..51971dde --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequired..st @@ -0,0 +1,4 @@ +accessing attribute exchange +axRequired: aString + + self propertyAt: 'openid.ax.required' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequired.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequired.st new file mode 100644 index 00000000..686d9418 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axRequired.st @@ -0,0 +1,4 @@ +accessing attribute exchange +axRequired + + ^self propertyAt: 'openid.ax.required' ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeCountry..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeCountry..st new file mode 100644 index 00000000..b81f63d5 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeCountry..st @@ -0,0 +1,4 @@ +accessing attribute exchange +axTypeCountry: aString + + self propertyAt: 'openid.ax.type.country' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeEmail..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeEmail..st new file mode 100644 index 00000000..f9e0f44b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeEmail..st @@ -0,0 +1,4 @@ +accessing attribute exchange +axTypeEmail: aString + + self propertyAt: 'openid.ax.type.email' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeFirstname..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeFirstname..st new file mode 100644 index 00000000..29db886e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeFirstname..st @@ -0,0 +1,4 @@ +accessing attribute exchange +axTypeFirstname: aString + + self propertyAt: 'openid.ax.type.firstname' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeLanguage..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeLanguage..st new file mode 100644 index 00000000..d0548893 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeLanguage..st @@ -0,0 +1,4 @@ +accessing attribute exchange +axTypeLanguage: aString + + self propertyAt: 'openid.ax.type.language' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeLastname..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeLastname..st new file mode 100644 index 00000000..b484504b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/axTypeLastname..st @@ -0,0 +1,4 @@ +accessing attribute exchange +axTypeLastname: aString + + self propertyAt: 'openid.ax.type.lastname' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/claimedId..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/claimedId..st new file mode 100644 index 00000000..54d8efe8 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/claimedId..st @@ -0,0 +1,4 @@ +accessing +claimedId: aString + + self propertyAt: 'openid.claimed_id' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/claimedId.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/claimedId.st new file mode 100644 index 00000000..a195f50f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/claimedId.st @@ -0,0 +1,4 @@ +accessing +claimedId + + ^self propertyAt: 'openid.claimed_id' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/identity..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/identity..st new file mode 100644 index 00000000..c936c206 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/identity..st @@ -0,0 +1,4 @@ +accessing +identity: aString + + self propertyAt: 'openid.identity' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/identity.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/identity.st new file mode 100644 index 00000000..24e3bb70 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/identity.st @@ -0,0 +1,4 @@ +accessing +identity + + ^self propertyAt: 'openid.identity' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/initialize.st new file mode 100644 index 00000000..a9d14cd8 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/initialize.st @@ -0,0 +1,9 @@ +initialize-release +initialize + + super initialize. + + self + ns: self class nsOpenId2; + claimedId: self class selectId; + identity: self class selectId \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/mode..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/mode..st new file mode 100644 index 00000000..407d828f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/mode..st @@ -0,0 +1,4 @@ +accessing +mode: aString + + self propertyAt: 'openid.mode' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/mode.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/mode.st new file mode 100644 index 00000000..690069bb --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/mode.st @@ -0,0 +1,4 @@ +accessing +mode + + ^self propertyAt: 'openid.mode' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/modeCheckidSetup.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/modeCheckidSetup.st new file mode 100644 index 00000000..016424bd --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/modeCheckidSetup.st @@ -0,0 +1,3 @@ +accessing +modeCheckidSetup + self mode: self class modeSetup \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/ns..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/ns..st new file mode 100644 index 00000000..d74b0bec --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/ns..st @@ -0,0 +1,4 @@ +accessing openid +ns: aString + + self propertyAt: 'openid.ns' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/ns.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/ns.st new file mode 100644 index 00000000..92bd422b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/ns.st @@ -0,0 +1,4 @@ +accessing openid +ns + + ^self propertyAt: 'openid.ns' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsAx..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsAx..st new file mode 100644 index 00000000..0d1d3df1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsAx..st @@ -0,0 +1,4 @@ +accessing attribute exchange +nsAx: aString + + self propertyAt: 'openid.ns.ax' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsOAuth..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsOAuth..st new file mode 100644 index 00000000..3a349277 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsOAuth..st @@ -0,0 +1,4 @@ +accessing oauth +nsOAuth: aString + + self propertyAt: 'openid.ns.oauth' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsPape..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsPape..st new file mode 100644 index 00000000..74fa6bcf --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsPape..st @@ -0,0 +1,4 @@ +accessing pape +nsPape: aString + + self propertyAt: 'openid.ns.pape' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsPape.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsPape.st new file mode 100644 index 00000000..066f52a3 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/nsPape.st @@ -0,0 +1,4 @@ +accessing pape +nsPape + + ^self propertyAt: 'openid.ns.pape' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/oAuthConsumer..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/oAuthConsumer..st new file mode 100644 index 00000000..6844fc8c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/oAuthConsumer..st @@ -0,0 +1,5 @@ +accessing oauth +oAuthConsumer: aString + + self nsOAuth: self class nsOAuth. + self propertyAt: 'openid.oauth.consumer' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/oAuthScope..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/oAuthScope..st new file mode 100644 index 00000000..28417411 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/oAuthScope..st @@ -0,0 +1,5 @@ +accessing oauth +oAuthScope: aString + + self nsOAuth: self class nsOAuth. + self propertyAt: 'openid.oauth.scope' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/papeMaxAuthAge..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/papeMaxAuthAge..st new file mode 100644 index 00000000..49588353 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/papeMaxAuthAge..st @@ -0,0 +1,8 @@ +accessing pape +papeMaxAuthAge: anInteger + "Sets the maximum acceptable time (in seconds) since the user last authenticated. + If the session is older, the user will be prompted to log in again. Setting the value + to zero will force a password reprompt regardless of session age." + + self nsPape: self class nsPape. + self propertyAt: 'openid.pape.max_auth_age' put: anInteger \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/papeMaxAuthAge.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/papeMaxAuthAge.st new file mode 100644 index 00000000..c4cba0ac --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/papeMaxAuthAge.st @@ -0,0 +1,3 @@ +accessing pape +papeMaxAuthAge + ^self propertyAt: 'openid.pape.max_auth_age' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/realm..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/realm..st new file mode 100644 index 00000000..d53a312e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/realm..st @@ -0,0 +1,4 @@ +accessing +realm: aString + + self propertyAt: 'openid.realm' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/realm.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/realm.st new file mode 100644 index 00000000..b05e98af --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/realm.st @@ -0,0 +1,4 @@ +accessing +realm + + ^self propertyAt: 'openid.realm' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/returnTo..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/returnTo..st new file mode 100644 index 00000000..6c1980e8 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/returnTo..st @@ -0,0 +1,4 @@ +accessing +returnTo: aString + + self propertyAt: 'openid.return_to' put: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/returnTo.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/returnTo.st new file mode 100644 index 00000000..aca7eeef --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/instance/returnTo.st @@ -0,0 +1,4 @@ +accessing +returnTo + + ^self propertyAt: 'openid.return_to' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/methodProperties.json new file mode 100644 index 00000000..ba84042b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/methodProperties.json @@ -0,0 +1,43 @@ +{ + "class" : { + "modeImmediate" : "jvds 3/2/2010 11:13", + "modeSetup" : "jvds 3/2/2010 11:13", + "selectId" : "jvds 3/2/2010 11:14" }, + "instance" : { + "assocHandle" : "jvds 3/2/2010 10:29", + "assocHandle:" : "jvds 3/2/2010 10:30", + "axMode:" : "jvds 3/2/2010 10:33", + "axRequestCountry" : "jvds 8/21/2010 13:35", + "axRequestEmail" : "jvds 12/5/2010 13:16", + "axRequestLanguage" : "jvds 8/21/2010 13:36", + "axRequestNames" : "jvds 12/5/2010 13:16", + "axRequestNamesAndEmail" : "jvds 12/5/2010 13:16", + "axRequired" : "jvds 8/21/2010 13:33", + "axRequired:" : "jvds 3/2/2010 10:34", + "axTypeCountry:" : "jvds 3/2/2010 13:11", + "axTypeEmail:" : "jvds 3/2/2010 13:10", + "axTypeFirstname:" : "jvds 3/2/2010 13:10", + "axTypeLanguage:" : "jvds 3/2/2010 13:11", + "axTypeLastname:" : "jvds 3/2/2010 13:10", + "claimedId" : "jvds 3/2/2010 10:28", + "claimedId:" : "jvds 3/2/2010 10:30", + "identity" : "jvds 3/2/2010 10:28", + "identity:" : "jvds 3/2/2010 10:30", + "initialize" : "jvds 3/2/2010 11:17", + "mode" : "jvds 3/2/2010 10:29", + "mode:" : "jvds 3/2/2010 10:29", + "modeCheckidSetup" : "jvds 3/2/2010 12:16", + "ns" : "jvds 3/2/2010 10:44", + "ns:" : "jvds 3/2/2010 10:44", + "nsAx:" : "jvds 3/2/2010 10:40", + "nsOAuth:" : "jvds 4/3/2010 22:08", + "nsPape" : "jvds 3/26/2010 14:38", + "nsPape:" : "jvds 3/26/2010 14:36", + "oAuthConsumer:" : "jvds 4/3/2010 22:09", + "oAuthScope:" : "jvds 4/3/2010 22:09", + "papeMaxAuthAge" : "jvds 3/26/2010 14:35", + "papeMaxAuthAge:" : "jvds 3/26/2010 14:42", + "realm" : "jvds 3/2/2010 12:10", + "realm:" : "jvds 3/2/2010 12:09", + "returnTo" : "jvds 3/2/2010 12:10", + "returnTo:" : "jvds 3/2/2010 12:09" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/properties.json new file mode 100644 index 00000000..e7d41f70 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthRequest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDAuthRequest", + "pools" : [ + ], + "super" : "ZnSSOMessage", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/class/propertyPrefix.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/class/propertyPrefix.st new file mode 100644 index 00000000..b512d57c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/class/propertyPrefix.st @@ -0,0 +1,4 @@ +constants +propertyPrefix + + ^ 'openid' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axPropertyAt.ifAbsent..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axPropertyAt.ifAbsent..st new file mode 100644 index 00000000..533c43cf --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axPropertyAt.ifAbsent..st @@ -0,0 +1,8 @@ +accessing attribute exchange +axPropertyAt: aString ifAbsent: aBlock + + | prefix | + + prefix := self prefixForNamespace: self class nsAttributeExchangeExtension ifAbsent: [ ^aBlock value ]. + ^self propertyAt: ('openid.', prefix, '.', aString) ifAbsent: aBlock + \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueCountry.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueCountry.st new file mode 100644 index 00000000..abcb8141 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueCountry.st @@ -0,0 +1,4 @@ +accessing attribute exchange +axValueCountry + ^self axPropertyAt: 'value.country' ifAbsent: [ nil ] + \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueEmail.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueEmail.st new file mode 100644 index 00000000..77e7778c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueEmail.st @@ -0,0 +1,4 @@ +accessing attribute exchange +axValueEmail + ^self axPropertyAt: 'value.email' ifAbsent: [ nil ] + \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueFirstname.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueFirstname.st new file mode 100644 index 00000000..b768c24c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueFirstname.st @@ -0,0 +1,4 @@ +accessing attribute exchange +axValueFirstname + ^self axPropertyAt: 'value.firstname' ifAbsent: [ nil ] + \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueLanguage.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueLanguage.st new file mode 100644 index 00000000..f354a6db --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueLanguage.st @@ -0,0 +1,4 @@ +accessing attribute exchange +axValueLanguage + ^self axPropertyAt: 'value.language' ifAbsent: [ nil ] + \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueLastname.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueLastname.st new file mode 100644 index 00000000..a8baf6fc --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/axValueLastname.st @@ -0,0 +1,4 @@ +accessing attribute exchange +axValueLastname + ^self axPropertyAt: 'value.lastname' ifAbsent: [ nil ] + \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/claimedId.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/claimedId.st new file mode 100644 index 00000000..c7be835d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/claimedId.st @@ -0,0 +1,3 @@ +accessing openid +claimedId + ^self propertyAt: 'openid.claimed_id' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/identity.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/identity.st new file mode 100644 index 00000000..51f98c57 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/identity.st @@ -0,0 +1,3 @@ +accessing openid +identity + ^self propertyAt: 'openid.identity' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/isSuccess.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/isSuccess.st new file mode 100644 index 00000000..4f91bd59 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/isSuccess.st @@ -0,0 +1,4 @@ +testing +isSuccess + + ^self mode = 'id_res' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/mode.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/mode.st new file mode 100644 index 00000000..a4baa83f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/mode.st @@ -0,0 +1,3 @@ +accessing openid +mode + ^self propertyAt: 'openid.mode' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/oAuthPropertyAt.ifAbsent..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/oAuthPropertyAt.ifAbsent..st new file mode 100644 index 00000000..6ef2ab47 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/oAuthPropertyAt.ifAbsent..st @@ -0,0 +1,8 @@ +accessing oauth +oAuthPropertyAt: aString ifAbsent: aBlock + + | prefix | + + prefix := self prefixForNamespace: self class nsOAuth ifAbsent: [ ^aBlock value ]. + ^self propertyAt: ('openid.', prefix, '.', aString) ifAbsent: aBlock + \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/oAuthRequestToken.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/oAuthRequestToken.st new file mode 100644 index 00000000..a9fad270 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/oAuthRequestToken.st @@ -0,0 +1,3 @@ +accessing oauth +oAuthRequestToken + ^self oAuthPropertyAt: 'request_token' ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/oAuthScope.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/oAuthScope.st new file mode 100644 index 00000000..f4081522 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/oAuthScope.st @@ -0,0 +1,3 @@ +accessing oauth +oAuthScope + ^self oAuthPropertyAt: 'scope' ifAbsent: [ nil ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/opEndpoint.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/opEndpoint.st new file mode 100644 index 00000000..a7b23b26 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/opEndpoint.st @@ -0,0 +1,3 @@ +accessing openid +opEndpoint + ^self propertyAt: 'openid.op_endpoint' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/responseNonce.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/responseNonce.st new file mode 100644 index 00000000..efdf8e9d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/responseNonce.st @@ -0,0 +1,3 @@ +accessing openid +responseNonce + ^self propertyAt: 'openid.response_nonce' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/sig.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/sig.st new file mode 100644 index 00000000..d609011d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/sig.st @@ -0,0 +1,3 @@ +accessing openid +sig + ^self propertyAt: 'openid.sig' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/signed.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/signed.st new file mode 100644 index 00000000..ee3938bf --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/signed.st @@ -0,0 +1,3 @@ +accessing openid +signed + ^self propertyAt: 'openid.signed' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/signedText.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/signedText.st new file mode 100644 index 00000000..9e75e55b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/instance/signedText.st @@ -0,0 +1,16 @@ +accessing openid +signedText + "Return the text on which the signature is applied." + + | signedParams text param | + + signedParams := self signed readStream. + text := WriteStream on: String new. + [ signedParams atEnd ] whileFalse: [ + param := signedParams upTo: $,. + text + nextPutAll: param; + nextPut: $:; + nextPutAll: (self propertyAt: 'openid.', param); + nextPut: Character lf]. + ^text contents diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/methodProperties.json new file mode 100644 index 00000000..1cb14734 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/methodProperties.json @@ -0,0 +1,22 @@ +{ + "class" : { + "propertyPrefix" : "jvds 11/6/2011 14:11" }, + "instance" : { + "axPropertyAt:ifAbsent:" : "jvds 3/2/2010 13:30", + "axValueCountry" : "jvds 8/21/2010 13:40", + "axValueEmail" : "jvds 3/2/2010 13:30", + "axValueFirstname" : "jvds 3/2/2010 13:30", + "axValueLanguage" : "jvds 8/21/2010 13:40", + "axValueLastname" : "jvds 3/2/2010 13:30", + "claimedId" : "jvds 3/14/2010 14:49", + "identity" : "jvds 3/2/2010 13:44", + "isSuccess" : "JanVanDeSandt 1/2/2013 12:15", + "mode" : "jvds 3/2/2010 13:44", + "oAuthPropertyAt:ifAbsent:" : "jvds 4/3/2010 21:59", + "oAuthRequestToken" : "jvds 4/3/2010 21:58", + "oAuthScope" : "jvds 4/3/2010 22:00", + "opEndpoint" : "jvds 3/14/2010 13:59", + "responseNonce" : "jvds 3/14/2010 14:51", + "sig" : "jvds 3/2/2010 13:43", + "signed" : "jvds 3/2/2010 13:42", + "signedText" : "jvds 3/5/2010 16:11" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/properties.json new file mode 100644 index 00000000..cefdac52 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDAuthResponse.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDAuthResponse", + "pools" : [ + ], + "super" : "ZnSSOMessage", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDClaimedIDVerificationError.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDClaimedIDVerificationError.class/README.md new file mode 100644 index 00000000..7d56c3a5 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDClaimedIDVerificationError.class/README.md @@ -0,0 +1 @@ +Instances of this class represent a verification error of the claimedId. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDClaimedIDVerificationError.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDClaimedIDVerificationError.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDClaimedIDVerificationError.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDClaimedIDVerificationError.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDClaimedIDVerificationError.class/properties.json new file mode 100644 index 00000000..784a44ab --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDClaimedIDVerificationError.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDClaimedIDVerificationError", + "pools" : [ + ], + "super" : "ZnOpenIDResponseVerificationError", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNoSuchDomain.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNoSuchDomain.class/README.md new file mode 100644 index 00000000..3dc902d1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNoSuchDomain.class/README.md @@ -0,0 +1,4 @@ +An Error that is signalled when a domain is not a valif Google Apps domain. + +Example: + ZnOpenIDSingleSignOn default sessionForGoogleAppsDomain: 'microsoft.com' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNoSuchDomain.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNoSuchDomain.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNoSuchDomain.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNoSuchDomain.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNoSuchDomain.class/properties.json new file mode 100644 index 00000000..31ef089c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNoSuchDomain.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDNoSuchDomain", + "pools" : [ + ], + "super" : "Error", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/README.md new file mode 100644 index 00000000..99f9e7fe --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/README.md @@ -0,0 +1,7 @@ +I hold a parsed OpenID Nonce: + +A string 255 characters or less in length, that MUST be unique to a successful authentication response. The nonce MUST start with the current time on the server, and MAY contain additional ASCII characters in the range 33-126 inclusive (printable non-whitespace characters), as necessary to make each response unique. The date and time MUST be formatted as specified in section 5.6 of [RFC3339], with the following restrictions: + +All times must be in the UTC timezone, indicated with a "Z". +No fractional seconds are allowed +For example: 2005-05-15T17:11:51ZUNIQUE diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/class/decodeRFC3339Date..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/class/decodeRFC3339Date..st new file mode 100644 index 00000000..6d3f19c5 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/class/decodeRFC3339Date..st @@ -0,0 +1,12 @@ +utility +decodeRFC3339Date: aString + + | stream date time | + + stream := aString readStream. + date := Date readFrom: stream. + (stream next asUppercase = $T and: [ aString last asUppercase = $Z ]) + ifFalse: [ self error: 'Invalid dateTime format' ]. + time := Time readFrom: stream. + + ^ DateAndTime year: date year day: date dayOfYear hour: time hour minute: time minute second: time second offset: Duration zero \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/class/encodeRFC3339Date..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/class/encodeRFC3339Date..st new file mode 100644 index 00000000..f893c141 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/class/encodeRFC3339Date..st @@ -0,0 +1,12 @@ +utility +encodeRFC3339Date: aDateAndTime + + | dt | + + dt := aDateAndTime asUTC. + + ^ String streamContents: [ :stream | + dt printYMDOn: stream. + stream nextPut: $T. + dt printHMSOn: stream. + stream nextPut: $Z ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/class/fromString..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/class/fromString..st new file mode 100644 index 00000000..beb58a65 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/class/fromString..st @@ -0,0 +1,6 @@ +instance creation +fromString: aByteString + + ^ self new + parseString: aByteString; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/^equals.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/^equals.st new file mode 100644 index 00000000..a686789c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/^equals.st @@ -0,0 +1,3 @@ +comparing += aOpenIDNonce + ^self timestamp = aOpenIDNonce timestamp and: [ self distinctor = aOpenIDNonce distinctor ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/^less.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/^less.st new file mode 100644 index 00000000..7e5c51a0 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/^less.st @@ -0,0 +1,11 @@ +comparing +< aOpenIDNonce + self timestamp < aOpenIDNonce timestamp + ifTrue: [ ^ true ]. + self timestamp > aOpenIDNonce timestamp + ifTrue: [ ^ false ]. + self distinctor = aOpenIDNonce distinctor + ifTrue: [ ^ false ]. + self distinctor ifNil: [ ^ true ]. + aOpenIDNonce timestamp ifNil: [ ^ false ]. + ^ self distinctor < aOpenIDNonce distinctor \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/dateAndTimeNow.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/dateAndTimeNow.st new file mode 100644 index 00000000..c81de672 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/dateAndTimeNow.st @@ -0,0 +1,4 @@ +resources +dateAndTimeNow + + ^ DateAndTime now \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/distinctor..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/distinctor..st new file mode 100644 index 00000000..84c5db29 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/distinctor..st @@ -0,0 +1,3 @@ +accessing +distinctor: anObject + distinctor := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/distinctor.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/distinctor.st new file mode 100644 index 00000000..0296debc --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/distinctor.st @@ -0,0 +1,3 @@ +accessing +distinctor + ^ distinctor \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/hash.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/hash.st new file mode 100644 index 00000000..532035c6 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ self timestamp hash << 32 + self distinctor hash \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/initialize.st new file mode 100644 index 00000000..0e6ffbba --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + + super initialize. + timestamp := self dateAndTimeNow \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/isOld.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/isOld.st new file mode 100644 index 00000000..3422cd35 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/isOld.st @@ -0,0 +1,3 @@ +testing +isOld + ^ self dateAndTimeNow - self timestamp > ZnOpenIDNonceLocker acceptedTimeFrame \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/parseString..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/parseString..st new file mode 100644 index 00000000..e6486e23 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/parseString..st @@ -0,0 +1,17 @@ +accessing +parseString: aByteString + "Parses nonce that is format YYYY-MM-DD'T'HH:mm:SS'Z'Distinctor for example + 2011-11-23T11:48:19Z + 2011-11-23T11:48:19Zasdas123123 + + " + + | timestampPart | + + [ + timestampPart := aByteString copyFrom: 1 to: 20. + aByteString size > 22 + ifTrue: [ self distinctor: (aByteString allButFirst: 20). ]. + self timestamp: (self class decodeRFC3339Date: timestampPart) ] + on: Error + do: [ ZnOpenIDNonceInvalidError signal: aByteString ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/printOn..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/printOn..st new file mode 100644 index 00000000..2bf617ad --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/printOn..st @@ -0,0 +1,5 @@ +printing +printOn: aStream + + aStream nextPutAll: (self class encodeRFC3339Date: self timestamp). + self distinctor isNil ifFalse: [ aStream nextPutAll: self distinctor ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/timestamp..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/timestamp..st new file mode 100644 index 00000000..ea3ecd16 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/timestamp..st @@ -0,0 +1,3 @@ +accessing +timestamp: anObject + timestamp := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/timestamp.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/timestamp.st new file mode 100644 index 00000000..98b1f81e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/instance/timestamp.st @@ -0,0 +1,3 @@ +accessing +timestamp + ^ timestamp \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/methodProperties.json new file mode 100644 index 00000000..28b393e5 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/methodProperties.json @@ -0,0 +1,18 @@ +{ + "class" : { + "decodeRFC3339Date:" : "JanVanDeSandt 1/2/2013 14:05", + "encodeRFC3339Date:" : "JanVanDeSandt 1/2/2013 14:54", + "fromString:" : "JanVanDeSandt 1/2/2013 13:30" }, + "instance" : { + "<" : "PanuSuominen 11/23/2011 14:52", + "=" : "PanuSuominen 11/23/2011 14:55", + "dateAndTimeNow" : "JanVanDeSandt 1/2/2013 13:27", + "distinctor" : "PanuSuominen 11/23/2011 14:49", + "distinctor:" : "PanuSuominen 11/23/2011 14:49", + "hash" : "PanuSuominen 11/23/2011 15:51", + "initialize" : "JanVanDeSandt 1/2/2013 13:29", + "isOld" : "JanVanDeSandt 1/2/2013 16:27", + "parseString:" : "JanVanDeSandt 1/2/2013 14:08", + "printOn:" : "JanVanDeSandt 1/2/2013 14:39", + "timestamp" : "PanuSuominen 11/23/2011 14:46", + "timestamp:" : "PanuSuominen 11/23/2011 14:46" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/properties.json new file mode 100644 index 00000000..7b234b3d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonce.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "timestamp", + "distinctor" ], + "name" : "ZnOpenIDNonce", + "pools" : [ + ], + "super" : "Magnitude", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceInvalidError.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceInvalidError.class/README.md new file mode 100644 index 00000000..44a0dd91 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceInvalidError.class/README.md @@ -0,0 +1 @@ +Instances of this class represent a verification error of the Nonce. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceInvalidError.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceInvalidError.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceInvalidError.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceInvalidError.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceInvalidError.class/properties.json new file mode 100644 index 00000000..1efe0e7f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceInvalidError.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDNonceInvalidError", + "pools" : [ + ], + "super" : "ZnOpenIDResponseVerificationError", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/README.md new file mode 100644 index 00000000..03195eb4 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/README.md @@ -0,0 +1 @@ +I can validate a Nonce for a particular provider. To check the uniqueness of a Nonce I hold a collection of recent Nonces. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/class/acceptedTimeFrame..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/class/acceptedTimeFrame..st new file mode 100644 index 00000000..162350d9 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/class/acceptedTimeFrame..st @@ -0,0 +1,3 @@ +accessing +acceptedTimeFrame: aDuration + AcceptedTimeFrame := aDuration. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/class/acceptedTimeFrame.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/class/acceptedTimeFrame.st new file mode 100644 index 00000000..0d6e834c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/class/acceptedTimeFrame.st @@ -0,0 +1,3 @@ +accessing +acceptedTimeFrame + ^ AcceptedTimeFrame ifNil: [ AcceptedTimeFrame := 10 minutes ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/class/reset.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/class/reset.st new file mode 100644 index 00000000..096a5c4d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/class/reset.st @@ -0,0 +1,4 @@ +class initialization +reset + + AcceptedTimeFrame := nil \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/dateAndTimeNow.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/dateAndTimeNow.st new file mode 100644 index 00000000..c81de672 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/dateAndTimeNow.st @@ -0,0 +1,4 @@ +resources +dateAndTimeNow + + ^ DateAndTime now \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/initialize.st new file mode 100644 index 00000000..37d679cb --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + nonces := Set new. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/minimumRemovalInterval.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/minimumRemovalInterval.st new file mode 100644 index 00000000..61f4121f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/minimumRemovalInterval.st @@ -0,0 +1,3 @@ +resources +minimumRemovalInterval + ^ 2 minutes. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/nonceCount.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/nonceCount.st new file mode 100644 index 00000000..b9a0f4a2 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/nonceCount.st @@ -0,0 +1,4 @@ +accessing +nonceCount + self removeOldNonces. + ^nonces size. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/removeOldNonces.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/removeOldNonces.st new file mode 100644 index 00000000..fe31c12b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/removeOldNonces.st @@ -0,0 +1,8 @@ +removing +removeOldNonces + "Removes old nonces from internal colletion if enough (#minumumRemovalInterval) time has been since + last removal." + (lastRemovalRun isNil or: [ lastRemovalRun - self dateAndTimeNow > self minimumRemovalInterval ]) + ifTrue: [ + lastRemovalRun := self dateAndTimeNow. + nonces := nonces reject: [ :nonce | nonce isOld ] ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/resetRemovalTime.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/resetRemovalTime.st new file mode 100644 index 00000000..d2e0fe49 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/resetRemovalTime.st @@ -0,0 +1,3 @@ +actions +resetRemovalTime + lastRemovalRun := nil. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/seeAndValidate..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/seeAndValidate..st new file mode 100644 index 00000000..d7615e08 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/instance/seeAndValidate..st @@ -0,0 +1,9 @@ +actions +seeAndValidate: aCFOpenIDNonce + self removeOldNonces. + aCFOpenIDNonce isOld + ifTrue: [ ZnOpenIDNonceTooOldError signal ] + ifFalse: [ + (nonces includes: aCFOpenIDNonce) + ifTrue: [ ZnOpenIDNonceSeenError signal ] + ifFalse: [ nonces add: aCFOpenIDNonce ] ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/methodProperties.json new file mode 100644 index 00000000..8fc88baf --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/methodProperties.json @@ -0,0 +1,13 @@ +{ + "class" : { + "acceptedTimeFrame" : "JanVanDeSandt 1/2/2013 16:26", + "acceptedTimeFrame:" : "JanVanDeSandt 1/2/2013 16:26", + "reset" : "JanVanDeSandt 1/2/2013 16:29" }, + "instance" : { + "dateAndTimeNow" : "JanVanDeSandt 1/2/2013 14:43", + "initialize" : "PanuSuominen 11/25/2011 10:09", + "minimumRemovalInterval" : "PanuSuominen 11/25/2011 14:16", + "nonceCount" : "PanuSuominen 11/25/2011 14:22", + "removeOldNonces" : "JanVanDeSandt 1/2/2013 14:43", + "resetRemovalTime" : "PanuSuominen 11/25/2011 14:19", + "seeAndValidate:" : "JanVanDeSandt 1/1/2013 15:50" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/properties.json new file mode 100644 index 00000000..5e4b5ca6 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceLocker.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + "AcceptedTimeFrame" ], + "commentStamp" : "", + "instvars" : [ + "nonces", + "lastRemovalRun" ], + "name" : "ZnOpenIDNonceLocker", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceSeenError.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceSeenError.class/README.md new file mode 100644 index 00000000..fbdb443d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceSeenError.class/README.md @@ -0,0 +1 @@ +Instances of this class represent a verification error caused by duplicate Nonce values. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceSeenError.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceSeenError.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceSeenError.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceSeenError.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceSeenError.class/properties.json new file mode 100644 index 00000000..ac90af6c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceSeenError.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDNonceSeenError", + "pools" : [ + ], + "super" : "ZnOpenIDResponseVerificationError", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceTooOldError.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceTooOldError.class/README.md new file mode 100644 index 00000000..c50a6678 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceTooOldError.class/README.md @@ -0,0 +1 @@ +Instances of this class represent a verification error of Nonce values that are to old. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceTooOldError.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceTooOldError.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceTooOldError.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceTooOldError.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceTooOldError.class/properties.json new file mode 100644 index 00000000..029cc12e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDNonceTooOldError.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDNonceTooOldError", + "pools" : [ + ], + "super" : "ZnOpenIDResponseVerificationError", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/README.md new file mode 100644 index 00000000..6b0180e1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/README.md @@ -0,0 +1 @@ +A ZnOpenIDProvider instance holds information about an OpenID Provider (OP) \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newGoogleProvider.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newGoogleProvider.st new file mode 100644 index 00000000..049f2cdc --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newGoogleProvider.st @@ -0,0 +1,10 @@ +instance creation +newGoogleProvider + + ^self new + name: 'Google'; + imgUrl: 'http://openid.net/images/get-logos/google.png' ; + altText: 'Login with your Gmail account' ; + discoveryUrl: 'https://www.google.com/accounts/o8/id' ; + shouldValidateClaimedIdBelongsToEndpoint: true ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newHyvesProvider.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newHyvesProvider.st new file mode 100644 index 00000000..c40c96c1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newHyvesProvider.st @@ -0,0 +1,10 @@ +instance creation +newHyvesProvider + + ^ self new + name: 'Hyves' ; + imgUrl: 'http://openid.net/images/get-logos/hyves.png'; + altText: 'Login with your Hyves account'; + discoveryUrl: 'http://www.hyves.nl/api/openid/xrds/'; + shouldValidateClaimedIdBelongsToEndpoint: false ; + yourself diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newMyOpenIDProvider.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newMyOpenIDProvider.st new file mode 100644 index 00000000..c92edfea --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newMyOpenIDProvider.st @@ -0,0 +1,10 @@ +instance creation +newMyOpenIDProvider + + ^ self new + name: 'myOpenID' ; + imgUrl: 'http://openid.net/images/get-logos/myopenid.png'; + altText: 'Login with your myOpenID account' ; + discoveryUrl: 'http://www.myopenid.com/xrds'; + shouldValidateClaimedIdBelongsToEndpoint: false ; + yourself diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newYahooProvider.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newYahooProvider.st new file mode 100644 index 00000000..d983f015 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/class/newYahooProvider.st @@ -0,0 +1,10 @@ +instance creation +newYahooProvider + + ^ self new + name: 'Yahoo' ; + imgUrl: 'http://openid.net/images/get-logos/yahoo.png'; + altText: 'Login with your Yahoo account'; + discoveryUrl: 'http://open.login.yahooapis.com/openid20/www.yahoo.com/xrds'; + shouldValidateClaimedIdBelongsToEndpoint: false ; + yourself diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/altText..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/altText..st new file mode 100644 index 00000000..9df982b0 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/altText..st @@ -0,0 +1,3 @@ +accessing +altText: anObject + altText := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/altText.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/altText.st new file mode 100644 index 00000000..9fe389ba --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/altText.st @@ -0,0 +1,3 @@ +accessing +altText + ^ altText \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/createSession.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/createSession.st new file mode 100644 index 00000000..dd91c266 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/createSession.st @@ -0,0 +1,4 @@ +actions +createSession + + ^ZnOpenIDService forProvider: self \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/discoverEndpoint.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/discoverEndpoint.st new file mode 100644 index 00000000..87803745 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/discoverEndpoint.st @@ -0,0 +1,16 @@ +actions +discoverEndpoint + "XRDS (eXtensible Resource Descriptor Sequence) " + + | response | + + response := self httpClient + url: self discoveryUrl ; + accept: 'application/xrds+xml' ; + get ; + response. + + response isSuccess + ifFalse: [ self error: 'Failed to retrieve endpoint for ', self printString ]. + + ^ ZnXRDService parseOPEndpointFromXrds: response contents \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/discoveryUrl..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/discoveryUrl..st new file mode 100644 index 00000000..01a59feb --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/discoveryUrl..st @@ -0,0 +1,3 @@ +accessing +discoveryUrl: aString + discoveryUrl := aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/discoveryUrl.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/discoveryUrl.st new file mode 100644 index 00000000..cfe5c125 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/discoveryUrl.st @@ -0,0 +1,3 @@ +accessing +discoveryUrl + ^discoveryUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/httpClient.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/httpClient.st new file mode 100644 index 00000000..1a913a84 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/httpClient.st @@ -0,0 +1,4 @@ +resources +httpClient + + ^ ZnClient new beOneShot \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/imgUrl..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/imgUrl..st new file mode 100644 index 00000000..72bb17f8 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/imgUrl..st @@ -0,0 +1,3 @@ +accessing +imgUrl: anObject + imgUrl := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/imgUrl.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/imgUrl.st new file mode 100644 index 00000000..b05a66f6 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/imgUrl.st @@ -0,0 +1,3 @@ +accessing +imgUrl + ^ imgUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/isGoogleAppsProvider.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/isGoogleAppsProvider.st new file mode 100644 index 00000000..0485b880 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/isGoogleAppsProvider.st @@ -0,0 +1,3 @@ +testing +isGoogleAppsProvider + ^false \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/name..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/name..st new file mode 100644 index 00000000..e8cfe90d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/name..st @@ -0,0 +1,3 @@ +accessing +name: aString + name := aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/name.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/name.st new file mode 100644 index 00000000..6390ca65 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/name.st @@ -0,0 +1,3 @@ +accessing +name + ^name \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/nonceLocker.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/nonceLocker.st new file mode 100644 index 00000000..b2ea401d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/nonceLocker.st @@ -0,0 +1,4 @@ +accessing +nonceLocker + + ^ nonceLocker ifNil: [ nonceLocker := ZnOpenIDNonceLocker new ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/printOn..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/printOn..st new file mode 100644 index 00000000..1c62a849 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/printOn..st @@ -0,0 +1,7 @@ +printing +printOn: stream + + super printOn: stream. + stream + nextPutAll: '-' ; + print: self name \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/shouldValidateClaimedIdBelongsToEndpoint..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/shouldValidateClaimedIdBelongsToEndpoint..st new file mode 100644 index 00000000..2a1d7e45 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/shouldValidateClaimedIdBelongsToEndpoint..st @@ -0,0 +1,4 @@ +accessing +shouldValidateClaimedIdBelongsToEndpoint: aBoolean + + shouldValidateClaimedIdBelongsToEndpoint := aBoolean \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/shouldValidateClaimedIdBelongsToEndpoint.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/shouldValidateClaimedIdBelongsToEndpoint.st new file mode 100644 index 00000000..7266b1b2 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/instance/shouldValidateClaimedIdBelongsToEndpoint.st @@ -0,0 +1,4 @@ +accessing +shouldValidateClaimedIdBelongsToEndpoint + + ^ shouldValidateClaimedIdBelongsToEndpoint ifNil: [ shouldValidateClaimedIdBelongsToEndpoint := true ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/methodProperties.json new file mode 100644 index 00000000..71f85442 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/methodProperties.json @@ -0,0 +1,23 @@ +{ + "class" : { + "newGoogleProvider" : "JanVanDeSandt 1/5/2013 17:51", + "newHyvesProvider" : "JanVanDeSandt 1/5/2013 17:56", + "newMyOpenIDProvider" : "JanVanDeSandt 1/5/2013 17:54", + "newYahooProvider" : "JanVanDeSandt 1/5/2013 17:52" }, + "instance" : { + "altText" : "BartVeenstra 10/1/2010 15:55", + "altText:" : "BartVeenstra 10/1/2010 15:55", + "createSession" : "JanVanDeSandt 1/1/2013 15:45", + "discoverEndpoint" : "JanVanDeSandt 1/16/2013 22:19", + "discoveryUrl" : "jvds 11/20/2010 21:06", + "discoveryUrl:" : "jvds 11/20/2010 21:06", + "httpClient" : "JanVanDeSandt 1/2/2013 15:55", + "imgUrl" : "BartVeenstra 10/1/2010 16:03", + "imgUrl:" : "BartVeenstra 10/1/2010 16:03", + "isGoogleAppsProvider" : "JanVanDeSandt 1/1/2013 16:20", + "name" : "jvds 11/20/2010 21:19", + "name:" : "jvds 11/20/2010 21:19", + "nonceLocker" : "JanVanDeSandt 1/2/2013 16:21", + "printOn:" : "jvds 3/29/2011 16:35", + "shouldValidateClaimedIdBelongsToEndpoint" : "JanVanDeSandt 1/2/2013 15:13", + "shouldValidateClaimedIdBelongsToEndpoint:" : "JanVanDeSandt 1/2/2013 15:14" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/properties.json new file mode 100644 index 00000000..c0fad78a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDProvider.class/properties.json @@ -0,0 +1,19 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "name", + "discoveryUrl", + "shouldValidateClaimedIdBelongsToEndpoint", + "nonceLocker", + "imgUrl", + "altText" ], + "name" : "ZnOpenIDProvider", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDResponseVerificationError.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDResponseVerificationError.class/README.md new file mode 100644 index 00000000..f452aa97 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDResponseVerificationError.class/README.md @@ -0,0 +1 @@ +An abstract class for all the possible OpenID verification errors. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDResponseVerificationError.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDResponseVerificationError.class/methodProperties.json new file mode 100644 index 00000000..0e4a6622 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDResponseVerificationError.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDResponseVerificationError.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDResponseVerificationError.class/properties.json new file mode 100644 index 00000000..800ca006 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDResponseVerificationError.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDResponseVerificationError", + "pools" : [ + ], + "super" : "Error", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/README.md new file mode 100644 index 00000000..c7d4abf1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/README.md @@ -0,0 +1 @@ +See http://code.google.com/apis/accounts/docs/OpenID.html \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/class/forProvider..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/class/forProvider..st new file mode 100644 index 00000000..f3fcb5fa --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/class/forProvider..st @@ -0,0 +1,7 @@ +instance creation +forProvider: anOpenIDProvider + + ^self new + provider: anOpenIDProvider; + setEndpoint: anOpenIDProvider discoverEndpoint ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/class/httpClient.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/class/httpClient.st new file mode 100644 index 00000000..486bcd5c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/class/httpClient.st @@ -0,0 +1,6 @@ +resources +httpClient + + ^ ZnClient new + beOneShot ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/assocHandle.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/assocHandle.st new file mode 100644 index 00000000..3c8e6b8e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/assocHandle.st @@ -0,0 +1,3 @@ +accessing +assocHandle + ^associationResponse assocHandle \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/associationResponse.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/associationResponse.st new file mode 100644 index 00000000..47aa5fa9 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/associationResponse.st @@ -0,0 +1,3 @@ +accessing +associationResponse + ^associationResponse \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/authenticationError..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/authenticationError..st new file mode 100644 index 00000000..bb53db64 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/authenticationError..st @@ -0,0 +1,4 @@ +private +authenticationError: aString + + self error: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/dateAndTimeNow.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/dateAndTimeNow.st new file mode 100644 index 00000000..c81de672 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/dateAndTimeNow.st @@ -0,0 +1,4 @@ +resources +dateAndTimeNow + + ^ DateAndTime now \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationRequestUrl..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationRequestUrl..st new file mode 100644 index 00000000..42241f33 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationRequestUrl..st @@ -0,0 +1,6 @@ +actions +getAuthenticationRequestUrl: aReturnToUrlString + "Answer a URL to the OpenID authentication page." + + ^self getAuthenticationRequestUrl: aReturnToUrlString do: [ :request | + request axRequestNamesAndEmail ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationRequestUrl.do..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationRequestUrl.do..st new file mode 100644 index 00000000..a9d6eec2 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationRequestUrl.do..st @@ -0,0 +1,20 @@ +actions +getAuthenticationRequestUrl: aReturnToUrl do: aBlock + "Answer a URL to the OpenID authentication page." + + | request url | + + self isAssociationValid + ifFalse: [ self setupAssociation ]. + + request := ZnOpenIDAuthRequest new + modeCheckidSetup; + assocHandle: self assocHandle; + returnTo: aReturnToUrl asString. + self realm notNil + ifTrue: [ request realm: self realm ]. + aBlock value: request. + + url := endpoint copy. + request addToUrl: url. + ^url \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationRequestUrl.maxAuthAge..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationRequestUrl.maxAuthAge..st new file mode 100644 index 00000000..a7f7c01a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationRequestUrl.maxAuthAge..st @@ -0,0 +1,6 @@ +actions +getAuthenticationRequestUrl: aReturnToUrlString maxAuthAge: maxAgeInSecs + "Answer a URL to the OpenID authentication page." + + ^self getAuthenticationRequestUrl: aReturnToUrlString do: [ :request | + request papeMaxAuthAge: maxAgeInSecs ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationResponseFrom..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationResponseFrom..st new file mode 100644 index 00000000..b414802a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getAuthenticationResponseFrom..st @@ -0,0 +1,4 @@ +actions +getAuthenticationResponseFrom: aDictionary + + ^ZnOpenIDAuthResponse newFromDictionary: aDictionary diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getValidatedAuthenticationResponseFrom..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getValidatedAuthenticationResponseFrom..st new file mode 100644 index 00000000..ba3862fc --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/getValidatedAuthenticationResponseFrom..st @@ -0,0 +1,9 @@ +actions +getValidatedAuthenticationResponseFrom: aDictionary + + | responseMessage | + + responseMessage := self getAuthenticationResponseFrom: aDictionary. + responseMessage isSuccess + ifTrue: [ self validateAuthResponse: responseMessage ]. + ^ responseMessage diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/httpClient.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/httpClient.st new file mode 100644 index 00000000..8f54828e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/httpClient.st @@ -0,0 +1,4 @@ +resources +httpClient + + ^ self class httpClient \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/isAssociationValid.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/isAssociationValid.st new file mode 100644 index 00000000..be7a55c3 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/isAssociationValid.st @@ -0,0 +1,4 @@ +testing +isAssociationValid + + ^associationResponse notNil and: [ associationExpireTime > self dateAndTimeNow ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/provider..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/provider..st new file mode 100644 index 00000000..5e0a9cd8 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/provider..st @@ -0,0 +1,4 @@ +accessing +provider: anOpenIDProvider + + provider := anOpenIDProvider \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/provider.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/provider.st new file mode 100644 index 00000000..90b2b24b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/provider.st @@ -0,0 +1,3 @@ +accessing +provider + ^provider \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/providerName.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/providerName.st new file mode 100644 index 00000000..98441ec7 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/providerName.st @@ -0,0 +1,3 @@ +accessing +providerName + ^provider name \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/realm..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/realm..st new file mode 100644 index 00000000..d00b5cd2 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/realm..st @@ -0,0 +1,4 @@ +accessing +realm: aString + "Set the authenticated realm. Identifies the domain that the end user is being asked to trust. (optional)" + realm := aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/realm.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/realm.st new file mode 100644 index 00000000..13aab411 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/realm.st @@ -0,0 +1,3 @@ +accessing +realm + ^realm \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/setEndpoint..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/setEndpoint..st new file mode 100644 index 00000000..f28bd1bf --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/setEndpoint..st @@ -0,0 +1,5 @@ +initialize-release +setEndpoint: urlString + + endpoint := urlString asZnUrl. + self setupAssociation diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/setupAssociation.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/setupAssociation.st new file mode 100644 index 00000000..5b43a53a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/setupAssociation.st @@ -0,0 +1,26 @@ +initialize-release +setupAssociation + + " + openid.ns:http://specs.openid.net/auth/2.0 + openid.mode:associate + openid.session_type:no-encryption + openid.assoc_type:HMAC-SHA1 " + + | url response | + + endpoint isNil + ifTrue: [ self error: 'endpoint undefined' ]. + + url := endpoint copy. + ZnOpenIDAssociationRequest new addToUrl: url. + response := self httpClient + url: url ; + get ; + response. + + response isSuccess + ifFalse: [ self error: 'Failed to setup association' ]. + + associationResponse := ZnOpenIDAssociationResponse newFromKeyValueForm: response contents. + associationExpireTime := self dateAndTimeNow + (Integer readFrom: associationResponse expiresIn readStream) seconds. diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/validateAuthResponse..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/validateAuthResponse..st new file mode 100644 index 00000000..e39a071e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/validateAuthResponse..st @@ -0,0 +1,25 @@ +actions +validateAuthResponse: anAuthResponse + "Validate the authentication response. Raise an error when something is wrong." + + | signedFields requiredFields | + + anAuthResponse opEndpoint isNil + ifTrue: [ self authenticationError: 'openid.op_endpoint is required in OpenID auth responses' ]. + anAuthResponse claimedId isNil + ifTrue: [ self authenticationError: 'openid.clamied_id must be present in OpenID2 auth responses' ]. + anAuthResponse responseNonce isNil + ifTrue: [ self authenticationError: 'openid.response_nonce is required in OpenID2 auth responses' ]. + signedFields := anAuthResponse signed subStrings: ','. + requiredFields := #( 'return_to' 'response_nonce' 'op_endpoint' 'assoc_handle' 'identity' 'claimed_id' ). + requiredFields + do: [ :each | + (signedFields includes: each) + ifFalse: [ self authenticationError: each , ' must be signed' ] ]. + (self associationResponse sign: anAuthResponse signedText andCheck: anAuthResponse sig) + ifFalse: [ self authenticationError: 'signature mismatch' ]. + + self provider shouldValidateClaimedIdBelongsToEndpoint + ifTrue: [ self validateClaimedId: anAuthResponse claimedId belongsToEndpoint: anAuthResponse opEndpoint ]. + + self provider nonceLocker seeAndValidate: (ZnOpenIDNonce fromString: anAuthResponse responseNonce) \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/validateClaimedId.belongsToEndpoint..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/validateClaimedId.belongsToEndpoint..st new file mode 100644 index 00000000..a5d4323b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/instance/validateClaimedId.belongsToEndpoint..st @@ -0,0 +1,17 @@ +private +validateClaimedId: claimedId belongsToEndpoint: endpointUrl + + | response xrdsDocument elements | + + response := self httpClient + url: claimedId ; + get ; + response. + response isSuccess + ifFalse: [ ZnOpenIDClaimedIDVerificationError signal ]. + + xrdsDocument := response contents. + elements := ZnXRDService parseServicesFromXrds: xrdsDocument. + elements := elements select: [ :service | service isClaimedIdService ]. + (elements anySatisfy: [ :e | e opEndpoint = endpointUrl ]) + ifFalse: [ ZnOpenIDClaimedIDVerificationError signal ]. diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/methodProperties.json new file mode 100644 index 00000000..74ab3bec --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/methodProperties.json @@ -0,0 +1,25 @@ +{ + "class" : { + "forProvider:" : "JanVanDeSandt 1/2/2013 15:50", + "httpClient" : "JanVanDeSandt 1/2/2013 11:07" }, + "instance" : { + "assocHandle" : "jvds 3/5/2010 10:51", + "associationResponse" : "jvds 3/14/2010 14:30", + "authenticationError:" : "jvds 3/14/2010 14:12", + "dateAndTimeNow" : "JanVanDeSandt 1/2/2013 11:27", + "getAuthenticationRequestUrl:" : "jvds 8/21/2010 13:28", + "getAuthenticationRequestUrl:do:" : "JanVanDeSandt 1/5/2013 19:49", + "getAuthenticationRequestUrl:maxAuthAge:" : "jvds 8/21/2010 13:27", + "getAuthenticationResponseFrom:" : "JanVanDeSandt 1/2/2013 21:05", + "getValidatedAuthenticationResponseFrom:" : "JanVanDeSandt 1/2/2013 21:03", + "httpClient" : "JanVanDeSandt 1/2/2013 11:49", + "isAssociationValid" : "JanVanDeSandt 1/2/2013 11:58", + "provider" : "jvds 11/20/2010 21:20", + "provider:" : "jvds 11/20/2010 21:20", + "providerName" : "jvds 11/20/2010 21:23", + "realm" : "jvds 3/26/2010 15:04", + "realm:" : "jvds 3/26/2010 15:05", + "setEndpoint:" : "JanVanDeSandt 1/2/2013 11:27", + "setupAssociation" : "JanVanDeSandt 1/2/2013 11:56", + "validateAuthResponse:" : "JanVanDeSandt 1/3/2013 11:27", + "validateClaimedId:belongsToEndpoint:" : "JanVanDeSandt 1/16/2013 22:18" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/properties.json new file mode 100644 index 00000000..2a84bbe7 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDService.class/properties.json @@ -0,0 +1,18 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "jvds 3/26/2010 14:31", + "instvars" : [ + "provider", + "endpoint", + "associationResponse", + "associationExpireTime", + "realm" ], + "name" : "ZnOpenIDService", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/clear.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/clear.st new file mode 100644 index 00000000..b8c49f48 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/clear.st @@ -0,0 +1,4 @@ +class initialization +clear + + Default := nil \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/default..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/default..st new file mode 100644 index 00000000..195ffb0d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/default..st @@ -0,0 +1,4 @@ +accessing +default: anInstance + + Default := anInstance \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/default.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/default.st new file mode 100644 index 00000000..8b21cd67 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/default.st @@ -0,0 +1,7 @@ +accessing +default + + ^Default ifNil: [ + Default := self new + addProviders: self defaultProviders ; + yourself ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/defaultProviders.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/defaultProviders.st new file mode 100644 index 00000000..9771e9fb --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/defaultProviders.st @@ -0,0 +1,9 @@ +resources +defaultProviders + + ^ OrderedCollection new + add: ZnOpenIDProvider newGoogleProvider ; + add: ZnOpenIDProvider newMyOpenIDProvider ; + add: ZnOpenIDProvider newYahooProvider ; + add: ZnOpenIDProvider newHyvesProvider ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameGoogle.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameGoogle.st new file mode 100644 index 00000000..1b21f37c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameGoogle.st @@ -0,0 +1,3 @@ +resources +providerNameGoogle + ^'Google' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameHyves.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameHyves.st new file mode 100644 index 00000000..84c1e210 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameHyves.st @@ -0,0 +1,3 @@ +resources +providerNameHyves + ^'Hyves' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameMyOpenID.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameMyOpenID.st new file mode 100644 index 00000000..85971f10 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameMyOpenID.st @@ -0,0 +1,3 @@ +resources +providerNameMyOpenID + ^'myOpenID' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameYahoo.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameYahoo.st new file mode 100644 index 00000000..6e625db7 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/providerNameYahoo.st @@ -0,0 +1,3 @@ +resources +providerNameYahoo + ^'Yahoo' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/unload.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/unload.st new file mode 100644 index 00000000..aca4929b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/class/unload.st @@ -0,0 +1,4 @@ +class initialization +unload + + self clear \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/addProvider..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/addProvider..st new file mode 100644 index 00000000..03b2604b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/addProvider..st @@ -0,0 +1,4 @@ +adding +addProvider: aProvider + + ^ self providers add: aProvider \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/addProviders..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/addProviders..st new file mode 100644 index 00000000..e050c1f9 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/addProviders..st @@ -0,0 +1,4 @@ +adding +addProviders: aProviderCollection + + ^ self providers addAll: aProviderCollection \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/googleProvider.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/googleProvider.st new file mode 100644 index 00000000..71fdbef6 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/googleProvider.st @@ -0,0 +1,4 @@ +convenience +googleProvider + + ^self providers detect: [ :each | each name = self class providerNameGoogle ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/googleSession.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/googleSession.st new file mode 100644 index 00000000..a5fe1a75 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/googleSession.st @@ -0,0 +1,4 @@ +convenience +googleSession + + ^self sessionForProviderNamed: self class providerNameGoogle \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/hyvesSession.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/hyvesSession.st new file mode 100644 index 00000000..6a7e9e7b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/hyvesSession.st @@ -0,0 +1,4 @@ +convenience +hyvesSession + + ^self sessionForProviderNamed: self class providerNameHyves \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/initialize.st new file mode 100644 index 00000000..cadae2eb --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/initialize.st @@ -0,0 +1,6 @@ +initialize-release +initialize + + super initialize. + providers := OrderedCollection new. + providerSessions := OrderedCollection new \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/myOpenIDProvider.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/myOpenIDProvider.st new file mode 100644 index 00000000..8121ce81 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/myOpenIDProvider.st @@ -0,0 +1,4 @@ +convenience +myOpenIDProvider + + ^self providers detect: [ :each | each name = self class providerNameMyOpenID ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/providerSessions.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/providerSessions.st new file mode 100644 index 00000000..e5d4f4e8 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/providerSessions.st @@ -0,0 +1,3 @@ +accessing +providerSessions + ^providerSessions \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/providers.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/providers.st new file mode 100644 index 00000000..0192c33c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/providers.st @@ -0,0 +1,3 @@ +accessing +providers + ^providers \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/sessionForGoogleAppsDomain..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/sessionForGoogleAppsDomain..st new file mode 100644 index 00000000..fdb59bb2 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/sessionForGoogleAppsDomain..st @@ -0,0 +1,15 @@ +convenience +sessionForGoogleAppsDomain: aString + "Answer a OpenIDService object for the Google Apps domain." + + | provider | + + provider := self providers + detect: [ :each | each isGoogleAppsProvider and: [ each domain = aString ] ] + ifNone: [ + self providers add: ((ZnGoogleAppsOpenIDProvider forDomain: aString) + name: self class providerNameGoogle; + imgUrl: 'http://openid.net/images/get-logos/google.png'; + altText: 'Login with your Google Apps account'; + yourself ) ]. + ^self sessionForProvider: provider \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/sessionForProvider..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/sessionForProvider..st new file mode 100644 index 00000000..56b8c9d0 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/sessionForProvider..st @@ -0,0 +1,6 @@ +accessing +sessionForProvider: aProvider + + ^self providerSessions + detect: [ :each | each provider = aProvider ] + ifNone: [ self providerSessions add: aProvider createSession ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/sessionForProviderNamed..st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/sessionForProviderNamed..st new file mode 100644 index 00000000..8d212538 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/sessionForProviderNamed..st @@ -0,0 +1,7 @@ +accessing +sessionForProviderNamed: aString + + | provider | + + provider := self providers detect: [ :each | each name = aString ]. + ^self sessionForProvider: provider \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/yahooSession.st b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/yahooSession.st new file mode 100644 index 00000000..a547252b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/instance/yahooSession.st @@ -0,0 +1,4 @@ +convenience +yahooSession + + ^self sessionForProviderNamed: self class providerNameYahoo \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/methodProperties.json new file mode 100644 index 00000000..5730ace5 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/methodProperties.json @@ -0,0 +1,25 @@ +{ + "class" : { + "clear" : "jvds 12/30/2010 12:16", + "default" : "JanVanDeSandt 1/2/2013 15:36", + "default:" : "JanVanDeSandt 1/2/2013 15:32", + "defaultProviders" : "JanVanDeSandt 1/5/2013 17:58", + "providerNameGoogle" : "jvds 11/20/2010 21:21", + "providerNameHyves" : "jvds 11/20/2010 21:21", + "providerNameMyOpenID" : "jvds 12/29/2010 13:12", + "providerNameYahoo" : "jvds 11/20/2010 21:21", + "unload" : "jvds 2/14/2011 14:10" }, + "instance" : { + "addProvider:" : "JanVanDeSandt 1/2/2013 15:35", + "addProviders:" : "JanVanDeSandt 1/2/2013 15:35", + "googleProvider" : "jvds 12/29/2010 11:40", + "googleSession" : "jvds 11/20/2010 21:31", + "hyvesSession" : "jvds 11/20/2010 21:38", + "initialize" : "JanVanDeSandt 1/2/2013 15:54", + "myOpenIDProvider" : "jvds 12/29/2010 13:12", + "providerSessions" : "jvds 11/20/2010 21:29", + "providers" : "jvds 11/20/2010 21:27", + "sessionForGoogleAppsDomain:" : "JanVanDeSandt 1/2/2013 16:11", + "sessionForProvider:" : "jvds 11/20/2010 21:32", + "sessionForProviderNamed:" : "jvds 11/20/2010 21:30", + "yahooSession" : "jvds 11/20/2010 21:31" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/properties.json new file mode 100644 index 00000000..d1945c92 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnOpenIDSingleSignOn.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + "Default" ], + "commentStamp" : "", + "instvars" : [ + "providers", + "providerSessions" ], + "name" : "ZnOpenIDSingleSignOn", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/assocTypeHmacSHA1.st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/assocTypeHmacSHA1.st new file mode 100644 index 00000000..6176a88e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/assocTypeHmacSHA1.st @@ -0,0 +1,5 @@ +constants +assocTypeHmacSHA1 + "OpenID2 association type" + + ^'HMAC-SHA1' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/newFromDictionary..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/newFromDictionary..st new file mode 100644 index 00000000..f5b1645f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/newFromDictionary..st @@ -0,0 +1,10 @@ +instance creation +newFromDictionary: aDictionary + + | instance | + + instance := self new. + aDictionary keysAndValuesDo: [ :key :value | + (self propertyPrefix = '' or: [ key beginsWith: self propertyPrefix ]) + ifTrue: [ instance propertyAt: key put: value ] ]. + ^ instance \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/newFromKeyValueForm..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/newFromKeyValueForm..st new file mode 100644 index 00000000..18cd5b8a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/newFromKeyValueForm..st @@ -0,0 +1,14 @@ +instance creation +newFromKeyValueForm: aString + + | eolChar msg stream | + + eolChar := (aString includes: Character lf) + ifTrue: [ Character lf ] + ifFalse: [ Character cr ]. + + msg := self new. + stream := ReadStream on: aString. + [ stream atEnd ] whileFalse: [ + msg propertyAt: (stream upTo: $:) put: (stream upTo: eolChar)]. + ^msg \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/newFromUrl..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/newFromUrl..st new file mode 100644 index 00000000..306315bd --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/newFromUrl..st @@ -0,0 +1,8 @@ +instance creation +newFromUrl: anUrl + + | instance | + + instance := self new. + anUrl asZnUrl queryDo: [ :key :value | instance propertyAt: key put: value ]. + ^ instance \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsAttributeExchangeExtension.st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsAttributeExchangeExtension.st new file mode 100644 index 00000000..4109c1ae --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsAttributeExchangeExtension.st @@ -0,0 +1,5 @@ +constants +nsAttributeExchangeExtension + "Answer the namespace" + + ^'http://openid.net/srv/ax/1.0' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsOAuth.st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsOAuth.st new file mode 100644 index 00000000..12edede0 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsOAuth.st @@ -0,0 +1,5 @@ +constants +nsOAuth + "Answer the namespace" + + ^'http://specs.openid.net/extensions/oauth/1.0' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsOpenId2.st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsOpenId2.st new file mode 100644 index 00000000..375ea8ed --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsOpenId2.st @@ -0,0 +1,5 @@ +constants +nsOpenId2 + "Answer the namespace" + + ^'http://specs.openid.net/auth/2.0' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsPape.st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsPape.st new file mode 100644 index 00000000..ccd33187 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/nsPape.st @@ -0,0 +1,5 @@ +constants +nsPape + "Answer the namespace" + + ^'http://specs.openid.net/extensions/pape/1.0' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/propertyPrefix.st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/propertyPrefix.st new file mode 100644 index 00000000..02d94421 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/propertyPrefix.st @@ -0,0 +1,4 @@ +constants +propertyPrefix + + ^ '' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/signStringSHA1.usingSecret..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/signStringSHA1.usingSecret..st new file mode 100644 index 00000000..a2f0daf2 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/class/signStringSHA1.usingSecret..st @@ -0,0 +1,11 @@ +utility +signStringSHA1: aString usingSecret: aSecret + "Signs a string with , and encode the + resulting byteArray into plain ASCII with base64." + + | hmac digest | + + hmac := SHA1 new hmac. + hmac key: aSecret asByteArray. + digest := hmac digestMessage: aString asByteArray. + ^ZnBase64Encoder new encode: digest \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/addToUrl..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/addToUrl..st new file mode 100644 index 00000000..daaa5f78 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/addToUrl..st @@ -0,0 +1,5 @@ +actions +addToUrl: anUrl + "Add the receivers properties as parameters to ==anUrl==." + + self properties keysAndValuesDo: [ :key :value | anUrl queryAt: key put: value ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/errorPropertyNotFound..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/errorPropertyNotFound..st new file mode 100644 index 00000000..c59f5b3b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/errorPropertyNotFound..st @@ -0,0 +1,3 @@ +private +errorPropertyNotFound: aSelector + self error: 'Property ' , aSelector , ' not found.' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/initialize.st new file mode 100644 index 00000000..7401458b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + + super initialize. + properties := Dictionary new \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/prefixForNamespace.ifAbsent..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/prefixForNamespace.ifAbsent..st new file mode 100644 index 00000000..ea389dac --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/prefixForNamespace.ifAbsent..st @@ -0,0 +1,10 @@ +accessing +prefixForNamespace: aNamespace ifAbsent: aBlock + + | begin | + + begin := 'openid.ns.'. + self properties keysAndValuesDo: [ :key :value | + (aNamespace = value and: [ (key copyFrom: 1 to: begin size) = begin ]) + ifTrue: [ ^key copyFrom: begin size + 1 to: key size ]]. + ^aBlock value \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/properties.st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/properties.st new file mode 100644 index 00000000..839fec01 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/properties.st @@ -0,0 +1,5 @@ +accessing +properties + "Answer the property dictionary of the receiver." + + ^properties \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt..st new file mode 100644 index 00000000..fc17a01c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt..st @@ -0,0 +1,5 @@ +accessing +propertyAt: aKey + "Answer the value of the property ==aKey==, raises an error if the property doesn't exist." + + ^ self propertyAt: aKey ifAbsent: [ self errorPropertyNotFound: aKey ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.ifAbsent..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.ifAbsent..st new file mode 100644 index 00000000..58f4effc --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.ifAbsent..st @@ -0,0 +1,5 @@ +accessing +propertyAt: aKey ifAbsent: aBlock + "Answer the value of the property ==aKey==, or the result of ==aBlock== if the property doesn't exist." + + ^ self properties at: aKey ifAbsent: aBlock \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.ifAbsentPut..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.ifAbsentPut..st new file mode 100644 index 00000000..e2e05b66 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.ifAbsentPut..st @@ -0,0 +1,5 @@ +accessing +propertyAt: aKey ifAbsentPut: aBlock + "Answer the value of the property ==aKey==, or if the property doesn't exist adds and answers the result of evaluating ==aBlock==." + + ^ self properties at: aKey ifAbsentPut: aBlock \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.ifPresent..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.ifPresent..st new file mode 100644 index 00000000..e815ea1c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.ifPresent..st @@ -0,0 +1,5 @@ +accessing +propertyAt: aKey ifPresent: aBlock + "Lookup the property ==aKey==, if it is present, answer the value of evaluating ==aBlock== block with the value. Otherwise, answer ==nil==." + + ^ self properties at: aKey ifPresent: aBlock \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.put..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.put..st new file mode 100644 index 00000000..cf70df70 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/propertyAt.put..st @@ -0,0 +1,5 @@ +accessing +propertyAt: aKey put: aValue + "Adds or replaces the property ==aKey== with ==aValue==." + + ^ self properties at: aKey put: aValue \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/removePropertyAt..st b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/removePropertyAt..st new file mode 100644 index 00000000..fbce05ae --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/instance/removePropertyAt..st @@ -0,0 +1,4 @@ +accessing +removePropertyAt: aKey + + ^ self properties removeKey: aKey ifAbsent: [ ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/methodProperties.json new file mode 100644 index 00000000..f6c97521 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/methodProperties.json @@ -0,0 +1,24 @@ +{ + "class" : { + "assocTypeHmacSHA1" : "jvds 2/8/2011 10:58", + "newFromDictionary:" : "JanVanDeSandt 1/2/2013 20:51", + "newFromKeyValueForm:" : "jvds 3/5/2010 11:01", + "newFromUrl:" : "JanVanDeSandt 1/2/2013 13:51", + "nsAttributeExchangeExtension" : "jvds 2/8/2011 10:57", + "nsOAuth" : "jvds 2/8/2011 10:57", + "nsOpenId2" : "jvds 2/8/2011 10:57", + "nsPape" : "jvds 2/8/2011 10:57", + "propertyPrefix" : "jvds 11/6/2011 14:08", + "signStringSHA1:usingSecret:" : "JanVanDeSandt 12/23/2012 15:55" }, + "instance" : { + "addToUrl:" : "JanVanDeSandt 1/2/2013 17:06", + "errorPropertyNotFound:" : "jvds 3/2/2010 11:12", + "initialize" : "jvds 3/2/2010 11:41", + "prefixForNamespace:ifAbsent:" : "jvds 2/14/2011 12:54", + "properties" : "jvds 3/2/2010 11:10", + "propertyAt:" : "jvds 3/2/2010 11:11", + "propertyAt:ifAbsent:" : "jvds 3/2/2010 11:11", + "propertyAt:ifAbsentPut:" : "jvds 3/2/2010 11:11", + "propertyAt:ifPresent:" : "jvds 3/2/2010 11:11", + "propertyAt:put:" : "jvds 3/2/2010 11:12", + "removePropertyAt:" : "jvds 2/10/2011 21:15" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/properties.json new file mode 100644 index 00000000..a35edfd3 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnSSOMessage.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "properties" ], + "name" : "ZnSSOMessage", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/class/newFromXmlElement..st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/class/newFromXmlElement..st new file mode 100644 index 00000000..8d9a89ee --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/class/newFromXmlElement..st @@ -0,0 +1,21 @@ +instance creation +newFromXmlElement: aXmlElement + + | opEndpoint localId | + + aXmlElement + elementsAt: 'URI' + do: [ :e | + opEndpoint + ifNil: [ opEndpoint := e contentString ] + ifNotNil: [ Error signal: 'Too many URI elements for OpenID Claimed Id' ] ]. + aXmlElement + elementsAt: 'LocalID' + do: [ :e | + localId + ifNil: [ localId := e contentString ] + ifNotNil: [ Error signal: 'Too many localIds elements for OpenID Claimed Id' ] ]. + ^ self new + localId: localId; + opEndpoint: opEndpoint; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/class/serviceType.st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/class/serviceType.st new file mode 100644 index 00000000..360df8a8 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/class/serviceType.st @@ -0,0 +1,4 @@ +resources +serviceType + + ^'http://specs.openid.net/auth/2.0/signon' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/^equals.st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/^equals.st new file mode 100644 index 00000000..4e783b88 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/^equals.st @@ -0,0 +1,3 @@ +comparing += anObject + ^ (anObject isKindOf: self class) and: [ self localId = anObject localId and: [ self opEndpoint = anObject opEndpoint ] ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/hash.st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/hash.st new file mode 100644 index 00000000..4784f0bc --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/hash.st @@ -0,0 +1,3 @@ +comparing +hash + ^ self localId hash + self opEndpoint hash. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/isClaimedIdService.st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/isClaimedIdService.st new file mode 100644 index 00000000..a8bb1cf3 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/isClaimedIdService.st @@ -0,0 +1,3 @@ +testing +isClaimedIdService + ^true \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/localId..st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/localId..st new file mode 100644 index 00000000..62310a2d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/localId..st @@ -0,0 +1,3 @@ +accessing +localId: anObject + localId := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/localId.st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/localId.st new file mode 100644 index 00000000..eeb5a602 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/localId.st @@ -0,0 +1,3 @@ +accessing +localId + ^ localId \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/opEndpoint..st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/opEndpoint..st new file mode 100644 index 00000000..d3c65a30 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/opEndpoint..st @@ -0,0 +1,3 @@ +accessing +opEndpoint: anObject + opEndpoint := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/opEndpoint.st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/opEndpoint.st new file mode 100644 index 00000000..a925a6c4 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/instance/opEndpoint.st @@ -0,0 +1,3 @@ +accessing +opEndpoint + ^ opEndpoint \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/methodProperties.json new file mode 100644 index 00000000..0d4a7771 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + "newFromXmlElement:" : "JanVanDeSandt 1/2/2013 13:18", + "serviceType" : "JanVanDeSandt 1/2/2013 13:19" }, + "instance" : { + "=" : "JanVanDeSandt 1/2/2013 14:32", + "hash" : "JanVanDeSandt 1/2/2013 14:32", + "isClaimedIdService" : "JanVanDeSandt 1/2/2013 13:20", + "localId" : "JanVanDeSandt 1/2/2013 13:20", + "localId:" : "JanVanDeSandt 1/2/2013 13:20", + "opEndpoint" : "JanVanDeSandt 1/2/2013 13:20", + "opEndpoint:" : "JanVanDeSandt 1/2/2013 13:20" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/properties.json new file mode 100644 index 00000000..b258dd3e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDOpenIDClaimedId.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "opEndpoint", + "localId" ], + "name" : "ZnXRDOpenIDClaimedId", + "pools" : [ + ], + "super" : "ZnXRDService", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/README.md b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/newFromXmlElement..st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/newFromXmlElement..st new file mode 100644 index 00000000..ca7274c3 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/newFromXmlElement..st @@ -0,0 +1,3 @@ +instance creation +newFromXmlElement: aXmlElement + self subclassResponsibility. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/parseOPEndpointFromXrds..st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/parseOPEndpointFromXrds..st new file mode 100644 index 00000000..252c6e4c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/parseOPEndpointFromXrds..st @@ -0,0 +1,9 @@ +parsing +parseOPEndpointFromXrds: aString + + | xmlNode | + + xmlNode := self xmlParser parse: aString. + xmlNode := xmlNode root elementAt: 'XRD'. + xmlNode := xmlNode elementAt: 'Service'. + ^xmlNode contentStringAt: 'URI' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/parseServiceElement..st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/parseServiceElement..st new file mode 100644 index 00000000..2a5a9804 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/parseServiceElement..st @@ -0,0 +1,13 @@ +parsing +parseServiceElement: aXmlElement + "Parses xml element containing service definition. Method returns collection of services because + every different type is parsed to different service." + + | types classes | + types := OrderedCollection new. + aXmlElement elementsAt: 'Type' do: [ :e | types add: e contentString ]. + classes := OrderedCollection new. + types do: [ :type | classes addAll: (self allSubclasses select: [ :c | c serviceType = type ]) ]. + classes isEmpty + ifTrue: [ ^ nil ]. "Unknonwn type" + ^ classes collect: [ :c | c newFromXmlElement: aXmlElement ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/parseServicesFromXrds..st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/parseServicesFromXrds..st new file mode 100644 index 00000000..fd13a4df --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/parseServicesFromXrds..st @@ -0,0 +1,12 @@ +parsing +parseServicesFromXrds: aString + + | xrdElement elements document | + + document := self xmlParser parse: aString. + xrdElement := document root elementAt: 'XRD'. + elements := OrderedCollection new. + xrdElement + elementsAt: 'Service' + do: [ :e | (self parseServiceElement: e) ifNotNil: [ :nonNilService | elements addAll: nonNilService ] ]. + ^ elements \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/xmlParser.st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/xmlParser.st new file mode 100644 index 00000000..bdf0c6a8 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/class/xmlParser.st @@ -0,0 +1,4 @@ +resources +xmlParser + + ^ XMLDOMParser \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/instance/isClaimedIdService.st b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/instance/isClaimedIdService.st new file mode 100644 index 00000000..e2aa6d40 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/instance/isClaimedIdService.st @@ -0,0 +1,3 @@ +testing +isClaimedIdService + ^false \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/methodProperties.json new file mode 100644 index 00000000..d421f209 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + "newFromXmlElement:" : "PanuSuominen 11/25/2011 12:26", + "parseOPEndpointFromXrds:" : "JanVanDeSandt 1/2/2013 16:02", + "parseServiceElement:" : "JanVanDeSandt 1/16/2013 22:22", + "parseServicesFromXrds:" : "JanVanDeSandt 1/2/2013 15:44", + "xmlParser" : "JanVanDeSandt 1/2/2013 12:36" }, + "instance" : { + "isClaimedIdService" : "PanuSuominen 11/25/2011 12:55" } } diff --git a/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/properties.json b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/properties.json new file mode 100644 index 00000000..ed5ee39d --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/ZnXRDService.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnXRDService", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/categories.st b/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/categories.st new file mode 100644 index 00000000..475f4a0c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-SSO-OpenID-Core'! diff --git a/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/initializers.st b/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/package b/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/package new file mode 100644 index 00000000..8d97aa7b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-SSO-OpenID-Core') \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/version b/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/version new file mode 100644 index 00000000..5a8887ff --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-SSO-OpenID-Core-JanVanDeSandt.6' message 'SmallLint fixes' id '894319d1-c3d3-4dfe-ab18-18afc410a464' date '16 January 2013' time '10:28:34.645 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OpenID-Core-JanVanDeSandt.5' message 'Started work on removing unnecessary class ZnOpenIDSingleSignOn' id 'c3c573ce-8d8c-4475-ba07-cf3efdfdae15' date '5 January 2013' time '9:22:15.281 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OpenID-Core-JanVanDeSandt.4' message 'Removed dependency on WARequest (Seaside)' id '374ffa1c-f26f-46ec-9dec-9af67516ada7' date '2 January 2013' time '9:10:13.083 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OpenID-Core-JanVanDeSandt.3' message 'Started work on class comments' id '0a9f6248-ff3a-4b15-bbf4-978f6e4dc290' date '2 January 2013' time '5:18:37.304 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OpenID-Core-JanVanDeSandt.2' message 'Removed CloudforkSSO dependencies' id 'e447b380-a786-4b99-b534-983acb2873ed' date '2 January 2013' time '4:41:28.594 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OpenID-Core-JanVanDeSandt.1' message 'Initial port from CloudforkSSO' id 'c7e2c08e-717e-b94c-a646-b1c3bf205ebf' date '1 January 2013' time '4:37:04.275 pm' author 'JanVanDeSandt' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Core.package/properties.json b/repository/Zinc-SSO-OpenID-Core.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Core.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/.filetree b/repository/Zinc-SSO-OpenID-Tests.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/README.md b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/class/new.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/class/new.st new file mode 100644 index 00000000..4e996ccd --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/class/new.st @@ -0,0 +1,3 @@ +instance creation +new + ^super new initialize \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/get.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/get.st new file mode 100644 index 00000000..8b8a7d4f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/get.st @@ -0,0 +1,5 @@ +api +get + + response := responses at: url. + ^ response contents \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/initialize.st new file mode 100644 index 00000000..0fce2672 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + responses := Dictionary new. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/response.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/response.st new file mode 100644 index 00000000..c58f740c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/response.st @@ -0,0 +1,4 @@ +api +response + + ^ response \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/responseForGet.content..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/responseForGet.content..st new file mode 100644 index 00000000..e3a4da5b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/responseForGet.content..st @@ -0,0 +1,6 @@ +initialize-release +responseForGet: endpointUrl content: aString + + responses + at: endpointUrl + put: (ZnResponse ok: (ZnStringEntity xml: aString)) \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/url..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/url..st new file mode 100644 index 00000000..e1c9e689 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/instance/url..st @@ -0,0 +1,5 @@ +api +url: anObject + + url := anObject. + response := nil \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/methodProperties.json new file mode 100644 index 00000000..ae5fd090 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + "new" : "emm 2/2/2012 22:03" }, + "instance" : { + "get" : "JanVanDeSandt 1/2/2013 14:48", + "initialize" : "PanuSuominen 11/25/2011 13:36", + "response" : "JanVanDeSandt 1/2/2013 14:48", + "responseForGet:content:" : "JanVanDeSandt 1/2/2013 14:49", + "url:" : "JanVanDeSandt 1/2/2013 14:49" } } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/properties.json new file mode 100644 index 00000000..86518bd8 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnHttpClientDummy.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Zinc-SSO-OpenID-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "url", + "responses", + "response" ], + "name" : "ZnHttpClientDummy", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/README.md b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/doNotCheckSignature.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/doNotCheckSignature.st new file mode 100644 index 00000000..c09ea7d2 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/doNotCheckSignature.st @@ -0,0 +1,3 @@ +actions +doNotCheckSignature + signatureCheck := false. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/initialize.st new file mode 100644 index 00000000..351f6cfd --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + signatureCheck := true \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/shouldCheckSignature.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/shouldCheckSignature.st new file mode 100644 index 00000000..45bb9012 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/shouldCheckSignature.st @@ -0,0 +1,3 @@ +actions +shouldCheckSignature + ^ signatureCheck \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/sign.andCheck..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/sign.andCheck..st new file mode 100644 index 00000000..f3ba3c03 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/instance/sign.andCheck..st @@ -0,0 +1,5 @@ +actions +sign: aString andCheck: aSignature + ^ self shouldCheckSignature + ifTrue: [ super sign: aString andCheck: aSignature ] + ifFalse: [ true ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/methodProperties.json new file mode 100644 index 00000000..ac6b537e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "doNotCheckSignature" : "PanuSuominen 11/25/2011 09:36", + "initialize" : "PanuSuominen 11/25/2011 09:37", + "shouldCheckSignature" : "PanuSuominen 11/25/2011 09:37", + "sign:andCheck:" : "PanuSuominen 11/25/2011 09:37" } } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/properties.json new file mode 100644 index 00000000..11606b74 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDAssociationResponseDummy.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "signatureCheck" ], + "name" : "ZnOpenIDAssociationResponseDummy", + "pools" : [ + ], + "super" : "ZnOpenIDAssociationResponse", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/README.md b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/associationResult.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/associationResult.st new file mode 100644 index 00000000..55225ff7 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/associationResult.st @@ -0,0 +1,10 @@ +resources +associationResult + + ^'ns:http://specs.openid.net/auth/2.0 +session_type:no-encryption +assoc_type:HMAC-SHA1 +assoc_handle:AOQobUe4qad3I-VsAjGHVmxz_KeE0V1GHKW29cOaA2jNJphIjkYbjeYU +expires_in:46800 +mac_key:aOVJIcgiyTGBT6SLPjnmMcbvNhY= +' diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/authenticationResultSignedText.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/authenticationResultSignedText.st new file mode 100644 index 00000000..5c035fcd --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/authenticationResultSignedText.st @@ -0,0 +1,18 @@ +resources +authenticationResultSignedText + + ^'op_endpoint:https://www.google.com/accounts/o8/ud +claimed_id:https://www.google.com/accounts/o8/id?id=AItOawnFQzS9_B505VJ_fNmY14ZywzVOINjI22k +identity:https://www.google.com/accounts/o8/id?id=AItOawnFQzS9_B505VJ_fNmY14ZywzVOINjI22k +return_to:http://pier.doit.st +response_nonce:2010-03-05T10:40:06ZJ6jQJGQatr63qw +assoc_handle:AOQobUe4qad3I-VsAjGHVmxz_KeE0V1GHKW29cOaA2jNJphIjkYbjeYU +ns.ext1:http://openid.net/srv/ax/1.0 +ext1.mode:fetch_response +ext1.type.firstname:http://axschema.org/namePerson/first +ext1.value.firstname:Jan +ext1.type.email:http://axschema.org/contact/email +ext1.value.email:jvdsandt@gmail.com +ext1.type.lastname:http://axschema.org/namePerson/last +ext1.value.lastname:van de Sandt +' collect: [ :ch | ch = Character cr ifTrue: [ Character lf ] ifFalse: [ ch ]] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/authenticationResultUrl.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/authenticationResultUrl.st new file mode 100644 index 00000000..8e285755 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/authenticationResultUrl.st @@ -0,0 +1,4 @@ +resources +authenticationResultUrl + + ^'http://pier.doit.st/?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fud&openid.response_nonce=2010-03-05T10%3A40%3A06ZJ6jQJGQatr63qw&openid.return_to=http%3A%2F%2Fpier.doit.st&openid.assoc_handle=AOQobUe4qad3I-VsAjGHVmxz_KeE0V1GHKW29cOaA2jNJphIjkYbjeYU&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ext1%2Cext1.mode%2Cext1.type.firstname%2Cext1.value.firstname%2Cext1.type.email%2Cext1.value.email%2Cext1.type.lastname%2Cext1.value.lastname&openid.sig=4WUEhV1Dqm%2Bf2LagiJ1d0QfoVJw%3D&openid.identity=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawnFQzS9_B505VJ_fNmY14ZywzVOINjI22k&openid.claimed_id=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawnFQzS9_B505VJ_fNmY14ZywzVOINjI22k&openid.ns.ext1=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ext1.mode=fetch_response&openid.ext1.type.firstname=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffirst&openid.ext1.value.firstname=Jan&openid.ext1.type.email=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ext1.value.email=jvdsandt%40gmail.com&openid.ext1.type.lastname=http%3A%2F%2Faxschema.org%2FnamePerson%2Flast&openid.ext1.value.lastname=van+de+Sandt' diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/testAssociationResponse.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/testAssociationResponse.st new file mode 100644 index 00000000..68cd7c6f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/testAssociationResponse.st @@ -0,0 +1,14 @@ +testing +testAssociationResponse + + | input response | + + input := self associationResult . + response := ZnOpenIDAssociationResponse newFromKeyValueForm: input. + + self assert: response isHmacSHA1. + self assert: (response sign: 'my-data' andCheck: 'Crc335ANSwfLu+qcCYMkYRbXbew='). + + self deny: (response sign: 'my-data' andCheck: 'INVALID=') + + diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/testAuthResponse.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/testAuthResponse.st new file mode 100644 index 00000000..a0dd49ad --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/instance/testAuthResponse.st @@ -0,0 +1,13 @@ +testing +testAuthResponse + + | url response assocResponse | + + url := self authenticationResultUrl asZnUrl. + response := ZnOpenIDAuthResponse newFromUrl: url. + + self assert: (response axValueEmail = 'jvdsandt@gmail.com'). + self assert: (response signedText = self authenticationResultSignedText). + + assocResponse := ZnOpenIDAssociationResponse newFromKeyValueForm: self associationResult. + self assert: (assocResponse sign: response signedText andCheck: response sig) diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/methodProperties.json new file mode 100644 index 00000000..eb6f91ff --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "associationResult" : "jvds 3/5/2010 11:43", + "authenticationResultSignedText" : "jvds 3/13/2010 22:36", + "authenticationResultUrl" : "jvds 3/5/2010 11:42", + "testAssociationResponse" : "JanVanDeSandt 1/1/2013 16:06", + "testAuthResponse" : "JanVanDeSandt 1/16/2013 22:19" } } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/properties.json new file mode 100644 index 00000000..cb8f6404 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDMessageTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDMessageTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/README.md b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/callCountOfIsOld.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/callCountOfIsOld.st new file mode 100644 index 00000000..5101c7b3 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/callCountOfIsOld.st @@ -0,0 +1,3 @@ +accessing +callCountOfIsOld + ^ callCountOfIsOld \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/initialize.st new file mode 100644 index 00000000..8c3a809e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + super initialize. + callCountOfIsOld := 0. + isOld := false. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/isOld.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/isOld.st new file mode 100644 index 00000000..cdbb751a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/isOld.st @@ -0,0 +1,4 @@ +testing +isOld + callCountOfIsOld := callCountOfIsOld + 1. + ^ isOld. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/makeOld.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/makeOld.st new file mode 100644 index 00000000..6df18fbe --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/instance/makeOld.st @@ -0,0 +1,3 @@ +accessing +makeOld + isOld := true. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/methodProperties.json new file mode 100644 index 00000000..c364c8fa --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "callCountOfIsOld" : "PanuSuominen 11/25/2011 14:10", + "initialize" : "PanuSuominen 11/25/2011 14:10", + "isOld" : "PanuSuominen 11/25/2011 14:10", + "makeOld" : "PanuSuominen 11/25/2011 14:00" } } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/properties.json new file mode 100644 index 00000000..2c7fb756 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceDummy.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-OpenID-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "isOld", + "callCountOfIsOld" ], + "name" : "ZnOpenIDNonceDummy", + "pools" : [ + ], + "super" : "ZnOpenIDNonce", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/README.md b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/setUp.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/setUp.st new file mode 100644 index 00000000..9e3faaa2 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/setUp.st @@ -0,0 +1,5 @@ +running +setUp + + ZnOpenIDNonceLocker reset. + locker := ZnOpenIDNonceLocker new. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testLockerHasSize.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testLockerHasSize.st new file mode 100644 index 00000000..46ce520e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testLockerHasSize.st @@ -0,0 +1,7 @@ +tests +testLockerHasSize + | nonce | + + nonce := ZnOpenIDNonce new. + locker seeAndValidate: nonce. + self should: locker nonceCount = 1 \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testSameNonceIsNotAcceptedTwice.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testSameNonceIsNotAcceptedTwice.st new file mode 100644 index 00000000..5566cf71 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testSameNonceIsNotAcceptedTwice.st @@ -0,0 +1,8 @@ +tests +testSameNonceIsNotAcceptedTwice + + | nonce | + + nonce := ZnOpenIDNonce new. + self shouldnt: [ locker seeAndValidate: nonce ] raise: ZnOpenIDNonceSeenError. + self should: [ locker seeAndValidate: nonce ] raise: ZnOpenIDNonceSeenError \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testTooOldNodesAreNotPolledAllTheTime.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testTooOldNodesAreNotPolledAllTheTime.st new file mode 100644 index 00000000..d997b489 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testTooOldNodesAreNotPolledAllTheTime.st @@ -0,0 +1,19 @@ +tests +testTooOldNodesAreNotPolledAllTheTime + | nonce1 nonce2 | + + nonce1 := ZnOpenIDNonceDummy new. + nonce2 := nonce1 copy. + self shouldnt: [ locker seeAndValidate: nonce1 ] raise: ZnOpenIDNonceSeenError. + locker resetRemovalTime. + nonce1 makeOld. + self shouldnt: [ locker seeAndValidate: nonce2 ] raise: ZnOpenIDNonceSeenError. + self + shouldnt: [ + locker + seeAndValidate: + (ZnOpenIDNonce new + distinctor: 1; + yourself) ] + raise: ZnOpenIDNonceSeenError. + self assert: nonce2 callCountOfIsOld = 1 \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testTooOldNodesAreRemoved.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testTooOldNodesAreRemoved.st new file mode 100644 index 00000000..2bf7e8d6 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testTooOldNodesAreRemoved.st @@ -0,0 +1,10 @@ +tests +testTooOldNodesAreRemoved + | nonce1 nonce2 | + + nonce1 := ZnOpenIDNonceDummy new. + nonce2 := nonce1 copy. + self shouldnt: [ locker seeAndValidate: nonce1 ] raise: ZnOpenIDNonceSeenError. + locker resetRemovalTime. + nonce1 makeOld. + self shouldnt: [ locker seeAndValidate: nonce2 ] raise: ZnOpenIDNonceSeenError \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testVaultHasSize.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testVaultHasSize.st new file mode 100644 index 00000000..6e6fbc75 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/instance/testVaultHasSize.st @@ -0,0 +1,7 @@ +tests +testVaultHasSize + | nonce | + + nonce := ZnOpenIDNonce new. + locker seeAndValidate: nonce. + self should: locker nonceCount = 1 \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/methodProperties.json new file mode 100644 index 00000000..ee9eee8e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "setUp" : "JanVanDeSandt 1/2/2013 16:38", + "testLockerHasSize" : "JanVanDeSandt 1/2/2013 16:38", + "testSameNonceIsNotAcceptedTwice" : "JanVanDeSandt 1/16/2013 22:19", + "testTooOldNodesAreNotPolledAllTheTime" : "JanVanDeSandt 1/16/2013 22:18", + "testTooOldNodesAreRemoved" : "JanVanDeSandt 1/2/2013 16:38", + "testVaultHasSize" : "JanVanDeSandt 1/2/2013 16:38" } } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/properties.json new file mode 100644 index 00000000..e1874f35 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceLockerTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "locker" ], + "name" : "ZnOpenIDNonceLockerTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/README.md b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/newNonce.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/newNonce.st new file mode 100644 index 00000000..e01c5f2c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/newNonce.st @@ -0,0 +1,3 @@ +private +newNonce + ^ZnOpenIDNonce new. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/nonceFromString..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/nonceFromString..st new file mode 100644 index 00000000..e15f2262 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/nonceFromString..st @@ -0,0 +1,3 @@ +private +nonceFromString: aString + ^ ZnOpenIDNonce fromString: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testHash.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testHash.st new file mode 100644 index 00000000..af2b3f46 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testHash.st @@ -0,0 +1,21 @@ +tests +testHash + | ts nonce1 nonce2 nonce3 nonce4 | + + ts := DateAndTime now. + nonce1 := self newNonce + timestamp: ts; + distinctor: 'ABCD123' yourself. + nonce2 := self newNonce + timestamp: ts; + distinctor: 'ABCD123' yourself. + nonce3 := self newNonce + timestamp: ts + 1 days; + distinctor: 'ABCD124' yourself. + nonce4 := self newNonce + timestamp: ts + 1 days; + yourself. + self assert: nonce1 hash = nonce2 hash. + self deny: nonce1 hash = nonce3 hash. + self deny: nonce1 hash = nonce4 hash. + self deny: nonce3 hash = nonce4 hash \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testOrderingNoDistinctor.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testOrderingNoDistinctor.st new file mode 100644 index 00000000..139b25d1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testOrderingNoDistinctor.st @@ -0,0 +1,17 @@ +tests +testOrderingNoDistinctor + | ts nonce1 nonce2 nonce3 | + + ts := DateAndTime now. + nonce1 := self newNonce + timestamp: ts; + yourself. + nonce2 := self newNonce + timestamp: ts; + yourself. + nonce3 := self newNonce + timestamp: ts + 1 days; + yourself. + self assert: nonce1 = nonce2. + self assert: nonce1 < nonce3. + self assert: nonce3 > nonce1 \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testOrderingSingleDistinctor.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testOrderingSingleDistinctor.st new file mode 100644 index 00000000..471e636b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testOrderingSingleDistinctor.st @@ -0,0 +1,13 @@ +tests +testOrderingSingleDistinctor + | ts nonce1 nonce2 | + + ts := DateAndTime now. + nonce1 := self newNonce + timestamp: ts; + yourself. + nonce2 := self newNonce + timestamp: ts; + distinctor: '1'; + yourself. + self assert: nonce1 < nonce2 \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testOrderingWithDistinctors.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testOrderingWithDistinctors.st new file mode 100644 index 00000000..a9230331 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testOrderingWithDistinctors.st @@ -0,0 +1,13 @@ +tests +testOrderingWithDistinctors + | ts nonce1 nonce2 | + + ts := DateAndTime now. + nonce1 := self newNonce + timestamp: ts; + distinctor: 'asd' yourself. + nonce2 := self newNonce + timestamp: ts; + distinctor: '1'; + yourself. + self assert: nonce1 > nonce2 \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testPrintingNoDistinctor.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testPrintingNoDistinctor.st new file mode 100644 index 00000000..6f087793 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testPrintingNoDistinctor.st @@ -0,0 +1,10 @@ +tests +testPrintingNoDistinctor + | ts nonce | + + ts := ZnOpenIDNonce decodeRFC3339Date: '2010-11-30T13:42:59Z'. + " ts := TimeStamp date: (Date year: 2010 month: 11 day: 30) time: (Time hour: 13 minute: 42 second: 59). " + nonce := self newNonce + timestamp: ts; + yourself. + self assert: '2010-11-30T13:42:59Z' = nonce asString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testPrintingWithDistinctor.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testPrintingWithDistinctor.st new file mode 100644 index 00000000..1bf779e6 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testPrintingWithDistinctor.st @@ -0,0 +1,11 @@ +tests +testPrintingWithDistinctor + | ts nonce | + + ts := ZnOpenIDNonce decodeRFC3339Date: '2011-12-25T17:15:41Z'. + "ts := TimeStamp date: (Date year: 2011 month: 12 day: 25) time: (Time hour: 17 minute: 15 second: 41)." + nonce := self newNonce + timestamp: ts; + distinctor: 'ABCD1234'; + yourself. + self assert: '2011-12-25T17:15:41ZABCD1234' = nonce printString \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testReadingWithDisctinctor.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testReadingWithDisctinctor.st new file mode 100644 index 00000000..f6a4a2ca --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testReadingWithDisctinctor.st @@ -0,0 +1,7 @@ +tests +testReadingWithDisctinctor + | ts nonce | + ts := ZnOpenIDNonce decodeRFC3339Date: '2011-12-25T17:15:41Z'. + nonce := self nonceFromString: '2011-12-25T17:15:41ZCBD123'. + self assert: nonce timestamp = ts. + self assert: nonce distinctor = 'CBD123' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testReadingWithWrongFormat.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testReadingWithWrongFormat.st new file mode 100644 index 00000000..c4ec604c --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testReadingWithWrongFormat.st @@ -0,0 +1,6 @@ +tests +testReadingWithWrongFormat + + self should: [ self nonceFromString: '2011-1225T17:15:41Z' ] raise: ZnOpenIDNonceInvalidError. + self should: [ self nonceFromString: 'asdasd' ] raise: ZnOpenIDNonceInvalidError. + self should: [ self nonceFromString: '2011-11-23T11:48:19' ] raise: ZnOpenIDNonceInvalidError \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testReadingWithoutDisctinctor.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testReadingWithoutDisctinctor.st new file mode 100644 index 00000000..71e34aec --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/instance/testReadingWithoutDisctinctor.st @@ -0,0 +1,6 @@ +tests +testReadingWithoutDisctinctor + | ts nonce | + ts := ZnOpenIDNonce decodeRFC3339Date: '2011-12-25T17:15:41Z'. + nonce := self nonceFromString: '2011-12-25T17:15:41Z'. + self assert: nonce timestamp = ts \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/methodProperties.json new file mode 100644 index 00000000..34ff3702 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/methodProperties.json @@ -0,0 +1,15 @@ +{ + "class" : { + }, + "instance" : { + "newNonce" : "JanVanDeSandt 1/1/2013 15:48", + "nonceFromString:" : "JanVanDeSandt 1/1/2013 15:48", + "testHash" : "JanVanDeSandt 1/2/2013 13:55", + "testOrderingNoDistinctor" : "JanVanDeSandt 1/2/2013 13:55", + "testOrderingSingleDistinctor" : "JanVanDeSandt 1/16/2013 22:20", + "testOrderingWithDistinctors" : "JanVanDeSandt 1/2/2013 13:56", + "testPrintingNoDistinctor" : "JanVanDeSandt 1/2/2013 14:06", + "testPrintingWithDistinctor" : "JanVanDeSandt 1/2/2013 14:07", + "testReadingWithDisctinctor" : "JanVanDeSandt 1/2/2013 14:07", + "testReadingWithWrongFormat" : "JanVanDeSandt 1/2/2013 13:56", + "testReadingWithoutDisctinctor" : "JanVanDeSandt 1/2/2013 14:08" } } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/properties.json new file mode 100644 index 00000000..ac872d3f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDNonceTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDNonceTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/README.md b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/associationResponse..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/associationResponse..st new file mode 100644 index 00000000..45f16918 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/associationResponse..st @@ -0,0 +1,4 @@ +accessing +associationResponse: anAssociationResponse + associationResponse := anAssociationResponse. + diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/claimedId.xrds..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/claimedId.xrds..st new file mode 100644 index 00000000..b195b847 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/claimedId.xrds..st @@ -0,0 +1,4 @@ +initialize-release +claimedId: claimedId xrds: aString + self httpClient: (ZnHttpClientDummy new + responseForGet: claimedId content: aString). \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/doNotCheckSignature.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/doNotCheckSignature.st new file mode 100644 index 00000000..82a90058 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/doNotCheckSignature.st @@ -0,0 +1,5 @@ +actions +doNotCheckSignature + associationResponse := ZnOpenIDAssociationResponseDummy new + doNotCheckSignature; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/doNotValidateEndpoint.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/doNotValidateEndpoint.st new file mode 100644 index 00000000..eba3cf81 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/doNotValidateEndpoint.st @@ -0,0 +1,3 @@ +actions +doNotValidateEndpoint + endpointValidation := false. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/httpClient..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/httpClient..st new file mode 100644 index 00000000..8efd3da2 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/httpClient..st @@ -0,0 +1,3 @@ +initialize-release +httpClient: newHttpClient + httpClient := newHttpClient. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/httpClient.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/httpClient.st new file mode 100644 index 00000000..1144f805 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/httpClient.st @@ -0,0 +1,4 @@ +resources +httpClient + + ^ httpClient ifNil: [ httpClient := ZnHttpClientDummy new ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/initialize.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/initialize.st new file mode 100644 index 00000000..01c76f70 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + endpointValidation := true. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/shouldValidateEndpoint.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/shouldValidateEndpoint.st new file mode 100644 index 00000000..a4940644 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/shouldValidateEndpoint.st @@ -0,0 +1,3 @@ +actions +shouldValidateEndpoint + ^ endpointValidation \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/validateClaimedId.belongsToEndpoint..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/validateClaimedId.belongsToEndpoint..st new file mode 100644 index 00000000..ea02754b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/instance/validateClaimedId.belongsToEndpoint..st @@ -0,0 +1,4 @@ +actions +validateClaimedId: claimedId belongsToEndpoint: opEndpoint + self shouldValidateEndpoint + ifTrue: [ super validateClaimedId: claimedId belongsToEndpoint: opEndpoint ] \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/methodProperties.json new file mode 100644 index 00000000..6b4158e1 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/methodProperties.json @@ -0,0 +1,13 @@ +{ + "class" : { + }, + "instance" : { + "associationResponse:" : "PanuSuominen 11/25/2011 09:38", + "claimedId:xrds:" : "JanVanDeSandt 1/1/2013 16:08", + "doNotCheckSignature" : "JanVanDeSandt 1/1/2013 16:08", + "doNotValidateEndpoint" : "PanuSuominen 11/25/2011 13:00", + "httpClient" : "JanVanDeSandt 1/2/2013 14:34", + "httpClient:" : "emm 2/4/2012 12:15", + "initialize" : "PanuSuominen 11/25/2011 13:01", + "shouldValidateEndpoint" : "PanuSuominen 11/25/2011 13:01", + "validateClaimedId:belongsToEndpoint:" : "PanuSuominen 11/25/2011 13:00" } } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/properties.json new file mode 100644 index 00000000..ac590e10 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceDummy.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-OpenID-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "httpClient", + "endpointValidation" ], + "name" : "ZnOpenIDServiceDummy", + "pools" : [ + ], + "super" : "ZnOpenIDService", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/README.md b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/currentTime.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/currentTime.st new file mode 100644 index 00000000..4e2a8611 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/currentTime.st @@ -0,0 +1,3 @@ +private +currentTime + ^ DateAndTime now \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/defaultAuthResponse.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/defaultAuthResponse.st new file mode 100644 index 00000000..3c10ef94 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/defaultAuthResponse.st @@ -0,0 +1,12 @@ +private +defaultAuthResponse + ^ ZnOpenIDAuthResponse new + propertyAt: 'openid.op_endpoint' put: 'endpoint'; + propertyAt: 'openid.claimed_id' put: 'claimedid'; + propertyAt: 'openid.response_nonce' put: self generateValidNonce; + propertyAt: 'openid.return_to' put: '123123123'; + propertyAt: 'openid.assoc_handle' put: '123123123'; + propertyAt: 'openid.sig' put: '123123123'; + propertyAt: 'openid.identity' put: '123123123'; + propertyAt: 'openid.signed' put: 'return_to,response_nonce,op_endpoint,assoc_handle,identity,claimed_id'; + yourself "OpenID 2.0 / 10.1: identity is optional -> test that it doesn not have to be there. " \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/dummyProvider.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/dummyProvider.st new file mode 100644 index 00000000..4436b183 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/dummyProvider.st @@ -0,0 +1,6 @@ +private +dummyProvider + + ^ ZnOpenIDProvider new + name: 'dummy' ; + yourself \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/encodeNonceFromTime.andDiscriminator..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/encodeNonceFromTime.andDiscriminator..st new file mode 100644 index 00000000..21500d7a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/encodeNonceFromTime.andDiscriminator..st @@ -0,0 +1,3 @@ +private +encodeNonceFromTime: dateTime andDiscriminator: aString + ^ (ZnOpenIDNonce encodeRFC3339Date: dateTime) , aString. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/generateSimpleXrdsForEndpoint.andLocalId..st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/generateSimpleXrdsForEndpoint.andLocalId..st new file mode 100644 index 00000000..5c8c0f2f --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/generateSimpleXrdsForEndpoint.andLocalId..st @@ -0,0 +1,4 @@ +private +generateSimpleXrdsForEndpoint: endpoint andLocalId: localId + ^ 'http://specs.openid.net/auth/2.0/signon' + , endpoint , '' , localId , '' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/generateValidNonce.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/generateValidNonce.st new file mode 100644 index 00000000..268911c7 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/generateValidNonce.st @@ -0,0 +1,3 @@ +private +generateValidNonce + ^ self encodeNonceFromTime: self currentTime andDiscriminator: '' \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/setUp.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/setUp.st new file mode 100644 index 00000000..db50bf61 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/setUp.st @@ -0,0 +1,3 @@ +running +setUp + ZnOpenIDNonceLocker reset. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/tearDown.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/tearDown.st new file mode 100644 index 00000000..782df8de --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/tearDown.st @@ -0,0 +1,3 @@ +running +tearDown + ZnOpenIDNonceLocker reset. \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testClaimedIdIsValidatedCorrectEndpoint.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testClaimedIdIsValidatedCorrectEndpoint.st new file mode 100644 index 00000000..8711984b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testClaimedIdIsValidatedCorrectEndpoint.st @@ -0,0 +1,14 @@ +tests +testClaimedIdIsValidatedCorrectEndpoint + | response service | + response := self defaultAuthResponse. + service := ZnOpenIDServiceDummy new. + service + doNotValidateEndpoint ; + doNotCheckSignature; + provider: self dummyProvider ; + claimedId: response claimedId + xrds: + 'http://specs.openid.net/auth/2.0/signonendpoint123123123'. + + self shouldnt: [ service validateAuthResponse: response ] raise: ZnOpenIDClaimedIDVerificationError \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testClaimedIdIsValidatedWorksWithsMultipleDefinitions.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testClaimedIdIsValidatedWorksWithsMultipleDefinitions.st new file mode 100644 index 00000000..00cf03b3 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testClaimedIdIsValidatedWorksWithsMultipleDefinitions.st @@ -0,0 +1,56 @@ +tests +testClaimedIdIsValidatedWorksWithsMultipleDefinitions + | response service xrdsDocument | + xrdsDocument := ' + + +http://specs.openid.net/auth/2.0/signon +http://openid.net/srv/ax/1.0 +http://specs.openid.net/extensions/ui/1.0/mode/popup +http://specs.openid.net/extensions/ui/1.0/icon +http://specs.openid.net/extensions/pape/1.0 +https://www.google.com/accounts/o8/ud + + +http://specs.openid.net/auth/2.0/signon +http://openid.net/srv/ax/1.0 +http://specs.openid.net/extensions/ui/1.0/mode/popup +http://specs.openid.net/extensions/ui/1.0/icon +http://specs.openid.net/extensions/pape/1.0 +https://www.google.com/accounts/o8/ud?source=mail + + +http://specs.openid.net/auth/2.0/signon +http://openid.net/srv/ax/1.0 +http://specs.openid.net/extensions/ui/1.0/mode/popup +http://specs.openid.net/extensions/ui/1.0/icon +http://specs.openid.net/extensions/pape/1.0 +https://www.google.com/accounts/o8/ud?source=gmail.com + + +http://specs.openid.net/auth/2.0/signon +http://openid.net/srv/ax/1.0 +http://specs.openid.net/extensions/ui/1.0/mode/popup +http://specs.openid.net/extensions/ui/1.0/icon +http://specs.openid.net/extensions/pape/1.0 +https://www.google.com/accounts/o8/ud?source=googlemail.com + + +http://specs.openid.net/auth/2.0/signon +http://openid.net/srv/ax/1.0 +http://specs.openid.net/extensions/ui/1.0/mode/popup +http://specs.openid.net/extensions/ui/1.0/icon +http://specs.openid.net/extensions/pape/1.0 +https://www.google.com/accounts/o8/ud?source=profiles + + +'. + response := self defaultAuthResponse + propertyAt: 'openid.op_endpoint' put: 'https://www.google.com/accounts/o8/ud?source=profiles'; + yourself. + service := ZnOpenIDServiceDummy new + doNotCheckSignature ; + claimedId: response claimedId xrds: xrdsDocument ; + provider: self dummyProvider ; + yourself. + "self shouldnt: [ "service validateAuthResponse: response." ] raise: CFOpenIDClaimedIDVerificationError" \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testClaimedIdIsValidatedWrongEndpoint.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testClaimedIdIsValidatedWrongEndpoint.st new file mode 100644 index 00000000..37f5ca61 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testClaimedIdIsValidatedWrongEndpoint.st @@ -0,0 +1,11 @@ +tests +testClaimedIdIsValidatedWrongEndpoint + | response service | + response := self defaultAuthResponse. + service := ZnOpenIDServiceDummy new + doNotCheckSignature ; + provider: self dummyProvider ; + claimedId: response claimedId + xrds: (self generateSimpleXrdsForEndpoint: 'endoint123' andLocalId: '123123'). + + self should: [ service validateAuthResponse: response ] raise: ZnOpenIDClaimedIDVerificationError \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testValidateResponseAcceptsNonceInOnlyInCertainTimeFrame.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testValidateResponseAcceptsNonceInOnlyInCertainTimeFrame.st new file mode 100644 index 00000000..c444eb9b --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testValidateResponseAcceptsNonceInOnlyInCertainTimeFrame.st @@ -0,0 +1,17 @@ +tests +testValidateResponseAcceptsNonceInOnlyInCertainTimeFrame + | response service nonce | + nonce := self encodeNonceFromTime: self currentTime - 2 minutes andDiscriminator: '123'. + ZnOpenIDNonceLocker + reset; + acceptedTimeFrame: 1 minute. + response := self defaultAuthResponse + propertyAt: 'openid.response_nonce' put: nonce; + yourself. + service := ZnOpenIDServiceDummy new + doNotValidateEndpoint ; + doNotCheckSignature ; + provider: self dummyProvider ; + yourself. + + self should: [ service validateAuthResponse: response ] raise: ZnOpenIDNonceTooOldError \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testValidateResponseAcceptsOnlyValidNonces.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testValidateResponseAcceptsOnlyValidNonces.st new file mode 100644 index 00000000..c28f414e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testValidateResponseAcceptsOnlyValidNonces.st @@ -0,0 +1,13 @@ +tests +testValidateResponseAcceptsOnlyValidNonces + | response service | + response := self defaultAuthResponse + propertyAt: 'openid.response_nonce' put: '123123123'; + yourself. + service := ZnOpenIDServiceDummy new + doNotValidateEndpoint ; + doNotCheckSignature ; + provider: self dummyProvider ; + yourself. + + self should: [ service validateAuthResponse: response ] raise: ZnOpenIDNonceInvalidError \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testValidateResponseAcceptsSameNonceOnlyOnceForSameProvider.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testValidateResponseAcceptsSameNonceOnlyOnceForSameProvider.st new file mode 100644 index 00000000..a8f2e916 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/instance/testValidateResponseAcceptsSameNonceOnlyOnceForSameProvider.st @@ -0,0 +1,12 @@ +tests +testValidateResponseAcceptsSameNonceOnlyOnceForSameProvider + | response service | + response := self defaultAuthResponse. + service := ZnOpenIDServiceDummy new + doNotValidateEndpoint ; + doNotCheckSignature ; + provider: self dummyProvider ; + yourself. + + self shouldnt: [ service validateAuthResponse: response ] raise: ZnOpenIDNonceSeenError. + self should: [ service validateAuthResponse: response ] raise: ZnOpenIDNonceSeenError \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/methodProperties.json new file mode 100644 index 00000000..d63016c5 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/methodProperties.json @@ -0,0 +1,18 @@ +{ + "class" : { + }, + "instance" : { + "currentTime" : "JanVanDeSandt 1/1/2013 16:13", + "defaultAuthResponse" : "JanVanDeSandt 1/1/2013 15:48", + "dummyProvider" : "JanVanDeSandt 1/2/2013 15:16", + "encodeNonceFromTime:andDiscriminator:" : "JanVanDeSandt 1/2/2013 14:36", + "generateSimpleXrdsForEndpoint:andLocalId:" : "PanuSuominen 11/25/2011 13:51", + "generateValidNonce" : "PanuSuominen 11/25/2011 13:23", + "setUp" : "JanVanDeSandt 1/2/2013 16:29", + "tearDown" : "JanVanDeSandt 1/2/2013 16:29", + "testClaimedIdIsValidatedCorrectEndpoint" : "JanVanDeSandt 1/2/2013 15:16", + "testClaimedIdIsValidatedWorksWithsMultipleDefinitions" : "JanVanDeSandt 1/2/2013 15:17", + "testClaimedIdIsValidatedWrongEndpoint" : "JanVanDeSandt 1/2/2013 15:18", + "testValidateResponseAcceptsNonceInOnlyInCertainTimeFrame" : "JanVanDeSandt 1/2/2013 16:29", + "testValidateResponseAcceptsOnlyValidNonces" : "JanVanDeSandt 1/2/2013 15:19", + "testValidateResponseAcceptsSameNonceOnlyOnceForSameProvider" : "JanVanDeSandt 1/2/2013 15:19" } } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/properties.json new file mode 100644 index 00000000..ea0dc68e --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnOpenIDServiceTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDServiceTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/README.md b/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/instance/testMultipleTypesOnService.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/instance/testMultipleTypesOnService.st new file mode 100644 index 00000000..146dc6d6 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/instance/testMultipleTypesOnService.st @@ -0,0 +1,18 @@ +tests +testMultipleTypesOnService + + | xrdsDocument expected services | + + xrdsDocument := ' + http://specs.openid.net/auth/2.0/signon + http://openid.net/srv/ax/1.0 + http://specs.openid.net/extensions/ui/1.0/mode/popup + http://specs.openid.net/extensions/ui/1.0/icon + http://specs.openid.net/extensions/pape/1.0 +endpointabcdlocalid123'. + expected := ZnXRDOpenIDClaimedId new + opEndpoint: 'endpointabcd'; + localId: 'localid123'; + yourself. + services := ZnXRDService parseServicesFromXrds: xrdsDocument. + self assert: (services anySatisfy: [ :e | e = expected ]) \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/instance/testSingleOpenID20ClaimedIdTypeOnService.st b/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/instance/testSingleOpenID20ClaimedIdTypeOnService.st new file mode 100644 index 00000000..0b459522 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/instance/testSingleOpenID20ClaimedIdTypeOnService.st @@ -0,0 +1,12 @@ +tests +testSingleOpenID20ClaimedIdTypeOnService + + | xrdsDocument expected services | + + xrdsDocument := 'http://specs.openid.net/auth/2.0/signonendpointabcdlocalid123'. + expected := ZnXRDOpenIDClaimedId new + opEndpoint: 'endpointabcd'; + localId: 'localid123'; + yourself. + services := ZnXRDService parseServicesFromXrds: xrdsDocument. + self assert: (services anySatisfy: [ :e | e = expected ]) \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/methodProperties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/methodProperties.json new file mode 100644 index 00000000..8216ff30 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "testMultipleTypesOnService" : "JanVanDeSandt 1/2/2013 14:31", + "testSingleOpenID20ClaimedIdTypeOnService" : "JanVanDeSandt 1/2/2013 14:33" } } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/properties.json new file mode 100644 index 00000000..fbea0329 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/ZnXRDServiceTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-OpenID-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnXRDServiceTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/categories.st b/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/categories.st new file mode 100644 index 00000000..ac1986a4 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-SSO-OpenID-Tests'! diff --git a/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/initializers.st b/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/package b/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/package new file mode 100644 index 00000000..5cadc5a0 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-SSO-OpenID-Tests') \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/version b/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/version new file mode 100644 index 00000000..47778686 --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.3' message 'SmallLint fixes' id '2a6e0505-62b1-4d49-b4a6-0b376885c2eb' date '16 January 2013' time '10:31:58.606 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.2' message 'Removed CloudforkSSO dependencies' id 'aa9bdd25-6b29-4d88-bee8-d8ed482d36be' date '2 January 2013' time '4:41:47.42 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-OpenID-Tests-JanVanDeSandt.1' message 'Initial port from CloudforkSSO' id 'dbb7e3eb-2e29-6c43-b6b3-ea76dc0bf28d' date '1 January 2013' time '4:37:27.576 pm' author 'JanVanDeSandt' ancestors () stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-SSO-OpenID-Tests.package/properties.json b/repository/Zinc-SSO-OpenID-Tests.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-SSO-OpenID-Tests.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/.filetree b/repository/Zinc-SSO-Seaside-Demo.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/instance/renderContentOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/instance/renderContentOn..st new file mode 100644 index 00000000..be9b8f3c --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/instance/renderContentOn..st @@ -0,0 +1,16 @@ +rendering +renderContentOn: html + + html heading + with: 'About'. + + html paragraph: [ + html text: 'This is a simple demo application that shows the functionality of Zinc-SSO. '. + html text: 'Documentation is available on '. + html anchor + url: 'https://github.com/svenvc/docs/blob/master/zinc/zinc-sso-paper.md' ; + with: 'GitHub'. + html text: '.' ]. + + html paragraph: [ + html emphasis: '(Please note that Zinc-SSO is currently in development. This is alpha code.) ' ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/methodProperties.json new file mode 100644 index 00000000..b99ecc2d --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "renderContentOn:" : "JanVanDeSandt 1/5/2013 17:45" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/properties.json new file mode 100644 index 00000000..1b35136a --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOAboutPanel.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnSSOAboutPanel", + "pools" : [ + ], + "super" : "ZnSSOSeasideDemoPanel", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/README.md new file mode 100644 index 00000000..5d6e7a84 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/README.md @@ -0,0 +1 @@ +A ZnSSOSeasideDemo is Seaside component that demonstrates how Zinc-SSO and Seaside can be used together. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/canBeRoot.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/canBeRoot.st new file mode 100644 index 00000000..8ac8b64d --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/canBeRoot.st @@ -0,0 +1,3 @@ +testing +canBeRoot + ^true \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/initialize.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/initialize.st new file mode 100644 index 00000000..fbb448bd --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/initialize.st @@ -0,0 +1,4 @@ +class initialization +initialize + + self register \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/register.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/register.st new file mode 100644 index 00000000..9f9b74f2 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/register.st @@ -0,0 +1,22 @@ +class initialization +register + + | application | + + application := WAAdmin register: self asApplicationAt: 'zinc-sso-demo'. + + application configuration + addParent: ZnOpenIDConfiguration instance ; + addParent: ZnOAuth1TwitterConfiguration instance ; + addParent: ZnOAuth2FacebookConfiguration instance ; + addParent: ZnOAuth2GoogleConfiguration instance ; + addParent: ZnOAuth2MicrosoftConfiguration instance. + + application + addLibrary: ZnSSOSeasideDemoFileLibrary. + + application + preferenceAt: #oauth2GoogleRedirectUrl put: 'http://localhost:8080/oauth2callback'. + self registerCallbackHandlerAt: 'oauth2callback'. + + ^ application \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/registerCallbackHandlerAt..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/registerCallbackHandlerAt..st new file mode 100644 index 00000000..c5e8867e --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/class/registerCallbackHandlerAt..st @@ -0,0 +1,5 @@ +class initialization +registerCallbackHandlerAt: aKey + "setup an oauth2 callback handler" + + WAAdmin register: ZnOAuth2CallbackHandler at: aKey \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/actionAbout.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/actionAbout.st new file mode 100644 index 00000000..0c9bee57 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/actionAbout.st @@ -0,0 +1,4 @@ +actions +actionAbout + + self responsePanel: ZnSSOAboutPanel new \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/clearResponsePanel.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/clearResponsePanel.st new file mode 100644 index 00000000..28136343 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/clearResponsePanel.st @@ -0,0 +1,4 @@ +actions +clearResponsePanel + + responsePanel := nil \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/handleCallback.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/handleCallback.st new file mode 100644 index 00000000..64129fd9 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/handleCallback.st @@ -0,0 +1,4 @@ +actions +handleCallback + + self responsePanel handleCallback \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/openIDSingleSignOn.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/openIDSingleSignOn.st new file mode 100644 index 00000000..419018e1 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/openIDSingleSignOn.st @@ -0,0 +1,4 @@ +resources +openIDSingleSignOn + + ^ZnOpenIDSingleSignOn default \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderAnchor.title.imageUrl.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderAnchor.title.imageUrl.on..st new file mode 100644 index 00000000..3da02fb8 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderAnchor.title.imageUrl.on..st @@ -0,0 +1,4 @@ +rendering +renderAnchor: aBlock title: aTitle imageUrl: anUrl on: html + + self renderAnchor: aBlock title: aTitle imageUrl: anUrl target: nil on: html \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderAnchor.title.imageUrl.target.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderAnchor.title.imageUrl.target.on..st new file mode 100644 index 00000000..6037ae6f --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderAnchor.title.imageUrl.target.on..st @@ -0,0 +1,14 @@ +rendering +renderAnchor: aBlock title: aTitle imageUrl: anUrl target: aTarget on: html + + html div + class: 'provider-link' ; + with: [ + html anchor + target: aTarget ; + callback: aBlock ; + with: [ + html image + altText: aTitle ; + title: aTitle ; + url: anUrl ] ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderContentOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderContentOn..st new file mode 100644 index 00000000..027003b8 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderContentOn..st @@ -0,0 +1,15 @@ +rendering +renderContentOn: html + + self renderHeaderOn: html. + + html div + style: 'clear: both; ' ; + with: [ + self responsePanel notNil + ifTrue: [ + html render: self responsePanel. + html horizontalRule ] + ifFalse: [ + self renderSignInOptionsOn: html ]. + self renderMenuOn: html ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderHeaderOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderHeaderOn..st new file mode 100644 index 00000000..4777c90e --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderHeaderOn..st @@ -0,0 +1,11 @@ +rendering +renderHeaderOn: html + + html anchor + id: 'logo' ; + callback: [ self actionAbout ] ; + with: 'Zn'. + + html heading + level1 ; + with: 'Zinc-SSO Seaside demo application' \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderMenuOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderMenuOn..st new file mode 100644 index 00000000..369a81c5 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderMenuOn..st @@ -0,0 +1,13 @@ +rendering +renderMenuOn: html + + html anchor + callback: [ self clearResponsePanel ] ; + with: 'Reset'. + + html text: ' | '. + + html anchor + callback: [ self actionAbout ] ; + with: 'About' + diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderOAuth1Providers.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderOAuth1Providers.on..st new file mode 100644 index 00000000..15b523f1 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderOAuth1Providers.on..st @@ -0,0 +1,13 @@ +rendering +renderOAuth1Providers: aCallbackUrl on: html + + html heading + level2 ; + with: 'OAuth1 providers'. + + html anchor + callback: [ self signOnUsingOAuth1Twitter: aCallbackUrl ] ; + with: [ + html image + url: (ZnSSOSeasideDemoFileLibrary urlOf: #ssoTwitterGrayPng ) ; + title: ' Sign in with Twitter' ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderOAuth2Providers.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderOAuth2Providers.on..st new file mode 100644 index 00000000..f7861f5f --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderOAuth2Providers.on..st @@ -0,0 +1,18 @@ +rendering +renderOAuth2Providers: aCallbackUrl on: html + + html heading + level2 ; + with: 'OAuth2 providers'. + + html anchor + callback: [ self signOnUsingOAuth2Facebook: aCallbackUrl ] ; + with: 'Facebook'. + html text: ' | '. + html anchor + callback: [ self signOnUsingOAuth2Google: aCallbackUrl ] ; + with: 'Google'. + html text: ' | '. + html anchor + callback: [ self signOnUsingOAuth2Microsoft: aCallbackUrl ] ; + with: 'Microsoft' \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderOpenID2SignInOptions.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderOpenID2SignInOptions.on..st new file mode 100644 index 00000000..d9c463ee --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderOpenID2SignInOptions.on..st @@ -0,0 +1,13 @@ +rendering +renderOpenID2SignInOptions: aCallbackUrl on: html + + html heading + level2; + with: 'OpenID2 providers:'. + + html div: [ + self openIDSingleSignOn providers do: [ :each | + self renderAnchor: [ self signOnUsingOpenID2: each name callbackUrl: aCallbackUrl ] + title: each altText + imageUrl: each imgUrl + on: html ] ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderSignInOptionsOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderSignInOptionsOn..st new file mode 100644 index 00000000..9b6b74a3 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/renderSignInOptionsOn..st @@ -0,0 +1,18 @@ +rendering +renderSignInOptionsOn: html + + | callback url | + + callback := WAActionCallback on: [ self handleCallback ] . + url := html actionUrl copy addField: (html callbacks store: callback). + url takeServerParametersFromRequest: self requestContext request. + + self renderOAuth2Providers: url on: html. + html horizontalRule. + self renderOAuth1Providers: url on: html. + html horizontalRule. + self renderOpenID2SignInOptions: url on: html. + html horizontalRule + style: 'clear: both;' + + \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/responsePanel..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/responsePanel..st new file mode 100644 index 00000000..0d42f337 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/responsePanel..st @@ -0,0 +1,4 @@ +accessing +responsePanel: aComponent + + responsePanel := aComponent \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/responsePanel.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/responsePanel.st new file mode 100644 index 00000000..8fc3f26b --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/responsePanel.st @@ -0,0 +1,4 @@ +accessing +responsePanel + + ^responsePanel \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth1Twitter..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth1Twitter..st new file mode 100644 index 00000000..9e7f4647 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth1Twitter..st @@ -0,0 +1,5 @@ +actions +signOnUsingOAuth1Twitter: aCallbackUrl + + self responsePanel: ZnSSOSeasideTwitterOAuth1DemoPanel new. + self responsePanel gotoSignOn: aCallbackUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth2Facebook..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth2Facebook..st new file mode 100644 index 00000000..fbfc9642 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth2Facebook..st @@ -0,0 +1,5 @@ +actions +signOnUsingOAuth2Facebook: aCallbackUrl + + self responsePanel: ZnSSOSeasideFacebookDemoPanel new. + self responsePanel gotoSignOn: aCallbackUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth2Google..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth2Google..st new file mode 100644 index 00000000..f016c8fc --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth2Google..st @@ -0,0 +1,5 @@ +actions +signOnUsingOAuth2Google: aCallbackUrl + + self responsePanel: ZnSSOSeasideGoogleOAuth2DemoPanel new. + self responsePanel gotoSignOn: aCallbackUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth2Microsoft..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth2Microsoft..st new file mode 100644 index 00000000..bc66046f --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOAuth2Microsoft..st @@ -0,0 +1,5 @@ +actions +signOnUsingOAuth2Microsoft: aCallbackUrl + + self responsePanel: ZnSSOSeasideMicrosoftDemoPanel new. + self responsePanel gotoSignOn: aCallbackUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOpenID2.callbackUrl..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOpenID2.callbackUrl..st new file mode 100644 index 00000000..ca3cc778 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/signOnUsingOpenID2.callbackUrl..st @@ -0,0 +1,14 @@ +actions +signOnUsingOpenID2: aProviderName callbackUrl: aUrl + "Redirect to the sign in page of the OpenID provider." + + | providerSession | + + providerSession := self openIDSingleSignOn sessionForProviderNamed: aProviderName. + + self responsePanel: (ZnSSOSeasideOpenIDDemoPanel new + setProviderSession: providerSession ; + "openIDoptionsForm: self openIDoptionsForm ;" + yourself ). + + self responsePanel gotoSignOn: aUrl \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/updateRoot..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/updateRoot..st new file mode 100644 index 00000000..c7393360 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/instance/updateRoot..st @@ -0,0 +1,6 @@ +updating +updateRoot: aHtmlRoot + + super updateRoot: aHtmlRoot. + + aHtmlRoot title: 'Zinc-SSO Seaside demo application' \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/methodProperties.json new file mode 100644 index 00000000..30d0672f --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/methodProperties.json @@ -0,0 +1,28 @@ +{ + "class" : { + "canBeRoot" : "JanVanDeSandt 12/7/2012 13:19", + "initialize" : "JanVanDeSandt 12/7/2012 13:19", + "register" : "JanVanDeSandt 1/2/2013 12:01", + "registerCallbackHandlerAt:" : "JanVanDeSandt 12/7/2012 15:50" }, + "instance" : { + "actionAbout" : "JanVanDeSandt 12/26/2012 12:51", + "clearResponsePanel" : "JanVanDeSandt 12/7/2012 14:58", + "handleCallback" : "JanVanDeSandt 12/7/2012 13:43", + "openIDSingleSignOn" : "JanVanDeSandt 1/2/2013 11:35", + "renderAnchor:title:imageUrl:on:" : "JanVanDeSandt 1/2/2013 11:38", + "renderAnchor:title:imageUrl:target:on:" : "JanVanDeSandt 1/5/2013 17:34", + "renderContentOn:" : "JanVanDeSandt 12/26/2012 12:54", + "renderHeaderOn:" : "JanVanDeSandt 12/26/2012 12:43", + "renderMenuOn:" : "JanVanDeSandt 12/26/2012 12:53", + "renderOAuth1Providers:on:" : "JanVanDeSandt 1/4/2013 23:33", + "renderOAuth2Providers:on:" : "JanVanDeSandt 12/7/2012 20:55", + "renderOpenID2SignInOptions:on:" : "JanVanDeSandt 1/2/2013 11:40", + "renderSignInOptionsOn:" : "JanVanDeSandt 1/5/2013 17:36", + "responsePanel" : "JanVanDeSandt 12/7/2012 13:53", + "responsePanel:" : "JanVanDeSandt 12/7/2012 13:53", + "signOnUsingOAuth1Twitter:" : "JanVanDeSandt 12/22/2012 13:09", + "signOnUsingOAuth2Facebook:" : "JanVanDeSandt 12/7/2012 13:29", + "signOnUsingOAuth2Google:" : "JanVanDeSandt 12/7/2012 15:10", + "signOnUsingOAuth2Microsoft:" : "JanVanDeSandt 12/7/2012 20:56", + "signOnUsingOpenID2:callbackUrl:" : "JanVanDeSandt 1/5/2013 17:28", + "updateRoot:" : "JanVanDeSandt 12/9/2012 13:12" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/properties.json new file mode 100644 index 00000000..33ef8fe2 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemo.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "responsePanel" ], + "name" : "ZnSSOSeasideDemo", + "pools" : [ + ], + "super" : "WAComponent", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/README.md new file mode 100644 index 00000000..ef4aa881 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/README.md @@ -0,0 +1 @@ +Resource file library for the Zinc-SSO Seaside demo application. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/instance/selectorsToInclude.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/instance/selectorsToInclude.st new file mode 100644 index 00000000..5076e3f9 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/instance/selectorsToInclude.st @@ -0,0 +1,3 @@ +accessing +selectorsToInclude + ^#( styleCss ) \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/instance/ssoTwitterGrayPng.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/instance/ssoTwitterGrayPng.st new file mode 100644 index 00000000..8ef53863 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/instance/ssoTwitterGrayPng.st @@ -0,0 +1,4 @@ +uploaded +ssoTwitterGrayPng + + ^ #[137 80 78 71 13 10 26 10 0 0 0 13 73 72 68 82 0 0 0 158 0 0 0 28 8 6 0 0 0 144 253 6 168 0 0 0 25 116 69 88 116 83 111 102 116 119 97 114 101 0 65 100 111 98 101 32 73 109 97 103 101 82 101 97 100 121 113 201 101 60 0 0 10 176 73 68 65 84 120 218 236 91 105 76 84 89 22 62 175 168 42 40 150 42 144 101 16 16 84 108 69 219 29 181 113 223 104 130 49 154 56 26 76 251 195 196 184 140 75 20 109 163 25 165 213 25 167 69 29 141 49 26 141 49 26 151 232 15 151 184 235 216 160 198 133 184 199 24 117 100 105 117 68 180 85 196 5 44 10 89 10 230 125 7 111 205 227 81 69 21 19 202 118 38 239 75 174 239 221 247 222 189 247 220 115 191 123 150 91 40 221 190 125 155 100 124 35 151 53 114 73 150 139 153 52 104 104 121 148 201 229 156 92 254 156 152 152 248 171 36 19 175 147 92 185 30 19 19 19 28 26 26 74 62 62 62 154 138 52 180 56 236 118 59 189 125 251 150 158 63 127 254 65 174 38 233 229 127 50 65 186 136 136 8 77 59 26 188 6 24 180 207 28 11 150 201 151 9 226 37 183 106 213 138 234 234 234 52 237 104 240 58 224 85 101 226 165 128 120 102 157 78 167 17 79 195 23 129 36 73 184 4 130 120 26 233 52 124 113 48 241 106 107 107 53 77 104 248 242 196 115 103 241 206 254 250 27 165 126 19 229 242 253 63 139 75 105 218 153 187 84 84 94 131 222 40 41 50 136 254 58 56 129 190 141 176 208 181 162 18 254 166 127 155 48 77 219 26 60 39 222 181 231 111 233 199 75 5 84 39 233 40 53 254 15 141 222 23 149 217 40 237 31 185 100 53 133 147 62 216 132 206 232 86 101 5 165 253 146 79 49 126 236 207 233 199 196 56 205 157 107 104 158 171 125 248 254 19 149 7 132 210 159 174 60 163 159 74 109 52 181 103 92 131 247 135 10 138 201 26 24 74 58 115 8 73 62 6 126 86 87 83 77 229 149 54 202 175 174 162 32 201 78 191 20 149 82 114 92 168 211 254 239 220 185 67 175 95 191 230 251 174 93 187 82 155 54 109 248 190 162 162 130 10 11 11 41 60 60 156 51 161 150 4 206 147 222 188 121 67 113 113 113 100 50 153 188 162 88 119 242 55 103 126 66 94 87 72 72 72 248 170 230 222 34 22 47 181 125 56 253 92 88 75 82 160 133 126 126 88 66 89 207 222 209 252 94 109 40 41 166 94 89 121 214 90 210 249 7 145 164 55 254 39 115 49 24 229 186 158 234 236 53 52 61 206 64 233 157 130 169 186 186 186 145 226 87 172 88 65 55 110 220 104 240 60 37 37 133 50 50 50 120 81 102 204 152 65 75 150 44 161 212 212 212 22 157 244 205 155 55 105 245 234 213 180 125 251 118 234 212 169 147 87 20 171 150 255 202 149 43 116 249 242 101 154 60 121 50 111 174 230 204 79 200 235 10 151 46 93 250 175 231 126 248 240 97 202 207 207 103 157 11 172 90 181 138 223 77 152 48 225 247 35 94 77 77 13 109 232 21 70 11 115 109 228 19 26 73 183 172 165 244 195 133 127 81 180 254 17 37 69 135 208 71 93 0 145 143 222 89 226 76 253 45 58 154 215 209 66 85 85 85 141 222 30 56 112 128 73 183 124 249 114 26 61 122 52 149 148 148 240 132 179 178 178 104 240 224 193 212 175 95 63 218 189 123 55 133 132 132 180 184 155 78 74 74 226 190 91 183 110 237 181 16 0 22 69 41 63 54 26 230 134 197 84 142 233 201 81 86 124 124 60 235 137 61 204 161 67 148 155 155 75 211 167 79 103 249 155 123 42 161 158 123 65 65 1 203 181 116 233 82 199 55 168 227 216 195 155 225 145 143 188 235 254 34 14 144 157 149 172 167 37 244 183 251 111 201 207 63 128 170 244 190 36 249 154 72 103 10 32 171 143 47 229 86 16 189 168 51 146 206 224 11 13 54 236 185 214 78 9 250 74 74 137 48 58 237 247 236 217 179 244 248 241 99 26 56 112 32 91 0 163 209 72 237 219 183 167 238 221 187 83 84 84 20 85 86 86 210 254 253 251 201 207 207 143 223 163 13 118 231 156 57 115 232 212 169 83 20 25 25 73 251 246 237 99 55 221 185 115 103 126 119 236 216 49 30 122 225 194 133 180 117 235 86 110 211 163 71 143 70 99 227 247 233 211 167 79 243 130 126 248 240 129 182 108 217 66 229 229 229 116 240 224 65 94 224 171 87 175 82 135 14 29 216 5 42 219 229 229 229 177 165 192 183 104 139 205 178 113 227 70 135 12 248 38 51 51 147 238 222 189 203 50 11 249 97 221 176 209 224 230 138 139 139 201 215 215 151 2 3 3 233 228 201 147 212 171 87 47 58 114 228 136 99 92 204 223 108 54 55 24 55 44 44 140 229 193 152 247 238 221 163 71 143 30 209 236 217 179 121 115 226 217 153 51 103 88 246 128 128 0 214 11 194 151 93 187 118 177 46 32 199 179 103 207 28 115 124 255 254 189 99 238 32 216 249 243 231 249 249 139 23 47 120 179 224 187 39 79 158 208 199 143 31 153 148 131 6 13 34 155 205 198 115 89 176 96 1 147 22 50 117 236 216 145 244 178 87 131 37 199 58 8 75 9 249 208 198 21 159 80 222 189 123 71 58 177 99 92 21 184 90 139 191 31 149 213 212 91 49 184 84 201 20 72 58 139 28 215 89 194 72 231 39 91 60 93 227 223 119 235 228 184 177 115 160 143 203 126 251 244 233 195 223 97 161 102 206 156 201 138 194 228 33 52 38 133 201 66 49 184 10 162 66 41 163 70 141 162 89 179 102 177 34 178 179 179 121 17 240 30 87 212 161 84 188 239 223 191 63 237 217 179 135 21 163 30 91 217 55 44 17 218 173 93 187 150 186 116 233 194 202 133 194 65 40 117 187 182 109 219 242 183 32 56 234 176 60 168 67 46 65 76 212 131 131 131 27 140 1 50 180 107 215 206 17 199 162 46 172 201 166 77 155 26 140 139 197 83 143 11 175 3 175 129 34 218 225 183 79 241 12 214 11 227 62 120 240 128 223 227 138 122 78 78 78 3 57 65 104 165 92 209 209 209 4 163 3 128 196 32 46 174 0 158 227 30 237 119 238 220 201 186 132 140 40 184 23 250 17 250 195 198 193 70 197 92 154 226 147 144 223 109 114 97 146 77 238 129 193 209 180 232 161 149 174 151 213 49 249 8 167 207 146 15 73 186 38 254 160 64 142 239 198 197 154 93 246 141 88 14 110 6 150 10 138 129 210 1 236 238 117 235 214 53 48 243 232 3 196 132 85 65 44 2 165 247 237 219 151 198 142 29 75 106 249 241 222 98 177 112 208 126 237 218 53 86 140 43 25 148 99 76 155 54 141 198 143 31 207 247 215 175 95 231 182 234 118 6 131 129 38 78 156 200 214 11 1 58 44 3 126 127 132 21 3 233 96 89 0 97 101 5 96 173 18 19 19 121 243 192 213 193 218 32 174 242 116 92 103 192 55 226 59 140 7 57 96 49 39 77 154 196 87 212 65 176 69 139 22 177 5 4 122 247 238 205 113 166 152 251 128 1 3 184 14 217 177 30 32 56 174 32 63 54 25 238 95 190 124 201 22 25 114 142 27 55 142 219 194 26 238 216 177 131 199 18 128 94 230 205 155 199 107 3 111 229 14 58 229 36 156 21 116 100 43 183 82 130 177 154 190 51 235 248 184 196 45 228 111 146 44 18 69 24 92 247 253 233 211 39 26 57 114 36 79 0 11 185 108 217 50 206 206 224 190 78 156 56 225 88 56 92 241 61 22 58 54 54 150 221 2 218 42 51 50 229 66 225 57 222 131 36 234 69 18 69 217 183 184 7 81 65 82 20 88 6 103 237 160 11 184 66 78 170 228 197 2 73 144 32 96 145 225 78 177 192 184 239 214 173 91 131 49 144 88 161 45 128 123 148 230 140 171 44 202 77 35 158 193 234 141 25 51 134 201 12 185 112 133 92 66 78 16 48 45 45 141 127 168 87 202 5 130 136 58 116 6 226 225 42 222 227 30 225 1 128 117 26 50 100 8 23 220 139 4 81 180 199 90 90 173 86 199 70 119 55 7 143 14 144 163 252 13 100 175 148 45 222 155 26 146 252 76 245 86 175 41 222 217 171 41 35 33 200 161 108 167 217 242 231 76 238 232 209 163 108 214 71 140 24 193 187 108 234 212 169 76 46 181 101 2 41 177 176 112 17 32 23 172 164 51 203 37 198 84 62 243 36 72 86 146 176 169 118 61 123 246 228 43 226 42 44 112 76 76 12 13 27 54 140 46 94 188 200 25 35 22 88 157 76 53 213 175 167 227 186 179 216 112 225 192 222 189 123 29 68 64 60 42 234 176 178 106 75 234 78 71 120 6 247 43 44 51 226 113 37 224 157 132 149 7 105 155 147 140 184 181 120 40 232 52 163 71 4 229 12 15 167 244 88 61 197 24 107 93 91 62 57 169 88 22 239 75 109 141 77 247 9 130 1 155 55 111 230 96 31 65 233 182 109 219 248 25 220 146 80 146 216 217 112 71 176 122 200 230 16 143 173 92 185 178 193 123 49 105 245 206 82 90 6 181 197 115 245 157 179 190 68 65 120 128 248 17 36 3 144 16 97 81 69 29 22 209 89 191 162 79 88 31 16 182 185 227 186 251 6 238 28 184 117 235 22 111 106 88 30 108 8 212 133 155 117 214 94 212 225 78 225 109 132 92 216 228 144 21 241 35 54 253 241 227 199 89 255 40 72 220 224 194 149 150 219 29 135 212 235 226 54 185 80 6 228 101 114 6 88 109 179 82 105 69 21 255 52 230 36 163 160 41 173 117 52 41 202 224 216 1 174 10 136 4 5 93 184 112 129 207 178 210 211 211 89 73 243 231 207 167 228 228 228 70 22 1 22 113 205 154 53 76 74 4 177 32 159 39 22 164 169 0 215 153 197 115 215 22 138 27 62 124 184 195 106 67 249 200 76 5 212 241 157 104 135 248 20 11 136 196 164 168 168 168 217 227 186 178 140 162 192 141 194 218 2 144 7 207 224 242 249 231 74 121 163 32 139 118 54 206 208 161 67 57 60 128 117 68 182 137 103 88 3 16 108 195 134 13 188 142 56 111 133 206 23 47 94 204 229 233 211 167 124 114 128 140 221 83 185 213 115 192 95 32 215 33 187 113 133 159 114 30 209 111 182 106 122 81 97 167 151 118 61 255 66 161 11 10 33 201 232 87 159 100 124 134 89 178 211 223 59 155 104 104 176 196 36 117 7 156 19 65 25 88 56 97 174 17 195 193 162 160 61 98 180 160 160 32 190 71 172 113 238 220 57 186 127 255 62 7 177 200 122 113 63 119 238 92 154 50 101 10 147 24 223 162 13 148 39 18 1 101 123 37 160 48 127 127 127 14 146 1 245 119 234 190 212 16 237 33 59 250 128 204 200 100 1 28 87 64 185 234 241 113 244 128 249 138 249 33 36 104 238 184 202 111 48 174 250 80 30 253 227 88 74 244 137 99 27 184 74 144 167 172 172 172 209 220 209 30 223 160 142 245 16 207 80 199 119 0 100 17 178 139 4 80 252 186 132 24 81 221 159 39 192 233 5 19 79 28 68 58 3 6 60 90 88 74 231 139 43 41 251 93 45 159 227 73 122 67 253 17 138 172 224 239 204 18 141 143 52 208 247 17 70 210 85 218 156 30 22 187 35 32 38 230 46 78 64 144 139 221 134 247 136 103 112 100 128 182 235 215 175 231 67 90 13 222 135 72 216 154 27 207 169 129 76 153 137 135 115 165 166 0 86 99 39 161 168 1 150 131 249 202 12 201 43 63 177 200 228 196 132 17 75 193 90 32 3 196 89 32 198 199 115 13 255 59 120 245 234 149 103 89 173 72 247 127 79 128 96 136 99 16 147 136 96 86 153 206 107 248 63 251 235 148 175 9 144 211 211 56 66 195 215 79 188 50 121 65 205 146 36 105 218 208 224 117 124 246 80 86 16 239 156 156 1 253 81 100 49 26 52 120 19 159 51 248 44 16 47 163 188 188 124 132 204 196 96 164 214 154 229 211 224 45 75 135 4 212 102 179 225 63 116 103 128 120 121 114 73 146 31 100 202 229 123 249 62 72 83 147 6 47 0 135 166 217 114 89 154 152 152 152 255 111 1 6 0 115 128 54 145 95 137 60 192 0 0 0 0 73 69 78 68 174 66 96 130] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/instance/styleCss.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/instance/styleCss.st new file mode 100644 index 00000000..edd99aaf --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/instance/styleCss.st @@ -0,0 +1,20 @@ +resources +styleCss + + ^' +#logo { + float: left; + color: orange; + font-family: Helvetica, sans-serif; + font-weight: bold; + font-size: 100px; + text-decoration:none; + margin-right: 24px; + } + +.provider-link { + float: left ; + padding-right: 20px; + padding-bottom: 12px; + min-height: 50px; + }' \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/methodProperties.json new file mode 100644 index 00000000..cd20ff6d --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "selectorsToInclude" : "JanVanDeSandt 12/9/2012 13:09", + "ssoTwitterGrayPng" : "JanVanDeSandt 1/5/2013 22:39", + "styleCss" : "JanVanDeSandt 1/5/2013 17:38" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/properties.json new file mode 100644 index 00000000..61f008d0 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoFileLibrary.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnSSOSeasideDemoFileLibrary", + "pools" : [ + ], + "super" : "WAFileLibrary", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/README.md new file mode 100644 index 00000000..2bef85d7 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/README.md @@ -0,0 +1 @@ +Abstract Seaside component with common functionality for the different SSO providers. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/instance/renderImage.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/instance/renderImage.on..st new file mode 100644 index 00000000..756946ae --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/instance/renderImage.on..st @@ -0,0 +1,6 @@ +rendering +renderImage: aString on: html + + html image + style: 'position: absolute; right: 20px; top: 60px; ' ; + url: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/instance/renderJSONDict.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/instance/renderJSONDict.on..st new file mode 100644 index 00000000..42727234 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/instance/renderJSONDict.on..st @@ -0,0 +1,13 @@ +rendering +renderJSONDict: jsonDict on: html + + html unorderedList: [ + jsonDict keysAndValuesDo: [ :key :value | + html listItem: [ + html text: key. + value isDictionary + ifTrue: [ + html text: ':'. + self renderJSONDict: value on: html ] + ifFalse: [ + html text: ' --> '; text: value ] ] ] ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/instance/renderLink.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/instance/renderLink.on..st new file mode 100644 index 00000000..3d77f8aa --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/instance/renderLink.on..st @@ -0,0 +1,8 @@ +rendering +renderLink: aString on: html + + html anchor + url: aString ; + target: '_blank' ; + with: 'Profile' + \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/methodProperties.json new file mode 100644 index 00000000..fd08aa56 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "renderImage:on:" : "JanVanDeSandt 12/26/2012 22:28", + "renderJSONDict:on:" : "JanVanDeSandt 12/7/2012 14:20", + "renderLink:on:" : "JanVanDeSandt 12/26/2012 22:28" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/properties.json new file mode 100644 index 00000000..634cff36 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideDemoPanel.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnSSOSeasideDemoPanel", + "pools" : [ + ], + "super" : "WAComponent", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/README.md new file mode 100644 index 00000000..1cfde30e --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/README.md @@ -0,0 +1 @@ +Seaside component that handles the Facebook SSO callback and displays profile information. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/instance/gotoSignOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/instance/gotoSignOn..st new file mode 100644 index 00000000..6cc6d3db --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/instance/gotoSignOn..st @@ -0,0 +1,11 @@ +actions +gotoSignOn: aCallbackUrl + "Redirect to the Facebook sigon webpage." + + oauthSession := (ZnOAuth2Session facebook: self oauthConsumerData) + redirectUrl: aCallbackUrl greaseString ; + yourself. + + self requestContext + redirectTo: oauthSession authenticationUrl ; + respond \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/instance/oauthConsumerData.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/instance/oauthConsumerData.st new file mode 100644 index 00000000..d4b3ecb7 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/instance/oauthConsumerData.st @@ -0,0 +1,6 @@ +resources +oauthConsumerData + + ^ ZnOAuth2ConsumerData + key: (self application preferenceAt: #oauthFacebookClientId) + secret: (self application preferenceAt: #oauthFacebookClientSecret) \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/instance/renderContentOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/instance/renderContentOn..st new file mode 100644 index 00000000..5abde496 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/instance/renderContentOn..st @@ -0,0 +1,17 @@ +rendering +renderContentOn: html + + html heading + level3 ; + with: 'Facebook user data'. + + userData isNil + ifTrue: [ + html strong: 'No user data'. + ^ self ]. + + self renderJSONDict: userData on: html. + + userData at: 'link' ifPresent: [ :link | self renderLink: link on: html ]. + userData at: 'username' ifPresent: [ :name | + self renderImage: ('http://graph.facebook.com/', name, '/picture?type=large') on: html ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/methodProperties.json new file mode 100644 index 00000000..272b3b0f --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "gotoSignOn:" : "JanVanDeSandt 12/7/2012 15:34", + "oauthConsumerData" : "JanVanDeSandt 12/7/2012 15:06", + "renderContentOn:" : "JanVanDeSandt 12/7/2012 17:19" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/properties.json new file mode 100644 index 00000000..fc55b8ea --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideFacebookDemoPanel.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnSSOSeasideFacebookDemoPanel", + "pools" : [ + ], + "super" : "ZnSSOSeasideOAuth2DemoPanel", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/README.md new file mode 100644 index 00000000..685fa984 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/README.md @@ -0,0 +1 @@ +Seaside component that handles the Google SSO callback and displays profile information. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/instance/gotoSignOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/instance/gotoSignOn..st new file mode 100644 index 00000000..e03bc7cc --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/instance/gotoSignOn..st @@ -0,0 +1,18 @@ +actions +gotoSignOn: aCallbackUrl + "Redirect to the Facebook sigon webpage." + + | state | + + oauthSession := (ZnOAuth2Session google: self oauthConsumerData) + yourself. + + state := String streamContents: [ :stream | + stream + nextPutAll: aCallbackUrl pathString ; + nextPut: $? ; + nextPutAll: aCallbackUrl queryString ]. + + self requestContext + redirectTo: (oauthSession authenticationUrlWithState: state) ; + respond \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/instance/oauthConsumerData.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/instance/oauthConsumerData.st new file mode 100644 index 00000000..3da6bc78 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/instance/oauthConsumerData.st @@ -0,0 +1,7 @@ +resources +oauthConsumerData + + ^ ZnOAuth2ConsumerData + key: (self application preferenceAt: #oauth2GoogleClientId) + secret: (self application preferenceAt: #oauth2GoogleClientSecret) + redirectUrl: (self application preferenceAt: #oauth2GoogleRedirectUrl) \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/instance/renderContentOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/instance/renderContentOn..st new file mode 100644 index 00000000..4d04fb9e --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/instance/renderContentOn..st @@ -0,0 +1,16 @@ +rendering +renderContentOn: html + + html heading + level3 ; + with: 'Google user data'. + + userData isNil + ifTrue: [ + html strong: 'No user data'. + ^ self ]. + + self renderJSONDict: userData on: html. + + userData at: 'link' ifPresent: [ :link | self renderLink: link on: html ]. + userData at: 'picture' ifPresent: [ :link | self renderImage: (link, '?sz=200') on: html ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/methodProperties.json new file mode 100644 index 00000000..14bd1b2d --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "gotoSignOn:" : "JanVanDeSandt 12/7/2012 16:57", + "oauthConsumerData" : "JanVanDeSandt 12/7/2012 15:28", + "renderContentOn:" : "JanVanDeSandt 12/7/2012 17:14" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/properties.json new file mode 100644 index 00000000..5b447329 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideGoogleOAuth2DemoPanel.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnSSOSeasideGoogleOAuth2DemoPanel", + "pools" : [ + ], + "super" : "ZnSSOSeasideOAuth2DemoPanel", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/README.md new file mode 100644 index 00000000..db29fe00 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/README.md @@ -0,0 +1 @@ +Seaside component that handles the Microsoft SSO callback and displays profile information. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/instance/gotoSignOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/instance/gotoSignOn..st new file mode 100644 index 00000000..b4583059 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/instance/gotoSignOn..st @@ -0,0 +1,11 @@ +as yet unclassified +gotoSignOn: aCallbackUrl + "Redirect to the Facebook sigon webpage." + + oauthSession := (ZnOAuth2Session microsoft: self oauthConsumerData) + redirectUrl: aCallbackUrl greaseString ; + yourself. + + self requestContext + redirectTo: oauthSession authenticationUrl ; + respond \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/instance/oauthConsumerData.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/instance/oauthConsumerData.st new file mode 100644 index 00000000..b829d529 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/instance/oauthConsumerData.st @@ -0,0 +1,6 @@ +as yet unclassified +oauthConsumerData + + ^ ZnOAuth2ConsumerData + key: (self application preferenceAt: #oauth2MicrosoftClientId) + secret: (self application preferenceAt: #oauth2MicrosoftClientSecret) \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/instance/renderContentOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/instance/renderContentOn..st new file mode 100644 index 00000000..38174d59 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/instance/renderContentOn..st @@ -0,0 +1,15 @@ +as yet unclassified +renderContentOn: html + + html heading + level3 ; + with: 'Microsoft user data'. + + userData isNil + ifTrue: [ + html strong: 'No user data'. + ^ self ]. + + self renderJSONDict: userData on: html. + + userData at: 'link' ifPresent: [ :link | self renderLink: link on: html ]. diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/methodProperties.json new file mode 100644 index 00000000..b8a2beb4 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "gotoSignOn:" : "JanVanDeSandt 12/7/2012 20:56", + "oauthConsumerData" : "JanVanDeSandt 12/8/2012 19:47", + "renderContentOn:" : "JanVanDeSandt 12/8/2012 19:48" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/properties.json new file mode 100644 index 00000000..19cf822f --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideMicrosoftDemoPanel.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnSSOSeasideMicrosoftDemoPanel", + "pools" : [ + ], + "super" : "ZnSSOSeasideOAuth2DemoPanel", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/README.md new file mode 100644 index 00000000..c55ae3a9 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/README.md @@ -0,0 +1 @@ +Abstract Seaside component with common functionality for the different OAuth1 based SSO providers. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/accessToken..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/accessToken..st new file mode 100644 index 00000000..768e530d --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.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-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/accessToken.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/accessToken.st new file mode 100644 index 00000000..043cb7be --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/accessToken.st @@ -0,0 +1,3 @@ +accessing +accessToken + ^ accessToken \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/checkSetUp.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/checkSetUp.st new file mode 100644 index 00000000..7e44fa4e --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/checkSetUp.st @@ -0,0 +1,5 @@ +actions +checkSetUp + + self oauthService hasKeys + ifFalse: [ self error: 'Consumer key and/or secret missing.' ]. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/gotoSignOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/gotoSignOn..st new file mode 100644 index 00000000..09c4b2d9 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/gotoSignOn..st @@ -0,0 +1,12 @@ +actions +gotoSignOn: aCallbackUrl + "Redirect the client to the OAuth provider to handle the sign-in and authorization." + + self checkSetUp. + + requestToken := self oauthService getRequestTokenFor: aCallbackUrl with: self requestTokenExtraParameters. + + self requestContext + redirectTo: (self oauthService loginUrlFor: requestToken) ; + respond + \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/handleCallback.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/handleCallback.st new file mode 100644 index 00000000..e2660fa8 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/handleCallback.st @@ -0,0 +1,19 @@ +actions +handleCallback + "Hanlde the callback from the OAuth provider. If the client approved our request + we can now get the access token." + + | request token verifier | + + request := self requestContext request. + + token := request at: 'oauth_token'. + verifier := request at: 'oauth_verifier'. + + (token isNil or: [ verifier isNil]) + ifTrue: [ ^self ]. + + token = self requestToken value + ifFalse: [ self error: 'Invalid token value' ]. + + self accessToken: (self oauthService getAccessToken: self requestToken verifier: verifier) \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/handleVerificationCode..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/handleVerificationCode..st new file mode 100644 index 00000000..e5e77099 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/handleVerificationCode..st @@ -0,0 +1,7 @@ +actions +handleVerificationCode: aCode + "Try to get an access code using the user supplied verification code." + + aCode trimBoth isEmpty + ifFalse: [ + self accessToken: (self oauthService getAccessToken: self requestToken verifier: aCode trimBoth) ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/hasAccessToken.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/hasAccessToken.st new file mode 100644 index 00000000..628a4337 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/hasAccessToken.st @@ -0,0 +1,4 @@ +testing +hasAccessToken + + ^self accessToken notNil \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/oauthService..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/oauthService..st new file mode 100644 index 00000000..1e839e1e --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/oauthService..st @@ -0,0 +1,3 @@ +accessing +oauthService: anObject + oauthService := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/oauthService.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/oauthService.st new file mode 100644 index 00000000..e898a5f1 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/oauthService.st @@ -0,0 +1,3 @@ +accessing +oauthService + ^ oauthService \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/requestToken.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/requestToken.st new file mode 100644 index 00000000..2a963317 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/requestToken.st @@ -0,0 +1,3 @@ +accessing +requestToken + ^ requestToken \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/requestTokenExtraParameters.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/requestTokenExtraParameters.st new file mode 100644 index 00000000..177becaa --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/instance/requestTokenExtraParameters.st @@ -0,0 +1,4 @@ +resources +requestTokenExtraParameters + + ^nil \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/methodProperties.json new file mode 100644 index 00000000..d244918a --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/methodProperties.json @@ -0,0 +1,15 @@ +{ + "class" : { + }, + "instance" : { + "accessToken" : "JanVanDeSandt 12/23/2012 16:29", + "accessToken:" : "JanVanDeSandt 12/23/2012 16:29", + "checkSetUp" : "JanVanDeSandt 12/23/2012 16:29", + "gotoSignOn:" : "JanVanDeSandt 12/23/2012 16:30", + "handleCallback" : "JanVanDeSandt 12/23/2012 17:26", + "handleVerificationCode:" : "JanVanDeSandt 12/23/2012 16:31", + "hasAccessToken" : "JanVanDeSandt 12/23/2012 16:35", + "oauthService" : "JanVanDeSandt 12/23/2012 16:29", + "oauthService:" : "JanVanDeSandt 12/23/2012 16:29", + "requestToken" : "JanVanDeSandt 12/23/2012 16:29", + "requestTokenExtraParameters" : "JanVanDeSandt 12/23/2012 16:30" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/properties.json new file mode 100644 index 00000000..fe60526e --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth1DemoPanel.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "oauthService", + "requestToken", + "accessToken" ], + "name" : "ZnSSOSeasideOAuth1DemoPanel", + "pools" : [ + ], + "super" : "ZnSSOSeasideDemoPanel", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/README.md new file mode 100644 index 00000000..ad79ff6f --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/README.md @@ -0,0 +1 @@ +Abstract Seaside component with common functionality for the different OAuth2 based SSO providers. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/instance/handleCallback.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/instance/handleCallback.st new file mode 100644 index 00000000..17e08fe3 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/instance/handleCallback.st @@ -0,0 +1,6 @@ +actions +handleCallback + "This method is invoked when the SSO provider redirects back to this application." + + oauthSession handleAuthenticationCallback: self requestContext request fields. + userData := oauthSession getUserData \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/instance/oauthSession.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/instance/oauthSession.st new file mode 100644 index 00000000..515ca14a --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/instance/oauthSession.st @@ -0,0 +1,4 @@ +accessing +oauthSession + + ^ oauthSession \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/instance/userData.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/instance/userData.st new file mode 100644 index 00000000..10a5840d --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/instance/userData.st @@ -0,0 +1,4 @@ +accessing +userData + + ^userData \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/methodProperties.json new file mode 100644 index 00000000..8fd5b313 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "handleCallback" : "JanVanDeSandt 12/8/2012 19:46", + "oauthSession" : "JanVanDeSandt 12/7/2012 14:15", + "userData" : "JanVanDeSandt 12/8/2012 19:47" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/properties.json new file mode 100644 index 00000000..496f27c7 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOAuth2DemoPanel.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "oauthSession", + "userData" ], + "name" : "ZnSSOSeasideOAuth2DemoPanel", + "pools" : [ + ], + "super" : "ZnSSOSeasideDemoPanel", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/README.md new file mode 100644 index 00000000..3f01c302 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/README.md @@ -0,0 +1 @@ +Seaside component that handles the OpenID signin process \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/authResponse.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/authResponse.st new file mode 100644 index 00000000..58db4e42 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/authResponse.st @@ -0,0 +1,3 @@ +accessing +authResponse + ^ authResponse \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/gotoSignOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/gotoSignOn..st new file mode 100644 index 00000000..38c3e10f --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/gotoSignOn..st @@ -0,0 +1,13 @@ +actions +gotoSignOn: aCallbackUrl + + | authUrl | + + authUrl := self providerSession getAuthenticationRequestUrl: aCallbackUrl asString do: [ :request | + request realm: (self application preferenceAt: #openidRealm). + request axRequestNamesAndEmail + "self openIDoptionsForm updateAuthenticationRequest: request "]. + + self requestContext + redirectTo: authUrl ; + respond \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/handleCallback.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/handleCallback.st new file mode 100644 index 00000000..5035c8a0 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/handleCallback.st @@ -0,0 +1,7 @@ +actions +handleCallback + + | request | + + request := self requestContext request. + authResponse := providerSession getValidatedAuthenticationResponseFrom: request fields. diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/providerSession.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/providerSession.st new file mode 100644 index 00000000..72ce7ad9 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/providerSession.st @@ -0,0 +1,4 @@ +accessing +providerSession + + ^ providerSession \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/renderContentOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/renderContentOn..st new file mode 100644 index 00000000..e472dd2b --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/renderContentOn..st @@ -0,0 +1,24 @@ +rendering +renderContentOn: html + + html heading + level: 2; + with: 'OpenID2 Authentication Response'. + + self authResponse isNil + ifTrue: [ + html text: 'No response received.'. + ^ self ]. + + self renderField: 'openid.mode' value: self authResponse mode on: html. + self authResponse isSuccess + ifFalse: [ ^ self ]. + + self + renderField: 'openid.identity' value: self authResponse identity on: html; + renderField: 'openid.claimed_id' value: self authResponse claimedId on: html; + renderField: 'First Name' value: self authResponse axValueFirstname on: html; + renderField: 'Last name' value: self authResponse axValueLastname on: html; + renderField: 'Email' value: self authResponse axValueEmail on: html; + renderField: 'Country' value: self authResponse axValueCountry on: html; + renderField: 'Language' value: self authResponse axValueLanguage on: html diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/renderField.value.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/renderField.value.on..st new file mode 100644 index 00000000..7b7e63d4 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/renderField.value.on..st @@ -0,0 +1,9 @@ +rendering +renderField: aString value: aValue on: html + + html div: [ + html text: aString. + html text: ' : '. + html strong: aValue ] + + diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/setProviderSession..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/setProviderSession..st new file mode 100644 index 00000000..f7f3eed8 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/instance/setProviderSession..st @@ -0,0 +1,4 @@ +initialize-release +setProviderSession: anObject + + providerSession := anObject \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/methodProperties.json new file mode 100644 index 00000000..849b489a --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "authResponse" : "JanVanDeSandt 1/2/2013 11:42", + "gotoSignOn:" : "JanVanDeSandt 1/5/2013 17:27", + "handleCallback" : "JanVanDeSandt 1/5/2013 17:29", + "providerSession" : "JanVanDeSandt 1/5/2013 17:26", + "renderContentOn:" : "JanVanDeSandt 1/2/2013 12:16", + "renderField:value:on:" : "JanVanDeSandt 1/2/2013 11:45", + "setProviderSession:" : "JanVanDeSandt 1/5/2013 17:25" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/properties.json new file mode 100644 index 00000000..89ba6b55 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideOpenIDDemoPanel.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "providerSession", + "authResponse" ], + "name" : "ZnSSOSeasideOpenIDDemoPanel", + "pools" : [ + ], + "super" : "ZnSSOSeasideDemoPanel", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/README.md b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/README.md new file mode 100644 index 00000000..b15f8b9a --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/README.md @@ -0,0 +1 @@ +Seaside component that handles the Twitter SSO callback and displays profile information. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/accessToken..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/accessToken..st new file mode 100644 index 00000000..cafd2a8c --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/accessToken..st @@ -0,0 +1,9 @@ +accessing +accessToken: aToken + + super accessToken: aToken. + + twitterAccess := ZnOAuth1TwitterUserAccess new + oauth1Service: self oauthService ; + accessToken: self accessToken ; + yourself. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/actionUpdateStatus..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/actionUpdateStatus..st new file mode 100644 index 00000000..29915bca --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/actionUpdateStatus..st @@ -0,0 +1,4 @@ +actions +actionUpdateStatus: aString + + self twitterAccess statusesUpdate: aString \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/defaulStatusText.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/defaulStatusText.st new file mode 100644 index 00000000..20b1e362 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/defaulStatusText.st @@ -0,0 +1,4 @@ +resources +defaulStatusText + + ^ 'This is my first tweet using Zinc-SSO! See https://github.com/svenvc/docs/blob/master/zinc/zinc-sso-paper.md for more information. #zinc-sso ' \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/initialize.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/initialize.st new file mode 100644 index 00000000..df36045b --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/initialize.st @@ -0,0 +1,10 @@ +initialization +initialize + + super initialize. + + self oauthService: (ZnOAuth1Service new + providerAccount: (ZnOAuth1ConsumerData newForTwitterAuthentication + consumer: (self application preferenceAt: #oauth1TwitterConsumerKey) ; + consumerSecret: (self application preferenceAt: #oauth1TwitterConsumerSecret) ; + yourself )) \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/renderContentOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/renderContentOn..st new file mode 100644 index 00000000..86892e11 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/renderContentOn..st @@ -0,0 +1,18 @@ +rendering +renderContentOn: html + + | json | + + self hasAccessToken + ifFalse: [ ^self renderVerificationCodeFormOn: html ]. + + self renderStatusFormOn: html. + + html heading + level: 3 ; + with: 'Account properties'. + + json := self twitterAccess accountVerifyCredentials. + self renderJSONDict: json on: html. + + json at: 'profile_image_url' ifPresent: [ :url | self renderImage: url on: html ] diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/renderMessage.on..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/renderMessage.on..st new file mode 100644 index 00000000..be2727fc --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/renderMessage.on..st @@ -0,0 +1,4 @@ +rendering +renderMessage: msgDict on: html + + html text: (msgDict at: 'text' ifAbsent: [ '?' ]) \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/renderStatusFormOn..st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/renderStatusFormOn..st new file mode 100644 index 00000000..0602d8eb --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/renderStatusFormOn..st @@ -0,0 +1,15 @@ +rendering +renderStatusFormOn: html + + html form: [ + html label + for: html nextId ; + with: 'New Tweet:'. + html break. + html textInput + id: html lastId ; + size: 160 ; + value: self defaulStatusText ; + callback: [ :value | self actionUpdateStatus: value ]. + html submitButton + with: 'Post!' ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/twitterAccess.st b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/twitterAccess.st new file mode 100644 index 00000000..da776167 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/instance/twitterAccess.st @@ -0,0 +1,3 @@ +accessing +twitterAccess + ^twitterAccess \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/methodProperties.json new file mode 100644 index 00000000..1ee4ecbc --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + }, + "instance" : { + "accessToken:" : "JanVanDeSandt 12/23/2012 16:32", + "actionUpdateStatus:" : "JanVanDeSandt 12/26/2012 22:51", + "defaulStatusText" : "JanVanDeSandt 12/26/2012 23:11", + "initialize" : "JanVanDeSandt 12/26/2012 22:06", + "renderContentOn:" : "JanVanDeSandt 12/26/2012 22:48", + "renderMessage:on:" : "JanVanDeSandt 12/23/2012 16:35", + "renderStatusFormOn:" : "JanVanDeSandt 12/27/2012 10:34", + "twitterAccess" : "JanVanDeSandt 12/23/2012 16:34" } } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/properties.json new file mode 100644 index 00000000..a08b1e01 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/ZnSSOSeasideTwitterOAuth1DemoPanel.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Demo", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "twitterAccess" ], + "name" : "ZnSSOSeasideTwitterOAuth1DemoPanel", + "pools" : [ + ], + "super" : "ZnSSOSeasideOAuth1DemoPanel", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/categories.st b/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/categories.st new file mode 100644 index 00000000..78f49e85 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-SSO-Seaside-Demo'! diff --git a/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/initializers.st b/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/package b/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/package new file mode 100644 index 00000000..54de0db2 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-SSO-Seaside-Demo') \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/version b/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/version new file mode 100644 index 00000000..93d759aa --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-SSO-Seaside-Demo-JanVanDeSandt.6' message 'Added Twitter logo image' id '573c36a0-10bb-4b11-b8c6-765c5658c333' date '5 January 2013' time '10:40:17.727 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-Seaside-Demo-JanVanDeSandt.5' message 'Improved OpenID demo code' id '247c2603-4b61-4904-9f42-1fb979742dae' date '5 January 2013' time '5:46:23.476 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-Seaside-Demo-JanVanDeSandt.4' message 'Added Post Tweet example' id 'fcfcfdc6-ee64-4417-8a21-641cf7a05bd8' date '27 December 2012' time '11:40:31.363 am' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-Seaside-Demo-JanVanDeSandt.3' message 'Renamed ZnOAuth1Provider to ZnOAuth1ConsumerData' id '6374a740-6089-4b5e-97c7-279a449c2f15' date '24 December 2012' time '12:00:00.842 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-Seaside-Demo-JanVanDeSandt.2' message 'Added Twitter OAuth1 demo' id '3fdb3032-6298-a945-82b0-de44834186bc' date '23 December 2012' time '9:29:39.703 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-Seaside-Demo-JanVanDeSandt.1' message 'A Zinc-SSO demo web application for Seaside - Initial upload' id '9adc93c6-e14a-ff4e-8c76-72e922f1d147' date '9 December 2012' time '2:51:09.006 pm' author 'JanVanDeSandt' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Demo.package/properties.json b/repository/Zinc-SSO-Seaside-Demo.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Demo.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-SSO-Seaside-Support.package/.filetree b/repository/Zinc-SSO-Seaside-Support.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/README.md b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/README.md new file mode 100644 index 00000000..94bf6f83 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/README.md @@ -0,0 +1 @@ +This Seaside configuration class defines the attributes required to use Twitter OAuth1 \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/instance/describeOn..st b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/instance/describeOn..st new file mode 100644 index 00000000..9d791986 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/instance/describeOn..st @@ -0,0 +1,12 @@ +description +describeOn: config + + (config string: #oauth1TwitterConsumerKey) + group: #oauth; + label: 'Twitter Consumer Key'; + comment: 'OAuth 1.0 consumer key'. + + (config string: #oauth1TwitterConsumerSecret) + group: #oauth; + label: 'Twitter Consumer Secret'; + comment: 'OAuth 1.0 consumer secret.'. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/methodProperties.json new file mode 100644 index 00000000..ac5a2706 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "describeOn:" : "JanVanDeSandt 12/23/2012 16:43" } } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/properties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/properties.json new file mode 100644 index 00000000..1413a0cd --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth1TwitterConfiguration.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Support", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOAuth1TwitterConfiguration", + "pools" : [ + ], + "super" : "WASystemConfiguration", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/README.md b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/README.md new file mode 100644 index 00000000..53b47743 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/README.md @@ -0,0 +1 @@ +A ZnOAuth2CallbackHandler is a simple request handler that handles the callbacks/redirects from OAuth2 providers. diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/instance/handleFiltered..st b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/instance/handleFiltered..st new file mode 100644 index 00000000..d48ad0af --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/instance/handleFiltered..st @@ -0,0 +1,21 @@ +handling +handleFiltered: aRequestContext + "Handle the oauth2 callback by redirecting to the correct application. The path to + this application should be in a request parameter called 'state'." + + | state newUrl | + + state := aRequestContext request at: 'state'. + state notNil + ifTrue: [ + newUrl := WAUrl absolute: state. + aRequestContext request queryFields keysAndValuesDo: [ :name :value | + name ~= 'state' + ifTrue: [ newUrl addField: name value: value ] ]. + aRequestContext responseGenerator + redirectTo: newUrl; + respond ] + ifFalse: [ + aRequestContext responseGenerator + notFound; + respond ] \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/methodProperties.json new file mode 100644 index 00000000..994c0609 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "handleFiltered:" : "JanVanDeSandt 12/7/2012 16:58" } } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/properties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/properties.json new file mode 100644 index 00000000..45c00f86 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2CallbackHandler.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Support", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOAuth2CallbackHandler", + "pools" : [ + ], + "super" : "WARequestHandler", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/README.md b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/README.md new file mode 100644 index 00000000..72419cba --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/README.md @@ -0,0 +1 @@ +This Seaside configuration class defines the attributes required to use Facebook OAuth2 \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/instance/describeOn..st b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/instance/describeOn..st new file mode 100644 index 00000000..fb328932 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/instance/describeOn..st @@ -0,0 +1,12 @@ +description +describeOn: config + + (config string: #oauthFacebookClientId) + group: #oauth; + label: 'Facebook client_id'; + comment: 'OAuth 2.0 client_id for Facebook.'. + + (config string: #oauthFacebookClientSecret) + group: #oauth; + label: 'Facebook client_secret'; + comment: 'OAuth 2.0 client_secret for Facebook.' \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/methodProperties.json new file mode 100644 index 00000000..3b7daf1b --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "describeOn:" : "JanVanDeSandt 12/7/2012 13:04" } } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/properties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/properties.json new file mode 100644 index 00000000..61a6f07e --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2FacebookConfiguration.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Support", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOAuth2FacebookConfiguration", + "pools" : [ + ], + "super" : "WASystemConfiguration", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/README.md b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/README.md new file mode 100644 index 00000000..e5924af4 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/README.md @@ -0,0 +1 @@ +This Seaside configuration class defines the attributes required to use Google OAuth2 \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/instance/describeOn..st b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/instance/describeOn..st new file mode 100644 index 00000000..8c628563 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/instance/describeOn..st @@ -0,0 +1,17 @@ +description +describeOn: config + + (config string: #oauth2GoogleClientId) + group: #oauth; + label: 'Google oauth2 client_id'; + comment: 'OAuth 2.0 client_id for Google.'. + + (config string: #oauth2GoogleClientSecret) + group: #oauth; + label: 'Google oauth2 client_secret'; + comment: 'OAuth 2.0 client_secret for Google.'. + + (config string: #oauth2GoogleRedirectUrl) + group: #oauth; + label: 'Google oauth2 redirect_url'; + comment: 'OAuth 2.0 redirect_url for Google.'. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/methodProperties.json new file mode 100644 index 00000000..9abcdb6c --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "describeOn:" : "JanVanDeSandt 12/7/2012 13:01" } } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/properties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/properties.json new file mode 100644 index 00000000..9764e189 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2GoogleConfiguration.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Support", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOAuth2GoogleConfiguration", + "pools" : [ + ], + "super" : "WASystemConfiguration", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/README.md b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/README.md new file mode 100644 index 00000000..af0bd3b3 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/README.md @@ -0,0 +1 @@ +This Seaside configuration class defines the attributes required to use Microsoft OAuth2 \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/instance/describeOn..st b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/instance/describeOn..st new file mode 100644 index 00000000..5bdf1cd2 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/instance/describeOn..st @@ -0,0 +1,12 @@ +description +describeOn: config + + (config string: #oauth2MicrosoftClientId) + group: #oauth; + label: 'Microsoft client_id'; + comment: 'OAuth 2.0 client_id for Microsoft Live Connect.'. + + (config string: #oauth2MicrosoftClientSecret) + group: #oauth; + label: 'Microsoft client_secret'; + comment: 'OAuth 2.0 client_secret for Microsoft Live Connect.' \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/methodProperties.json new file mode 100644 index 00000000..1d47981e --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "describeOn:" : "JanVanDeSandt 12/8/2012 18:55" } } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/properties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/properties.json new file mode 100644 index 00000000..a234c4e5 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOAuth2MicrosoftConfiguration.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Support", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOAuth2MicrosoftConfiguration", + "pools" : [ + ], + "super" : "WASystemConfiguration", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/README.md b/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/README.md new file mode 100644 index 00000000..bfbddceb --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/README.md @@ -0,0 +1 @@ +This Seaside configuration class defines the attributes required to use OpenID \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/instance/describeOn..st b/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/instance/describeOn..st new file mode 100644 index 00000000..7905cb92 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/instance/describeOn..st @@ -0,0 +1,7 @@ +description +describeOn: config + + (config string: #openidRealm) + group: #openid; + label: 'OpenID Realm'; + comment: 'Authenticated realm. Identifies the domain that the end user is being asked to trust.'. \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/methodProperties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/methodProperties.json new file mode 100644 index 00000000..8cb8ddb7 --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "describeOn:" : "JanVanDeSandt 1/2/2013 12:00" } } diff --git a/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/properties.json b/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/properties.json new file mode 100644 index 00000000..9af44f6d --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/ZnOpenIDConfiguration.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-SSO-Seaside-Support", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnOpenIDConfiguration", + "pools" : [ + ], + "super" : "WASystemConfiguration", + "type" : "normal" } diff --git a/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/categories.st b/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/categories.st new file mode 100644 index 00000000..c655cace --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-SSO-Seaside-Support'! diff --git a/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/initializers.st b/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/package b/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/package new file mode 100644 index 00000000..b7639cda --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-SSO-Seaside-Support') \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/version b/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/version new file mode 100644 index 00000000..a833f04c --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-SSO-Seaside-Support-JanVanDeSandt.3' message 'Added OpenID realm configuration option' id '3dbef58f-40fe-42e0-928e-c5b0a5de8a8f' date '2 January 2013' time '9:15:55.721 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-Seaside-Support-JanVanDeSandt.2' message 'Renamed Twitter configuration parameters' id 'f2f27433-6e47-3a4e-b530-2937fc572ae0' date '23 December 2012' time '9:30:19.814 pm' author 'JanVanDeSandt' ancestors ((name 'Zinc-SSO-Seaside-Support-JanVanDeSandt.1' message 'Package with support classes to make it easy to configure and use Zinc-SSO from with a Seaside web application - Initial upload' id 'ad23bcb8-ae67-5a48-add2-9418eedf2399' date '9 December 2012' time '2:49:37.17 pm' author 'JanVanDeSandt' ancestors () stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-SSO-Seaside-Support.package/properties.json b/repository/Zinc-SSO-Seaside-Support.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-SSO-Seaside-Support.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-Seaside.package/ZnDeferredResponse.class/README.md b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/README.md new file mode 100644 index 00000000..3021873b --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/README.md @@ -0,0 +1,6 @@ +I am a lazy ZnResponse that: + +1. Does no work except to delegate to a smarter object; and +2. Doesn't even delegate until I'm told it's time to write something out on the stream. + +See, I'm even lazy about being lazy. I can get away with this wanton slothfulness because of WAComboResponse's ability to handle everything (status line, headers, chunking). \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnDeferredResponse.class/class/onWrite..st b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/class/onWrite..st new file mode 100644 index 00000000..cc24a36b --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/class/onWrite..st @@ -0,0 +1,3 @@ +instance creation +onWrite: aBlock + ^self new onWrite: aBlock \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnDeferredResponse.class/instance/onWrite..st b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/instance/onWrite..st new file mode 100644 index 00000000..ac2100bf --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/instance/onWrite..st @@ -0,0 +1,3 @@ +initialize-release +onWrite: aBlock + onWrite := aBlock \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnDeferredResponse.class/instance/writeOn..st b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/instance/writeOn..st new file mode 100644 index 00000000..6f89bc30 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/instance/writeOn..st @@ -0,0 +1,3 @@ +writing +writeOn: stream + onWrite value: stream \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnDeferredResponse.class/methodProperties.json b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/methodProperties.json new file mode 100644 index 00000000..7b2a6b5d --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + "onWrite:" : "KenTreis 1/10/2013 16:51" }, + "instance" : { + "onWrite:" : "KenTreis 1/10/2013 16:50", + "writeOn:" : "KenTreis 1/10/2013 17:26" } } diff --git a/repository/Zinc-Seaside.package/ZnDeferredResponse.class/properties.json b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/properties.json new file mode 100644 index 00000000..2250e5f5 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnDeferredResponse.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Seaside", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "onWrite" ], + "name" : "ZnDeferredResponse", + "pools" : [ + ], + "super" : "ZnResponse", + "type" : "normal" } diff --git a/repository/Zinc-Seaside.package/ZnSeasideRequest.class/README.md b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/README.md new file mode 100644 index 00000000..852eb144 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/README.md @@ -0,0 +1 @@ +I group a ZnRequest together with its stream, purely for convenience. \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideRequest.class/class/nativeRequest.stream..st b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/class/nativeRequest.stream..st new file mode 100644 index 00000000..0496ec98 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/class/nativeRequest.stream..st @@ -0,0 +1,5 @@ +instance creation +nativeRequest: aZnRequest stream: aStream + ^ self new + nativeRequest: aZnRequest; + stream: aStream \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/nativeRequest..st b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/nativeRequest..st new file mode 100644 index 00000000..0759b5f7 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/nativeRequest..st @@ -0,0 +1,3 @@ +accessing +nativeRequest: anObject + nativeRequest := anObject \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/nativeRequest.st b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/nativeRequest.st new file mode 100644 index 00000000..30f70fdc --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/nativeRequest.st @@ -0,0 +1,3 @@ +accessing +nativeRequest + ^ nativeRequest \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/stream..st b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/stream..st new file mode 100644 index 00000000..2570b7d6 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/stream..st @@ -0,0 +1,3 @@ +accessing +stream: anObject + stream := anObject \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/stream.st b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/stream.st new file mode 100644 index 00000000..691d9699 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/instance/stream.st @@ -0,0 +1,3 @@ +accessing +stream + ^ stream \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideRequest.class/methodProperties.json b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/methodProperties.json new file mode 100644 index 00000000..fd6f3719 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + "nativeRequest:stream:" : "KenTreis 1/10/2013 21:33" }, + "instance" : { + "nativeRequest" : "KenTreis 1/10/2013 21:14", + "nativeRequest:" : "KenTreis 1/10/2013 21:14", + "stream" : "KenTreis 1/10/2013 21:14", + "stream:" : "KenTreis 1/10/2013 21:14" } } diff --git a/repository/Zinc-Seaside.package/ZnSeasideRequest.class/properties.json b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/properties.json new file mode 100644 index 00000000..5ce41258 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideRequest.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-Seaside", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "nativeRequest", + "stream" ], + "name" : "ZnSeasideRequest", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/forServer..st b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/forServer..st new file mode 100644 index 00000000..55aa32e4 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/forServer..st @@ -0,0 +1,7 @@ +instance creation +forServer: znServer + | adaptor | + adaptor := ZnZincServerAdaptor new. + adaptor unregister. + adaptor server: znServer. + ^ self with: adaptor \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/installInDefaultServer.st b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/installInDefaultServer.st new file mode 100644 index 00000000..82afceeb --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/installInDefaultServer.st @@ -0,0 +1,3 @@ +examples +installInDefaultServer + ^ self installInServer: ZnServer default \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/installInServer..st b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/installInServer..st new file mode 100644 index 00000000..15a2175b --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/installInServer..st @@ -0,0 +1,3 @@ +examples +installInServer: znServer + ^ self installInServer: znServer underPrefix: 'seaside' \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/installInServer.underPrefix..st b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/installInServer.underPrefix..st new file mode 100644 index 00000000..15e14115 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/class/installInServer.underPrefix..st @@ -0,0 +1,16 @@ +examples +installInServer: znServer underPrefix: prefix + "Install a ZnSeasideServerAdaptorDelegate in znServer under prefix, + provided znServer contains a ZnDefaultServerDelegate instance as primary delegate. + Note that the incoming request is destructively modified. + Note that a global #serverPath is added to the default Seaside dispatcher." + + | seasideDelegate | + seasideDelegate := self forServer: znServer. + znServer delegate + map: 'seaside' + to: [ :request | + request uri removeFirstPathSegment. + seasideDelegate handleRequest: request ]. + WAAdmin defaultDispatcher serverPath: prefix. + ^ seasideDelegate \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/handleRequest..st b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/handleRequest..st index e5c0a506..ea81f47d 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/handleRequest..st +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/handleRequest..st @@ -1,5 +1,5 @@ public handleRequest: znRequest "I pass a Zinc HTTP Components ZnRequest to my Seaside Server Adaptor using #process:" - + ^ self adaptor process: znRequest \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/value..st b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/instance/value..st new file mode 100644 index 00000000..17bc2c2a --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.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-Seaside.package/ZnSeasideServerAdaptorDelegate.class/methodProperties.json b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/methodProperties.json new file mode 100644 index 00000000..f9b49774 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideServerAdaptorDelegate.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + "forServer:" : "SvenVanCaekenberghe 1/5/2013 21:36", + "installInDefaultServer" : "SvenVanCaekenberghe 1/5/2013 21:33", + "installInServer:" : "SvenVanCaekenberghe 1/5/2013 21:33", + "installInServer:underPrefix:" : "SvenVanCaekenberghe 1/7/2013 12:47", + "with:" : "SvenVanCaekenberghe 9/30/2010 17:14" }, + "instance" : { + "adaptor" : "SvenVanCaekenberghe 9/30/2010 17:13", + "adaptor:" : "SvenVanCaekenberghe 9/30/2010 17:12", + "handleRequest:" : "PaulDeBruicker 6/5/2012 21:52", + "value:" : "SvenVanCaekenberghe 1/5/2013 21:09" } } diff --git a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/README.md b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/README.md index 178aecfa..fc357480 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/README.md +++ b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/README.md @@ -1,5 +1,5 @@ This adaptor first checks to see if the Seaside response machinery creates a succesful response and if not checks to see if the request can be served by an instance of the ZnStaticFileServerDelegate Instance Variables: - staticDelegate aZnStaticFileServerDelegate - wwwRootDirectory - The directory on your file system where the JS/CSS/JPEG etc. files you want to serve reside \ No newline at end of file + staticDelegate aZnStaticFileServerDelegate + wwwRootDirectory - The directory on your file system where the JS/CSS/JPEG etc. files you want to serve reside \ 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 fda73869..bcc1ea16 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/handleRequest..st +++ b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/handleRequest..st @@ -1,10 +1,10 @@ public handleRequest: znRequest - "If the Seaside request processing apparatus returns an HTTP response with an error check the filesystem for a file that matches the uri of the request, if found send the file if not send an error." + "If the Seaside request processing apparatus returns an HTTP response with an error + check the filesystem for a file that matches the uri of the request, if found send the file if not send an error." | response | response := self adaptor process: znRequest. response isError ifFalse: [ ^ response ]. - ^ self staticDelegate handleRequest: znRequest \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/serveFilesFrom..st b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/serveFilesFrom..st index 29ee8cf2..6667a841 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/serveFilesFrom..st +++ b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/serveFilesFrom..st @@ -1,3 +1,3 @@ updating serveFilesFrom: aDirectoryPathString - self wwwRootDirectory: (FileDirectory on: aDirectoryPathString ) \ No newline at end of file + self wwwRootDirectory: (ZnFileSystemUtils directory: aDirectoryPathString ) \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/wwwRootDirectory.st b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/wwwRootDirectory.st index 066330a4..322d9670 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/wwwRootDirectory.st +++ b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/instance/wwwRootDirectory.st @@ -2,4 +2,5 @@ accessing wwwRootDirectory "This is the root directory for your css/js/images etc...." - ^ wwwRootDirectory ifNil: [ wwwRootDirectory := FileDirectory on: '/var/www' ] \ No newline at end of file + ^ wwwRootDirectory ifNil: [ + wwwRootDirectory := ZnFileSystemUtils directory: '/var/www' ] \ 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 new file mode 100644 index 00000000..78d44ead --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "handleRequest:" : "SvenVanCaekenberghe 8/28/2012 21:19", + "initializeStaticDelegate" : "PaulDeBruicker 4/19/2012 16:28", + "serveFilesFrom:" : "SvenVanCaekenberghe 8/28/2012 21:18", + "staticDelegate" : "PaulDeBruicker 4/19/2012 16:26", + "wwwRootDirectory" : "SvenVanCaekenberghe 8/28/2012 21:19", + "wwwRootDirectory:" : "SvenVanCaekenberghe 4/20/2012 10:53" } } diff --git a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/properties.json b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/properties.json index 49886cc5..cb97306d 100644 --- a/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/properties.json +++ b/repository/Zinc-Seaside.package/ZnSeasideStaticServerAdaptorDelegate.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "PaulDeBruicker 4/20/2012 16:04", + "commentStamp" : "", "instvars" : [ "staticDelegate", "wwwRootDirectory" ], diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/README.md b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/README.md index 9ed34b34..f5997700 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/README.md +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/README.md @@ -1,4 +1,5 @@ I convert between Seaside and Zinc HTTP requests and responses. +I am a WAServerAdaptor. Instance Variables: server @@ -7,9 +8,4 @@ I can be started like any other Seaside adaptor: ZnZincServerAdaptor startOn: 8080 -It is also possible to further customize me, like this: - - ZnZincServerAdaptor new - port: 8080; - serverClass: ZnManagingMultiThreadedServer; - start \ No newline at end of file +I work together with a ZnSeasideServerAdaptorDelegate. I offer several advanced configuration options for specialized applications in my 'initialize-release' protocol. See also the 'example' class protocol of ZnSeasideServerAdaptorDelegate. \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/basicStart.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/basicStart.st index 18ce2a09..3c8e54c3 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/basicStart.st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/basicStart.st @@ -1,6 +1,3 @@ private basicStart - self server - delegate: self delegate; - reader: [ :stream "Seaside wants to do its own text conversions" | ZnRequest readBinaryFrom: stream ]; - start \ No newline at end of file + self server start \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/basicStop.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/basicStop.st index 9ea70a7d..9deb98cc 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/basicStop.st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/basicStop.st @@ -1,5 +1,6 @@ private basicStop - self server isNil - ifFalse: [ self server stop ]. - self server: nil \ No newline at end of file + server + ifNotNil: [ + server stop. + server := nil ] \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/configureDelegate.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/configureDelegate.st new file mode 100644 index 00000000..fb9098cd --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/configureDelegate.st @@ -0,0 +1,5 @@ +initialize-release +configureDelegate + "Set the main delegate of my server to the default one." + + server delegate: self defaultDelegate \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/configureServerForBinaryReading.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/configureServerForBinaryReading.st new file mode 100644 index 00000000..6ed360f8 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/configureServerForBinaryReading.st @@ -0,0 +1,5 @@ +initialize-release +configureServerForBinaryReading + "Seaside wants to do its own text conversions" + + server reader: [ :stream | ZnRequest readBinaryFrom: stream ] \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/defaultDelegate.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/defaultDelegate.st new file mode 100644 index 00000000..9f1c6849 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/defaultDelegate.st @@ -0,0 +1,3 @@ +defaults +defaultDelegate + ^ ZnSeasideServerAdaptorDelegate with: self \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/delegate.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/delegate.st deleted file mode 100644 index 405ca98c..00000000 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/delegate.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -delegate - ^ ZnSeasideServerAdaptorDelegate with: self \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/printOn..st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/printOn..st new file mode 100644 index 00000000..2d9f91f9 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/printOn..st @@ -0,0 +1,7 @@ +printing +printOn: stream + super printOn: stream. + stream + nextPut: $(; + << self statusString; + nextPut: $) \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/server..st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/server..st index 08886ee3..19155e19 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/server..st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/server..st @@ -3,4 +3,5 @@ server: znServer "I initialize the actual ZnServer instance that I will be using to znServer, to prevent a fallback to #defaultZnServer" - server := znServer \ No newline at end of file + server := znServer. + port := znServer port \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/server.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/server.st index 8e9cdf10..a8c20254 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/server.st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/server.st @@ -1,5 +1,11 @@ accessing server - "Return the ZnServer running me, create a default one if missing" - - ^ server ifNil: [ server := self defaultZnServer ] \ No newline at end of file + "Return the ZnServer running me, create a default one if missing and confugure it." + + server + ifNil: [ + server := self defaultZnServer. + self + configureDelegate; + configureServerForBinaryReading ]. + ^ server \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/shutDown.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/shutDown.st index 9533d134..8378fcf3 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/shutDown.st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/shutDown.st @@ -1,4 +1,4 @@ private shutDown - self server isNil - ifFalse: [ self server stop ] \ No newline at end of file + self isRunning + ifTrue: [ server stop ] \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/startUp.st b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/startUp.st index a44277f9..e28bdb64 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/startUp.st +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/instance/startUp.st @@ -1,4 +1,4 @@ private startUp - self server isNil - ifFalse: [ self server start ] \ No newline at end of file + self isRunning + ifFalse: [ server ifNotNil: [ server start ] ] \ 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 new file mode 100644 index 00000000..f6a8f34c --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/methodProperties.json @@ -0,0 +1,33 @@ +{ + "class" : { + }, + "instance" : { + "basicStart" : "SvenVanCaekenberghe 1/5/2013 16:52", + "basicStop" : "SvenVanCaekenberghe 7/2/2012 13:45", + "configureDelegate" : "SvenVanCaekenberghe 1/5/2013 16:50", + "configureServerForBinaryReading" : "SvenVanCaekenberghe 1/5/2013 16:49", + "convertMultipart:" : "lr 7/29/2011 12:59", + "convertMultipartFileField:" : "SvenVanCaekenberghe 2/27/2011 20:25", + "defaultCodec" : "pmm 9/8/2010 16:54", + "defaultDelegate" : "SvenVanCaekenberghe 1/5/2013 16:40", + "defaultZnServer" : "SvenVanCaekenberghe 10/18/2011 14:07", + "isRunning" : "SvenVanCaekenberghe 10/18/2011 14:08", + "isStarting" : "pmm 9/8/2010 16:51", + "isStopped" : "SvenVanCaekenberghe 10/18/2011 14:08", + "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", + "requestCookiesFor:" : "SvenVanCaekenberghe 2/27/2011 20:23", + "requestFieldsFor:" : "SvenVanCaekenberghe 1/3/2012 15:47", + "requestHeadersFor:" : "SvenVanCaekenberghe 9/12/2010 10:58", + "requestMethodFor:" : "pmm 9/8/2010 17:15", + "requestUrlFor:" : "PaulDeBruicker 04/14/2011 12:13", + "requestVersionFor:" : "pmm 9/8/2010 17:19", + "responseFrom:" : "pmm 4/27/2011 18:59", + "server" : "SvenVanCaekenberghe 1/5/2013 16:48", + "server:" : "SvenVanCaekenberghe 1/5/2013 21:34", + "serverClass:" : "SvenVanCaekenberghe 10/18/2011 15:06", + "shutDown" : "SvenVanCaekenberghe 1/5/2013 17:29", + "startUp" : "SvenVanCaekenberghe 1/5/2013 17:32", + "statusString" : "SvenVanCaekenberghe 9/9/2010 20:38" } } diff --git a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/properties.json b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/properties.json index f45fea7a..e3fe91b5 100644 --- a/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/properties.json +++ b/repository/Zinc-Seaside.package/ZnZincServerAdaptor.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "SvenVanCaekenberghe 11/10/2011 17:23", + "commentStamp" : "", "instvars" : [ "server" ], "name" : "ZnZincServerAdaptor", diff --git a/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/defaultDelegate.st b/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/defaultDelegate.st new file mode 100644 index 00000000..0b246773 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/defaultDelegate.st @@ -0,0 +1,3 @@ +defaults +defaultDelegate + ^ ZnSeasideStaticServerAdaptorDelegate with: self \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/delegate.st b/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/delegate.st deleted file mode 100644 index 1fbf88b2..00000000 --- a/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/delegate.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -delegate - ^ ZnSeasideStaticServerAdaptorDelegate with: self \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/useCustomExpirationHeaders..st b/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/useCustomExpirationHeaders..st index ad112bf0..4a3d5086 100644 --- a/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/useCustomExpirationHeaders..st +++ b/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/useCustomExpirationHeaders..st @@ -1,3 +1,3 @@ accessing useCustomExpirationHeaders: aDictionaryOfMimeTypesAndHeaders - self server delegate staticDelegate mimeTypeMaxAges: aDictionaryOfMimeTypesAndHeaders \ No newline at end of file + self server delegate staticDelegate mimeTypeExpirations: aDictionaryOfMimeTypesAndHeaders \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/useDefaultExpirationHeaders.st b/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/useDefaultExpirationHeaders.st index 5ae0884e..32f3f6ec 100644 --- a/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/useDefaultExpirationHeaders.st +++ b/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/instance/useDefaultExpirationHeaders.st @@ -1,3 +1,3 @@ accessing useDefaultExpirationHeaders - self server delegate staticDelegate mimeTypeMaxAges: ZnStaticFileServerDelegate defaultMimeTypeExpirations \ No newline at end of file + self server delegate staticDelegate mimeTypeExpirations: ZnStaticFileServerDelegate defaultMimeTypeExpirations \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/methodProperties.json b/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/methodProperties.json new file mode 100644 index 00000000..d8e0b3dd --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincStaticServerAdaptor.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + "startOn:andServeFilesFrom:" : "PaulDeBruicker 4/20/2012 16:21" }, + "instance" : { + "defaultDelegate" : "SvenVanCaekenberghe 1/5/2013 16:40", + "useCustomExpirationHeaders:" : "PaulDeBruicker 6/5/2012 21:55", + "useDefaultExpirationHeaders" : "PaulDeBruicker 5/17/2012 06:43" } } diff --git a/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/README.md b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/README.md new file mode 100644 index 00000000..e5734bb9 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/README.md @@ -0,0 +1 @@ +I convert requests and responses between Zinc and Seaside, but I do it using Seaside's WAComboResponse in order to allow data to be streamed to the client directly. \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/process..st b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/process..st new file mode 100644 index 00000000..c2d98c4d --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/process..st @@ -0,0 +1,9 @@ +processing +process: aZnRequest + ^ ZnDeferredResponse + onWrite: [ :stream | + | request | + request := ZnSeasideRequest + nativeRequest: aZnRequest + stream: stream. + super process: request ] \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/requestFor..st b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/requestFor..st new file mode 100644 index 00000000..fd3326a6 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/requestFor..st @@ -0,0 +1,3 @@ +converting +requestFor: aZnSeasideRequest + ^super requestFor: aZnSeasideRequest nativeRequest \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/responseFor..st b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/responseFor..st new file mode 100644 index 00000000..0d9ad852 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/responseFor..st @@ -0,0 +1,8 @@ +converting +responseFor: aZnRequest + | bufferedStream codecStream | + bufferedStream := GRPlatform current writeCharacterStreamOn: (String new: 4096). + codecStream := self codec encoderFor: bufferedStream. + ^ WAComboResponse + onBuffered: (GRCountingStream on: codecStream) + external: aZnRequest stream diff --git a/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/responseFrom..st b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/responseFrom..st new file mode 100644 index 00000000..e81a7658 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/instance/responseFrom..st @@ -0,0 +1,8 @@ +converting +responseFrom: aRequestContext + "Since the response knows how to write itself on the stream (and may already be partly written), + there's not much left to do." + + aRequestContext response + flush; + close \ No newline at end of file diff --git a/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/methodProperties.json b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/methodProperties.json new file mode 100644 index 00000000..8cde5779 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "process:" : "KenTreis 1/11/2013 15:22", + "requestFor:" : "KenTreis 1/11/2013 15:24", + "responseFor:" : "KenTreis 1/11/2013 15:22", + "responseFrom:" : "KenTreis 1/11/2013 15:23" } } diff --git a/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/properties.json b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/properties.json new file mode 100644 index 00000000..e7a02bf2 --- /dev/null +++ b/repository/Zinc-Seaside.package/ZnZincStreamingServerAdaptor.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Seaside", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnZincStreamingServerAdaptor", + "pools" : [ + ], + "super" : "ZnZincServerAdaptor", + "type" : "normal" } diff --git a/repository/Zinc-Seaside.package/monticello.meta/version b/repository/Zinc-Seaside.package/monticello.meta/version index ff75ff70..628c73c5 100644 --- a/repository/Zinc-Seaside.package/monticello.meta/version +++ b/repository/Zinc-Seaside.package/monticello.meta/version @@ -1 +1 @@ -(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 ()) \ No newline at end of file +(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 diff --git a/repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/methodProperties.json deleted file mode 100644 index 63e3db03..00000000 --- a/repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/methodProperties.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "testWriting" : "SvenVanCaekenberghe 12/8/2010 09:54", - "testWritingOverflow" : "SvenVanCaekenberghe 12/8/2010 09:53" } } diff --git a/repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/properties.json b/repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/properties.json deleted file mode 100644 index df4089ba..00000000 --- a/repository/Zinc-Tests.package/ZnBufferedWriteStreamTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnBufferedWriteStreamTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json deleted file mode 100644 index 02883699..00000000 --- a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/methodProperties.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "decodeBytes:with:" : "SvenVanCaekenberghe 11/30/2010 11:57", - "encodeString:with:" : "SvenVanCaekenberghe 11/30/2010 11:57", - "testConvencienceMethods" : "SvenVanCaekenberghe 5/2/2012 16:35", - "testLatin2Encoder" : "PaulDeBruicker 04/10/2011 10:44", - "testNullEncoder" : "PaulDeBruicker 04/10/2011 10:45", - "testUTF8Encoder" : "PaulDeBruicker 04/10/2011 10:44", - "testUTF8EncoderAuto" : "SvenVanCaekenberghe 11/30/2010 13:42", - "testUTF8EncoderByteCount" : "PaulDeBruicker 04/10/2011 10:44" } } diff --git a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/properties.json b/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/properties.json deleted file mode 100644 index 91496409..00000000 --- a/repository/Zinc-Tests.package/ZnCharacterEncoderTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnCharacterEncoderTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/methodProperties.json deleted file mode 100644 index e9df95ea..00000000 --- a/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/methodProperties.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "testReadStream" : "SvenVanCaekenberghe 5/3/2012 21:35", - "testSimpleUTF8ReadStream" : "SvenVanCaekenberghe 5/3/2012 21:26", - "testSimpleUTF8WriteStream" : "SvenVanCaekenberghe 5/3/2012 21:27" } } diff --git a/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/properties.json b/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/properties.json deleted file mode 100644 index 6cc98cd6..00000000 --- a/repository/Zinc-Tests.package/ZnCharacterStreamTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnCharacterStreamTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnClientOldTests.class/instance/testGet.st b/repository/Zinc-Tests.package/ZnClientOldTests.class/instance/testGet.st deleted file mode 100644 index 78479a53..00000000 --- a/repository/Zinc-Tests.package/ZnClientOldTests.class/instance/testGet.st +++ /dev/null @@ -1,6 +0,0 @@ -testing -testGet - | response | - response := [ ZnClientOld get: 'http://zn.stfx.eu/zn/small.html' ] - on: Deprecation do: [ :ex | ex resume ]. - self assert: response isSuccess \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientOldTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnClientOldTests.class/methodProperties.json deleted file mode 100644 index 4b524812..00000000 --- a/repository/Zinc-Tests.package/ZnClientOldTests.class/methodProperties.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "testGet" : "SvenVanCaekenberghe 11/8/2011 22:11" } } diff --git a/repository/Zinc-Tests.package/ZnClientOldTests.class/properties.json b/repository/Zinc-Tests.package/ZnClientOldTests.class/properties.json deleted file mode 100644 index 6b03ab7f..00000000 --- a/repository/Zinc-Tests.package/ZnClientOldTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnClientOldTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testDownloadSmallHTML.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testDownloadSmallHTML.st index f6443003..2ac998d3 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testDownloadSmallHTML.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testDownloadSmallHTML.st @@ -10,7 +10,7 @@ testDownloadSmallHTML self assert: client response contentType = ZnMimeType textHtml. ZnFileSystemUtils oldFileNamed: 'small.html' - do: [ :stream | self assert: (stream upToEnd includesSubString: 'Small') ]. + do: [ :stream | self assert: (stream upToEnd includesSubstring: 'Small') ]. ZnFileSystemUtils deleteIfExists: 'small.html'. "Second download to an explicitly named file" client @@ -20,6 +20,6 @@ testDownloadSmallHTML self assert: client response contentType = ZnMimeType textHtml. ZnFileSystemUtils oldFileNamed: 'small.html' - do: [ :stream | self assert: (stream upToEnd includesSubString: 'Small') ]. + do: [ :stream | self assert: (stream upToEnd includesSubstring: 'Small') ]. client close. ZnFileSystemUtils deleteIfExists: 'small.html'. diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetAfterPost.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetAfterPost.st index 538da4c1..ab0b04b4 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetAfterPost.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetAfterPost.st @@ -4,15 +4,15 @@ testGetAfterPost server onRequestRespond: [ :request | request uri firstPathSegment = 'one' ifTrue: [ - self assert: (request method = #POST). - self assert: request hasEntity. - ZnResponse ok: (ZnEntity text: 'OK for one') ] + (request method = #POST and: [ request hasEntity ]) + ifTrue: [ ZnResponse ok: (ZnEntity text: 'OK for one') ] + ifFalse: [ ZnResponse badRequest: request ] ] ifFalse: [ request uri firstPathSegment = 'two' ifTrue: [ - self assert: (request method = #GET). - self deny: request hasEntity. - ZnResponse ok: (ZnEntity text: 'OK for two') ] + (request method = #GET and: [ request hasEntity not ]) + ifTrue: [ ZnResponse ok: (ZnEntity text: 'OK for two') ] + ifFalse: [ ZnResponse badRequest: request ] ] ifFalse: [ ZnResponse notFound: request uri ] ] ]. (client := ZnClient new) url: server localUrl; diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTML.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTML.st index 1ce7f1bb..bd126b5a 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTML.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTML.st @@ -7,7 +7,7 @@ testGetSmallHTML self assert: client isSuccess. self assert: client isContentTypeAcceptable. self assert: client response contentType = ZnMimeType textHtml. - self assert: (client contents includesSubString: 'Small'). + self assert: (client contents includesSubstring: 'Small'). self assert: client isConnected. client close. self deny: client isConnected \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLOneShot.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLOneShot.st index c17641c5..e8e55a2d 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLOneShot.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLOneShot.st @@ -7,5 +7,5 @@ testGetSmallHTMLOneShot get. self assert: client isSuccess. self assert: client response contentType = ZnMimeType textHtml. - self assert: (client contents includesSubString: 'Small'). + self assert: (client contents includesSubstring: 'Small'). self deny: client isConnected \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLStreaming.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLStreaming.st index 4e9c61a5..b3679dad 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLStreaming.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLStreaming.st @@ -10,5 +10,5 @@ testGetSmallHTMLStreaming self assert: result isStream. self assert: client entity stream = result. contents := ZnUTF8Encoder new decodeBytes: result upToEnd. - self assert: (contents includesSubString: 'Small'). + self assert: (contents includesSubstring: 'Small'). client close \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLTwice.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLTwice.st index e0360363..b58b6679 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLTwice.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLTwice.st @@ -6,11 +6,11 @@ testGetSmallHTMLTwice get. self assert: client isSuccess. self assert: client response contentType = ZnMimeType textHtml. - self assert: (client contents includesSubString: 'Small'). + self assert: (client contents includesSubstring: 'Small'). client url: '/zn/small.html'; get. self assert: client isSuccess. self assert: client response contentType = ZnMimeType textHtml. - self assert: (client contents includesSubString: 'Small'). + self assert: (client contents includesSubstring: 'Small'). client close. diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLUrlConstruction.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLUrlConstruction.st index 4d613a51..84581dae 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLUrlConstruction.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testGetSmallHTMLUrlConstruction.st @@ -8,5 +8,5 @@ testGetSmallHTMLUrlConstruction get. self assert: client isSuccess. self assert: client response contentType = ZnMimeType textHtml. - self assert: (client contents includesSubString: 'Small'). + self assert: (client contents includesSubstring: 'Small'). client close \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostForm.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostForm.st index e0aed2fe..e53352df 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostForm.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostForm.st @@ -9,5 +9,5 @@ testPostForm formAdd: 'password' -> 'secret'; post. self assert: client isSuccess. - self assert: (client contents includesSubString: 'john'). - self assert: (client contents includesSubString: 'secret') ] \ No newline at end of file + self assert: (client contents includesSubstring: 'john'). + self assert: (client contents includesSubstring: 'secret') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostMultipart.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostMultipart.st index ce6c1a85..38dd1028 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostMultipart.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostMultipart.st @@ -13,5 +13,5 @@ testPostMultipart addPart: (ZnMimePart fieldName: 'file' fileNamed: filename); post. self assert: client isSuccess. - self assert: (client contents includesSubString: 'multipart') ]. + self assert: (client contents includesSubstring: 'multipart') ]. ZnFileSystemUtils deleteIfExists: 'testPostMultiPart.txt'. diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostTwice.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostTwice.st new file mode 100644 index 00000000..5e3f3803 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testPostTwice.st @@ -0,0 +1,17 @@ +testing +testPostTwice + | client | + self withServerDo: [ :server | + (client := ZnClient new) + url: server localUrl; + addPath: 'echo'; + contents: 'Foo bar!'; + post. + self assert: client isSuccess. + self assert: (client contents includesSubstring: 'Foo bar!'). + client + contents: 'Another one ?'; + post. + self assert: client isSuccess. + self assert: (client contents includesSubstring: 'Another one ?'). + 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 e1cbe81b..8ae3f97d 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testQueryGoogle.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testQueryGoogle.st @@ -9,5 +9,5 @@ testQueryGoogle get. self assert: client isSuccess. self assert: client response contentType = ZnMimeType textHtml. - self assert: (client contents includesSubString: 'pharo-project.org'). + 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/testRedirectWithCustomHeader.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirectWithCustomHeader.st new file mode 100644 index 00000000..47781e37 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testRedirectWithCustomHeader.st @@ -0,0 +1,21 @@ +testing +testRedirectWithCustomHeader + self withServerDo: [ :server | | client cookie | + server onRequestRespond: [ :request | + (request headers at: 'X-Custom' ifAbsent: [ nil ]) = 'The Secret' + ifFalse: [ ZnResponse badRequest: request ] + ifTrue: [ + request uri firstPathSegment = 'one' + ifTrue: [ ZnResponse redirect: 'two' ] + ifFalse: [ + request uri firstPathSegment = 'two' + ifTrue: [ ZnResponse ok: (ZnEntity text: 'OK!') ] + ifFalse: [ ZnResponse badRequest: request ] ] ] ]. + (client := ZnClient new) + url: server localUrl; + addPath: 'one'; + headerAt: 'X-Custom' put: 'The Secret'; + get. + self assert: client isSuccess. + self assert: client contents = 'OK!'. + client close ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUploadSmallDocument.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUploadSmallDocument.st index 70c78f66..bf0351ce 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUploadSmallDocument.st +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUploadSmallDocument.st @@ -16,6 +16,6 @@ testUploadSmallDocument client post. self assert: client isSuccess. self assert: client entity contentType = ZnMimeType textPlain. - self assert: (client contents includesSubString: contents). + self assert: (client contents includesSubstring: contents). client close. ZnFileSystemUtils deleteIfExists: 'small.txt' ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUsernamePassword.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUsernamePassword.st new file mode 100644 index 00000000..1b6d07ea --- /dev/null +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUsernamePassword.st @@ -0,0 +1,16 @@ +testing +testUsernamePassword + self withServerDo: [ :server | | client | + server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). + (client := ZnClient new) + url: server localUrl; + addPathSegment: 'echo'; + get. + self deny: client isSuccess. + self assert: client response isAuthenticationRequired. + client + username: 'foo' password: 'secret'; + get. + self assert: client isSuccess. + self assert: (client contents includesSubstring: 'Zinc'). + client close ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUsernamePasswordInUserInfo.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUsernamePasswordInUserInfo.st new file mode 100644 index 00000000..8b386b53 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUsernamePasswordInUserInfo.st @@ -0,0 +1,11 @@ +testing +testUsernamePasswordInUserInfo + self withServerDo: [ :server | | url client | + server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). + url := server localUrl. + url username: 'foo'; password: 'secret'; addPathSegment: 'echo'. + (client := ZnClient new) + get: url. + self assert: client isSuccess. + self assert: (client contents includesSubstring: 'Zinc'). + client close ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUsernamePasswordTwice.st b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUsernamePasswordTwice.st new file mode 100644 index 00000000..cb185253 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnClientTests.class/instance/testUsernamePasswordTwice.st @@ -0,0 +1,15 @@ +testing +testUsernamePasswordTwice + self withServerDo: [ :server | | client | + server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). + (client := ZnClient new) + url: server localUrl; + addPathSegment: 'echo'; + username: 'foo' password: 'secret'; + get. + self assert: client isSuccess. + self assert: (client contents includesSubstring: 'Zinc'). + client get. + self assert: client isSuccess. + self assert: (client contents includesSubstring: 'Zinc'). + 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 088b2c1b..652ea3c8 100644 --- a/repository/Zinc-Tests.package/ZnClientTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnClientTests.class/methodProperties.json @@ -5,29 +5,34 @@ "port" : "SvenVanCaekenberghe 3/12/2012 20:15", "testConstruction" : "SvenVanCaekenberghe 11/8/2011 22:16", "testCookies" : "SvenVanCaekenberghe 5/14/2012 17:15", - "testDownloadSmallHTML" : "SvenVanCaekenberghe 7/3/2012 00:19", - "testGetAfterPost" : "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", - "testGetSmallHTML" : "SvenVanCaekenberghe 11/8/2011 22:16", - "testGetSmallHTMLOneShot" : "SvenVanCaekenberghe 11/8/2011 22:16", - "testGetSmallHTMLStreaming" : "SvenVanCaekenberghe 7/13/2012 20:28", - "testGetSmallHTMLTwice" : "SvenVanCaekenberghe 11/8/2011 22:16", - "testGetSmallHTMLUrlConstruction" : "SvenVanCaekenberghe 11/8/2011 22:16", + "testGetSmallHTML" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testGetSmallHTMLOneShot" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testGetSmallHTMLStreaming" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testGetSmallHTMLTwice" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testGetSmallHTMLUrlConstruction" : "SvenVanCaekenberghe 8/23/2012 14:34", "testHeadSmallHTML" : "SvenVanCaekenberghe 3/12/2012 20:13", "testIfFailNonExistingHost" : "SvenVanCaekenberghe 11/8/2011 22:16", "testIfFailNotFound" : "SvenVanCaekenberghe 11/8/2011 22:16", "testIfFailWrongType" : "SvenVanCaekenberghe 11/8/2011 22:16", "testIfModifiedSinceNotModified" : "SvenVanCaekenberghe 11/8/2011 22:16", "testLogging" : "SvenVanCaekenberghe 11/8/2011 22:16", - "testPostForm" : "SvenVanCaekenberghe 3/12/2012 20:13", - "testPostMultipart" : "SvenVanCaekenberghe 7/3/2012 00:31", + "testPostForm" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testPostMultipart" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testPostTwice" : "SvenVanCaekenberghe 12/11/2012 20:37", "testProgress" : "SvenVanCaekenberghe 11/8/2011 22:19", "testProgressNoIfFail" : "SvenVanCaekenberghe 12/20/2011 13:55", - "testQueryGoogle" : "SvenVanCaekenberghe 11/8/2011 22:16", + "testQueryGoogle" : "SvenVanCaekenberghe 8/23/2012 14:34", "testRedirect" : "SvenVanCaekenberghe 11/8/2011 22:16", "testRedirectDontFollow" : "SvenVanCaekenberghe 11/23/2011 17:13", "testRedirectWithCookies" : "SvenVanCaekenberghe 5/14/2012 17:16", + "testRedirectWithCustomHeader" : "SvenVanCaekenberghe 12/11/2012 20:33", "testRelativeRedirect" : "SvenVanCaekenberghe 5/14/2012 17:16", "testTimeout" : "SvenVanCaekenberghe 3/12/2012 20:14", - "testUploadSmallDocument" : "SvenVanCaekenberghe 7/3/2012 00:31", + "testUploadSmallDocument" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testUsernamePassword" : "SvenVanCaekenberghe 12/11/2012 20:19", + "testUsernamePasswordInUserInfo" : "SvenVanCaekenberghe 1/30/2013 19:19", + "testUsernamePasswordTwice" : "SvenVanCaekenberghe 12/11/2012 20:20", "withServerDo:" : "SvenVanCaekenberghe 8/31/2011 21:59" } } diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/ignoringDeprecation..st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/ignoringDeprecation..st deleted file mode 100644 index 9a6488ce..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/ignoringDeprecation..st +++ /dev/null @@ -1,5 +0,0 @@ -private -ignoringDeprecation: block - [ block value ] - on: Deprecation - do: [ :exception | exception resume ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/port.st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/port.st deleted file mode 100644 index 49d8d3c8..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/port.st +++ /dev/null @@ -1,3 +0,0 @@ -private -port - ^ 1700 + 10 atRandom \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testBasicAuthorization.st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testBasicAuthorization.st deleted file mode 100644 index 204a7bf0..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testBasicAuthorization.st +++ /dev/null @@ -1,19 +0,0 @@ -testing -testBasicAuthorization - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client cred | - server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). - client := ZnUserAgent new. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 401. - self assert: ((response headers at: 'WWW-Authenticate') includesSubString: 'Basic'). - cred := (ZnCredential findHandlerFor: (response headers at: 'WWW-Authenticate')) new - username: 'foo'; - password: 'secret'; - domain: client request url authority; - yourself. - cred linkToAuthRequest: (response headers at: 'WWW-Authenticate'). - client session addCredential: cred. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response statusLine code = 200 ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testBasicAuthorizationFailure.st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testBasicAuthorizationFailure.st deleted file mode 100644 index 76fb1d70..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testBasicAuthorizationFailure.st +++ /dev/null @@ -1,19 +0,0 @@ -testing -testBasicAuthorizationFailure - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client cred | - server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). - client := ZnUserAgent new. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 401. - self assert: ((response headers at: 'WWW-Authenticate') includesSubString: 'Basic'). - cred := (ZnCredential findHandlerFor: (response headers at: 'WWW-Authenticate')) new - username: 'foo'; - password: 'wrong'; - domain: client request url authority; - yourself. - cred linkToAuthRequest: (response headers at: 'WWW-Authenticate'). - client session addCredential: cred. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response statusLine code = 401 ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testDigestAuthorization.st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testDigestAuthorization.st deleted file mode 100644 index c5b3149d..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testDigestAuthorization.st +++ /dev/null @@ -1,22 +0,0 @@ -testing -testDigestAuthorization - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client cred | - self - assert: ZnDigestAuthenticator hasMD5Support - description: 'MD5 hashing support is required for Digest authentication.'. - server authenticator: (ZnDigestAuthenticator username: 'foo' password: 'secret' realm: 'TEST'). - client := ZnUserAgent new. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 401. - self assert: ((response headers at: 'WWW-Authenticate') includesSubString: 'Digest'). - cred := (ZnCredential findHandlerFor: (response headers at: 'WWW-Authenticate')) new - username: 'foo'; - password: 'secret'; - domain: client request url authority; - yourself. - cred linkToAuthRequest: (response headers at: 'WWW-Authenticate'). - client session addCredential: cred. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response statusLine code = 200 ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testDigestAuthorizationFailure.st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testDigestAuthorizationFailure.st deleted file mode 100644 index 4dd63654..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testDigestAuthorizationFailure.st +++ /dev/null @@ -1,22 +0,0 @@ -testing -testDigestAuthorizationFailure - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client cred | - self - assert: ZnDigestAuthenticator hasMD5Support - description: 'MD5 hashing support is required for Digest authentication.'. - server authenticator: (ZnDigestAuthenticator username: 'foo' password: 'secret' realm: 'TEST'). - client := ZnUserAgent new. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 401. - self assert: ((response headers at: 'WWW-Authenticate') includesSubString: 'Digest'). - cred := (ZnCredential findHandlerFor: (response headers at: 'WWW-Authenticate')) new - username: 'foo'; - password: 'wrong'; - domain: client request url authority; - yourself. - cred linkToAuthRequest: (response headers at: 'WWW-Authenticate'). - client session addCredential: cred. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response statusLine code = 401 ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testFindHandlerFor.st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testFindHandlerFor.st deleted file mode 100644 index f038ee35..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testFindHandlerFor.st +++ /dev/null @@ -1,12 +0,0 @@ -testing -testFindHandlerFor - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client handler | - server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). - client := ZnUserAgent new. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 401. - self assert: ((response headers at: 'WWW-Authenticate') includesSubString: 'Basic'). - handler := ZnCredential findHandlerFor: (response headers at: 'WWW-Authenticate'). - self assert: handler = ZnBasicCredential ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testFindRealmFor.st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testFindRealmFor.st deleted file mode 100644 index cf82905a..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testFindRealmFor.st +++ /dev/null @@ -1,12 +0,0 @@ -testing -testFindRealmFor - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client realm | - server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). - client := ZnUserAgent new. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 401. - self assert: ((response headers at: 'WWW-Authenticate') includesSubString: 'Basic'). - realm := ZnCredential findRealmFor: (response headers at: 'WWW-Authenticate'). - self assert: (realm includesSubString: 'Zinc') ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testZnServerBasicAuthRealm.st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testZnServerBasicAuthRealm.st deleted file mode 100644 index 010cd5f1..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/testZnServerBasicAuthRealm.st +++ /dev/null @@ -1,20 +0,0 @@ -testing -testZnServerBasicAuthRealm - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client cred | - server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret' realm: 'TEST'). - client := ZnUserAgent new. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 401. - self assert: ((response headers at: 'WWW-Authenticate') includesSubString: 'Basic'). - cred := (ZnCredential findHandlerFor: (response headers at: 'WWW-Authenticate')) new - username: 'foo'; - password: 'secret'; - domain: client request url authority; - yourself. - cred linkToAuthRequest: (response headers at: 'WWW-Authenticate'). - self assert: cred realm = 'TEST'. - client session addCredential: cred. - response := client get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response statusLine code = 200 ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/withServerDo..st b/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/withServerDo..st deleted file mode 100644 index cfb671c0..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/instance/withServerDo..st +++ /dev/null @@ -1,10 +0,0 @@ -private -withServerDo: block - | server | - server := ZnServer on: self port. - [ - server start. - self assert: server isRunning & server isListening. - block cull: server - ] - ensure: [ server stop ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnCredentialTests.class/methodProperties.json deleted file mode 100644 index 09e18988..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/methodProperties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "ignoringDeprecation:" : "SvenVanCaekenberghe 10/4/2011 14:11", - "port" : "SvenVanCaekenberghe 3/12/2012 21:32", - "testBasicAuthorization" : "SvenVanCaekenberghe 3/12/2012 21:34", - "testBasicAuthorizationFailure" : "SvenVanCaekenberghe 3/12/2012 21:37", - "testDigestAuthorization" : "SvenVanCaekenberghe 3/12/2012 21:38", - "testDigestAuthorizationFailure" : "SvenVanCaekenberghe 3/12/2012 21:39", - "testFindHandlerFor" : "SvenVanCaekenberghe 3/12/2012 21:39", - "testFindRealmFor" : "SvenVanCaekenberghe 3/12/2012 21:40", - "testZnServerBasicAuthRealm" : "SvenVanCaekenberghe 3/12/2012 21:41", - "withServerDo:" : "SvenVanCaekenberghe 3/12/2012 21:32" } } diff --git a/repository/Zinc-Tests.package/ZnCredentialTests.class/properties.json b/repository/Zinc-Tests.package/ZnCredentialTests.class/properties.json deleted file mode 100644 index 8b767312..00000000 --- a/repository/Zinc-Tests.package/ZnCredentialTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnCredentialTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testDelete.st b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testDelete.st index 11c6a56f..890bdc3c 100644 --- a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testDelete.st +++ b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testDelete.st @@ -4,5 +4,5 @@ testDelete response := ZnEasy delete: (server localUrl addPathSegments: #('echo' 'foo'); yourself). self assert: (response headers contentType = ZnMimeType textPlain). self assert: (response statusLine code = 200). - self assert: (response entity string includesSubString: 'DELETE'). - self assert: (response entity string includesSubString: 'foo') ] \ No newline at end of file + self assert: (response entity string includesSubstring: 'DELETE'). + self assert: (response entity string includesSubstring: 'foo') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testGetSmallHTMLDocument.st b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testGetSmallHTMLDocument.st index 94ccf438..d85b093e 100644 --- a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testGetSmallHTMLDocument.st +++ b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testGetSmallHTMLDocument.st @@ -5,4 +5,4 @@ testGetSmallHTMLDocument response := ZnEasy get: url. self assert: (response headers contentType = ZnMimeType textHtml). self assert: (response statusLine code = 200). - self assert: (response entity string includesSubString: 'small') \ No newline at end of file + self assert: (response entity string includesSubstring: 'small') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPost.st b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPost.st index b6a9c86a..224efdb7 100644 --- a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPost.st +++ b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPost.st @@ -5,5 +5,5 @@ testPost response := ZnEasy post: (server localUrl addPathSegment: 'echo'; yourself) data: (ZnEntity text: data). self assert: (response headers contentType = ZnMimeType textPlain). self assert: (response statusLine code = 200). - self assert: (response entity string includesSubString: 'POST'). - self assert: (response entity string includesSubString: data) ] \ No newline at end of file + self assert: (response entity string includesSubstring: 'POST'). + self assert: (response entity string includesSubstring: data) ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPostUnicodeUtf8.st b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPostUnicodeUtf8.st index 200fa1c2..8e52e488 100644 --- a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPostUnicodeUtf8.st +++ b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPostUnicodeUtf8.st @@ -5,5 +5,5 @@ testPostUnicodeUtf8 response := ZnEasy post: (server localUrl addPathSegment: 'echo'; yourself) data: (ZnEntity text: data). self assert: (response headers contentType = ZnMimeType textPlain). self assert: (response statusLine code = 200). - self assert: (response entity string includesSubString: 'POST'). - self assert: (response entity string includesSubString: data) ] \ No newline at end of file + self assert: (response entity string includesSubstring: 'POST'). + self assert: (response entity string includesSubstring: data) ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPut.st b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPut.st index 8f17ab6f..5a0189ef 100644 --- a/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPut.st +++ b/repository/Zinc-Tests.package/ZnEasyTests.class/instance/testPut.st @@ -5,5 +5,5 @@ testPut response := ZnEasy put: (server localUrl addPathSegment: 'echo'; yourself) data: (ZnEntity text: data). self assert: (response headers contentType = ZnMimeType textPlain). self assert: (response statusLine code = 200). - self assert: (response entity string includesSubString: 'PUT'). - self assert: (response entity string includesSubString: data) ] \ No newline at end of file + self assert: (response entity string includesSubstring: 'PUT'). + self assert: (response entity string includesSubstring: data) ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEasyTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnEasyTests.class/methodProperties.json index 8bf786e3..35f06500 100644 --- a/repository/Zinc-Tests.package/ZnEasyTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnEasyTests.class/methodProperties.json @@ -3,12 +3,12 @@ }, "instance" : { "port" : "SvenVanCaekenberghe 3/12/2012 21:02", - "testDelete" : "SvenVanCaekenberghe 3/12/2012 21:03", + "testDelete" : "SvenVanCaekenberghe 8/23/2012 14:34", "testGetJpeg" : "SvenVanCaekenberghe 9/15/2011 16:34", - "testGetSmallHTMLDocument" : "SvenVanCaekenberghe 7/2/2012 15:30", + "testGetSmallHTMLDocument" : "SvenVanCaekenberghe 8/23/2012 14:34", "testHeadSmallHTMLDocument" : "SvenVanCaekenberghe 7/4/2012 17:33", - "testPost" : "SvenVanCaekenberghe 3/12/2012 21:05", - "testPostUnicodeUtf8" : "SvenVanCaekenberghe 3/12/2012 21:05", - "testPut" : "SvenVanCaekenberghe 3/12/2012 21:06", + "testPost" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testPostUnicodeUtf8" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testPut" : "SvenVanCaekenberghe 8/23/2012 14:34", "testTimeout" : "SvenVanCaekenberghe 3/12/2012 21:07", "withServerDo:" : "SvenVanCaekenberghe 3/12/2012 21:02" } } diff --git a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingApplicationFormUrlEncoding.st b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingApplicationFormUrlEncoding.st new file mode 100644 index 00000000..a5cf9351 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingApplicationFormUrlEncoding.st @@ -0,0 +1,11 @@ +testing +testReadingApplicationFormUrlEncoding + | input entity | + input := #(111 97 117 116 104 95 116 111 107 101 110 95 115 101 99 114 101 116 61 98 121 112 104 57 99 109 104 106 49 53 101 108 121 56 38 111 97 117 116 104 95 116 111 107 101 110 61 56 54 101 112 106 51 116 118 100 49 107 115 120 111 57) + asByteArray. + entity := ZnEntity readFrom: input readStream usingType: ZnMimeType applicationFormUrlEncoded andLength: input size. + self deny: entity isEmpty. + self assert: (entity includesField: 'oauth_token_secret'). + self assert: (entity includesField: 'oauth_token'). + self assert: (entity at: 'oauth_token_secret') equals: 'byph9cmhj15ely8'. + self assert: (entity at: 'oauth_token') equals: '86epj3tvd1ksxo9' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingApplicationFormUrlEncodingNoLength.st b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingApplicationFormUrlEncodingNoLength.st new file mode 100644 index 00000000..05ff51a6 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingApplicationFormUrlEncodingNoLength.st @@ -0,0 +1,11 @@ +testing +testReadingApplicationFormUrlEncodingNoLength + | input entity | + input := #(111 97 117 116 104 95 116 111 107 101 110 95 115 101 99 114 101 116 61 98 121 112 104 57 99 109 104 106 49 53 101 108 121 56 38 111 97 117 116 104 95 116 111 107 101 110 61 56 54 101 112 106 51 116 118 100 49 107 115 120 111 57) + asByteArray. + entity := ZnEntity readFrom: input readStream usingType: ZnMimeType applicationFormUrlEncoded andLength: nil. + self deny: entity isEmpty. + self assert: (entity includesField: 'oauth_token_secret'). + self assert: (entity includesField: 'oauth_token'). + self assert: (entity at: 'oauth_token_secret') equals: 'byph9cmhj15ely8'. + self assert: (entity at: 'oauth_token') equals: '86epj3tvd1ksxo9' \ 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 e26ae516..282f6218 100644 --- a/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingLimited.st +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/instance/testReadingLimited.st @@ -1,10 +1,8 @@ testing testReadingLimited - | limit contents | + | contents | contents := String new: 1025 withAll: $X. - limit := ZnConstants maximumEntitySize. - [ - ZnConstants maximumEntitySize: 1024. + ZnMaximumEntitySize value: 1024 during: [ self should: [ ZnEntity readFrom: contents asByteArray readStream @@ -16,5 +14,4 @@ testReadingLimited readFrom: contents asByteArray readStream usingType: ZnMimeType textPlain andLength: nil ] - raise: ZnEntityTooLarge. - ] ensure: [ ZnConstants maximumEntitySize: limit ] \ 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 453d6861..c4d1d225 100644 --- a/repository/Zinc-Tests.package/ZnEntityTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnEntityTests.class/methodProperties.json @@ -4,8 +4,10 @@ "instance" : { "testMultiPartFormDataWriteRead" : "SvenVanCaekenberghe 1/27/2011 17:15", "testReading" : "SvenVanCaekenberghe 12/3/2010 15:41", + "testReadingApplicationFormUrlEncoding" : "SvenVanCaekenberghe 1/25/2013 14:41", + "testReadingApplicationFormUrlEncodingNoLength" : "SvenVanCaekenberghe 1/25/2013 14:41", "testReadingBinary" : "SvenVanCaekenberghe 4/7/2012 17:45", - "testReadingLimited" : "SvenVanCaekenberghe 1/31/2012 13:39", + "testReadingLimited" : "SvenVanCaekenberghe 9/5/2012 12:39", "testStringEntityEncoderInitialization" : "SvenVanCaekenberghe 12/14/2010 12:13", "testUTF8ReadingDetermined" : "PaulDeBruicker 04/10/2011 10:46", "testUTF8ReadingUndetermined" : "PaulDeBruicker 04/10/2011 10:46", diff --git a/repository/Zinc-Tests.package/ZnFixedClientTests.class/instance/ignoringDeprecation..st b/repository/Zinc-Tests.package/ZnFixedClientTests.class/instance/ignoringDeprecation..st deleted file mode 100644 index 9a6488ce..00000000 --- a/repository/Zinc-Tests.package/ZnFixedClientTests.class/instance/ignoringDeprecation..st +++ /dev/null @@ -1,5 +0,0 @@ -private -ignoringDeprecation: block - [ block value ] - on: Deprecation - do: [ :exception | exception resume ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnFixedClientTests.class/instance/testGetSmallHTMLDocument.st b/repository/Zinc-Tests.package/ZnFixedClientTests.class/instance/testGetSmallHTMLDocument.st deleted file mode 100644 index 3b140a6a..00000000 --- a/repository/Zinc-Tests.package/ZnFixedClientTests.class/instance/testGetSmallHTMLDocument.st +++ /dev/null @@ -1,12 +0,0 @@ -testing -testGetSmallHTMLDocument - self - ignoringDeprecation: [ - | client response | - client := ZnFixedClient host: 'zn.stfx.eu'. - [ - response := client get: '/zn/small.html'. - self assert: response headers contentType = ZnMimeType textHtml. - self assert: response statusLine code = 200. - self assert: (response entity string includesSubString: 'small') ] - ensure: [ client close ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnFixedClientTests.class/instance/testIfModifiedSinceNotModified.st b/repository/Zinc-Tests.package/ZnFixedClientTests.class/instance/testIfModifiedSinceNotModified.st deleted file mode 100644 index 0f548246..00000000 --- a/repository/Zinc-Tests.package/ZnFixedClientTests.class/instance/testIfModifiedSinceNotModified.st +++ /dev/null @@ -1,13 +0,0 @@ -testing -testIfModifiedSinceNotModified - self - ignoringDeprecation: [ - | client request response | - client := ZnFixedClient host: 'caretaker.wolf359.be'. - [ - request := ZnRequest get: (client fixedUrl: '/small.html'). - request setIfModifiedSince: (Date year: 2011 month: 1 day: 1). - response := client executeRequest: request. - self assert: response isNotModified. - self assert: response hasEntity not ] - ensure: [ client close ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnFixedClientTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnFixedClientTests.class/methodProperties.json deleted file mode 100644 index 85a0e183..00000000 --- a/repository/Zinc-Tests.package/ZnFixedClientTests.class/methodProperties.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "ignoringDeprecation:" : "SvenVanCaekenberghe 10/4/2011 13:55", - "testGetSmallHTMLDocument" : "SvenVanCaekenberghe 7/2/2012 15:31", - "testIfModifiedSinceNotModified" : "SvenVanCaekenberghe 10/4/2011 13:55" } } diff --git a/repository/Zinc-Tests.package/ZnFixedClientTests.class/properties.json b/repository/Zinc-Tests.package/ZnFixedClientTests.class/properties.json deleted file mode 100644 index 5070c64c..00000000 --- a/repository/Zinc-Tests.package/ZnFixedClientTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnFixedClientTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testGetSmallHTMLDocument.st b/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testGetSmallHTMLDocument.st index ce6150d4..bd08e226 100644 --- a/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testGetSmallHTMLDocument.st +++ b/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testGetSmallHTMLDocument.st @@ -2,5 +2,5 @@ testing testGetSmallHTMLDocument | mimeDocument | mimeDocument := ZnHTTPSocketFacade httpGetDocument: 'http://zn.stfx.eu/zn/small.html'. - self assert: (mimeDocument contents includesSubString: 'small'). - self assert: (mimeDocument contentType includesSubString: 'text/html') \ No newline at end of file + self assert: (mimeDocument contents includesSubstring: 'small'). + self assert: (mimeDocument contentType includesSubstring: 'text/html') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testGetSmallHTMLStream.st b/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testGetSmallHTMLStream.st index f7fcfe1e..d98e852e 100644 --- a/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testGetSmallHTMLStream.st +++ b/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testGetSmallHTMLStream.st @@ -2,4 +2,4 @@ testing testGetSmallHTMLStream | stream | stream := ZnHTTPSocketFacade httpGet: 'http://zn.stfx.eu/zn/small.html'. - self assert: (stream contents includesSubString: 'small') \ No newline at end of file + self assert: (stream contents includesSubstring: 'small') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testPut.st b/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testPut.st index 233c93db..5acf344e 100644 --- a/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testPut.st +++ b/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/instance/testPut.st @@ -13,6 +13,6 @@ testPut user: 'user' passwd: 'secret'. self assert: (result beginsWith: 'HTTP/1.1 200 OK'). - self assert: (result includesSubString: '67B') + self assert: (result includesSubstring: '67B') ] ensure: [ server stop ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/methodProperties.json index 95446b4e..b68ba50b 100644 --- a/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnHTTPSocketFacadeTests.class/methodProperties.json @@ -3,6 +3,6 @@ }, "instance" : { "testExtendUrlWithArgs" : "SvenVanCaekenberghe 4/30/2011 13:59", - "testGetSmallHTMLDocument" : "SvenVanCaekenberghe 7/2/2012 15:30", - "testGetSmallHTMLStream" : "SvenVanCaekenberghe 7/2/2012 15:30", - "testPut" : "SvenVanCaekenberghe 3/12/2012 22:11" } } + "testGetSmallHTMLDocument" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testGetSmallHTMLStream" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testPut" : "SvenVanCaekenberghe 8/23/2012 14:34" } } diff --git a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testWriting.st b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testWriting.st index b065f3e3..200b7649 100644 --- a/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testWriting.st +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/instance/testWriting.st @@ -6,7 +6,7 @@ testWriting at: 'Content-Length' put: '128'; yourself. string := String streamContents: [ :stream | headers writeOn: stream ]. - self assert: (string includesSubString: 'Content-Type: text/plain', String crlf). - self assert: (string includesSubString: 'Content-Length: 128', String crlf). + self assert: (string includesSubstring: 'Content-Type: text/plain', String crlf). + self assert: (string includesSubstring: 'Content-Length: 128', String crlf). self assert: (string occurrencesOf: Character cr) = 2. self assert: (string occurrencesOf: Character lf) = 2 \ 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 32efa86e..86d506b6 100644 --- a/repository/Zinc-Tests.package/ZnHeadersTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnHeadersTests.class/methodProperties.json @@ -8,4 +8,4 @@ "testNormalization" : "SvenVanCaekenberghe 9/10/2010 20:55", "testReading" : "SvenVanCaekenberghe 9/6/2010 20:16", "testReadingMultiline" : "SvenVanCaekenberghe 5/22/2012 10:42", - "testWriting" : "SvenVanCaekenberghe 9/6/2010 20:20" } } + "testWriting" : "SvenVanCaekenberghe 8/23/2012 14:34" } } diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/ignoringDeprecation..st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/ignoringDeprecation..st deleted file mode 100644 index 9a6488ce..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/ignoringDeprecation..st +++ /dev/null @@ -1,5 +0,0 @@ -private -ignoringDeprecation: block - [ block value ] - on: Deprecation - do: [ :exception | exception resume ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/port.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/port.st deleted file mode 100644 index 49d8d3c8..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/port.st +++ /dev/null @@ -1,3 +0,0 @@ -private -port - ^ 1700 + 10 atRandom \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testBasicAuthorization.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testBasicAuthorization.st deleted file mode 100644 index 6052e4a9..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testBasicAuthorization.st +++ /dev/null @@ -1,11 +0,0 @@ -testing -testBasicAuthorization - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client | - server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). - client := ZnHttpClient new - url: (server localUrl addPathSegments: #('echo' 'foo'); yourself); - auth: 'foo' password: 'secret'. - response := client get. - self assert: client contentType = ZnMimeType textPlain. - self assert: client status = 200 ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testBasicAuthorizationFailure.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testBasicAuthorizationFailure.st deleted file mode 100644 index b5acce24..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testBasicAuthorizationFailure.st +++ /dev/null @@ -1,11 +0,0 @@ -testing -testBasicAuthorizationFailure - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client | - server authenticator: (ZnBasicAuthenticator username: 'foo' password: 'secret'). - client := ZnHttpClient new - url: (server localUrl addPathSegments: #('echo' 'foo'); yourself); - auth: 'foo' password: 'wrong'. - response := client get. - self assert: client contentType = ZnMimeType textPlain. - self assert: client isAuthenticationRequired ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testCookieAt.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testCookieAt.st deleted file mode 100644 index 9573b0c0..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testCookieAt.st +++ /dev/null @@ -1,6 +0,0 @@ -testing -testCookieAt - self ignoringDeprecation: [ | client response | - client := ZnHttpClient new url: 'http://www.pharo-project.org'. - response := client get. - self assert: (client cookieAt: 'cmsbox') notNil ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testDelete.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testDelete.st deleted file mode 100644 index c628a3bc..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testDelete.st +++ /dev/null @@ -1,11 +0,0 @@ -testing -testDelete - self ignoringDeprecation: [ - self withServerDo: [ :server | | response data client | - data := String streamContents: [ :stream | 1 to: 32 do: [ :each | stream nextPut: 'abc' atRandom ] ]. - client := ZnHttpClient new url: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - response := client delete. - self assert: client contentType = ZnMimeType textPlain. - self assert: client status = 200. - self assert: (response includesSubString: 'DELETE'). - self assert: (response includesSubString: 'DELETE') ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testDigestAuthorization.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testDigestAuthorization.st deleted file mode 100644 index fd02c767..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testDigestAuthorization.st +++ /dev/null @@ -1,11 +0,0 @@ -testing -testDigestAuthorization - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client | - server authenticator: (ZnDigestAuthenticator username: 'foo' password: 'secret' realm: 'TEST'). - client := ZnHttpClient new - url: (server localUrl addPathSegments: #('echo' 'foo'); yourself); - digestAuth: 'foo' password: 'secret'. - response := client get. - self assert: client contentType = ZnMimeType textPlain. - self assert: client status = 200 ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testDigestAuthorizationFailure.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testDigestAuthorizationFailure.st deleted file mode 100644 index 1201ee73..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testDigestAuthorizationFailure.st +++ /dev/null @@ -1,11 +0,0 @@ -testing -testDigestAuthorizationFailure - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client | - server authenticator: (ZnDigestAuthenticator username: 'foo' password: 'secret' realm: 'TEST'). - client := ZnHttpClient new - url: (server localUrl addPathSegments: #('echo' 'foo'); yourself); - digestAuth: 'foo' password: 'wrong'. - response := client get. - self assert: client contentType = ZnMimeType textPlain. - self assert: client isAuthenticationRequired ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testGet.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testGet.st deleted file mode 100644 index ae0758a0..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testGet.st +++ /dev/null @@ -1,9 +0,0 @@ -testing -testGet - self ignoringDeprecation: [ | client response | - client := ZnHttpClient new. - response := client - url: 'http://zn.stfx.eu/zn/small.html'; - get. - self assert: response notNil. - self assert: client status = 200 ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testGetMultParam.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testGetMultParam.st deleted file mode 100644 index e57aaa07..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testGetMultParam.st +++ /dev/null @@ -1,11 +0,0 @@ -testing -testGetMultParam - self ignoringDeprecation: [ | client response | - client := ZnHttpClient new - url: 'http://zn.stfx.eu/zn/small.html'; - parameterAt: 'test' add: 'value1'; - parameterAt: 'test' add: 'value2'. - self assert: (client params at: 'test') isArray. - response := client get. - self assert: response notNil. - self assert: client status = 200 ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testPost.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testPost.st deleted file mode 100644 index fdb5a268..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testPost.st +++ /dev/null @@ -1,14 +0,0 @@ -testing -testPost - self ignoringDeprecation: [ - self withServerDo: [ :server | | response data client | - data := String streamContents: [ :stream | 1 to: 32 do: [ :each | stream nextPut: 'abc' atRandom ] ]. - client := ZnHttpClient new - url: (server localUrl addPathSegments: #('echo' 'foo'); yourself); - parameterAt: 'foo' put: 'bar'; - parameterAt: 'baz' put: 'bang'. - response := client post. - self assert: client contentType = ZnMimeType textPlain. - self assert: client status = 200. - self assert: (response includesSubString: 'POST'). - self assert: (response includesSubString: 'bar') ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testPut.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testPut.st deleted file mode 100644 index 76f81114..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testPut.st +++ /dev/null @@ -1,13 +0,0 @@ -testing -testPut - self ignoringDeprecation: [ - self withServerDo: [ :server | | response data client | - data := String streamContents: [ :stream | 1 to: 32 do: [ :each | stream nextPut: 'abc' atRandom ] ]. - client := ZnHttpClient new - url: (server localUrl addPathSegments: #('echo' 'foo'); yourself); - parameterAt: 'foo' put: 'bar'; - parameterAt: 'baz' put: 'bang'. - response := client put. - self assert: client contentType = ZnMimeType textPlain. - self assert: client status = 200. - self assert: (response includesSubString: 'PUT') ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testRelativeRedirect.st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testRelativeRedirect.st deleted file mode 100644 index 1de17169..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/testRelativeRedirect.st +++ /dev/null @@ -1,14 +0,0 @@ -testing -testRelativeRedirect - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client | - server onRequestRespond: [ :request | - request uri firstPathSegment = 'one' - ifTrue: [ ZnResponse redirect: 'two' ] - ifFalse: [ - request uri firstPathSegment = 'two' - ifTrue: [ ZnResponse ok: (ZnEntity text: 'OK!') ] - ifFalse: [ ZnResponse notFound: request uri ] ] ]. - (client := ZnHttpClient new) url: (server localUrl addPathSegment: 'one'; yourself). - response := client post. - self assert: response = 'OK!' ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/withServerDo..st b/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/withServerDo..st deleted file mode 100644 index cfb671c0..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/instance/withServerDo..st +++ /dev/null @@ -1,10 +0,0 @@ -private -withServerDo: block - | server | - server := ZnServer on: self port. - [ - server start. - self assert: server isRunning & server isListening. - block cull: server - ] - ensure: [ server stop ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnHttpClientTests.class/methodProperties.json deleted file mode 100644 index c73a24bc..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/methodProperties.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "ignoringDeprecation:" : "SvenVanCaekenberghe 10/4/2011 14:11", - "port" : "SvenVanCaekenberghe 3/12/2012 20:20", - "testBasicAuthorization" : "SvenVanCaekenberghe 3/12/2012 20:31", - "testBasicAuthorizationFailure" : "SvenVanCaekenberghe 3/12/2012 20:31", - "testCookieAt" : "SvenVanCaekenberghe 3/12/2012 20:23", - "testDelete" : "SvenVanCaekenberghe 3/12/2012 20:31", - "testDigestAuthorization" : "SvenVanCaekenberghe 3/12/2012 20:31", - "testDigestAuthorizationFailure" : "SvenVanCaekenberghe 3/12/2012 20:31", - "testGet" : "SvenVanCaekenberghe 7/4/2012 17:32", - "testGetMultParam" : "SvenVanCaekenberghe 7/4/2012 17:33", - "testPost" : "SvenVanCaekenberghe 3/12/2012 20:32", - "testPut" : "SvenVanCaekenberghe 3/12/2012 20:31", - "testRelativeRedirect" : "SvenVanCaekenberghe 5/14/2012 17:16", - "withServerDo:" : "SvenVanCaekenberghe 3/12/2012 20:20" } } diff --git a/repository/Zinc-Tests.package/ZnHttpClientTests.class/properties.json b/repository/Zinc-Tests.package/ZnHttpClientTests.class/properties.json deleted file mode 100644 index f926d512..00000000 --- a/repository/Zinc-Tests.package/ZnHttpClientTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnHttpClientTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/instance/cookieString.st b/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/instance/cookieString.st index d6d5b414..bf0cda3d 100644 --- a/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/instance/cookieString.st +++ b/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/instance/cookieString.st @@ -1,3 +1,3 @@ accessing cookieString - ^'PREF=ID=18ae67ce302b6317:TM=1285696140:LM=1285696140:S=hqroFGlRQR1j4Yhy; expires=Thu, 27-Sep-2012 17:49:00 GMT; path=/; domain=.google.com' \ No newline at end of file + ^ 'PREF=ID=18ae67ce302b6317:TM=1285696140:LM=1285696140:S=hqroFGlRQR1j4Yhy; expires={1}; path=/; domain=.google.com' format: { ZnUtils httpDate: DateAndTime now + 60 days } \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/instance/cookieStringAlt.st b/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/instance/cookieStringAlt.st index a877f213..d84de4ff 100644 --- a/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/instance/cookieStringAlt.st +++ b/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/instance/cookieStringAlt.st @@ -1,3 +1,3 @@ accessing cookieStringAlt - ^'PREFS=ID=18ae67ce302b6317:TM=1285696140:LM=1285696140:S=hqroFGlRQR1j4Yhy; expires=Thu, 27-Sep-2012 17:49:00 GMT; path=/; domain=.pharo-project.org' \ No newline at end of file + ^'PREFS=ID=18ae67ce302b6317:TM=1285696140:LM=1285696140:S=hqroFGlRQR1j4Yhy; expires={1}; path=/; domain=.pharo-project.org' format: { ZnUtils httpDate: DateAndTime now + 60 days } \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/methodProperties.json index 3c21b11e..1793b17e 100644 --- a/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnMagicCookieJarTests.class/methodProperties.json @@ -2,8 +2,8 @@ "class" : { }, "instance" : { - "cookieString" : "MattKennedy 9/28/2010 16:25", - "cookieStringAlt" : "MattKennedy 9/28/2010 16:31", + "cookieString" : "SvenVanCaekenberghe 9/28/2012 12:39", + "cookieStringAlt" : "SvenVanCaekenberghe 9/28/2012 12:39", "testAdd" : "SvenVanCaekenberghe 1/4/2011 14:19", "testCookieAtForUrl" : "SvenVanCaekenberghe 1/4/2011 15:03", "testCookiesForUrl" : "SvenVanCaekenberghe 1/4/2011 15:02" } } diff --git a/repository/Zinc-Tests.package/ZnMagicCookieTests.class/instance/cookieString.st b/repository/Zinc-Tests.package/ZnMagicCookieTests.class/instance/cookieString.st index d6d5b414..20e95abb 100644 --- a/repository/Zinc-Tests.package/ZnMagicCookieTests.class/instance/cookieString.st +++ b/repository/Zinc-Tests.package/ZnMagicCookieTests.class/instance/cookieString.st @@ -1,3 +1,3 @@ -accessing +testing cookieString - ^'PREF=ID=18ae67ce302b6317:TM=1285696140:LM=1285696140:S=hqroFGlRQR1j4Yhy; expires=Thu, 27-Sep-2012 17:49:00 GMT; path=/; domain=.google.com' \ No newline at end of file + ^ 'PREF=ID=18ae67ce302b6317:TM=1285696140:LM=1285696140:S=hqroFGlRQR1j4Yhy; expires={1}; path=/; domain=.google.com' format: { ZnUtils httpDate: DateAndTime now + 60 days } \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMagicCookieTests.class/instance/cookieStringSubpath.st b/repository/Zinc-Tests.package/ZnMagicCookieTests.class/instance/cookieStringSubpath.st index 468b8fd6..68ae8739 100644 --- a/repository/Zinc-Tests.package/ZnMagicCookieTests.class/instance/cookieStringSubpath.st +++ b/repository/Zinc-Tests.package/ZnMagicCookieTests.class/instance/cookieStringSubpath.st @@ -1,3 +1,3 @@ accessing cookieStringSubpath - ^'PREF=ID=18ae67ce302b6317:TM=1285696140:LM=1285696140:S=hqroFGlRQR1j4Yhy; expires=Thu, 27-Sep-2012 17:49:00 GMT; path=/test/; domain=.google.com' \ No newline at end of file + ^ 'PREF=ID=18ae67ce302b6317:TM=1285696140:LM=1285696140:S=hqroFGlRQR1j4Yhy; expires={1}; path=/test/; domain=.google.com' format: { ZnUtils httpDate: DateAndTime now + 60 days } \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMagicCookieTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnMagicCookieTests.class/methodProperties.json index b768aeb8..187bd537 100644 --- a/repository/Zinc-Tests.package/ZnMagicCookieTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnMagicCookieTests.class/methodProperties.json @@ -2,8 +2,8 @@ "class" : { }, "instance" : { - "cookieString" : "MattKennedy 9/28/2010 15:16", - "cookieStringSubpath" : "MattKennedy 9/28/2010 16:11", + "cookieString" : "SvenVanCaekenberghe 9/28/2012 12:38", + "cookieStringSubpath" : "SvenVanCaekenberghe 9/28/2012 12:38", "testFromString" : "SvenVanCaekenberghe 1/4/2011 14:20", "testInDomain" : "SvenVanCaekenberghe 1/4/2011 15:01", "testInPath" : "SvenVanCaekenberghe 1/4/2011 14:20" } } diff --git a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/properties.json b/repository/Zinc-Tests.package/ZnMimeTypeTests.class/properties.json deleted file mode 100644 index d7a0d4e6..00000000 --- a/repository/Zinc-Tests.package/ZnMimeTypeTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnMimeTypeTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/instance/testTooManyEntries.st b/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/instance/testTooManyEntries.st deleted file mode 100644 index 3011d1db..00000000 --- a/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/instance/testTooManyEntries.st +++ /dev/null @@ -1,8 +0,0 @@ -testing -testTooManyEntries - | dictionary | - dictionary := ZnMultiValueDictionary new. - self - should: [ 1 to: ZnConstants maximumNumberOfDictionaryEntries + 1 do: [ :each | - dictionary at: each put: each ] ] - raise: ZnTooManyDictionaryEntries \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/methodProperties.json deleted file mode 100644 index 64d50142..00000000 --- a/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/methodProperties.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "testMultiValues" : "PaulDeBruicker 04/10/2011 10:48", - "testTooManyEntries" : "SvenVanCaekenberghe 1/2/2012 19:23" } } diff --git a/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/properties.json b/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/properties.json deleted file mode 100644 index 8154d6b5..00000000 --- a/repository/Zinc-Tests.package/ZnMultiValueDictionaryTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnMultiValueDictionaryTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testMergedFields.st b/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testMergedFields.st new file mode 100644 index 00000000..ee0cdc07 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testMergedFields.st @@ -0,0 +1,15 @@ +testing +testMergedFields + | request form mergedFields | + request := ZnRequest post: 'http://host.com/foo?x=1&y=2&x=3'. + form := ZnApplicationFormUrlEncodedEntity new. + form + at: #z put: '100'; + at: #z add: '200'; + at: #y put: '0'. + request entity: form. + mergedFields := request mergedFields. + self assert: mergedFields keys sorted equals: #(x y z). + self assert: (mergedFields at: #x) sorted equals: #('1' '3'). + self assert: (mergedFields at: #y) sorted equals: #('0' '2'). + self assert: (mergedFields at: #z) sorted equals: #('100' '200') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testUrl.st b/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testUrl.st new file mode 100644 index 00000000..41ec90f9 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnRequestTests.class/instance/testUrl.st @@ -0,0 +1,17 @@ +testing +testUrl + | url request input | + url := 'http://zn.stfx.eu/zn/small.thml' asZnUrl. + request := ZnRequest get: url. + "The original URL is kept inside the request line object inside the request object" + self assert: request url equals: url. + self assert: request relativeUrl equals: url asRelativeUrl. + self assert: request absoluteUrl equals: url. + url := 'http://foo.com/foo.html' asZnUrl. + input := 'GET /foo.html HTTP/1.1' , String crlf , + 'Host: foo.com' , String crlf , + String crlf. + request := ZnRequest readFrom: input readStream. + self assert: request url equals: url asRelativeUrl. + self assert: request relativeUrl equals: url asRelativeUrl. + self assert: request absoluteUrl equals: url \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnRequestTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnRequestTests.class/methodProperties.json index 095d1480..03cbc09c 100644 --- a/repository/Zinc-Tests.package/ZnRequestTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnRequestTests.class/methodProperties.json @@ -5,5 +5,7 @@ "testBasicAuthenticate" : "SvenVanCaekenberghe 9/12/2010 20:25", "testCookiesParsing" : "SvenVanCaekenberghe 3/4/2012 21:40", "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 12/4/2010 13:35", + "testUrl" : "SvenVanCaekenberghe 1/7/2013 09:09" } } diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testAbsoluteCreated.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testAbsoluteCreated.st new file mode 100644 index 00000000..a4da6327 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testAbsoluteCreated.st @@ -0,0 +1,10 @@ +testing +testAbsoluteCreated + | response uri | + uri := 'http://www.example.com:8888/something/else/foo.txt'. + response := ZnResponse created: uri asZnUrl. + self assert: response code = 201. + self assert: response hasHeaders. + self assert: (response headers at: 'Location') = uri. + self assert: response hasEntity. + self assert: (response entity contents includesSubstring: uri) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testAbsoluteRedirect.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testAbsoluteRedirect.st new file mode 100644 index 00000000..ca245e16 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testAbsoluteRedirect.st @@ -0,0 +1,11 @@ +testing +testAbsoluteRedirect + | response uri | + uri := 'http://foo.com:8080/something/else/foo.txt?key=123'. + response := ZnResponse redirect: uri asZnUrl. + self assert: response code = 302. + self assert: response isRedirect. + self assert: response hasHeaders. + self assert: (response headers at: 'Location') = uri. + self assert: response hasEntity. + self assert: (response entity contents includesSubstring: uri) diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCookie.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCookie.st index fdb207b6..75b3057b 100644 --- a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCookie.st +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCookie.st @@ -11,7 +11,7 @@ testCookie responseString := String streamContents: [ :stream | response writeOn: stream ]. - self assert: (responseString includesSubString: 'Set-Cookie: testCookie1=123') + self assert: (responseString includesSubstring: 'Set-Cookie: testCookie1=123') diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCookies.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCookies.st index f2616da2..41694f27 100644 --- a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCookies.st +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCookies.st @@ -17,8 +17,8 @@ testCookies responseString := String streamContents: [ :stream | response writeOn: stream ]. - self assert: (responseString includesSubString: 'Set-Cookie: testCookie1=123'). - self assert: (responseString includesSubString: 'Set-Cookie: testCookie2=321'). + self assert: (responseString includesSubstring: 'Set-Cookie: testCookie1=123'). + self assert: (responseString includesSubstring: 'Set-Cookie: testCookie2=321'). diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCreated.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCreated.st index 6706a0ac..f8d677a2 100644 --- a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCreated.st +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testCreated.st @@ -7,4 +7,4 @@ testCreated self assert: response hasHeaders. self assert: (response headers at: 'Location') = uri. self assert: response hasEntity. - self assert: (response entity contents includesSubString: uri) \ No newline at end of file + self assert: (response entity contents includesSubstring: uri) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testNotFound.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testNotFound.st index dcf4f7ab..4ed3b444 100644 --- a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testNotFound.st +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testNotFound.st @@ -5,4 +5,4 @@ testNotFound self assert: response code = 404. self assert: (response headers includesKey: 'Server'). self assert: (response headers includesKey: 'Date'). - self assert: (response entity contents includesSubString: 'secret.txt') \ No newline at end of file + self assert: (response entity contents includesSubstring: 'secret.txt') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testRedirect.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testRedirect.st index e0450217..0524e5f2 100644 --- a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testRedirect.st +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testRedirect.st @@ -4,7 +4,15 @@ testRedirect uri := '/something/else/foo.txt'. response := ZnResponse redirect: uri. self assert: response code = 302. + self assert: response code = 302. + self assert: response hasHeaders. + self assert: (response headers at: 'Location') = uri. + self assert: response hasEntity. + self assert: (response entity contents includesSubstring: uri). + response := ZnResponse redirect: uri asZnUrl. + self assert: response code = 302. + self assert: response code = 302. self assert: response hasHeaders. self assert: (response headers at: 'Location') = uri. self assert: response hasEntity. - self assert: (response entity contents includesSubString: uri) \ No newline at end of file + self assert: (response entity contents includesSubstring: uri) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testSlashdotGzipChunked.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testSlashdotGzipChunked.st index c34232a3..d660bfe4 100644 --- a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testSlashdotGzipChunked.st +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testSlashdotGzipChunked.st @@ -15,4 +15,4 @@ testSlashdotGzipChunked self assert: (response headers at: 'Content-Encoding' ifAbsent: [ 'gzip' ]) = 'gzip'. self assert: (response headers at: 'Transfer-Encoding' ifAbsent: [ 'chunked' ]) = 'chunked'. contents := response entity contents. - self assert: ((contents includesSubString: 'Slashdot') or: [ contents includesSubString: 'refresh' ]) + self assert: ((contents includesSubstring: 'Slashdot') or: [ contents includesSubstring: 'refresh' ]) diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testWritingBinary.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testWritingBinary.st index a824ddbb..099f0225 100644 --- a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testWritingBinary.st +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testWritingBinary.st @@ -1,8 +1,8 @@ -as yet unclassified +testing testWritingBinary | response bytes string | response := ZnResponse ok: (ZnEntity text: 'Okay'). bytes := ByteArray streamContents: [ :stream | response writeOn: stream ]. string := bytes asString. - self assert: (string includesSubString: '200 OK'). - self assert: (string includesSubString: 'Okay') \ No newline at end of file + self assert: (string includesSubstring: '200 OK'). + self assert: (string includesSubstring: 'Okay') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testWritingCharacter.st b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testWritingCharacter.st index 39cfefc7..14e897d4 100644 --- a/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testWritingCharacter.st +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/instance/testWritingCharacter.st @@ -1,7 +1,7 @@ -as yet unclassified +testing testWritingCharacter | response string | response := ZnResponse ok: (ZnEntity text: 'Okay'). string := String streamContents: [ :stream | response writeOn: stream ]. - self assert: (string includesSubString: '200 OK'). - self assert: (string includesSubString: 'Okay') \ No newline at end of file + self assert: (string includesSubstring: '200 OK'). + self assert: (string includesSubstring: 'Okay') \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnResponseTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnResponseTests.class/methodProperties.json index e46a196e..f96c06fe 100644 --- a/repository/Zinc-Tests.package/ZnResponseTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnResponseTests.class/methodProperties.json @@ -2,12 +2,14 @@ "class" : { }, "instance" : { - "testCookie" : "NickAger 5/10/2011 11:30", - "testCookies" : "NickAger 5/10/2011 11:30", - "testCreated" : "SvenVanCaekenberghe 1/4/2011 14:20", + "testAbsoluteCreated" : "SvenVanCaekenberghe 1/6/2013 22:42", + "testAbsoluteRedirect" : "SvenVanCaekenberghe 1/6/2013 22:37", + "testCookie" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testCookies" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testCreated" : "SvenVanCaekenberghe 8/23/2012 14:34", "testIsError" : "PaulDeBruicker 4/19/2012 17:01", - "testNotFound" : "SvenVanCaekenberghe 1/4/2011 14:20", - "testRedirect" : "SvenVanCaekenberghe 1/4/2011 14:20", - "testSlashdotGzipChunked" : "SvenVanCaekenberghe 9/13/2011 22:18", - "testWritingBinary" : "SvenVanCaekenberghe 12/3/2010 21:29", - "testWritingCharacter" : "SvenVanCaekenberghe 12/3/2010 21:30" } } + "testNotFound" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testRedirect" : "SvenVanCaekenberghe 1/6/2013 22:38", + "testSlashdotGzipChunked" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testWritingBinary" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testWritingCharacter" : "SvenVanCaekenberghe 8/23/2012 14:34" } } diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testAuthorizationFailed.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testAuthorizationFailed.st index 2e617e7b..052b51e7 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testAuthorizationFailed.st +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testAuthorizationFailed.st @@ -5,5 +5,5 @@ testAuthorizationFailed response := ZnEasy get: (server localUrl addPathSegment: 'echo'; yourself). self assert: (response headers contentType = ZnMimeType textPlain). self assert: (response statusLine code = 401). - self assert: ((response headers at: 'WWW-Authenticate') includesSubString: 'Basic'). - self assert: ((response headers at: 'WWW-Authenticate') includesSubString: 'Zinc') ] \ No newline at end of file + self assert: ((response headers at: 'WWW-Authenticate') includesSubstring: 'Basic'). + self assert: ((response headers at: 'WWW-Authenticate') includesSubstring: 'Zinc') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testAuthorizationSuccessful.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testAuthorizationSuccessful.st index 55f885ee..f4936588 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testAuthorizationSuccessful.st +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testAuthorizationSuccessful.st @@ -5,5 +5,5 @@ testAuthorizationSuccessful response := ZnEasy get: (server localUrl addPathSegments: #('echo' 'foo'); yourself) username: 'foo' password: 'secret'. self assert: (response headers contentType = ZnMimeType textPlain). self assert: (response statusLine code = 200). - self assert: (response entity string includesSubString: 'Zinc'). - self assert: (response entity string includesSubString: 'foo') ] \ No newline at end of file + self assert: (response entity string includesSubstring: 'Zinc'). + self assert: (response entity string includesSubstring: 'foo') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEcho.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEcho.st index 76636f7d..36829c5b 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEcho.st +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEcho.st @@ -4,5 +4,6 @@ testEcho response := ZnEasy get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). self assert: (response contentType = ZnMimeType textPlain). self assert: (response statusLine code = 200). - self assert: (response entity contents includesSubString: 'Zinc'). - self assert: (response entity contents includesSubString: 'foo') ] \ No newline at end of file + self assert: (response entity contents includesSubstring: 'Zinc'). + self assert: (response entity contents includesSubstring: 'foo'). + self assert: (response entity contents includesSubstring: server printString) ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEchoBinary.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEchoBinary.st index c0d9a175..30efeef5 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEchoBinary.st +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEchoBinary.st @@ -7,4 +7,4 @@ testEchoBinary self assert: (response contentType = ZnMimeType textPlain). self assert: (response statusLine code = 200). entityOut := ZnEntity with: entityIn string asByteArray type: entityIn contentType. - self assert: (response entity contents includesSubString: entityOut printString) ] \ No newline at end of file + self assert: (response entity contents includesSubstring: entityOut printString) ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEchoLocalInterface.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEchoLocalInterface.st index c7dc6990..08f4841c 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEchoLocalInterface.st +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testEchoLocalInterface.st @@ -9,7 +9,7 @@ testEchoLocalInterface response := ZnEasy get: (server localUrl addPathSegments: #('echo' 'foo'); yourself). self assert: (response contentType = ZnMimeType textPlain). self assert: (response statusLine code = 200). - self assert: (response entity contents includesSubString: 'Zinc'). - self assert: (response entity contents includesSubString: 'foo') + self assert: (response entity contents includesSubstring: 'Zinc'). + self assert: (response entity contents includesSubstring: 'foo') ] ensure: [ server stop ] \ 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 new file mode 100644 index 00000000..c7efc915 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testError.st @@ -0,0 +1,15 @@ +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 diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testGetUnicodeUtf8.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testGetUnicodeUtf8.st index 5af23195..32406b81 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testGetUnicodeUtf8.st +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testGetUnicodeUtf8.st @@ -6,5 +6,5 @@ testGetUnicodeUtf8 self assert: (response statusLine code = 200). self assert: response contentType isCharSetUTF8. html := response entity contents. - self assert: (html includesSubString: 'Unicode'). + self assert: (html includesSubstring: 'Unicode'). 0 to: 16r024F do: [ :each | self assert: (html includes: each asCharacter) ] ] \ 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 new file mode 100644 index 00000000..b20254d3 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testLocalUrl.st @@ -0,0 +1,7 @@ +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 diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testSession.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testSession.st new file mode 100644 index 00000000..616b5661 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testSession.st @@ -0,0 +1,15 @@ +testing +testSession + self withServerDo: [ :server | | client sessionId | + client := ZnClient new url: (server localUrl addPathSegment: #session); yourself. + self assert: client session cookieJar cookies isEmpty. + client get. + self assert: client isSuccess. + self assert: client session cookieJar cookies size = 1. + sessionId := client session cookieJar cookies anyOne value. + self assert: (client contents includesSubstring: sessionId). + client get. + self assert: client isSuccess. + self assert: client session cookieJar cookies size = 1. + self assert: client session cookieJar cookies anyOne value equals: sessionId. + self assert: (client contents includesSubstring: sessionId) ] diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testSessionExpired.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testSessionExpired.st new file mode 100644 index 00000000..7eb0c347 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testSessionExpired.st @@ -0,0 +1,17 @@ +testing +testSessionExpired + self withServerDo: [ :server | | client sessionId | + client := ZnClient new url: (server localUrl addPathSegment: #session); yourself. + self assert: client session cookieJar cookies isEmpty. + client get. + self assert: client isSuccess. + self assert: client session cookieJar cookies size = 1. + sessionId := client session cookieJar cookies anyOne value. + self assert: (client contents includesSubstring: sessionId). + "Kill the server session as if it was expired" + server sessionManager removeSessionWithId: sessionId. + "The client still presents the old session id but should get a new one" + client get. + self assert: client isSuccess. + self assert: client session cookieJar cookies size = 1. + self deny: client session cookieJar cookies anyOne value = sessionId ] diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testSessionRoute.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testSessionRoute.st new file mode 100644 index 00000000..c9081b90 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testSessionRoute.st @@ -0,0 +1,18 @@ +testing +testSessionRoute + self withServerDo: [ :server | | client sessionId | + server route: 'r1'. + self assert: server route equals: 'r1'. + client := ZnClient new url: (server localUrl addPathSegment: #session); yourself. + self assert: client session cookieJar cookies isEmpty. + client get. + self assert: client isSuccess. + self assert: client session cookieJar cookies size = 1. + sessionId := client session cookieJar cookies anyOne value. + self assert: (client contents includesSubstring: sessionId). + self assert: (sessionId endsWith: '.r1'). + client get. + self assert: client isSuccess. + self assert: client session cookieJar cookies size = 1. + self assert: client session cookieJar cookies anyOne value equals: sessionId. + self assert: (client contents includesSubstring: sessionId) ] diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/instance/testUrl.st b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testUrl.st new file mode 100644 index 00000000..195bbb4a --- /dev/null +++ b/repository/Zinc-Tests.package/ZnServerTests.class/instance/testUrl.st @@ -0,0 +1,18 @@ +testing +testUrl + 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 diff --git a/repository/Zinc-Tests.package/ZnServerTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnServerTests.class/methodProperties.json index 8d6f7db0..28d066e0 100644 --- a/repository/Zinc-Tests.package/ZnServerTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnServerTests.class/methodProperties.json @@ -3,11 +3,17 @@ }, "instance" : { "port" : "SvenVanCaekenberghe 3/12/2012 20:36", - "testAuthorizationFailed" : "SvenVanCaekenberghe 3/12/2012 20:39", - "testAuthorizationSuccessful" : "SvenVanCaekenberghe 3/12/2012 20:41", + "testAuthorizationFailed" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testAuthorizationSuccessful" : "SvenVanCaekenberghe 8/23/2012 14:34", "testDefault" : "SvenVanCaekenberghe 3/12/2012 22:06", - "testEcho" : "SvenVanCaekenberghe 3/12/2012 20:42", - "testEchoBinary" : "SvenVanCaekenberghe 4/7/2012 18:05", - "testEchoLocalInterface" : "SvenVanCaekenberghe 4/13/2012 13:13", - "testGetUnicodeUtf8" : "SvenVanCaekenberghe 3/12/2012 20:44", + "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", + "testGetUnicodeUtf8" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testLocalUrl" : "SvenVanCaekenberghe 1/4/2013 13:36", + "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", "withServerDo:" : "SvenVanCaekenberghe 3/12/2012 20:36" } } diff --git a/repository/Zinc-Tests.package/ZnStaticFileServerDelegateTests.class/instance/testBasicGet.st b/repository/Zinc-Tests.package/ZnStaticFileServerDelegateTests.class/instance/testBasicGet.st index 1a710b98..2121954c 100644 --- a/repository/Zinc-Tests.package/ZnStaticFileServerDelegateTests.class/instance/testBasicGet.st +++ b/repository/Zinc-Tests.package/ZnStaticFileServerDelegateTests.class/instance/testBasicGet.st @@ -8,7 +8,7 @@ testBasicGet get. self assert: client isSuccess. self assert: client response contentType = ZnMimeType textHtml. - self assert: (client contents includesSubString: 'Small'). + self assert: (client contents includesSubstring: 'Small'). self assert: (ZnUtils parseHttpDate: (client response headers at: 'Modification-Date')) equals: (ZnFileSystemUtils modificationTimeFor: 'small.html') asUTC asTimeStamp. diff --git a/repository/Zinc-Tests.package/ZnStaticFileServerDelegateTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnStaticFileServerDelegateTests.class/methodProperties.json index d2a5d049..02c225eb 100644 --- a/repository/Zinc-Tests.package/ZnStaticFileServerDelegateTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnStaticFileServerDelegateTests.class/methodProperties.json @@ -6,7 +6,7 @@ "setUp" : "SvenVanCaekenberghe 7/3/2012 00:35", "smallHtml" : "SvenVanCaekenberghe 5/14/2012 10:08", "tearDown" : "SvenVanCaekenberghe 7/3/2012 00:35", - "testBasicGet" : "SvenVanCaekenberghe 7/3/2012 00:40", + "testBasicGet" : "SvenVanCaekenberghe 8/23/2012 14:34", "testBasicHead" : "SvenVanCaekenberghe 7/3/2012 00:40", "testIfModifiedSinceNotModified" : "SvenVanCaekenberghe 8/3/2012 22:47", "withServerDo:" : "SvenVanCaekenberghe 7/3/2012 00:38" } } diff --git a/repository/Zinc-Tests.package/ZnUrlExtensionTests.class/README.md b/repository/Zinc-Tests.package/ZnUrlExtensionTests.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testAsZnUrl.st b/repository/Zinc-Tests.package/ZnUrlExtensionTests.class/instance/testAsZnUrl.st similarity index 100% rename from repository/Zinc-Tests.package/ZnUrlTests.class/instance/testAsZnUrl.st rename to repository/Zinc-Tests.package/ZnUrlExtensionTests.class/instance/testAsZnUrl.st diff --git a/repository/Zinc-Tests.package/ZnUrlExtensionTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnUrlExtensionTests.class/methodProperties.json new file mode 100644 index 00000000..126a09e7 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnUrlExtensionTests.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "testAsZnUrl" : "SvenVanCaekenberghe 12/11/2012 10:20" } } diff --git a/repository/Zinc-Tests.package/ZnUrlExtensionTests.class/properties.json b/repository/Zinc-Tests.package/ZnUrlExtensionTests.class/properties.json new file mode 100644 index 00000000..4d87c033 --- /dev/null +++ b/repository/Zinc-Tests.package/ZnUrlExtensionTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnUrlExtensionTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscapeQuery.st b/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscapeQuery.st deleted file mode 100644 index 985a9884..00000000 --- a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongEscapeQuery.st +++ /dev/null @@ -1,3 +0,0 @@ -testing -testParsingWrongEscapeQuery - self should: [ ZnUrl fromString: 'http://foo:8080/foo?%%bar=1' ] raise: ZnPercentEncodingWrong \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongScheme.st b/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongScheme.st deleted file mode 100644 index 65051cb4..00000000 --- a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testParsingWrongScheme.st +++ /dev/null @@ -1,3 +0,0 @@ -testing -testParsingWrongScheme - self should: [ ZnUrl fromString: 'htttp://foo:bar' ] raise: ZnUnknownScheme \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testQueryManipulation.st b/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testQueryManipulation.st deleted file mode 100644 index dfeb25a8..00000000 --- a/repository/Zinc-Tests.package/ZnUrlTests.class/instance/testQueryManipulation.st +++ /dev/null @@ -1,9 +0,0 @@ -testing -testQueryManipulation - | url | - url := 'http://www.google.com/?one=1&two=2' asZnUrl. - url queryAt: 'three' put: '3'. - url queryRemoveKey: 'one'. - self assert: url queryKeys sorted = #(three two). - self assert: (url queryAt: 'two') = '2'. - self assert: (url queryAt: 'three') = '3' \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnUrlTests.class/methodProperties.json deleted file mode 100644 index 3f7e3cb6..00000000 --- a/repository/Zinc-Tests.package/ZnUrlTests.class/methodProperties.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "testAsZnUrl" : "SvenVanCaekenberghe 1/4/2011 13:40", - "testAuthority" : "SvenVanCaekenberghe 1/4/2011 13:05", - "testConvenienceMethods" : "SvenVanCaekenberghe 7/9/2012 16:33", - "testDefaultScheme" : "SvenVanCaekenberghe 8/11/2011 15:13", - "testDefaultSchemeAndPort" : "SvenVanCaekenberghe 8/11/2011 15:14", - "testDefaults" : "SvenVanCaekenberghe 8/11/2011 15:14", - "testEncodedSlash" : "SvenVanCaekenberghe 4/17/2011 10:29", - "testIsSlash" : "SvenVanCaekenberghe 1/4/2011 13:42", - "testLocalHost" : "SvenVanCaekenberghe 5/13/2011 10:44", - "testMissingScheme" : "SvenVanCaekenberghe 8/11/2011 14:55", - "testParsePathOnly" : "SvenVanCaekenberghe 8/11/2011 15:20", - "testParsingEmpty" : "SvenVanCaekenberghe 1/4/2011 12:17", - "testParsingEscape" : "SvenVanCaekenberghe 2/28/2011 15:36", - "testParsingSimple" : "SvenVanCaekenberghe 1/3/2011 16:41", - "testParsingWrongEscape" : "SvenVanCaekenberghe 2/28/2011 15:50", - "testParsingWrongEscapeQuery" : "SvenVanCaekenberghe 2/28/2011 15:55", - "testParsingWrongPort" : "SvenVanCaekenberghe 2/28/2011 15:28", - "testParsingWrongScheme" : "DamienPollet 8/4/2011 14:05", - "testPrintingSimple" : "SvenVanCaekenberghe 1/4/2011 12:21", - "testQuery" : "SvenVanCaekenberghe 1/4/2011 15:26", - "testQueryEncoding" : "SvenVanCaekenberghe 12/13/2011 14:16", - "testQueryManipulation" : "SvenVanCaekenberghe 12/13/2011 14:14", - "testRelative" : "SvenVanCaekenberghe 8/11/2011 15:10", - "testRetrieveContents" : "SvenVanCaekenberghe 1/24/2012 11:44", - "testWriteUrlPathQueryFragmentOfOn" : "SvenVanCaekenberghe 1/4/2011 13:57" } } diff --git a/repository/Zinc-Tests.package/ZnUrlTests.class/properties.json b/repository/Zinc-Tests.package/ZnUrlTests.class/properties.json deleted file mode 100644 index 88af561f..00000000 --- a/repository/Zinc-Tests.package/ZnUrlTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnUrlTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/instance/testAccessors.st b/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/instance/testAccessors.st deleted file mode 100644 index d952b450..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/instance/testAccessors.st +++ /dev/null @@ -1,8 +0,0 @@ -testing -testAccessors - | settings | - settings := ZnUserAgentSettings defaultSettingsClass new. - self assert: (settings agent notNil). - self assert: (settings followRedirect isKindOf: Boolean). - self assert: (settings redirectLimit notNil). - self assert: (settings timeout notNil) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/instance/testClassDefaults.st b/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/instance/testClassDefaults.st deleted file mode 100644 index 8d8555cc..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/instance/testClassDefaults.st +++ /dev/null @@ -1,5 +0,0 @@ -testing -testClassDefaults - self assert: (ZnUserAgentSettings defaultCookieJar new isKindOf: ZnCookieJar). - self assert: (ZnUserAgentSettings defaultSessionClass new isKindOf: ZnUserAgentSession). - self assert: (ZnUserAgentSettings defaultSettingsClass new isKindOf: ZnUserAgentSettings) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/instance/testLoadSession.st b/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/instance/testLoadSession.st deleted file mode 100644 index b0887c8e..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/instance/testLoadSession.st +++ /dev/null @@ -1,5 +0,0 @@ -testing -testLoadSession - | settings | - settings := ZnUserAgentSettings defaultSettingsClass new. - self assert: (settings loadSession isKindOf: ZnUserAgentSession) \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/methodProperties.json deleted file mode 100644 index a6c7b12f..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/methodProperties.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "testAccessors" : "MattKennedy 9/28/2010 14:58", - "testClassDefaults" : "SvenVanCaekenberghe 12/7/2010 00:00", - "testLoadSession" : "MattKennedy 9/28/2010 14:59" } } diff --git a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/properties.json b/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/properties.json deleted file mode 100644 index 2e71f9e2..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentSettingsTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnUserAgentSettingsTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/ignoringDeprecation..st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/ignoringDeprecation..st deleted file mode 100644 index 9a6488ce..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/ignoringDeprecation..st +++ /dev/null @@ -1,5 +0,0 @@ -private -ignoringDeprecation: block - [ block value ] - on: Deprecation - do: [ :exception | exception resume ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/port.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/port.st deleted file mode 100644 index 49d8d3c8..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/port.st +++ /dev/null @@ -1,3 +0,0 @@ -private -port - ^ 1700 + 10 atRandom \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testCookieAt.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testCookieAt.st deleted file mode 100644 index cd971755..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testCookieAt.st +++ /dev/null @@ -1,7 +0,0 @@ -testing -testCookieAt - self ignoringDeprecation: [ | url client response | - url := 'http://www.google.com/' asZnUrl. - client := ZnUserAgent new. - response := client get: url. - self assert: (client cookieAt: 'PREF') notNil ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testDelete.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testDelete.st deleted file mode 100644 index 12c0e8ac..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testDelete.st +++ /dev/null @@ -1,10 +0,0 @@ -testing -testDelete - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client | - client := ZnUserAgent new. - response := client delete: (server localUrl addPathSegments: #('echo' 'foo'); yourself). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 200. - self assert: (response entity string includesSubString: 'DELETE'). - self assert: (response entity string includesSubString: 'foo') ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testErrorHandler.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testErrorHandler.st deleted file mode 100644 index cb615798..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testErrorHandler.st +++ /dev/null @@ -1,7 +0,0 @@ -testing -testErrorHandler - self ignoringDeprecation: [ | client flag | - flag := false. - client := ZnUserAgent new errorHandler: [ :error | flag := true ]. - client get: ''. - self assert: flag ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testFollowRedirect.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testFollowRedirect.st deleted file mode 100644 index e108abde..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testFollowRedirect.st +++ /dev/null @@ -1,11 +0,0 @@ -testing -testFollowRedirect - self ignoringDeprecation: [ | url client response | - url := 'http://www.pharo-project.org/' asZnUrl. - client := ZnUserAgent new. - client settings followRedirect: false. - response := client get: url. - self assert: response isRedirect. - client settings followRedirect: true. - response := client get: url. - self assert: response isSuccess ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testGetSmallHTMLDocument.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testGetSmallHTMLDocument.st deleted file mode 100644 index f913904b..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testGetSmallHTMLDocument.st +++ /dev/null @@ -1,8 +0,0 @@ -testing -testGetSmallHTMLDocument - self ignoringDeprecation: [ | url response | - url := 'http://zn.stfx.eu/zn/small.html'. - response := ZnUserAgent new get: url. - self assert: response headers contentType = ZnMimeType textHtml. - self assert: response statusLine code = 200. - self assert: (response entity string includesSubString: 'small') ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testHeadSmallHTMLDocument.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testHeadSmallHTMLDocument.st deleted file mode 100644 index b32c8412..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testHeadSmallHTMLDocument.st +++ /dev/null @@ -1,7 +0,0 @@ -testing -testHeadSmallHTMLDocument - self ignoringDeprecation: [ | url response | - url := 'http://zn.stfx.eu/zn/small.html'. - response := ZnUserAgent new head: url. - self assert: response headers contentType = ZnMimeType textHtml. - self assert: response statusLine code = 200 ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testPost.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testPost.st deleted file mode 100644 index 72661371..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testPost.st +++ /dev/null @@ -1,13 +0,0 @@ -testing -testPost - self ignoringDeprecation: [ - self withServerDo: [ :server | | response data client | - data := String streamContents: [ :stream | 1 to: 32 do: [ :each | stream nextPut: 'abc' atRandom ] ]. - client := ZnUserAgent new. - response := client - post: (server localUrl addPathSegments: #('echo' 'foo'); yourself) - data: (ZnEntity text: data). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 200. - self assert: (response entity string includesSubString: 'POST'). - self assert: (response entity string includesSubString: data) ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testPut.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testPut.st deleted file mode 100644 index 6030103b..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testPut.st +++ /dev/null @@ -1,13 +0,0 @@ -testing -testPut - self ignoringDeprecation: [ - self withServerDo: [ :server | | response data client | - data := String streamContents: [ :stream | 1 to: 32 do: [ :each | stream nextPut: 'abc' atRandom ] ]. - client := ZnUserAgent new. - response := client - put: (server localUrl addPathSegments: #('echo' 'foo'); yourself) - data: (ZnEntity text: data). - self assert: response headers contentType = ZnMimeType textPlain. - self assert: response statusLine code = 200. - self assert: (response entity string includesSubString: 'PUT'). - self assert: (response entity string includesSubString: data) ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testRelativeRedirect.st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testRelativeRedirect.st deleted file mode 100644 index 3ab23a6a..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/testRelativeRedirect.st +++ /dev/null @@ -1,17 +0,0 @@ -testing -testRelativeRedirect - self ignoringDeprecation: [ - self withServerDo: [ :server | | response client | - server onRequestRespond: [ :request | - request uri firstPathSegment = 'one' - ifTrue: [ ZnResponse redirect: 'two' ] - ifFalse: [ - request uri firstPathSegment = 'two' - ifTrue: [ ZnResponse ok: (ZnEntity text: 'OK!') ] - ifFalse: [ ZnResponse notFound: request uri ] ] ]. - client := ZnUserAgent new. - response := client - post: (server localUrl addPathSegment: 'one'; yourself) - data: (ZnEntity text: 'data'). - self assert: response isSuccess. - self assert: response contents = 'OK!' ] ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/withServerDo..st b/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/withServerDo..st deleted file mode 100644 index cfb671c0..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/instance/withServerDo..st +++ /dev/null @@ -1,10 +0,0 @@ -private -withServerDo: block - | server | - server := ZnServer on: self port. - [ - server start. - self assert: server isRunning & server isListening. - block cull: server - ] - ensure: [ server stop ] \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/methodProperties.json b/repository/Zinc-Tests.package/ZnUserAgentTests.class/methodProperties.json deleted file mode 100644 index f95abdf3..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/methodProperties.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "ignoringDeprecation:" : "SvenVanCaekenberghe 10/4/2011 14:11", - "port" : "SvenVanCaekenberghe 3/12/2012 20:48", - "testCookieAt" : "SvenVanCaekenberghe 3/12/2012 20:48", - "testDelete" : "SvenVanCaekenberghe 3/12/2012 20:49", - "testErrorHandler" : "SvenVanCaekenberghe 3/12/2012 20:50", - "testFollowRedirect" : "SvenVanCaekenberghe 3/12/2012 20:50", - "testGetSmallHTMLDocument" : "SvenVanCaekenberghe 7/2/2012 15:30", - "testHeadSmallHTMLDocument" : "SvenVanCaekenberghe 7/4/2012 17:33", - "testPost" : "SvenVanCaekenberghe 3/12/2012 20:51", - "testPut" : "SvenVanCaekenberghe 3/12/2012 20:52", - "testRelativeRedirect" : "SvenVanCaekenberghe 5/14/2012 17:17", - "withServerDo:" : "SvenVanCaekenberghe 3/12/2012 20:48" } } diff --git a/repository/Zinc-Tests.package/ZnUserAgentTests.class/properties.json b/repository/Zinc-Tests.package/ZnUserAgentTests.class/properties.json deleted file mode 100644 index fe4cabfb..00000000 --- a/repository/Zinc-Tests.package/ZnUserAgentTests.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Zinc-Tests", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "ZnUserAgentTests", - "pools" : [ - ], - "super" : "TestCase", - "type" : "normal" } diff --git a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testQueryParsing.st b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testQueryParsing.st deleted file mode 100644 index 76c17a5f..00000000 --- a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testQueryParsing.st +++ /dev/null @@ -1,8 +0,0 @@ -testing -testQueryParsing - | string fields | - string := 'foo=100&x=', ('/a b' encodeForHTTP). - fields := ZnUtils parseQueryFrom: string readStream. - self assert: (fields at: 'foo') = '100'. - self assert: (fields at: 'x') = '/a b'. - \ No newline at end of file diff --git a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testQueryWriting.st b/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testQueryWriting.st deleted file mode 100644 index 5a0f268d..00000000 --- a/repository/Zinc-Tests.package/ZnUtilsTests.class/instance/testQueryWriting.st +++ /dev/null @@ -1,9 +0,0 @@ -testing -testQueryWriting - | fields string | - (fields := Dictionary new) - at: 'foo' put: '100'; - at: 'bar' put: 'a b'. - string := String streamContents: [ :stream | ZnUtils writeQueryFields: fields on: stream ]. - self assert: (string includesSubString: 'foo=1'). - self assert: (string includesSubString: 'bar=a%20b'). \ 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 010f9afc..5401ebe6 100644 --- a/repository/Zinc-Tests.package/ZnUtilsTests.class/methodProperties.json +++ b/repository/Zinc-Tests.package/ZnUtilsTests.class/methodProperties.json @@ -10,8 +10,6 @@ "testParseHttpDateAlternative1" : "SeanDeNigris 5/10/2012 11:58", "testParseHttpDateDashes" : "SeanDeNigris 5/10/2012 11:58", "testParseHttpDateDashesAlternative1" : "SvenVanCaekenberghe 5/10/2012 20:27", - "testQueryParsing" : "SvenVanCaekenberghe 9/11/2010 21:36", - "testQueryWriting" : "SvenVanCaekenberghe 9/17/2010 14:55", "testReadUpToEndBinary" : "SvenVanCaekenberghe 1/31/2012 12:57", "testReadUpToEndNonBinary" : "SvenVanCaekenberghe 1/31/2012 12:58", "testStreamingBinary" : "SvenVanCaekenberghe 1/31/2012 12:56", diff --git a/repository/Zinc-Tests.package/monticello.meta/version b/repository/Zinc-Tests.package/monticello.meta/version index 0dc76a63..4673287b 100644 --- a/repository/Zinc-Tests.package/monticello.meta/version +++ b/repository/Zinc-Tests.package/monticello.meta/version @@ -1 +1 @@ -(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 ()) \ No newline at end of file +(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 diff --git a/repository/Zinc-WebSocket-Core.package/.filetree b/repository/Zinc-WebSocket-Core.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/README.md new file mode 100644 index 00000000..7703b8c6 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/README.md @@ -0,0 +1,44 @@ +I am ZnWebSocket, a bi-directional, full-duplex communication channel over a single TCP connection. + +WebSockets send reliable messages to each other, a String or ByteArrat. +Each message is one-way (does not have a direct synchroneous reply). +Each party, both client and/or server can take the initiative. + +This implementation follows RFC 6455. See also: + + http://en.wikipedia.org/wiki/Websockets + http://tools.ietf.org/html/rfc6455 + +Here is a client side example taking to a public echo service: + +| webSocket | +webSocket := ZnWebSocket to: 'ws://echo.websocket.org'. +[ webSocket + sendMessage: 'Pharo Smalltalk using Zinc WebSockets !'; + readMessage ] ensure: [ webSocket close ]. + +Here is the same example using secure web sockets: + +| webSocket | +webSocket := ZnWebSocket to: 'wss://echo.websocket.org'. +[ webSocket + sendMessage: 'Pharo Smalltalk using Zinc WebSockets & Zodiac !'; + readMessage ] ensure: [ webSocket close ]. + +Here is how to start a local server running in the image implementing the same echo service: + +ZnWebSocket startServerOn: 8080 do: ZnWebSocketEchoHandler new. + +A full inline implementation of the echo handler would look like: + +ZnWebSocket + startServerOn: 8080 + do: [ :webSocket | + [ + webSocket runWith: [ :message | + self crLog: 'Received message: ', message printString, ' echoing...'. + webSocket sendMessage: message ] ] + on: ConnectionClosed + do: [ self crLog: 'Ignoring connection close, done' ] ]. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/isValidWebSocketResponse..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/isValidWebSocketResponse..st new file mode 100644 index 00000000..8d5e890c --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/isValidWebSocketResponse..st @@ -0,0 +1,14 @@ +protocol +isValidWebSocketResponse: client + "Return true when client contains a valid WebSocket response for its WebSocket request" + + | acceptKey response | + acceptKey := ZnWebSocketUtils handshake: (client request headers at: 'Sec-WebSocket-Key'). + response := client response. + ^ response code = 101 + and: [ + (response headers at: 'Upgrade') asLowercase = 'websocket' + and: [ + (ZnWebSocketUtils containsConnectionUpgrade: response headers) + and: [ + (response headers at: 'Sec-WebSocket-Accept') = acceptKey ] ] ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/onStream..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/onStream..st new file mode 100644 index 00000000..1451a41f --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/onStream..st @@ -0,0 +1,8 @@ +instance creation +onStream: socketStream + "Return a new ZnWebSocket instance on socketStream. + It is assumed that the initial handshake was successful." + + ^ self new + onStream: socketStream; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/startServerOn.do..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/startServerOn.do..st new file mode 100644 index 00000000..319f5a4b --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/startServerOn.do..st @@ -0,0 +1,6 @@ +instance creation +startServerOn: port do: handler + "Start and return a new ZnServer listening on port and / for client WebSocket connections. + After a successful initial handshake, sent #value: to handler with a server side ZnWebSocket instance." + + ^ self startServerOn: port prefix: nil do: handler \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/startServerOn.prefix.do..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/startServerOn.prefix.do..st new file mode 100644 index 00000000..382b8eec --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/startServerOn.prefix.do..st @@ -0,0 +1,9 @@ +instance creation +startServerOn: port prefix: prefix do: handler + "Start and return a new ZnServer listening on port and /prefix for client WebSocket connections. + After a successful initial handshake, sent #value: to handler with a server side ZnWebSocket instance." + + ^ (ZnServer on: port) + delegate: (ZnWebSocketDelegate map: prefix to: handler); + start; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/to..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/to..st new file mode 100644 index 00000000..efa95c4a --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/to..st @@ -0,0 +1,17 @@ +instance creation +to: urlObject + "Attempt to create a new client WebSocket to urlObject. + Do the initial upgrade handshake and return a functioning ZnWebSocket object. + Signals a ZnWebSocketFailed error when unsuccessful." + + | client | + client := self webSocketClientTo: urlObject asZnUrl. + client execute. + (self isValidWebSocketResponse: client) + ifTrue: [ + ^ (self onStream: client connection) + role: #client; + yourself ] + ifFalse: [ + client close. + (ZnWebSocketFailed response: client response) signal ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/webSocketClientTo..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/webSocketClientTo..st new file mode 100644 index 00000000..a098d6c9 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/class/webSocketClientTo..st @@ -0,0 +1,15 @@ +protocol +webSocketClientTo: url + "Create and return a new ZnClient instance ready for the initial client side WebSocket setup request" + + | client | + self assert: (#(ws wss) includes: url scheme). + (client := ZnClient new) + url: url; + method: #GET; + headerAt: 'Upgrade' put: 'websocket'; + headerAt: 'Connection' put: 'Upgrade'; + headerAt: 'Sec-WebSocket-Version' put: '13'; + headerAt: 'Sec-WebSocket-Key' put: ZnWebSocketUtils newClientKey. + ^ client + \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/close.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/close.st new file mode 100644 index 00000000..89930db3 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/close.st @@ -0,0 +1,6 @@ +initialize-release +close + "Send a close frame and close the connection" + + self sendFrame: ZnWebSocketFrame close. + stream close. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/handleControlFrame..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/handleControlFrame..st new file mode 100644 index 00000000..5e8365e9 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/handleControlFrame..st @@ -0,0 +1,16 @@ +private +handleControlFrame: frame + "Handle a control frame. ConnectionClosed is signalled when the other end closes." + + frame isClose + ifTrue: [ + self log debug: 'Handling close frame'. + self close. + ^ self signalClosed: frame ]. + frame isPing + ifTrue: [ + self log debug: 'Handling ping frame'. + self pong: frame body ]. + frame isPong + ifTrue: [ + self log debug: 'Handling pong frame' ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/handleControlFrameNoWait.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/handleControlFrameNoWait.st new file mode 100644 index 00000000..206a178e --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/handleControlFrameNoWait.st @@ -0,0 +1,11 @@ +protocol +handleControlFrameNoWait + "Peek for a control frame if any and handle it. Do not wait. + Return true when a control frame was handled, false otherwise." + + (stream isDataAvailable and: [ (stream peek bitAnd: 127) > 7 ]) + ifTrue: [ | frame | + frame := ZnWebSocketFrame readFrom: stream. + self handleControlFrame: frame. + ^ true ]. + ^ false \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/initialize.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/initialize.st new file mode 100644 index 00000000..9b0dd323 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + role := #server \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/isClient.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/isClient.st new file mode 100644 index 00000000..194a16da --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/isClient.st @@ -0,0 +1,5 @@ +testing +isClient + "Return true if the receiver is the client in a WebSocket conversation" + + ^ role = #client \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/isConnected.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/isConnected.st new file mode 100644 index 00000000..d4a1288d --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/isConnected.st @@ -0,0 +1,6 @@ +testing +isConnected + "Return true when I am connected, + i.e. not closed and still connected at the socket level" + + ^ stream notNil and: [ stream isConnected ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/isServer.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/isServer.st new file mode 100644 index 00000000..f7bc70bd --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/isServer.st @@ -0,0 +1,5 @@ +testing +isServer + "Return true if the receiver is the server in a WebSocket conversation" + + ^ role = #server \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/log..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/log..st new file mode 100644 index 00000000..1c8b958d --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/log..st @@ -0,0 +1,5 @@ +initialize-release +log: logSupport + "Set logSupport to be the destination of our logging" + + log := logSupport \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnFixedClient.class/instance/log.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/log.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnFixedClient.class/instance/log.st rename to repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/log.st diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/logToTranscript.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/logToTranscript.st new file mode 100644 index 00000000..7b296692 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/logToTranscript.st @@ -0,0 +1,5 @@ +initialize-release +logToTranscript + "Setup logging to the Transcript" + + self log addListener: ZnTranscriptLogger new \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/onStream..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/onStream..st new file mode 100644 index 00000000..a254f086 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/onStream..st @@ -0,0 +1,5 @@ +initialize-release +onStream: socketStream + "Initialize the receiver on socketStream" + + stream := socketStream \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/ping.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/ping.st new file mode 100644 index 00000000..9d99312c --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/ping.st @@ -0,0 +1,7 @@ +protocol +ping + "Send a ping frame." + + | frame | + frame := ZnWebSocketFrame ping: ZnWebSocketUtils newPingPayload. + self sendFrame: frame \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/pong..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/pong..st new file mode 100644 index 00000000..4a063b7c --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/pong..st @@ -0,0 +1,7 @@ +private +pong: payload + "Send a pong frame containing payload (in reply to a ping with that payload)" + + | frame | + frame := ZnWebSocketFrame pong: payload. + self sendFrame: frame \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/printOn..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/printOn..st new file mode 100644 index 00000000..19df1f5d --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/printOn..st @@ -0,0 +1,7 @@ +printing +printOn: aStream + super printOn: aStream. + aStream + nextPut: $(; + print: role; + nextPut: $) \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/readFrame.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/readFrame.st new file mode 100644 index 00000000..7668d717 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/readFrame.st @@ -0,0 +1,12 @@ +private +readFrame + "Read and return the next non-control frame. Wait. + Control frames are handled. ConnectionClosed is signalled when the other end closes." + + | frame | + frame := ZnWebSocketFrame readFrom: stream. + frame isControl + ifTrue: [ + self handleControlFrame: frame. + ^ self readFrame ]. + ^ frame \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/readMessage.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/readMessage.st new file mode 100644 index 00000000..1ac2813e --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/readMessage.st @@ -0,0 +1,19 @@ +protocol +readMessage + "Read and return a complete message String or ByteArray, joining frames. + ConnectionClosed is signalled when the other end closes." + + | frame bytes isText | + frame := self readFrame. + frame isFinal ifTrue: [ ^ frame contents ]. + isText := frame isText. + bytes := ByteArray new: frame size * 2 streamContents: [ :output | + frame writeRawBodyOn: output. + [ + frame := self readFrame. + self assert: frame isContinuation. + frame writeRawBodyOn: output. + frame isFinal ] whileFalse ]. + ^ isText + ifTrue: [ ZnUTF8Encoder new decodeBytes: bytes ] + ifFalse: [ bytes ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/role..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/role..st new file mode 100644 index 00000000..aaf24890 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/role..st @@ -0,0 +1,6 @@ +initialize-release +role: symbol + "Set the role of the receiver, either #client or #server" + + self assert: (#(client server) includes: symbol). + role := symbol \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/role.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/role.st new file mode 100644 index 00000000..165270b3 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/role.st @@ -0,0 +1,5 @@ +accessing +role + "Return the role of the receiver, either #client or #server" + + ^ role \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/runWith..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/runWith..st new file mode 100644 index 00000000..10a27864 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/runWith..st @@ -0,0 +1,12 @@ +protocol +runWith: block + "Start a run loop handling the WebSocket protocol. + When a message is received, block will be passed a String or ByteArray. + ConnectionClosed will be signalled when the other end closes." + + [ | message | + [ message := self readMessage ] + on: ConnectionTimedOut + do: [ "Ignore & continue" nil ]. + message ifNotNil: [ + block value: message ] ] repeat \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendByteFrames..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendByteFrames..st new file mode 100644 index 00000000..18d1d086 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendByteFrames..st @@ -0,0 +1,17 @@ +protocol +sendByteFrames: sequenceableCollection + "Send a binary message consisting of sequenceableCollection byte array frames" + + | frame | + self assert: sequenceableCollection size > 1. + (frame := ZnWebSocketFrame bytes: sequenceableCollection first) + final: false. + self sendFrame: frame. + 2 to: sequenceableCollection size - 1 do: [ :each | + (frame := ZnWebSocketFrame bytes: (sequenceableCollection at: each)) + final: false; opcode: 0. + self sendFrame: frame ]. + (frame := ZnWebSocketFrame bytes: sequenceableCollection last) + final: true; opcode: 0. + self sendFrame: frame + \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendBytes..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendBytes..st new file mode 100644 index 00000000..9850b5f0 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendBytes..st @@ -0,0 +1,7 @@ +private +sendBytes: bytes + "Send bytes in one binary frame" + + | frame | + frame := ZnWebSocketFrame bytes: bytes. + self sendFrame: frame \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendFrame..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendFrame..st new file mode 100644 index 00000000..7f2fec6c --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendFrame..st @@ -0,0 +1,7 @@ +private +sendFrame: frame + "Send a single frame, masked when I am in a client role, flush" + + frame masked: self isClient. + frame writeOn: stream. + stream flush. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendMessage..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendMessage..st new file mode 100644 index 00000000..efa8f8e4 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendMessage..st @@ -0,0 +1,7 @@ +protocol +sendMessage: stringOrByteArray + "Send stringOrByteArray in one textual or binary frame" + + stringOrByteArray isString + ifTrue: [ self sendText: stringOrByteArray ] + ifFalse: [ self sendBytes: stringOrByteArray ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendText..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendText..st new file mode 100644 index 00000000..7650d1d8 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendText..st @@ -0,0 +1,7 @@ +private +sendText: string + "Send string in one textual frame" + + | frame | + frame := ZnWebSocketFrame text: string. + self sendFrame: frame \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendTextFrames..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendTextFrames..st new file mode 100644 index 00000000..2374b143 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/sendTextFrames..st @@ -0,0 +1,17 @@ +protocol +sendTextFrames: sequenceableCollection + "Send a textual message consisting of sequenceableCollection string frames" + + | frame | + self assert: sequenceableCollection size > 1. + (frame := ZnWebSocketFrame text: sequenceableCollection first) + final: false. + self sendFrame: frame. + 2 to: sequenceableCollection size - 1 do: [ :each | + (frame := ZnWebSocketFrame text: (sequenceableCollection at: each)) + final: false; opcode: 0. + self sendFrame: frame ]. + (frame := ZnWebSocketFrame text: sequenceableCollection last) + final: true; opcode: 0. + self sendFrame: frame + \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/signalClosed..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/signalClosed..st new file mode 100644 index 00000000..814eb6e2 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/signalClosed..st @@ -0,0 +1,12 @@ +private +signalClosed: frame + "Turn a close frame that we received into a ZnWebSocketClosed exception and signal it." + + | exception | + exception := ZnWebSocketClosed new. + frame isEmpty + ifFalse: [ + exception + code: frame closeCode; + reason: frame closeReason ]. + exception signal. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/stream.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/stream.st new file mode 100644 index 00000000..691d9699 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/instance/stream.st @@ -0,0 +1,3 @@ +accessing +stream + ^ stream \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/methodProperties.json new file mode 100644 index 00000000..cd456927 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/methodProperties.json @@ -0,0 +1,36 @@ +{ + "class" : { + "isValidWebSocketResponse:" : "SvenVanCaekenberghe 9/2/2012 20:35", + "onStream:" : "SvenVanCaekenberghe 9/2/2012 19:04", + "startServerOn:do:" : "SvenVanCaekenberghe 9/2/2012 20:33", + "startServerOn:prefix:do:" : "SvenVanCaekenberghe 9/2/2012 20:33", + "to:" : "SvenVanCaekenberghe 9/2/2012 19:03", + "webSocketClientTo:" : "SvenVanCaekenberghe 9/2/2012 20:34" }, + "instance" : { + "close" : "SvenVanCaekenberghe 8/21/2012 20:43", + "handleControlFrame:" : "SvenVanCaekenberghe 10/13/2012 16:53", + "handleControlFrameNoWait" : "SvenVanCaekenberghe 8/23/2012 11:25", + "initialize" : "SvenVanCaekenberghe 9/2/2012 20:35", + "isClient" : "SvenVanCaekenberghe 9/12/2012 15:04", + "isConnected" : "SvenVanCaekenberghe 9/12/2012 15:05", + "isServer" : "SvenVanCaekenberghe 9/12/2012 15:04", + "log" : "SvenVanCaekenberghe 10/13/2012 16:49", + "log:" : "SvenVanCaekenberghe 10/13/2012 16:49", + "logToTranscript" : "SvenVanCaekenberghe 1/10/2013 14:36", + "onStream:" : "SvenVanCaekenberghe 9/2/2012 20:36", + "ping" : "SvenVanCaekenberghe 8/23/2012 11:31", + "pong:" : "SvenVanCaekenberghe 8/23/2012 11:31", + "printOn:" : "SvenVanCaekenberghe 8/21/2012 16:27", + "readFrame" : "SvenVanCaekenberghe 9/7/2012 13:42", + "readMessage" : "SvenVanCaekenberghe 9/12/2012 15:13", + "role" : "SvenVanCaekenberghe 8/21/2012 16:11", + "role:" : "SvenVanCaekenberghe 8/21/2012 16:12", + "runWith:" : "SvenVanCaekenberghe 9/7/2012 13:41", + "sendByteFrames:" : "SvenVanCaekenberghe 8/21/2012 22:11", + "sendBytes:" : "SvenVanCaekenberghe 8/21/2012 21:18", + "sendFrame:" : "SvenVanCaekenberghe 9/2/2012 20:38", + "sendMessage:" : "SvenVanCaekenberghe 8/21/2012 21:22", + "sendText:" : "SvenVanCaekenberghe 8/21/2012 20:45", + "sendTextFrames:" : "SvenVanCaekenberghe 8/21/2012 22:11", + "signalClosed:" : "SvenVanCaekenberghe 8/23/2012 12:03", + "stream" : "SvenVanCaekenberghe 7/20/2012 15:50" } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/properties.json new file mode 100644 index 00000000..7cd3ba71 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocket.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "stream", + "role", + "log" ], + "name" : "ZnWebSocket", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/README.md new file mode 100644 index 00000000..60e6ea22 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/README.md @@ -0,0 +1,5 @@ +I am ZnWebSocketChatroomHandler, I send a copy of each incoming message over a WebSocket to all WebSockets currently open, thus implementing a simple chat room. + +See the class comment of ZnWebSocketDelegate for an example using ZnWebSocketChatroomHandler. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/class/clientHtml.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/class/clientHtml.st new file mode 100644 index 00000000..80229214 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/class/clientHtml.st @@ -0,0 +1,86 @@ +constants +clientHtml + ^ ' + +WebSocket Chatroom + + + +

        WebSocket Chatroom

        +
        +Handle: +Message: + + +
        +
        + + ' diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/distributeMessage..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/distributeMessage..st new file mode 100644 index 00000000..f803976d --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/distributeMessage..st @@ -0,0 +1,12 @@ +protocol +distributeMessage: message + "Send message to all client WebSockets that we know." + + lock critical: [ + webSockets do: [ :each | + [ each sendMessage: message ] + on: NetworkError + do: [ :exception | + "We can ignore this (instead of #unregister:-ing the offender), + since the listener process (see #value:) will do the right thing" + each log debug: [ exception printString, ' in ditributeMessage, ignoring' ] ] ] ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/initialize.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/initialize.st new file mode 100644 index 00000000..2f3d8aef --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + webSockets := OrderedCollection new. + lock := Mutex new \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/register..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/register..st new file mode 100644 index 00000000..9c45c7c9 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/register..st @@ -0,0 +1,4 @@ +protocol +register: clientWebSocket + lock critical: [ + webSockets add: clientWebSocket ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/unregister..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/unregister..st new file mode 100644 index 00000000..2d58fc46 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/unregister..st @@ -0,0 +1,4 @@ +protocol +unregister: clientWebSocket + lock critical: [ + webSockets remove: clientWebSocket ifAbsent: [ ] ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/value..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/value..st new file mode 100644 index 00000000..da5b7832 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/instance/value..st @@ -0,0 +1,14 @@ +accessing +value: webSocket + "I implement a simple chat room service as a server: + distributing incoming messages to all known clients" + + [ + self register: webSocket. + webSocket runWith: [ :message | + webSocket log info: [ 'Received message: ', message printString ]. + self distributeMessage: message ] ] + on: ConnectionClosed + do: [ + webSocket log debug: 'Connection close, cleaning up'. + self unregister: webSocket ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/methodProperties.json new file mode 100644 index 00000000..902cbf7f --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + "clientHtml" : "SvenVanCaekenberghe 10/13/2012 20:54" }, + "instance" : { + "distributeMessage:" : "SvenVanCaekenberghe 10/13/2012 17:41", + "initialize" : "SvenVanCaekenberghe 9/10/2012 11:33", + "register:" : "SvenVanCaekenberghe 9/10/2012 11:35", + "unregister:" : "SvenVanCaekenberghe 9/10/2012 11:36", + "value:" : "SvenVanCaekenberghe 10/13/2012 17:42" } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/properties.json new file mode 100644 index 00000000..85bbf938 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketChatroomHandler.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "webSockets", + "lock" ], + "name" : "ZnWebSocketChatroomHandler", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/README.md new file mode 100644 index 00000000..8e107e13 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/README.md @@ -0,0 +1,4 @@ +I am ZnWebSocketClosed, signalled when WebSocket close frame is received. +I am a ConnectionClosed and a NetworkError. + +Part of Zinc HTTP Components. diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/code..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/code..st new file mode 100644 index 00000000..4ee77766 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/code..st @@ -0,0 +1,3 @@ +accessing +code: anObject + code := anObject \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/code.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/code.st new file mode 100644 index 00000000..4c3dcf49 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/code.st @@ -0,0 +1,3 @@ +accessing +code + ^ code \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/reason..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/reason..st new file mode 100644 index 00000000..24e28656 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/reason..st @@ -0,0 +1,3 @@ +accessing +reason: anObject + reason := anObject \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/reason.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/reason.st new file mode 100644 index 00000000..03cfdaf8 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/instance/reason.st @@ -0,0 +1,3 @@ +accessing +reason + ^ reason \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/methodProperties.json new file mode 100644 index 00000000..7d177425 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "code" : "SvenVanCaekenberghe 8/23/2012 11:56", + "code:" : "SvenVanCaekenberghe 8/23/2012 11:56", + "reason" : "SvenVanCaekenberghe 8/23/2012 11:56", + "reason:" : "SvenVanCaekenberghe 8/23/2012 11:56" } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/properties.json new file mode 100644 index 00000000..beff569e --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketClosed.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "code", + "reason" ], + "name" : "ZnWebSocketClosed", + "pools" : [ + ], + "super" : "ConnectionClosed", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/README.md new file mode 100644 index 00000000..f16bce88 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/README.md @@ -0,0 +1,12 @@ +I am ZnWebSocketDelegate, a plugin to allow a ZnServer to accept incoming WebSocket requests. + +When accepted, the request is upgraded and a new WebSocket is created and handed to the handler block. + +Here is how to get 3 examples up and running: + + ZnServer startDefaultOn: 1701. + ZnServer default logToTranscript. + ZnWebSocketDelegate installExamplesInDefaultServer. + ZnServer stopDefault. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/demoHtml.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/demoHtml.st new file mode 100644 index 00000000..b53f571d --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/demoHtml.st @@ -0,0 +1,45 @@ +constants +demoHtml + ^ ' + + + +Zinc WebSocket Demo + + + + +

        Zinc WebSocket Demo

        +
          +
        • Echo - websocket hello world: client connects, sends one message, server does an echo, client receives and shows message and disconnects
        • +
        • Echo Remote - websocket hello world against ws://echo.websocket.org (http://websocket.org) for reference
        • +
        • Status - server side pushes continuous updates to client web page
        • +
        • Chatroom - very simple chatroom: pick a handle and talk to all connected browsers
        • +
        +

        May the Source be with you!

        +' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/handler..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/handler..st new file mode 100644 index 00000000..7906e3e1 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/handler..st @@ -0,0 +1,7 @@ +instance creation +handler: handler + "Create and return a new ZnWebSocketDelegate that maps / to handler" + + ^ self new + handler: handler; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/installExamplesInDefaultServer.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/installExamplesInDefaultServer.st new file mode 100644 index 00000000..a38e0eab --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/installExamplesInDefaultServer.st @@ -0,0 +1,6 @@ +examples +installExamplesInDefaultServer + "Install the WebSocket examples in ZnServer default, + provided it has a ZnDefaultServerDelegate" + + self installExamplesInServer: ZnServer default \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/installExamplesInServer..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/installExamplesInServer..st new file mode 100644 index 00000000..e1b8f820 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/installExamplesInServer..st @@ -0,0 +1,21 @@ +examples +installExamplesInServer: znServer + "Install the WebSocket examples in znServer, provided it has a ZnDefaultServerDelegate" + + znServer delegate + map: 'ws-demo' + to: [ :request | ZnResponse ok: (ZnEntity html: self demoHtml) ]; + map: 'ws-echo-client-remote' + to: [ :request | ZnResponse ok: (ZnEntity html: ZnWebSocketEchoHandler clientHtmlRemote) ]; + map: 'ws-echo-client' + to: [ :request | ZnResponse ok: (ZnEntity html: ZnWebSocketEchoHandler clientHtml) ]; + map: 'ws-echo' + to: (self map: 'ws-echo' to: ZnWebSocketEchoHandler new); + map: 'ws-chatroom-client' + to: [ :request | ZnResponse ok: (ZnEntity html: ZnWebSocketChatroomHandler clientHtml) ]; + map: 'ws-chatroom' + to: (self map: 'ws-chatroom' to: ZnWebSocketChatroomHandler new); + map: 'ws-status-client' + to: [ :request | ZnResponse ok: (ZnEntity html: ZnWebSocketStatusHandler clientHtml) ]; + map: 'ws-status' + to: (self map: 'ws-status' to: ZnWebSocketStatusHandler new) \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/map.to..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/map.to..st new file mode 100644 index 00000000..dda868b8 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/class/map.to..st @@ -0,0 +1,8 @@ +instance creation +map: prefix to: handler + "Create and return a new ZnWebSocketDelegate that maps prefix string to handler" + + ^ self new + prefixFromString: prefix; + handler: handler; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/continuation.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/continuation.st new file mode 100644 index 00000000..84e888fb --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/continuation.st @@ -0,0 +1,9 @@ +protocol +continuation + "Return a block that defines what happens after a successful connection upgrade. + We will receive a ready-to-use instanciated WebSocket. + We pass on our log support and delegate processing to our handler." + + ^ [ :webSocket | + webSocket log: self log. + self handler value: webSocket ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/handleRequest..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/handleRequest..st new file mode 100644 index 00000000..eeb2b302 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/handleRequest..st @@ -0,0 +1,9 @@ +public +handleRequest: request + "Server delegate entry point" + + (prefix isNil or: [ prefix = request uri pathSegments ]) + ifFalse: [ ^ ZnResponse notFound: request uri ]. + ^ (self isValidWebSocketRequest: request) + ifTrue: [ self webSocketResponseForRequest: request ] + ifFalse: [ ZnResponse badRequest: request ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/handler..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/handler..st new file mode 100644 index 00000000..ca8d5368 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/handler..st @@ -0,0 +1,5 @@ +initialize-release +handler: block + "Set the block that will deal with the server side WebSocket" + + handler := block \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/handler.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/handler.st new file mode 100644 index 00000000..c0929b60 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/handler.st @@ -0,0 +1,3 @@ +accessing +handler + ^ handler \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/isValidWebSocketRequest..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/isValidWebSocketRequest..st new file mode 100644 index 00000000..7a0abb64 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/isValidWebSocketRequest..st @@ -0,0 +1,13 @@ +protocol +isValidWebSocketRequest: request + "Return true when request can be considered a valid WebSocket setup request" + + ^ request method = #GET + and: [ + (request headers at: 'Upgrade' ifAbsent: [ ^ false ]) asLowercase = 'websocket' + and: [ + (ZnWebSocketUtils containsConnectionUpgrade: request headers) + and: [ + (request headers at: 'Sec-WebSocket-Version' ifAbsent: [ ^ false ]) = '13' + and: [ + request headers includesKey: 'Sec-WebSocket-Key' ] ] ] ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/log.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/log.st new file mode 100644 index 00000000..d94e4dd8 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/log.st @@ -0,0 +1,3 @@ +accessing +log + ^ ZnCurrentServer value log \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/prefix..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/prefix..st new file mode 100644 index 00000000..1dcf753e --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/prefix..st @@ -0,0 +1,3 @@ +private +prefix: orderedCollection + prefix := orderedCollection \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/prefix.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/prefix.st new file mode 100644 index 00000000..5201ef61 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/prefix.st @@ -0,0 +1,3 @@ +accessing +prefix + ^ prefix \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/prefixFromString..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/prefixFromString..st new file mode 100644 index 00000000..401ffb44 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/prefixFromString..st @@ -0,0 +1,6 @@ +initialize-release +prefixFromString: string + "Set the path prefix under which I should be handling request to string, + interpreting each /-separated token as a path element" + + self prefix: (string findTokens: '/') \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/responseHeadersForKey..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/responseHeadersForKey..st new file mode 100644 index 00000000..5b704683 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/responseHeadersForKey..st @@ -0,0 +1,9 @@ +private +responseHeadersForKey: key + "Return the headers for a WebSocket setup response, given key" + + ^ ZnHeaders defaultResponseHeaders + at: 'Upgrade' put: 'websocket'; + at: 'Connection' put: 'Upgrade'; + at: 'Sec-WebSocket-Accept' put: key; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/value..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/value..st new file mode 100644 index 00000000..17bc2c2a --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.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-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/webSocketResponseForRequest..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/webSocketResponseForRequest..st new file mode 100644 index 00000000..59195678 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/instance/webSocketResponseForRequest..st @@ -0,0 +1,12 @@ +protocol +webSocketResponseForRequest: request + "Given a valid WebSocket setup request, return the matching server response" + + | acceptKey response | + acceptKey := ZnWebSocketUtils handshake: (request headers at: 'Sec-WebSocket-Key'). + ^ ZnWebSocketResponse new + statusLine: (ZnStatusLine code: 101); + headers: (self responseHeadersForKey: acceptKey); + continuation: self continuation; + yourself + \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/methodProperties.json new file mode 100644 index 00000000..695827d7 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/methodProperties.json @@ -0,0 +1,20 @@ +{ + "class" : { + "demoHtml" : "SvenVanCaekenberghe 1/8/2013 13:47", + "handler:" : "SvenVanCaekenberghe 9/11/2012 10:41", + "installExamplesInDefaultServer" : "SvenVanCaekenberghe 10/13/2012 15:07", + "installExamplesInServer:" : "SvenVanCaekenberghe 1/10/2013 14:35", + "map:to:" : "SvenVanCaekenberghe 8/27/2012 20:59" }, + "instance" : { + "continuation" : "SvenVanCaekenberghe 10/13/2012 17:37", + "handleRequest:" : "SvenVanCaekenberghe 8/22/2012 13:09", + "handler" : "SvenVanCaekenberghe 8/22/2012 13:06", + "handler:" : "SvenVanCaekenberghe 8/22/2012 13:33", + "isValidWebSocketRequest:" : "SvenVanCaekenberghe 9/7/2012 14:15", + "log" : "SvenVanCaekenberghe 1/10/2013 14:32", + "prefix" : "SvenVanCaekenberghe 8/22/2012 13:06", + "prefix:" : "SvenVanCaekenberghe 8/22/2012 13:06", + "prefixFromString:" : "SvenVanCaekenberghe 8/22/2012 13:07", + "responseHeadersForKey:" : "SvenVanCaekenberghe 9/2/2012 20:40", + "value:" : "SvenVanCaekenberghe 8/22/2012 14:40", + "webSocketResponseForRequest:" : "SvenVanCaekenberghe 10/13/2012 17:37" } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/properties.json new file mode 100644 index 00000000..ddc76f38 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketDelegate.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "prefix", + "handler" ], + "name" : "ZnWebSocketDelegate", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/README.md new file mode 100644 index 00000000..055f2be0 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/README.md @@ -0,0 +1,5 @@ +I am ZnWebSocketEchoHandler, implementing an echo service conversation as a WebSocket server: reading messages and echoing them back until ConnectionClosed. + +See the class comment of ZnWebSocketDelegate for an example using ZnWebSocketEchoHandler. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/class/clientHtml.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/class/clientHtml.st new file mode 100644 index 00000000..e9972b86 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/class/clientHtml.st @@ -0,0 +1,63 @@ +constants +clientHtml + ^ ' + +WebSocket Test + + + +

        WebSocket Test

        +
        + + ' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/class/clientHtmlRemote.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/class/clientHtmlRemote.st new file mode 100644 index 00000000..2d6784c2 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/class/clientHtmlRemote.st @@ -0,0 +1,63 @@ +constants +clientHtmlRemote + ^ ' + +WebSocket Test + + + +

        WebSocket Test

        +
        + + ' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/instance/value..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/instance/value..st new file mode 100644 index 00000000..aa1e854f --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/instance/value..st @@ -0,0 +1,11 @@ +accessing +value: webSocket + "I implement an echo service conversation as a server: + reading messages and echoing them back until ConnectionClosed" + + [ + webSocket runWith: [ :message | + webSocket log info: [ 'Received message: ', message printString, ', echoing' ]. + webSocket sendMessage: message ] ] + on: ConnectionClosed + do: [ webSocket log debug: 'Ignoring connection close, done' ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/methodProperties.json new file mode 100644 index 00000000..d098a71b --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + "clientHtml" : "SvenVanCaekenberghe 1/8/2013 13:44", + "clientHtmlRemote" : "SvenVanCaekenberghe 10/13/2012 20:50" }, + "instance" : { + "value:" : "SvenVanCaekenberghe 10/13/2012 17:43" } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/properties.json new file mode 100644 index 00000000..5becbaf4 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketEchoHandler.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnWebSocketEchoHandler", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/README.md new file mode 100644 index 00000000..013886c4 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/README.md @@ -0,0 +1,4 @@ +I am ZnWebSocketFailed, an exception thrown when a client WebSocket cannot be created successfully. +I am an Error. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/class/response..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/class/response..st new file mode 100644 index 00000000..858c6f6c --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/class/response..st @@ -0,0 +1,5 @@ +instance creation +response: response + ^ self new + response: response; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/instance/response..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/instance/response..st new file mode 100644 index 00000000..714bc542 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/instance/response..st @@ -0,0 +1,3 @@ +accessing +response: anObject + response := anObject \ No newline at end of file diff --git a/repository/Zinc-HTTP.package/ZnUserAgent.class/instance/response.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/instance/response.st similarity index 100% rename from repository/Zinc-HTTP.package/ZnUserAgent.class/instance/response.st rename to repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/instance/response.st diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/methodProperties.json new file mode 100644 index 00000000..6b9f150c --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + "response:" : "SvenVanCaekenberghe 7/19/2012 15:47" }, + "instance" : { + "response" : "SvenVanCaekenberghe 7/19/2012 15:46", + "response:" : "SvenVanCaekenberghe 7/19/2012 15:46" } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/properties.json new file mode 100644 index 00000000..8c3482f1 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFailed.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "response" ], + "name" : "ZnWebSocketFailed", + "pools" : [ + ], + "super" : "Error", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/README.md new file mode 100644 index 00000000..5f5b4238 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/README.md @@ -0,0 +1,12 @@ +I am ZnWebSocketFrame, the elementary, low-level unit of data transfer in the WebSocket protocol. + +A frame has an opcode (a type), a flag indicating whether it is the final frame in a sequence, a flag indicating whether it is masked and a body (a ByteArray). + +The wire encoding of a frame consists minimally of 2 bytes: the first holds the opcode and final bit, the second the size and masked bit. Sizes strictly smaller than 126 are encoded directly. If the first byte is 126, the size is encoded in 2 successive bytes. If the first byte is 127, the size is encoded in 8 successive bytes. Client to server messages are masked. A 4 byte mask is XOR-ed with all body bytes. See #readFrom: and #writeOn: for the details. + +This implementation follows RFC 6455. See also: + + http://en.wikipedia.org/wiki/Websockets + http://tools.ietf.org/html/rfc6455 + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/bytes..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/bytes..st new file mode 100644 index 00000000..64be9807 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/bytes..st @@ -0,0 +1,7 @@ +instance creation +bytes: byteArray + ^ self new + opcode: 2; + final: true; + body: byteArray; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/close.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/close.st new file mode 100644 index 00000000..340194fb --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/close.st @@ -0,0 +1,6 @@ +instance creation +close + ^ self new + opcode: 8; + final: true; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/ping..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/ping..st new file mode 100644 index 00000000..2db9ff02 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/ping..st @@ -0,0 +1,7 @@ +instance creation +ping: bytes + ^ self new + opcode: 9; + final: true; + body: bytes; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/pong..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/pong..st new file mode 100644 index 00000000..80ff74bd --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/pong..st @@ -0,0 +1,7 @@ +instance creation +pong: bytes + ^ self new + opcode: 10; + final: true; + body: bytes; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/readFrom..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/readFrom..st new file mode 100644 index 00000000..bd58765e --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/readFrom..st @@ -0,0 +1,5 @@ +instance creation +readFrom: stream + ^ self new + readFrom: stream; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/text..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/text..st new file mode 100644 index 00000000..97ad6303 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/class/text..st @@ -0,0 +1,7 @@ +instance creation +text: string + ^ self new + opcode: 1; + final: true; + text: string; + yourself \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/body..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/body..st new file mode 100644 index 00000000..7bb57622 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/body..st @@ -0,0 +1,3 @@ +accessing +body: anObject + body := anObject \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/body.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/body.st new file mode 100644 index 00000000..38c95781 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/body.st @@ -0,0 +1,3 @@ +accessing +body + ^ body \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/closeCode.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/closeCode.st new file mode 100644 index 00000000..96ea6c7c --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/closeCode.st @@ -0,0 +1,6 @@ +accessing +closeCode + self assert: self isClose. + self assert: self isEmpty not. + ^ (body readStream next: 2) asInteger + \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/closeReason.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/closeReason.st new file mode 100644 index 00000000..fdb9e3d2 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/closeReason.st @@ -0,0 +1,6 @@ +accessing +closeReason + self assert: self isClose. + self assert: self isEmpty not. + ^ ZnUTF8Encoder new decodeBytes: (body allButFirst: 2) + \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/contents.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/contents.st new file mode 100644 index 00000000..8f2e08bd --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/contents.st @@ -0,0 +1,6 @@ +accessing +contents + self assert: self isControl not. + ^ self isText + ifTrue: [ self text ] + ifFalse: [ body ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/final..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/final..st new file mode 100644 index 00000000..9ed56ccb --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/final..st @@ -0,0 +1,3 @@ +accessing +final: anObject + final := anObject \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/final.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/final.st new file mode 100644 index 00000000..2caf6dc4 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/final.st @@ -0,0 +1,3 @@ +accessing +final + ^ final \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/initialize.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/initialize.st new file mode 100644 index 00000000..a8457f71 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/initialize.st @@ -0,0 +1,4 @@ +initialize-release +initialize + super initialize. + final := true \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isBinary.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isBinary.st new file mode 100644 index 00000000..b279ed05 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isBinary.st @@ -0,0 +1,3 @@ +testing +isBinary + ^ opcode = 2 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isClose.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isClose.st new file mode 100644 index 00000000..fbe563c9 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isClose.st @@ -0,0 +1,3 @@ +testing +isClose + ^ opcode = 8 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isContinuation.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isContinuation.st new file mode 100644 index 00000000..78df794d --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isContinuation.st @@ -0,0 +1,3 @@ +testing +isContinuation + ^ opcode = 0 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isControl.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isControl.st new file mode 100644 index 00000000..da751e08 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isControl.st @@ -0,0 +1,3 @@ +testing +isControl + ^ opcode > 7 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isEmpty.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isEmpty.st new file mode 100644 index 00000000..20819b08 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isEmpty.st @@ -0,0 +1,3 @@ +testing +isEmpty + ^ self size = 0 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isFinal.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isFinal.st new file mode 100644 index 00000000..893016fd --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isFinal.st @@ -0,0 +1,3 @@ +testing +isFinal + ^ final \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isMasked.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isMasked.st new file mode 100644 index 00000000..37da403d --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isMasked.st @@ -0,0 +1,3 @@ +testing +isMasked + ^ masked \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isPing.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isPing.st new file mode 100644 index 00000000..e1f67f96 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isPing.st @@ -0,0 +1,3 @@ +testing +isPing + ^ opcode = 9 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isPong.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isPong.st new file mode 100644 index 00000000..5c45ef44 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isPong.st @@ -0,0 +1,3 @@ +testing +isPong + ^ opcode = 10 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isText.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isText.st new file mode 100644 index 00000000..f4d51985 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/isText.st @@ -0,0 +1,3 @@ +testing +isText + ^ opcode = 1 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/masked..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/masked..st new file mode 100644 index 00000000..b4c97bbc --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/masked..st @@ -0,0 +1,3 @@ +accessing +masked: anObject + masked := anObject \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/masked.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/masked.st new file mode 100644 index 00000000..dedeb33a --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/masked.st @@ -0,0 +1,3 @@ +accessing +masked + ^ masked \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/opcode..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/opcode..st new file mode 100644 index 00000000..f372cbf2 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/opcode..st @@ -0,0 +1,3 @@ +accessing +opcode: anObject + opcode := anObject \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/opcode.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/opcode.st new file mode 100644 index 00000000..8820c5ed --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/opcode.st @@ -0,0 +1,3 @@ +accessing +opcode + ^ opcode \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/opcodeName.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/opcodeName.st new file mode 100644 index 00000000..a5257a5f --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/opcodeName.st @@ -0,0 +1,6 @@ +accessing +opcodeName + | name | + self assert: (opcode between: 0 and: 15). + name := #(continuation text binary nil nil nil nil nil close ping pong nil nil nil nil nil) at: opcode + 1. + ^ name ifNil: [ opcode asString ] ifNotNil: [ name ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/printOn..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/printOn..st new file mode 100644 index 00000000..f365435a --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/printOn..st @@ -0,0 +1,11 @@ +printing +printOn: stream + super printOn: stream. + stream + nextPut: $(; + print: self opcodeName; + space; + print: self size; nextPut: $B; + space; + nextPutAll: (final ifTrue: [ 'final' ] ifFalse: [ 'non-final' ]); + nextPut: $) \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/readBodyOfSize.from..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/readBodyOfSize.from..st new file mode 100644 index 00000000..19a81c80 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/readBodyOfSize.from..st @@ -0,0 +1,11 @@ +private +readBodyOfSize: size from: stream + | mask | + masked + ifTrue: [ + mask := stream next: 4. + body := ByteArray new: size streamContents: [ :out | + 1 to: size do: [ :index | + out nextPut: (stream next bitXor: (mask at: ((index - 1) \\ 4) + 1)) ] ] ] + ifFalse: [ + body := stream next: size ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/readFrom..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/readFrom..st new file mode 100644 index 00000000..a99ad58a --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/readFrom..st @@ -0,0 +1,16 @@ +reading +readFrom: stream + | byte size mask | + (byte := stream next) ifNil: [ ConnectionClosed signal ]. + final := (byte bitAt: 8) = 1. + opcode := byte bitAnd: 127. + (byte := stream next) ifNil: [ ConnectionClosed signal ]. + masked := (byte bitAt: 8) = 1. + size := byte bitAnd: 127. + size < 126 + ifFalse: [ + size = 126 + ifTrue: [ size := (stream next: 2) asInteger ] + ifFalse: [ size := (stream next: 8) asInteger ]. + size = 0 ifTrue: [ ConnectionClosed signal ] ]. + self readBodyOfSize: size from: stream \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/size.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/size.st new file mode 100644 index 00000000..e48f24b2 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/size.st @@ -0,0 +1,7 @@ +accessing +size + "Return the body size in bytes" + + ^ body + ifNil: [ 0 ] + ifNotNil: [ body size ]. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/text..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/text..st new file mode 100644 index 00000000..12d5a839 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/text..st @@ -0,0 +1,3 @@ +accessing +text: string + self body: (ZnUTF8Encoder new encodeString: string) diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/text.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/text.st new file mode 100644 index 00000000..13447124 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/text.st @@ -0,0 +1,3 @@ +accessing +text + ^ ZnUTF8Encoder new decodeBytes: body \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/writeBodyOfSize.on..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/writeBodyOfSize.on..st new file mode 100644 index 00000000..6f408174 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/writeBodyOfSize.on..st @@ -0,0 +1,13 @@ +private +writeBodyOfSize: size on: stream + | mask | + masked + ifTrue: [ + mask := ZnWebSocketUtils newMask. + stream nextPutAll: mask ]. + size = 0 ifTrue: [ ^ self ]. + masked + ifTrue: [ + body doWithIndex: [ :each :index | + stream nextPut: (each bitXor: (mask at: ((index - 1) \\ 4) + 1)) ] ] + ifFalse: [ self writeRawBodyOn: stream ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/writeOn..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/writeOn..st new file mode 100644 index 00000000..b2ef13b3 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/writeOn..st @@ -0,0 +1,15 @@ +writing +writeOn: stream + | byte size | + byte := (final ifTrue: [ 128 ] ifFalse: [ 0 ]) + opcode. + stream nextPut: byte. + byte := (masked ifTrue: [ 128 ] ifFalse: [ 0 ]). + (size := self size) < 126 + ifTrue: [ stream nextPut: (byte + size) ] + ifFalse: [ + size < 65536 + ifTrue: [ stream nextPut: (byte + 126); nextPutAll: (size asByteArrayOfSize: 2) ] + ifFalse: [ + self assert: size < (2 raisedTo: 31). + stream nextPut: (byte + 127); nextPutAll: (size asByteArrayOfSize: 8) ] ]. + self writeBodyOfSize: size on: stream \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/writeRawBodyOn..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/writeRawBodyOn..st new file mode 100644 index 00000000..2ffc86eb --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/instance/writeRawBodyOn..st @@ -0,0 +1,4 @@ +private +writeRawBodyOn: stream + self isEmpty + ifFalse: [ stream nextPutAll: body ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/methodProperties.json new file mode 100644 index 00000000..942e6111 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/methodProperties.json @@ -0,0 +1,41 @@ +{ + "class" : { + "bytes:" : "SvenVanCaekenberghe 8/21/2012 15:22", + "close" : "SvenVanCaekenberghe 8/21/2012 15:26", + "ping:" : "SvenVanCaekenberghe 8/21/2012 20:22", + "pong:" : "SvenVanCaekenberghe 8/21/2012 20:22", + "readFrom:" : "SvenVanCaekenberghe 8/21/2012 15:40", + "text:" : "SvenVanCaekenberghe 8/21/2012 20:30" }, + "instance" : { + "body" : "SvenVanCaekenberghe 8/21/2012 15:08", + "body:" : "SvenVanCaekenberghe 8/21/2012 15:08", + "closeCode" : "SvenVanCaekenberghe 8/23/2012 11:52", + "closeReason" : "SvenVanCaekenberghe 8/23/2012 11:53", + "contents" : "SvenVanCaekenberghe 8/22/2012 10:28", + "final" : "SvenVanCaekenberghe 8/21/2012 15:08", + "final:" : "SvenVanCaekenberghe 8/21/2012 15:08", + "initialize" : "SvenVanCaekenberghe 8/21/2012 15:31", + "isBinary" : "SvenVanCaekenberghe 8/21/2012 16:26", + "isClose" : "SvenVanCaekenberghe 8/21/2012 17:10", + "isContinuation" : "SvenVanCaekenberghe 8/21/2012 17:10", + "isControl" : "SvenVanCaekenberghe 8/21/2012 15:46", + "isEmpty" : "SvenVanCaekenberghe 8/21/2012 21:00", + "isFinal" : "SvenVanCaekenberghe 8/21/2012 20:34", + "isMasked" : "SvenVanCaekenberghe 8/21/2012 22:29", + "isPing" : "SvenVanCaekenberghe 8/21/2012 17:09", + "isPong" : "SvenVanCaekenberghe 8/21/2012 17:09", + "isText" : "SvenVanCaekenberghe 8/21/2012 16:26", + "masked" : "SvenVanCaekenberghe 8/21/2012 15:08", + "masked:" : "SvenVanCaekenberghe 8/21/2012 15:08", + "opcode" : "SvenVanCaekenberghe 8/21/2012 15:08", + "opcode:" : "SvenVanCaekenberghe 8/21/2012 15:08", + "opcodeName" : "SvenVanCaekenberghe 8/22/2012 10:56", + "printOn:" : "SvenVanCaekenberghe 8/22/2012 10:55", + "readBodyOfSize:from:" : "SvenVanCaekenberghe 8/21/2012 15:32", + "readFrom:" : "SvenVanCaekenberghe 9/17/2012 10:52", + "size" : "SvenVanCaekenberghe 8/21/2012 20:59", + "text" : "SvenVanCaekenberghe 8/22/2012 10:28", + "text:" : "SvenVanCaekenberghe 8/21/2012 20:29", + "writeBodyOfSize:on:" : "SvenVanCaekenberghe 8/21/2012 21:02", + "writeOn:" : "SvenVanCaekenberghe 8/22/2012 10:58", + "writeRawBodyOn:" : "SvenVanCaekenberghe 8/21/2012 21:02" } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/properties.json new file mode 100644 index 00000000..0a620958 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketFrame.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "opcode", + "final", + "masked", + "body" ], + "name" : "ZnWebSocketFrame", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/README.md new file mode 100644 index 00000000..b1249eda --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/README.md @@ -0,0 +1,4 @@ +I am ZnWebSocketResponse used to continue the WebSocket conversation after the connection upgrade. +I am a ZnResponse. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/continuation..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/continuation..st new file mode 100644 index 00000000..bbcd830d --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/continuation..st @@ -0,0 +1,7 @@ +initialize-release +continuation: block + "Set the block that represents the continuation + when the server call #useConnection: on me. + The block will be evaluated with an instanciated WebSocket." + + continuation := block \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/continuation.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/continuation.st new file mode 100644 index 00000000..bd84f1ba --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/continuation.st @@ -0,0 +1,7 @@ +accessing +continuation + "Return the block that represents the continuation + when the server call #useConnection: on me. + The block will be evaluated with an instanciated WebSocket." + + ^ continuation \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/useConnection..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/useConnection..st new file mode 100644 index 00000000..702705bf --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/useConnection..st @@ -0,0 +1,9 @@ +accessing +useConnection: connection + "Hook method overwritten to give the receiver the chance to + keep using connection in the current thread/process after the server wrote the response. + We start a conversation by instanciating a WebSocket and passing it to our continuation." + + | webSocket message | + webSocket := ZnWebSocket onStream: connection. + self continuation value: webSocket \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/wantsConnectionClose.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/wantsConnectionClose.st new file mode 100644 index 00000000..1811e25e --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/instance/wantsConnectionClose.st @@ -0,0 +1,5 @@ +testing +wantsConnectionClose + "After we are done, the server can close the connection we were using" + + ^ true \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/methodProperties.json new file mode 100644 index 00000000..b55c21b2 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "continuation" : "SvenVanCaekenberghe 10/13/2012 17:32", + "continuation:" : "SvenVanCaekenberghe 10/13/2012 17:32", + "useConnection:" : "SvenVanCaekenberghe 10/13/2012 17:31", + "wantsConnectionClose" : "SvenVanCaekenberghe 8/20/2012 16:58" } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/properties.json new file mode 100644 index 00000000..e054fb77 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketResponse.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "continuation" ], + "name" : "ZnWebSocketResponse", + "pools" : [ + ], + "super" : "ZnResponse", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/README.md new file mode 100644 index 00000000..157da26e --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/README.md @@ -0,0 +1,5 @@ +I am ZnWebSocketStatusHandler, emitting some Smalltalk image status data every second as a stream of WebSocket messages. + +See the class comment of ZnWebSocketDelegate for an example using ZnWebSocketStatusHandler. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/class/clientHtml.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/class/clientHtml.st new file mode 100644 index 00000000..a9f0faaa --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/class/clientHtml.st @@ -0,0 +1,64 @@ +constants +clientHtml + ^ ' + +WebSocket Smalltalk Image Status Stream + + + +

        WebSocket Smalltalk Image Status Stream

        +
        +

        Log

        +
        + + ' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/processes.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/processes.st new file mode 100644 index 00000000..38874e4f --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/processes.st @@ -0,0 +1,13 @@ +accessing +processes + | allProcesses | + allProcesses := (Process allSubInstances + reject: [ :each | each isTerminated or: [ each = Processor activeProcess ] ]) + sorted: [ :a :b | a priority >= b priority ]. + ^ String streamContents: [ :out | + allProcesses doWithIndex: [ :each :index | + out + print: index; nextPut: $.; space; + nextPutAll: each name; space; + nextPut: $[; print: each priority; nextPut: $]; space; + print: each; cr ] ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/status.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/status.st new file mode 100644 index 00000000..7ebc173b --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/status.st @@ -0,0 +1,7 @@ +accessing +status + ^ String cr join: { + DateAndTime now printString. + self systemVersionInfo. + self vmStats. + self processes } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/systemVersionInfo.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/systemVersionInfo.st new file mode 100644 index 00000000..6ba19e2e --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/systemVersionInfo.st @@ -0,0 +1,7 @@ +accessing +systemVersionInfo + ^ String streamContents: [ :stream | + stream + print: SystemVersion current; + nextPutAll: ' - '; + nextPutAll: ZnConstants defaultServerString ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/value..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/value..st new file mode 100644 index 00000000..4d6d8d26 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/value..st @@ -0,0 +1,14 @@ +accessing +value: webSocket + "I stream status messages to a WebSocket client, once every second + until ConnectionClosed or no longer isConnected" + + [ + webSocket log info: 'Started status streaming'. + [ + webSocket sendMessage: self status. + 1 second asDelay wait. + webSocket isConnected ] whileTrue ] + on: ConnectionClosed + do: [ webSocket log debug: 'Ignoring connection close' ]. + webSocket log info: 'Stopping status streaming' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/vmStats.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/vmStats.st new file mode 100644 index 00000000..9a97adf8 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/instance/vmStats.st @@ -0,0 +1,5 @@ +accessing +vmStats + ^ [ SmalltalkImage current vm statisticsReport ] + on: MessageNotUnderstood + do: [ SmalltalkImage current vmStatisticsReportString ] \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/methodProperties.json new file mode 100644 index 00000000..9ed3a16a --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + "clientHtml" : "SvenVanCaekenberghe 10/13/2012 20:52" }, + "instance" : { + "processes" : "SvenVanCaekenberghe 9/7/2012 17:00", + "status" : "SvenVanCaekenberghe 9/7/2012 21:37", + "systemVersionInfo" : "SvenVanCaekenberghe 9/7/2012 16:38", + "value:" : "SvenVanCaekenberghe 10/13/2012 17:42", + "vmStats" : "SvenVanCaekenberghe 9/7/2012 16:23" } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/properties.json new file mode 100644 index 00000000..4b26fa1b --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketStatusHandler.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnWebSocketStatusHandler", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/README.md b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/README.md new file mode 100644 index 00000000..507830ea --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/README.md @@ -0,0 +1,3 @@ +I am ZnWebSocketUtils. + +Part of Zinc HTTP Components. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/containsConnectionUpgrade..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/containsConnectionUpgrade..st new file mode 100644 index 00000000..51ad523a --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/containsConnectionUpgrade..st @@ -0,0 +1,6 @@ +accessing +containsConnectionUpgrade: headers + ^ (((headers at: 'Connection' ifAbsent: [ ^ false ]) + findTokens: ',') + collect: [ :each | each trimBoth asLowercase ]) + includes: 'upgrade' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/handshake..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/handshake..st new file mode 100644 index 00000000..c44a5b48 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/handshake..st @@ -0,0 +1,10 @@ +protocol +handshake: clientKey + "Perform the WebSocket key handshake" + + "self handshake: 'dGhlIHNhbXBsZSBub25jZQ=='" + + | string hash | + string := clientKey, self serverGUID. + hash := SHA1 hashMessage: string. + ^ ZnUtils encodeBase64: hash \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/newClientKey.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/newClientKey.st new file mode 100644 index 00000000..a94976a9 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/newClientKey.st @@ -0,0 +1,7 @@ +protocol +newClientKey + "Generate a new WebSocket client key" + + | rawKey | + rawKey := self randomByteArrayOfSize: 16. + ^ ZnUtils encodeBase64: rawKey \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/newMask.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/newMask.st new file mode 100644 index 00000000..2823b27d --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/newMask.st @@ -0,0 +1,3 @@ +accessing +newMask + ^ self randomByteArrayOfSize: 4 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/newPingPayload.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/newPingPayload.st new file mode 100644 index 00000000..0a2d00ac --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/newPingPayload.st @@ -0,0 +1,3 @@ +accessing +newPingPayload + ^ self randomByteArrayOfSize: 4 \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/randomByteArrayOfSize..st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/randomByteArrayOfSize..st new file mode 100644 index 00000000..f48e2963 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/randomByteArrayOfSize..st @@ -0,0 +1,5 @@ +accessing +randomByteArrayOfSize: size + ^ ByteArray new: size streamContents: [ :stream | + size timesRepeat: [ + stream nextPut: 256 atRandom - 1 ] ]. diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/serverGUID.st b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/serverGUID.st new file mode 100644 index 00000000..ca944cd6 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/class/serverGUID.st @@ -0,0 +1,5 @@ +constants +serverGUID + "This is the special WebSocket server GUID" + + ^ '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/methodProperties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/methodProperties.json new file mode 100644 index 00000000..98a2b5f7 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + "containsConnectionUpgrade:" : "SvenVanCaekenberghe 9/7/2012 14:15", + "handshake:" : "SvenVanCaekenberghe 7/19/2012 15:07", + "newClientKey" : "SvenVanCaekenberghe 7/20/2012 15:06", + "newMask" : "SvenVanCaekenberghe 7/20/2012 15:06", + "newPingPayload" : "SvenVanCaekenberghe 8/21/2012 20:23", + "randomByteArrayOfSize:" : "SvenVanCaekenberghe 7/20/2012 15:06", + "serverGUID" : "SvenVanCaekenberghe 7/19/2012 14:54" }, + "instance" : { + } } diff --git a/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/properties.json b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/properties.json new file mode 100644 index 00000000..27ac91f5 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/ZnWebSocketUtils.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-WebSocket-Core", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnWebSocketUtils", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Core.package/monticello.meta/categories.st b/repository/Zinc-WebSocket-Core.package/monticello.meta/categories.st new file mode 100644 index 00000000..f0a7a26a --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-WebSocket-Core'! diff --git a/repository/Zinc-WebSocket-Core.package/monticello.meta/initializers.st b/repository/Zinc-WebSocket-Core.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-WebSocket-Core.package/monticello.meta/package b/repository/Zinc-WebSocket-Core.package/monticello.meta/package new file mode 100644 index 00000000..9b61cf75 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-WebSocket-Core') \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/monticello.meta/version b/repository/Zinc-WebSocket-Core.package/monticello.meta/version new file mode 100644 index 00000000..191bc444 --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.25' message 'remove log instance variable from ZnWebSocketDelegate; use the new ZnCurrentServer value log instead' id 'f912c6ca-f295-4dec-9dc1-b47a877218e3' date '10 January 2013' time '3:59:18.54 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.24' message 'added fancier ZnWebSocketDelegate class>>#demoHtml front page to #installExamplesInServer:' id '07e7c6bc-cd48-4afa-a70f-33ef812c4c82' date '8 January 2013' time '1:54:14.486 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.23' message 'fixed client html/javascript code to use a ws:// uri relative to the page uri' id '26ce36c9-46c7-436e-bc3b-ba5e16ebd4c0' date '13 October 2012' time '8:56:13.08 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.22' message 'Added ZnWebSocketDelegate class>>#installExamplesInDefaultServer; Cleaned up logging: - added log support instance variable to ZnWebSocketDelegate and ZnWebSocket - refactored ZnWebSocketResponse with continuation block - added explicit ZnWebSocketDelegate>>#continuation' id 'b25d5a09-b334-4dcb-83b9-3893dbc53f32' date '13 October 2012' time '5:53:18.428 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.21' message 'improved robustness against #next returning nil on #atEnd by throwing ConnectionClosed in ZnWebSocketFrame>>#readFrom: (thx Jacob Wagner)' id '1a288db0-5969-4765-9d82-780e3425db96' date '17 September 2012' time '10:58:39.729 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.20' message 'fixed a typo' id '275ea0d1-e95a-468f-a209-9c322c2568a0' date '12 September 2012' time '9:16:16.204 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.19' message 'added some more comments' id 'e4ca1456-d8d8-4c3c-b4f2-9eaf066f4f20' date '12 September 2012' time '3:28:47.701 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.18' message 'extra documentation; re-categorization added ZnWebSocketDelegate class>>#handler:' id 'cf67dd6a-60a5-4c8b-a2ee-a078c318442c' date '11 September 2012' time '3:23:57.296 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.17' message 'add the use of a lock Mutex and #critical: sections to ZnWebSocketChatroomHandler; improved comments' id '803c38fc-9c49-45bc-9537-d813e58c8d75' date '10 September 2012' time '1:23:28.925 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.16' message 'html change' id '5b08ce9e-5075-42b3-9a3f-25c369c636be' date '7 September 2012' time '9:48:38.873 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.15' message 'minor code reformatting' id '484cbd72-d910-40c7-ac59-41e880ef5373' date '7 September 2012' time '9:38:50.67 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.14' message 'added ZnWebSocketStatusHandler example' id '34b9a4cc-24fc-48da-bfd0-fe87cbca88b4' date '7 September 2012' time '8:31:10.038 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.13' message 'moved the html generating methods around' id '857d3ddc-3254-48b3-818c-3621e55ebb98' date '7 September 2012' time '3:58:38.865 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.12' message 'Fixed a bug in ZnWebSocket>>#runWith: where non-existing nil messages where delivered whenever a socket timeout occurred; Added the ZnWebSocketChatroomHandler example; Made some core more robust; Added more comments' id 'c00cfb98-eba4-407b-901e-65168e6a1589' date '7 September 2012' time '2:42:28.261 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.11' message 'added some convencience ZnWebSocket class>>#startServerOn:[prefix:]do: methods; extended comments' id '46ad5865-182e-4ef1-a5ed-39423ddd646c' date '2 September 2012' time '8:56:40.567 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.10' message 'added ZnWebSocketDelegate class>>#map:to:' id '7a2e1f55-8ef9-472c-b334-20487a0caca2' date '27 August 2012' time '9:01:16.647 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.9' message 'refactoring of ZnWebSocket protocol code, introduction of ZnWebSocketClosed, and ZnWebSocket>>#runWith:' id 'b0a421a5-15b3-4982-bb63-f13dbc36ff8a' date '23 August 2012' time '12:05:13.868 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.8' message 'changed the semantics of ZnWebSocket>>#readFrame and #readMessage to throw ConnectionClosed when the other end closes; added prefix option to ZnWebSocketDelegate; refactored ZnWebSocketResponse>>#useConnection: to delegate to its handler; added new ZnWebSocketEchoHandler ' id 'f48bf140-6ba9-4a88-817b-214f475675c0' date '22 August 2012' time '2:57:09.408 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.7' message 'debugging/extending ZnWebSocketFrame' id '559de1c2-4dfd-41a8-b4c7-122148388431' date '22 August 2012' time '11:16:31.244 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.6' message 'added ZnWebSocketFrame>>#isMasked' id '45287cf4-10ad-4a00-a353-d4c500d069a9' date '21 August 2012' time '10:44:32.849 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.5' message 'added multi-frame message sending' id '2b8b217e-7d2f-4592-8562-7c50bda1c090' date '21 August 2012' time '10:14:05.556 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.4' message 'added support for control protocol frames; refactoring' id '00fda542-814a-48a0-837b-fd091424a7f6' date '21 August 2012' time '9:30:44.136 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.3' message 'introduction of WebSocketFrame class; added role to WebSocket' id 'bc7296ef-0956-4e79-ab37-95d60f91dd61' date '21 August 2012' time '4:32:02.917 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.2' message 'first simple server code working' id '6fd1b1d2-7e22-4666-9707-c964698e6eae' date '21 August 2012' time '1:31:31.108 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Core-SvenVanCaekenberghe.1' message 'very simple client code working' id 'db0800b5-d196-4f8a-819d-d08249174b8d' date '3 August 2012' time '3:57:47.174 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 ()) \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Core.package/properties.json b/repository/Zinc-WebSocket-Core.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-WebSocket-Core.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-WebSocket-Tests.package/.filetree b/repository/Zinc-WebSocket-Tests.package/.filetree new file mode 100644 index 00000000..8998102c --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/.filetree @@ -0,0 +1,4 @@ +{ + "noMethodMetaData" : true, + "separateMethodMetaAndSource" : false, + "useCypressPropertiesFile" : true } diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/README.md b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/README.md new file mode 100644 index 00000000..8af81d7d --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/README.md @@ -0,0 +1 @@ +I am ZnWebSocketFrameTests. diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReading256ByteSingleFrameUnmaskedBinaryMessage.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReading256ByteSingleFrameUnmaskedBinaryMessage.st new file mode 100644 index 00000000..b61b8b72 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReading256ByteSingleFrameUnmaskedBinaryMessage.st @@ -0,0 +1,13 @@ +testing +testReading256ByteSingleFrameUnmaskedBinaryMessage + "Fifth example from RFC 6455 section 5.7" + + | payload bytes frame | + payload := ZnWebSocketUtils randomByteArrayOfSize: 256. + bytes := (ByteArray readHexFrom: '827e0100'), payload. + frame := ZnWebSocketFrame readFrom: bytes readStream. + self assert: frame isBinary. + self deny: frame isMasked. + self assert: frame isFinal. + self assert: frame size equals: 256. + self assert: frame body equals: payload. diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReading256KiBSingleFrameUnmaskedBinaryMessage.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReading256KiBSingleFrameUnmaskedBinaryMessage.st new file mode 100644 index 00000000..9a32af21 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReading256KiBSingleFrameUnmaskedBinaryMessage.st @@ -0,0 +1,13 @@ +testing +testReading256KiBSingleFrameUnmaskedBinaryMessage + "Fifth example from RFC 6455 section 5.7" + + | payload bytes frame | + payload := ZnWebSocketUtils randomByteArrayOfSize: (2 raisedTo: 16). + bytes := (ByteArray readHexFrom: '827f0000000000010000'), payload. + frame := ZnWebSocketFrame readFrom: bytes readStream. + self assert: frame isBinary. + self deny: frame isMasked. + self assert: frame isFinal. + self assert: frame size equals: (2 raisedTo: 16). + self assert: frame body equals: payload. diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingFragmentedUnmaskedTextMessage.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingFragmentedUnmaskedTextMessage.st new file mode 100644 index 00000000..ebc2ce94 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingFragmentedUnmaskedTextMessage.st @@ -0,0 +1,20 @@ +testing +testReadingFragmentedUnmaskedTextMessage + "Third example from RFC 6455 section 5.7" + + | bytes stream frame | + bytes := ByteArray readHexFrom: '010348656c80026c6f'. + stream := bytes readStream. + frame := ZnWebSocketFrame readFrom: stream. + self assert: frame isText. + self deny: frame isMasked. + self deny: frame isFinal. + self assert: frame text equals: 'Hel'. + self deny: stream atEnd. + frame := ZnWebSocketFrame readFrom: stream. + self assert: frame isContinuation. + self deny: frame isMasked. + self assert: frame isFinal. + self assert: frame text equals: 'lo'. + self assert: stream atEnd. + \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingPing.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingPing.st new file mode 100644 index 00000000..6eb656a8 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingPing.st @@ -0,0 +1,11 @@ +testing +testReadingPing + "Fourth example from RFC 6455 section 5.7" + + | bytes frame | + bytes := ByteArray readHexFrom: '890548656c6c6f'. + frame := ZnWebSocketFrame readFrom: bytes readStream. + self assert: frame isPing. + self deny: frame isMasked. + self assert: frame isFinal. + self assert: frame text equals: 'Hello'. diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingPong.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingPong.st new file mode 100644 index 00000000..1ff801dd --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingPong.st @@ -0,0 +1,11 @@ +testing +testReadingPong + "Fourth example from RFC 6455 section 5.7" + + | bytes frame | + bytes := ByteArray readHexFrom: '8a8537fa213d7f9f4d5158'. + frame := ZnWebSocketFrame readFrom: bytes readStream. + self assert: frame isPong. + self assert: frame isMasked. + self assert: frame isFinal. + self assert: frame text equals: 'Hello'. diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingSingleFrameMaskedTextMessage.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingSingleFrameMaskedTextMessage.st new file mode 100644 index 00000000..9a9bc476 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingSingleFrameMaskedTextMessage.st @@ -0,0 +1,11 @@ +testing +testReadingSingleFrameMaskedTextMessage + "Second example from RFC 6455 section 5.7" + + | bytes frame | + bytes := ByteArray readHexFrom: '818537fa213d7f9f4d5158'. + frame := ZnWebSocketFrame readFrom: bytes readStream. + self assert: frame isText. + self assert: frame isMasked. + self assert: frame isFinal. + self assert: frame contents equals: 'Hello' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingSingleFrameUnmaskedTextMessage.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingSingleFrameUnmaskedTextMessage.st new file mode 100644 index 00000000..abc723ec --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testReadingSingleFrameUnmaskedTextMessage.st @@ -0,0 +1,11 @@ +testing +testReadingSingleFrameUnmaskedTextMessage + "First example from RFC 6455 section 5.7" + + | bytes frame | + bytes := ByteArray readHexFrom: '810548656c6c6f'. + frame := ZnWebSocketFrame readFrom: bytes readStream. + self assert: frame isText. + self deny: frame isMasked. + self assert: frame isFinal. + self assert: frame contents equals: 'Hello' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWriting256ByteSingleFrameUnmaskedBinaryMessage.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWriting256ByteSingleFrameUnmaskedBinaryMessage.st new file mode 100644 index 00000000..8cafdd23 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWriting256ByteSingleFrameUnmaskedBinaryMessage.st @@ -0,0 +1,11 @@ +testing +testWriting256ByteSingleFrameUnmaskedBinaryMessage + "Fifth example from RFC 6455 section 5.7" + + | payload reference bytes frame | + payload := ZnWebSocketUtils randomByteArrayOfSize: 256. + reference := (ByteArray readHexFrom: '827e0100'), payload. + frame := ZnWebSocketFrame bytes: payload. + frame masked: false. + bytes := ByteArray streamContents: [ :stream | frame writeOn: stream ]. + self assert: bytes equals: reference diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWriting256KiBSingleFrameUnmaskedBinaryMessage.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWriting256KiBSingleFrameUnmaskedBinaryMessage.st new file mode 100644 index 00000000..6c643c10 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWriting256KiBSingleFrameUnmaskedBinaryMessage.st @@ -0,0 +1,11 @@ +testing +testWriting256KiBSingleFrameUnmaskedBinaryMessage + "Fifth example from RFC 6455 section 5.7" + + | reference payload bytes frame | + payload := ZnWebSocketUtils randomByteArrayOfSize: (2 raisedTo: 16). + reference := (ByteArray readHexFrom: '827f0000000000010000'), payload. + frame := ZnWebSocketFrame bytes: payload. + frame masked: false. + bytes := ByteArray streamContents: [ :stream | frame writeOn: stream ]. + self assert: bytes equals: reference diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWritingPing.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWritingPing.st new file mode 100644 index 00000000..3220020a --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWritingPing.st @@ -0,0 +1,10 @@ +testing +testWritingPing + "Fourth example from RFC 6455 section 5.7" + + | reference bytes frame | + reference := ByteArray readHexFrom: '890548656c6c6f'. + frame := ZnWebSocketFrame ping: 'Hello' asByteArray. + frame masked: false. + bytes := ByteArray streamContents: [ :stream | frame writeOn: stream ]. + self assert: bytes equals: reference diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWritingSingleFrameUnmaskedTextMessage.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWritingSingleFrameUnmaskedTextMessage.st new file mode 100644 index 00000000..531c6e65 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/instance/testWritingSingleFrameUnmaskedTextMessage.st @@ -0,0 +1,10 @@ +testing +testWritingSingleFrameUnmaskedTextMessage + "First example from RFC 6455 section 5.7" + + | reference bytes frame | + frame := ZnWebSocketFrame text: 'Hello'. + frame masked: false. + bytes := ByteArray streamContents: [ :stream | frame writeOn: stream ]. + reference := ByteArray readHexFrom: '810548656c6c6f'. + self assert: bytes equals: reference \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/methodProperties.json b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/methodProperties.json new file mode 100644 index 00000000..9369218d --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/methodProperties.json @@ -0,0 +1,15 @@ +{ + "class" : { + }, + "instance" : { + "testReading256ByteSingleFrameUnmaskedBinaryMessage" : "SvenVanCaekenberghe 8/22/2012 10:46", + "testReading256KiBSingleFrameUnmaskedBinaryMessage" : "SvenVanCaekenberghe 8/22/2012 10:46", + "testReadingFragmentedUnmaskedTextMessage" : "SvenVanCaekenberghe 8/22/2012 10:29", + "testReadingPing" : "SvenVanCaekenberghe 8/22/2012 10:32", + "testReadingPong" : "SvenVanCaekenberghe 8/22/2012 10:32", + "testReadingSingleFrameMaskedTextMessage" : "SvenVanCaekenberghe 8/22/2012 10:12", + "testReadingSingleFrameUnmaskedTextMessage" : "SvenVanCaekenberghe 8/22/2012 10:12", + "testWriting256ByteSingleFrameUnmaskedBinaryMessage" : "SvenVanCaekenberghe 8/22/2012 12:15", + "testWriting256KiBSingleFrameUnmaskedBinaryMessage" : "SvenVanCaekenberghe 8/22/2012 12:18", + "testWritingPing" : "SvenVanCaekenberghe 8/22/2012 12:11", + "testWritingSingleFrameUnmaskedTextMessage" : "SvenVanCaekenberghe 8/22/2012 12:05" } } diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/properties.json b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/properties.json new file mode 100644 index 00000000..5b255418 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketFrameTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-WebSocket-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnWebSocketFrameTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/README.md b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/README.md new file mode 100644 index 00000000..d342abc1 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/README.md @@ -0,0 +1 @@ +I am ZnWebSocketTests. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testChatroom.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testChatroom.st new file mode 100644 index 00000000..e5cb09e0 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testChatroom.st @@ -0,0 +1,21 @@ +testing +testChatroom + | webSocket1 message1 inbox1 webSocket2 message2 inbox2 | + ZnServer startDefaultOn: 1701. + ZnServer default + delegate: (ZnWebSocketDelegate map: 'ws-chatroom' to: ZnWebSocketChatroomHandler new). + webSocket1 := ZnWebSocket to: 'ws://localhost:1701/ws-chatroom'. + message1 := 'Message 1 @ ', TimeStamp now printString. + webSocket2 := ZnWebSocket to: 'ws://localhost:1701/ws-chatroom'. + message2 := 'Message 2 @ ', TimeStamp now printString. + webSocket1 sendMessage: message1. + webSocket2 sendMessage: message2. + inbox1 := { webSocket1 readMessage. webSocket1 readMessage }. + inbox2 := { webSocket2 readMessage. webSocket2 readMessage }. + self assert: (inbox1 includes: message1). + self assert: (inbox1 includes: message2). + self assert: (inbox2 includes: message1). + self assert: (inbox2 includes: message2). + webSocket1 close. + webSocket2 close. + ZnServer stopDefault. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testEcho.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testEcho.st new file mode 100644 index 00000000..3d2c575a --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testEcho.st @@ -0,0 +1,12 @@ +testing +testEcho + | webSocket message | + ZnServer startDefaultOn: 1701. + ZnServer default + delegate: (ZnWebSocketDelegate map: 'ws-echo' to: ZnWebSocketEchoHandler new). + webSocket := ZnWebSocket to: 'ws://localhost:1701/ws-echo'. + message := 'Greetings from Pharo Smalltalk @ ', TimeStamp now printString. + webSocket sendMessage: message. + self assert: webSocket readMessage equals: message. + webSocket close. + ZnServer stopDefault. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testEchoSecureWebSocketsDotOrg.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testEchoSecureWebSocketsDotOrg.st new file mode 100644 index 00000000..1f4d574a --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testEchoSecureWebSocketsDotOrg.st @@ -0,0 +1,8 @@ +testing +testEchoSecureWebSocketsDotOrg + | webSocket message | + webSocket := ZnWebSocket to: 'wss://echo.websocket.org'. + message := 'Greetings from Pharo Smalltalk @ ', TimeStamp now printString. + webSocket sendMessage: message. + self assert: webSocket readMessage equals: message. + webSocket close. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testEchoWebSocketsDotOrg.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testEchoWebSocketsDotOrg.st new file mode 100644 index 00000000..d7c2362a --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testEchoWebSocketsDotOrg.st @@ -0,0 +1,8 @@ +testing +testEchoWebSocketsDotOrg + | webSocket message | + webSocket := ZnWebSocket to: 'ws://echo.websocket.org'. + message := 'Greetings from Pharo Smalltalk @ ', TimeStamp now printString. + webSocket sendMessage: message. + self assert: webSocket readMessage equals: message. + webSocket close. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testStatus.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testStatus.st new file mode 100644 index 00000000..4e611945 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/instance/testStatus.st @@ -0,0 +1,11 @@ +testing +testStatus + | webSocket message | + ZnServer startDefaultOn: 1701. + ZnServer default + delegate: (ZnWebSocketDelegate map: 'ws-status' to: ZnWebSocketStatusHandler new). + webSocket := ZnWebSocket to: 'ws://localhost:1701/ws-status'. + message := webSocket readMessage. + self assert: (#('Pharo' 'memory' 'GC' 'Process') allSatisfy: [ :each | message includesSubstring: each ]). + webSocket close. + ZnServer stopDefault. \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/methodProperties.json b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/methodProperties.json new file mode 100644 index 00000000..8419335d --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "testChatroom" : "SvenVanCaekenberghe 9/7/2012 20:25", + "testEcho" : "SvenVanCaekenberghe 9/7/2012 20:25", + "testEchoSecureWebSocketsDotOrg" : "SvenVanCaekenberghe 8/22/2012 10:04", + "testEchoWebSocketsDotOrg" : "SvenVanCaekenberghe 8/21/2012 22:36", + "testStatus" : "SvenVanCaekenberghe 9/7/2012 20:29" } } diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/properties.json b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/properties.json new file mode 100644 index 00000000..9ac1b887 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-WebSocket-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnWebSocketTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/README.md b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/instance/testHandshake.st b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/instance/testHandshake.st new file mode 100644 index 00000000..c0be20c3 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/instance/testHandshake.st @@ -0,0 +1,7 @@ +testing +testHandshake + "From the example in RFC 6455 section 1.3 page 8" + + self + assert: (ZnWebSocketUtils handshake: 'dGhlIHNhbXBsZSBub25jZQ==') + equals: 's3pPLMBiTxaQ9kYGzzhZRbK+xOo=' \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/methodProperties.json b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/methodProperties.json new file mode 100644 index 00000000..e6d1f2c0 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "testHandshake" : "SvenVanCaekenberghe 8/22/2012 12:26" } } diff --git a/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/properties.json b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/properties.json new file mode 100644 index 00000000..f951e9e2 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/ZnWebSocketUtilsTests.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Zinc-WebSocket-Tests", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "ZnWebSocketUtilsTests", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/repository/Zinc-WebSocket-Tests.package/monticello.meta/categories.st b/repository/Zinc-WebSocket-Tests.package/monticello.meta/categories.st new file mode 100644 index 00000000..d690ef9b --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Zinc-WebSocket-Tests'! diff --git a/repository/Zinc-WebSocket-Tests.package/monticello.meta/initializers.st b/repository/Zinc-WebSocket-Tests.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Zinc-WebSocket-Tests.package/monticello.meta/package b/repository/Zinc-WebSocket-Tests.package/monticello.meta/package new file mode 100644 index 00000000..d84cae44 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Zinc-WebSocket-Tests') \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/monticello.meta/version b/repository/Zinc-WebSocket-Tests.package/monticello.meta/version new file mode 100644 index 00000000..52fa0053 --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/monticello.meta/version @@ -0,0 +1 @@ +(name 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.7' message 'added #testStatus' id '1d1c4570-f4a7-44f0-b22d-7aab5a808a64' date '7 September 2012' time '8:31:50.136 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.6' message 'added #testChatroom; some cleanup' id '83cc094a-2d34-439e-bd14-6acd3bb3e846' date '7 September 2012' time '3:59:26.203 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.5' message 'added ZnWebSocketDelegate class>>#map:to:' id '26845cfe-e494-4a40-b512-c428ce16dd9f' date '27 August 2012' time '9:01:42.944 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.4' message 'tracking API changes' id '7c66d092-59ac-443b-b937-d7e39c6d8777' date '22 August 2012' time '2:57:43.012 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.3' message 'added frame writing tests; added a key handshake test' id '8a26d0be-a05c-459b-b8bd-75cd9d59f1e2' date '22 August 2012' time '12:29:52.322 pm' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.2' message 'added more ZnWebSocketFrameTests; added ZnWebSocketTests>>#testEchoSecureWebSocketsDotOrg testing a secure (wss) client' id '887571c4-7f65-4cfc-a85f-7b7cc0b0773c' date '22 August 2012' time '11:18:14.55 am' author 'SvenVanCaekenberghe' ancestors ((name 'Zinc-WebSocket-Tests-SvenVanCaekenberghe.1' message 'added first couple of tests' id 'c488f09e-4948-4167-889d-d7ff344172b7' date '21 August 2012' time '10:42:32.24 pm' author 'SvenVanCaekenberghe' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file diff --git a/repository/Zinc-WebSocket-Tests.package/properties.json b/repository/Zinc-WebSocket-Tests.package/properties.json new file mode 100644 index 00000000..f037444a --- /dev/null +++ b/repository/Zinc-WebSocket-Tests.package/properties.json @@ -0,0 +1,2 @@ +{ + } diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/disabledTestPayPal.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/disabledTestPayPal.st new file mode 100644 index 00000000..43bb4d1a --- /dev/null +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/disabledTestPayPal.st @@ -0,0 +1,10 @@ +testing +disabledTestPayPal + | client | + self ensureSocketStreamFactory. + self isNativeSSLPluginPresent ifFalse: [ ^ self ]. + (client := ZnClient new) + get: 'https://www.paypal.com'. + self assert: client isSuccess. + self assert: (client contents includesSubstring: 'PayPal'). + client close \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testAmazonAWS.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testAmazonAWS.st index e95c49a6..75aec321 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testAmazonAWS.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testAmazonAWS.st @@ -6,5 +6,5 @@ testAmazonAWS (client := ZnClient new) get: 'https://aws.amazon.com/'. self assert: client isSuccess. - self assert: (client contents includesSubString: 'Amazon'). + self assert: (client contents includesSubstring: 'Amazon'). client close \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGForceInria.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGForceInria.st index 748474ad..c8670d68 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGForceInria.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGForceInria.st @@ -6,5 +6,5 @@ testGForceInria (client := ZnClient new) get: 'http://gforge.inria.fr/frs/?group_id=1299'. self assert: client isSuccess. - self assert: (client contents includesSubString: 'INRIA'). + self assert: (client contents includesSubstring: 'INRIA'). client close \ 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 3b364e34..f7ae2304 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGetPharoVersion.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGetPharoVersion.st @@ -5,7 +5,7 @@ testGetPharoVersion self isNativeSSLPluginPresent ifFalse: [ ^ self ]. lastBuildVersion := (client := ZnClient new) beOneShot; - get: 'https://ci.lille.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/text()'. self assert: client isSuccess. self assert: client response contentType equals: ZnMimeType textPlain. self assert: client response contentLength > 0. diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGmailEncrypted.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGmailEncrypted.st index 134f2f11..eb0b8d67 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGmailEncrypted.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGmailEncrypted.st @@ -6,6 +6,6 @@ testGmailEncrypted (client := ZnClient new) get: 'https://www.gmail.com'. self assert: client isSuccess. - self assert: (client contents includesSubString: 'Google'). - self assert: (client contents includesSubString: 'mail'). + self assert: (client contents includesSubstring: 'Google'). + self assert: (client contents includesSubstring: 'mail'). client close \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGoogleEncrypted.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGoogleEncrypted.st index 93906be2..fdc26142 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGoogleEncrypted.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testGoogleEncrypted.st @@ -6,6 +6,6 @@ testGoogleEncrypted (client := ZnClient new) get: 'https://encrypted.google.com/search?q=Smalltalk'. self assert: client isSuccess. - self assert: (client contents includesSubString: 'Google'). - self assert: (client contents includesSubString: 'Smalltalk'). + self assert: (client contents includesSubstring: 'Google'). + self assert: (client contents includesSubstring: 'Smalltalk'). client close \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testPayPal.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testPayPal.st deleted file mode 100644 index eb185c53..00000000 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testPayPal.st +++ /dev/null @@ -1,10 +0,0 @@ -testing -testPayPal - | client | - self ensureSocketStreamFactory. - self isNativeSSLPluginPresent ifFalse: [ ^ self ]. - (client := ZnClient new) - get: 'https://www.paypal.com'. - self assert: client isSuccess. - self assert: (client contents includesSubString: 'PayPal'). - client close \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testRequestResponse.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testRequestResponse.st index 82689fac..420efc1a 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testRequestResponse.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testRequestResponse.st @@ -13,5 +13,5 @@ testRequestResponse response := ZnResponse readFrom: stream. ] ensure: [ stream close ]. self assert: response isSuccess. - self assert: (response contents includesSubString: 'Google'). - self assert: (response contents includesSubString: 'Smalltalk'). + self assert: (response contents includesSubstring: 'Google'). + self assert: (response contents includesSubstring: 'Smalltalk'). diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testWikimedia.st b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testWikimedia.st index 83fd15f9..6082f567 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testWikimedia.st +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/instance/testWikimedia.st @@ -6,5 +6,5 @@ testWikimedia (client := ZnClient new) get: 'https://secure.wikimedia.org/'. self assert: client isSuccess. - self assert: (client contents includesSubString: 'Wikimedia'). + self assert: (client contents includesSubstring: 'Wikimedia'). client close \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/methodProperties.json b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/methodProperties.json index 653789af..c80a92e7 100644 --- a/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/methodProperties.json +++ b/repository/Zinc-Zodiac.package/ZnHTTPSTests.class/methodProperties.json @@ -3,15 +3,15 @@ "generateTestData:" : "SvenVanCaekenberghe 6/27/2012 13:26", "generateTestFiles" : "SvenVanCaekenberghe 6/27/2012 13:27" }, "instance" : { + "disabledTestPayPal" : "SvenVanCaekenberghe 10/2/2012 14:55", "ensureSocketStreamFactory" : "SvenVanCaekenberghe 7/4/2012 11:32", "isNativeSSLPluginPresent" : "SvenVanCaekenberghe 7/4/2012 11:32", - "testAmazonAWS" : "SvenVanCaekenberghe 7/4/2012 11:33", - "testGForceInria" : "SvenVanCaekenberghe 7/4/2012 11:33", - "testGetPharoVersion" : "SvenVanCaekenberghe 7/16/2012 11:41", - "testGmailEncrypted" : "SvenVanCaekenberghe 7/4/2012 11:33", - "testGoogleEncrypted" : "SvenVanCaekenberghe 7/4/2012 11:33", - "testPayPal" : "SvenVanCaekenberghe 7/4/2012 11:34", - "testRequestResponse" : "SvenVanCaekenberghe 7/4/2012 11:35", + "testAmazonAWS" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testGForceInria" : "SvenVanCaekenberghe 8/23/2012 14:34", + "testGetPharoVersion" : "SvenVanCaekenberghe 12/16/2012 21:51", + "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", - "testWikimedia" : "SvenVanCaekenberghe 7/4/2012 11:34" } } + "testWikimedia" : "SvenVanCaekenberghe 8/23/2012 14:34" } } diff --git a/repository/Zinc-Zodiac.package/ZnSecureServer.class/instance/scheme.st b/repository/Zinc-Zodiac.package/ZnSecureServer.class/instance/scheme.st new file mode 100644 index 00000000..dfaf4594 --- /dev/null +++ b/repository/Zinc-Zodiac.package/ZnSecureServer.class/instance/scheme.st @@ -0,0 +1,3 @@ +accessing +scheme + ^ #https \ No newline at end of file diff --git a/repository/Zinc-Zodiac.package/ZnSecureServer.class/methodProperties.json b/repository/Zinc-Zodiac.package/ZnSecureServer.class/methodProperties.json index 61eadf2f..e045e53c 100644 --- a/repository/Zinc-Zodiac.package/ZnSecureServer.class/methodProperties.json +++ b/repository/Zinc-Zodiac.package/ZnSecureServer.class/methodProperties.json @@ -4,4 +4,5 @@ "instance" : { "certificate" : "SvenVanCaekenberghe 12/13/2011 13:08", "certificate:" : "SvenVanCaekenberghe 12/13/2011 13:08", + "scheme" : "SvenVanCaekenberghe 1/4/2013 13:14", "socketStreamOn:" : "SvenVanCaekenberghe 12/13/2011 20:34" } } diff --git a/repository/Zinc-Zodiac.package/monticello.meta/version b/repository/Zinc-Zodiac.package/monticello.meta/version index e3bc471b..cf822c2e 100644 --- a/repository/Zinc-Zodiac.package/monticello.meta/version +++ b/repository/Zinc-Zodiac.package/monticello.meta/version @@ -1 +1 @@ -(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 ()) \ No newline at end of file +(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