a grand renaming so that the most significant portion of the name comes first

This commit is contained in:
Dan Buch
2012-03-03 21:45:20 -05:00
parent c8b8078175
commit f4f448926d
1300 changed files with 0 additions and 234 deletions

View File

@@ -0,0 +1,47 @@
<mx:Application name=""
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
backgroundColor="#FFFFFF"
backgroundImage="">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
private function handlePlain(event:ResultEvent):void
{
shippingOptions.htmlText = event.result.toString();
}
private function handleFault(event:FaultEvent):void
{
Alert.show(event.fault.faultString, "Error");
}
]]>
</mx:Script>
<mx:HTTPService id="plainRPC" url="http://10.10.231.98:18080/text"
result="handlePlain(event)"
fault="handleFault(event)"
resultFormat="text">
<mx:request xmlns="">
<zipcode>{zipcode.text}</zipcode>
<pounds>{weight_lb.text}</pounds>
</mx:request>
</mx:HTTPService>
<mx:Label x="54" y="25" text="Zip Code"/>
<mx:Label x="65" y="51" text="Weight"/>
<mx:TextInput x="128" y="23" id="zipcode"/>
<mx:TextInput x="128" y="49" id="weight_lb"/>
<mx:Button x="128" y="79" label="Get Shipping Options"
click="plainRPC.send();" />
<mx:TextArea x="339" y="24" width="198" height="77" id="shippingOptions"/>
</mx:Application>

View File

@@ -0,0 +1,175 @@
"""
standalone WSGI application for serving plaintext and xml suitable
for the Adobe Flex "Getting Started" tutorial, "Part II. Exchanging Data"
For the plaintext data flex app, set the HTTPService url to:
http://<hostname>:<port>/text
For the xml data flex app, set the HTTPService url to:
http://<hostname>:<port>/xml
"""
from __future__ import print_function
import sys
import cgi
import optparse
from wsgiref.simple_server import make_server
__author__ = 'Dan Buch dbuch@ag.com'
__license__ = 'AGI'
USAGE = """\
%prog [options]
Run a standalone WSGI app for the Adobe Flex Tutorial
"Getting Started", "Part II. Exchanging Data"
"""
def main(sysargs=sys.argv[:]):
parser = optparse.OptionParser(usage=USAGE)
parser.add_option('-p', '--port', dest='port', type='int',
help='port number on which to serve app, default=%default',
default=18080)
parser.add_option('-i', '--interface', dest='interface',
help='interface on which to serve app, default=%default',
default='0.0.0.0')
opts = parser.parse_args(sysargs[1:])[0]
server = make_server(opts.interface, opts.port, ShippingCostApp())
print('serving {0.__name__} on '
'port {1}'.format(ShippingCostApp, opts.port))
server.serve_forever()
return 0
class NotFoundError(ValueError):
pass
class ShippingCostApp(object):
def __call__(self, environ, start_response):
try:
return ShippingCostHandler(environ, start_response).handle()
except NotFoundError:
return self._handle_404(environ, start_response)
@classmethod
def _handle_404(cls, environ, start_response):
ret = 'nothin at {0!r}'.format(environ.get('PATH_INFO', '/'))
start_response('404 Not Found', [
('content-type', 'text/plain'),
('content-length', str(len(ret)))
])
return [ret]
class ShippingCostHandler(object):
_shipping_options = None
_zipcode = 0
_pounds = 0
_handler_method = ''
def __init__(self, environ, start_response):
self.environ = environ
self.start_response = start_response
self._path_info = self.environ.get('PATH_INFO', '').strip('/')
self._handler_method = \
'_handle_{0}'.format(self._path_info.replace('.', '_'))
def _get_params(self):
"""some dumb param fetching, ignores multiple values for
same var name, e.g. query of "zipcode=12345&zipcode=90210"
would effectively discard the 90210 value
"""
params = cgi.parse_qs(self.environ.get('QUERY_STRING', ''))
for intvar in ('zipcode', 'pounds'):
if params.get(intvar):
value = int(float(params.get(intvar)[0]))
setattr(self, '_{0}'.format(intvar), value)
def _get_shipping_options(self):
base_cost = (float(self._zipcode) / 10000.0) + (self._pounds * 5.0)
self._shipping_options = {
"Next Day": int(base_cost * 4),
"Two Day Air": int(base_cost * 2),
"Saver Ground": int(base_cost)
}
def handle(self):
if hasattr(self, self._handler_method):
self._get_params()
self._get_shipping_options()
return getattr(self, self._handler_method)()
else:
raise NotFoundError
def _handle_xml(self):
response = XMLShippingOptionsResponse(self._shipping_options)
return response(self.environ, self.start_response)
def _handle_text(self):
response = PlaintextShippingOptionsResponse(self._shipping_options)
return response(self.environ, self.start_response)
def _handle_crossdomain_xml(self):
response = CrossdomainXMLResponse()
return response(self.environ, self.start_response)
class PlaintextShippingOptionsResponse(object):
_head = ''
_record = '{service}: {price} USD'
_tail = ''
_content_type = 'text/plain'
def __init__(self, shipping_options):
self._shipping_options = shipping_options
def __call__(self, environ, start_response):
body = str(self)
start_response('200 OK', [
('content-type', self._content_type),
('content-length', str(len(body))),
])
return [body]
def __str__(self):
ret = [self._head]
for service, price in self._shipping_options.iteritems():
ret.append(self._record.format(service=service, price=price))
ret.append(self._tail)
return '\n'.join(ret)
class XMLShippingOptionsResponse(PlaintextShippingOptionsResponse):
_head = '<options>'
_record = ('<option><service>{service}</service>'
'<price>{price}</price></option>')
_tail = '</options>'
_content_type = 'text/xml'
class CrossdomainXMLResponse(PlaintextShippingOptionsResponse):
_content_type = 'text/xml'
def __init__(self):
pass
def __str__(self):
return (
'<cross-domain-policy>'
'<allow-access-from domain="*"/>'
'</cross-domain-policy>'
)
if __name__ == '__main__':
sys.exit(main())
# vim:filetype=python