示例#1
0
    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'})
示例#2
0
    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)
示例#5
0
    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)
示例#6
0
 def do_lookup(self, address):
     """
     Looks up an address
     usage: lookup <address>
     """
     result = geolocate(address)
     for entry in result:
         print entry["formatted_address"]
示例#7
0
    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,
            }
        ])
示例#8
0
    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')
示例#9
0
    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, [])
示例#10
0
文件: util.py 项目: mnbbrown/doneapp
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'])
示例#11
0
文件: util.py 项目: mnbbrown/doneapp
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'
示例#12
0
    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'