This commit was generated by cvs2svn to compensate for changes in r3883,
[freeside.git] / etc / megapop.pl
1 #!/usr/bin/perl -Tw
2 #
3 # $Id: megapop.pl,v 1.1 1999-04-19 10:32:44 ivan Exp $
4 #
5 # this will break when megapop changes the URL or format of their listing page.
6 # that's stupid.  perhaps they can provide a machine-readable listing?
7
8 use strict;
9 use LWP::UserAgent;
10 use FS::UID qw(adminsuidsetup);
11 use FS::svc_acct_pop;
12
13 my $url = "http://www.megapop.com/location.htm";
14
15 my $user = shift or die &usage;
16 adminsuidsetup($user);
17
18 my %state2usps = &state2usps;
19 $state2usps{'WASHINGTON STATE'} = 'WA'; #megapop's on crack
20 $state2usps{'CANADA'} = 'CANADA'; #freeside's on crack
21
22 my $ua = new LWP::UserAgent;
23 my $request = new HTTP::Request('GET', $url);
24 my $response = $ua->request($request);
25 die $response->error_as_HTML unless $response->is_success;
26 my $line;
27 my $usps = '';
28 foreach $line ( split("\n", $response->content) ) {
29   if ( $line =~ /\W(\w[\w\s]*\w)\s+LOCATIONS/i ) {
30     $usps = $state2usps{uc($1)}
31       or warn "warning: unknown state $1\n";
32   } elsif ( $line =~ /(\d{3})\-(\d{3})\-(\d{4})\s+(\w[\w\s]*\w)/ ) {
33     print "$1 $2 $3 $4 $usps\n";
34     my $svc_acct_pop = new FS::svc_acct_pop ( {
35       'city' => $4,
36       'state' => $usps,
37       'ac' => $1,
38       'exch' => $2,
39     } );
40     my $error = $svc_acct_pop->insert;
41     die $error if $error;
42   }
43 }
44
45 sub usage {
46   die "Usage:\n  $0 user\n";
47 }
48
49 sub state2usps{ (
50   'ALABAMA' => 'AL',
51   'ALASKA' => 'AK',
52   'AMERICAN SAMOA' => 'AS',
53   'ARIZONA' => 'AZ',
54   'ARKANSAS' => 'AR',
55   'CALIFORNIA' => 'CA',
56   'COLORADO' => 'CO',
57   'CONNECTICUT' => 'CT',
58   'DELAWARE' => 'DE',
59   'DISTRICT OF COLUMBIA' => 'DC',
60   'FEDERATED STATES OF MICRONESIA' => 'FM',
61   'FLORIDA' => 'FL',
62   'GEORGIA' => 'GA',
63   'GUAM' => 'GU',
64   'HAWAII' => 'HI',
65   'IDAHO' => 'ID',
66   'ILLINOIS' => 'IL',
67   'INDIANA' => 'IN',
68   'IOWA' => 'IA',
69   'KANSAS' => 'KS',
70   'KENTUCKY' => 'KY',
71   'LOUISIANA' => 'LA',
72   'MAINE' => 'ME',
73   'MARSHALL ISLANDS' => 'MH',
74   'MARYLAND' => 'MD',
75   'MASSACHUSETTS' => 'MA',
76   'MICHIGAN' => 'MI',
77   'MINNESOTA' => 'MN',
78   'MISSISSIPPI' => 'MS',
79   'MISSOURI' => 'MO',
80   'MONTANA' => 'MT',
81   'NEBRASKA' => 'NE',
82   'NEVADA' => 'NV',
83   'NEW HAMPSHIRE' => 'NH',
84   'NEW JERSEY' => 'NJ',
85   'NEW MEXICO' => 'NM',
86   'NEW YORK' => 'NY',
87   'NORTH CAROLINA' => 'NC',
88   'NORTH DAKOTA' => 'ND',
89   'NORTHERN MARIANA ISLANDS' => 'MP',
90   'OHIO' => 'OH',
91   'OKLAHOMA' => 'OK',
92   'OREGON' => 'OR',
93   'PALAU' => 'PW',
94   'PENNSYLVANIA' => 'PA',
95   'PUERTO RICO' => 'PR',
96   'RHODE ISLAND' => 'RI',
97   'SOUTH CAROLINA' => 'SC',
98   'SOUTH DAKOTA' => 'SD',
99   'TENNESSEE' => 'TN',
100   'TEXAS' => 'TX',
101   'UTAH' => 'UT',
102   'VERMONT' => 'VT',
103   'VIRGIN ISLANDS' => 'VI',
104   'VIRGINIA' => 'VA',
105   'WASHINGTON' => 'WA',
106   'WEST VIRGINIA' => 'WV',
107   'WISCONSIN' => 'WI',
108   'WYOMING' => 'WY',
109   'ARMED FORCES AFRICA' => 'AE',
110   'ARMED FORCES AMERICAS' => 'AA',
111   'ARMED FORCES CANADA' => 'AE',
112   'ARMED FORCES EUROPE' => 'AE',
113   'ARMED FORCES MIDDLE EAST' => 'AE',
114   'ARMED FORCES PACIFIC' => 'AP',
115 ) }
116