ProtoObjectObjectWAUrl
| fragment | host | params | path | port | scheme |
| fragment |
|---|
|
| host |
|---|
|
| params |
|---|
|
|
| path |
|---|
|
|
| port |
|---|
|
| scheme |
|---|
|
|
| accessing |
|---|
| addParameter: aString |
self addParameter: aString value: nil |
| addParameter: keyString value: valueString |
params at: keyString put: valueString |
| addToPath: aString |
path addAll: (aString findTokens: '/') |
| fragment |
^ fragment |
| fragment: aString |
fragment _ aString |
| hostname |
^ host |
| hostname: aString |
host _ aString |
| parameters |
^ params |
| path |
^ path |
| port |
^ port ifNil: [self defaultPortForScheme: scheme] |
| port: aNumber |
port _ aNumber |
| scheme |
^ scheme |
| scheme: aSymbol |
scheme _ aSymbol |
| copying |
|---|
| copy |
| copy | copy _ self class new. copy hostname: host; port: port; scheme: scheme; fragment: fragment. copy addToPath: self pathString. params keysAndValuesDo: [:k :v | copy addParameter: k value: v]. ^ copy |
| with: pathString |
^ self copy addToPath: pathString; yourself |
| withParameter: aString |
^ self copy addParameter: aString; yourself |
| withParameter: aString value: valueString |
^ self copy addParameter: aString value: valueString; yourself |
| initialize-release |
|---|
| initialize |
path _ OrderedCollection new. params _ Dictionary new. scheme _ #http |
| printing |
|---|
| asString |
^ self urlWithQueryString |
| fragmentString |
^ fragment ifNil: [''] ifNotNil: ['#', fragment] |
| pathString |
^ String streamContents: [:s | path do: [:ea | s nextPut: $/; nextPutAll: ea]] |
| serverString |
host ifNil: [^ '']. ^ String streamContents: [:stream | stream nextPutAll: scheme. stream nextPutAll: '://'. stream nextPutAll: host. ((self defaultPortForScheme: scheme) = port) ifFalse: [stream nextPutAll: ':', port asString]] |
| urlString |
^ self serverString, self pathString, self fragmentString |
| urlWithQueryString |
^ String streamContents: [:s | s nextPutAll: self serverString. s nextPutAll: self pathString. params isEmpty ifFalse: [s nextPut: $?. params keysAndValuesDo: [:k :v | s nextPutAll: k encodeForHTTP. v ifNotNil: [s nextPut: $=; nextPutAll: v encodeForHTTP]. s nextPut: $&]. s skip: -1]. s nextPutAll: self fragmentString] |
| private |
|---|
| defaultPortForScheme: aSymbol |
^ aSymbol = #http ifTrue: [80] ifFalse: [aSymbol = #https ifTrue: [443]] |
| as yet unclassified |
|---|
| new |
^ self basicNew initialize |