Making WordPress.org

Changeset 5462


Ignore:
Timestamp:
05/02/2017 09:33:55 PM (8 years ago)
Author:
iandunn
Message:

Events: Attempts all name-based lookups before resorting to IP lookup

Otherwise, someone searching for a city that requires a fallback lookup would have their request short-circuited by the IP lookup, which could produce unexpected results.

Location:
sites/trunk/api.wordpress.org/public_html/events/1.0
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/api.wordpress.org/public_html/events/1.0/index.php

    r5417 r5462  
    442442    }
    443443
    444     // IP:
    445     if ( ! $location && isset( $args['ip'] ) ) {
    446         $guess = guess_location_from_ip( $args['ip'] );
    447 
    448         if ( $guess ) {
    449             $location = array(
    450                 'description' => $guess->ip_city,
    451                 'latitude' => $guess->ip_latitude,
    452                 'longitude' => $guess->ip_longitude,
    453                 'country' => $guess->country_short,
    454             );
    455         }
    456     }
    457 
    458444    /*
    459445     * If all else fails, cast a wide net and try to find something before giving up, even
     
    487473            // No specific location details.
    488474            $location = array();
     475        }
     476    }
     477
     478    // IP:
     479    if ( ! $location && isset( $args['ip'] ) ) {
     480        $guess = guess_location_from_ip( $args['ip'] );
     481
     482        if ( $guess ) {
     483            $location = array(
     484                'description' => $guess->ip_city,
     485                'latitude'    => $guess->ip_latitude,
     486                'longitude'   => $guess->ip_longitude,
     487                'country'     => $guess->country_short,
     488            );
    489489        }
    490490    }
  • sites/trunk/api.wordpress.org/public_html/events/1.0/tests/test-index.php

    r5418 r5462  
    166166         * A location couldn't be found
    167167         */
    168         'city-invalid' => array(
     168        'city-invalid-private-ip' => array(
    169169            'input' => array(
    170170                'location_name' => 'Rivendell',
    171                 'ip_address'    => '127.0.0.1'
     171                'ip'            => '127.0.0.1'
    172172            ),
    173173            'expected' => false,
     
    276276                'locale'        => 'ja',
    277277                'timezone'      => 'Asia/Tokyo',
     278            ),
     279            'expected' => array(
     280                'description' => 'osaka',
     281                'latitude'    => '34.694',
     282                'longitude'   => '135.502',
     283                'country'     => 'JP',
     284            ),
     285        ),
     286
     287        // If a location is provided, the fallback search should be attempted before an IP search
     288        'fallback-with-public-ip' => array(
     289            'input' => array(
     290                'location_name' => 'Osakashi',
     291                'locale'        => 'ja',
     292                'timezone'      => 'Asia/Tokyo',
     293                'ip'            => '153.163.68.148', // Tokyo
    278294            ),
    279295            'expected' => array(
Note: See TracChangeset for help on using the changeset viewer.