def test_error(self): expected_args = { 'sensor': 'false', 'address': 'my magic address' } (flexmock(requests) .should_receive('get') .with_args('http://maps.googleapis.com/maps/api/geocode/json', params=expected_args) .and_return(mocked_response({'status': 'ERROR'})) ) with self.assertRaises(GeolocationExcetion) as expected_exception: geolocate('my magic address') self.assertEqual(expected_exception.exception.message, {'status': 'ERROR'}) expected_args = { 'sensor': 'false', 'address': 'my magic address' } (flexmock(requests) .should_receive('get') .with_args('http://maps.googleapis.com/maps/api/geocode/json', params=expected_args) .and_return(mocked_response({'say': 'what'}, status_code=401)) ) with self.assertRaises(GeolocationExcetion) as expected_exception: geolocate('my magic address') self.assertEqual(expected_exception.exception.message, {'say': 'what'})
def test_bounds(self): expected_args = { 'sensor': 'false', 'address': 'my magic address', 'bounds': '1,2|3,4' } (flexmock(requests) .should_receive('get') .with_args('http://maps.googleapis.com/maps/api/geocode/json', params=expected_args) .and_return(mocked_response({'status': 'ZERO_RESULTS'})) ) geolocate('my magic address', bounds=[GPSLocation(1, 2), GPSLocation(3, 4)])
def do_pickup(address): #Set the pick up location for Uber results = geolocate(address) if not results: print 'address not found ' return if len(results) == 1: geo_address = results[0] else: for i in xrange(len(results)): entry = results[i] print '{index}) {entry}'.format( index = i+1, entry = entry['formated_address'] ) print '' selection_num = int(raw_input('choose address# (0 to abort)> ') or 0) if not selection_num: return geo_address = results[selection_num - 1] print 'booking UberX for {}...'.format(geo_address['formatted_address']) book_uber_ride_now(geo_address)
def ping_address_for_available_vehicles(address): #shows you available cars close to you global client if not address: print results = geolocate(address) if not results: print 'address not found ' return geodecoded_address = results[0] print 'searching for available vechicles near pick up address' app_state = client.ping(geodecoded_address) city = app_state.city vehicle_views = city.vehicle_views for key in city.vehicle_views_order: nearby_info = app_state.nearby_vehicles.get(key) view = vehicle_views[key] count = len(nearby_info.vehicle_paths) if count: additional_info = '' if view.surge: additional_info = 'Warning - x{multiplier} surge pricing is active!'.format(multiplier=view.surge.multiplier) print '{name} has {count} cars near by (eta {eta}). {additional_info}'.format( name=view.description, count=len(nearby_info.vehicle_paths), eta=nearby_info.eta_string, additional_info=additional_info ) else: print '{name} has no vehicles nearby :('.format(name=view.description)
def do_pickup(self, address): """ Have an UberX pick you up Usage: pickup <address> """ results = geolocate(address) if not results: print "address not found :(" return if len(results) == 1: geo_address = results[0] else: for i in xrange(len(results)): entry = results[i] print "{index}) {entry}".format(index=i + 1, entry=entry["formatted_address"]) print "" selection_num = int(raw_input("choose address# (0 to abort)> ") or 0) if not selection_num: return geo_address = results[selection_num - 1] print "booking UberX for {}...".format(geo_address["formatted_address"]) self._book_ride(geo_address)
def do_lookup(self, address): """ Looks up an address usage: lookup <address> """ result = geolocate(address) for entry in result: print entry["formatted_address"]
def test_geolocation_multiple_results(self): expected_args = { 'sensor': 'false', 'address': 'my magic address' } expected_results = { 'status': 'OK', 'results': [{ 'address_components': 'lol1', 'some_field': 'some_field1', 'geometry': { 'location': { 'lat': 1, 'lng': 2, } } }, { 'address_components': 'lol2', 'some_field': 'some_field2', 'geometry': { 'location': { 'lat': 3, 'lng': 4, } } }] } (flexmock(requests) .should_receive('get') .with_args('http://maps.googleapis.com/maps/api/geocode/json', params=expected_args) .and_return(mocked_response(expected_results)) ) results = geolocate('my magic address') self.assertEqual(results, [ { 'address_components': 'lol1', 'some_field': 'some_field1', 'geometry': {'location': {'lat': 1, 'lng': 2}}, 'latitude': 1, 'longitude': 2, }, { 'address_components': 'lol2', 'some_field': 'some_field2', 'geometry': {'location': {'lat': 3, 'lng': 4}}, 'latitude': 3, 'longitude': 4, } ])
def test_components(self): expected_args = { 'sensor': 'false', 'address': 'my magic address', 'components': 'country:US|administrative_area:SF' } (flexmock(requests) .should_receive('get') .with_args('http://maps.googleapis.com/maps/api/geocode/json', params=expected_args) .and_return(mocked_response({'status': 'ZERO_RESULTS'})) ) results = geolocate('my magic address', country='US', administrative_area='SF')
def test_geolocation_no_results(self): expected_args = { 'sensor': 'false', 'address': 'my magic address' } (flexmock(requests) .should_receive('get') .with_args('http://maps.googleapis.com/maps/api/geocode/json', params=expected_args) .and_return(mocked_response({'status': 'ZERO_RESULTS'})) ) results = geolocate('my magic address') self.assertEqual(results, [])
def bookuber(address): #Login to obtain token token = UberClient.login('*****@*****.**','123uberdone') # token = 'cLqir9JuchqHqOtxncYSEmMC6BiQfN' #Set up client client = UberClient('*****@*****.**', token) #show nearby ubers ubers = nearbyUber(client,address) address = 'Citizen Space, 425 2nd St , San Francisco, CA' #geolocate results = geolocate(address) if not results: print 'address not found :(' return geo_address = results[0] print 'booking UberX for {}...'.format(geo_address['formatted_address'])
def nearbyUber(client,address_str): """ shows you what taxis are close to you. Usage: ping <address> """ if not address_str: print results = geolocate(address_str) if not results: print 'address not found :(' return geodecoded_address = results[0] print 'pinging: ' + geodecoded_address['formatted_address'] app_state = client.ping(geodecoded_address) city = app_state.city vehicle_views = city.vehicle_views for key in city.vehicle_views_order: nearby_info = app_state.nearby_vehicles.get(key) view = vehicle_views[key] count = len(nearby_info.vehicle_paths) if count: additional_info = '' if view.surge: additional_info = 'Warning - x{multiplier} surge pricing is active!'.format(multiplier=view.surge.multiplier) print '{name} has {count} cars near by (eta {eta}). {additional_info}'.format( name=view.description, count=len(nearby_info.vehicle_paths), eta=nearby_info.eta_string, additional_info=additional_info ) else: print '{name} has no vehicles nearby :('.format(name=view.description) return 'What'
def do_ping(self, address_str): """ shows you what taxis are close to you. Usage: ping <address> """ if not address_str: print results = geolocate(address_str) if not results: print "address not found :(" return geodecoded_address = results[0] print "pinging: " + geodecoded_address["formatted_address"] app_state = self._client.ping(geodecoded_address) city = app_state.city vehicle_views = city.vehicle_views for key in city.vehicle_views_order: nearby_info = app_state.nearby_vehicles.get(key) view = vehicle_views[key] count = len(nearby_info.vehicle_paths) if count: additional_info = "" if view.surge: additional_info = "Warning - x{multiplier} surge pricing is active!".format( multiplier=view.surge.multiplier ) print "{name} has {count} cars near by (eta {eta}). {additional_info}".format( name=view.description, count=len(nearby_info.vehicle_paths), eta=nearby_info.eta_string, additional_info=additional_info, ) else: print "{name} has no vehicles nearby :(".format(name=view.description)
def do_checkout_address(address): #looks up an address result = geolocate(address) for entry in result: print "pick up at " + entry['formatted_address']+'\n'