1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
package FS::part_export::http;
use vars qw(@ISA);
use FS::part_export;
@ISA = qw(FS::part_export);
sub rebless { shift; }
sub _export_insert {
my $self = shift;
$self->_export_command('insert', @_);
}
sub _export_delete {
my $self = shift;
$self->_export_command('delete', @_);
}
sub _export_command {
my( $self, $action, $svc_x ) = ( shift, shift, shift );
return unless $self->option("${action}_data");
$self->http_queue( $svc_x->svcnum,
$self->option('method'),
$self->option('url'),
map {
/^\s*(\S+)\s+(.*)$/ or /()()/;
my( $field, $value_expression ) = ( $1, $2 );
my $value = eval $value_expression;
die $@ if $@;
( $field, $value );
} split(/\n/, $self->option("${action}_data") )
);
}
sub _export_replace {
my( $self, $new, $old ) = ( shift, shift, shift );
return unless $self->option('replace_data');
$self->http_queue( $svc_x->svcnum,
$self->option('method'),
$self->option('url'),
map {
/^\s*(\S+)\s+(.*)$/ or /()()/;
my( $field, $value_expression ) = ( $1, $2 );
die $@ if $@;
( $field, $value );
} split(/\n/, $self->option('replace_data') )
);
}
sub http_queue {
my($self, $svcnum) = (shift, shift);
my $queue = new FS::queue {
'svcnum' => $svcnum,
'job' => "FS::part_export::http::http",
};
$queue->insert( @_ );
}
sub http {
my($method, $url, @data) = @_;
$method = lc($method);
eval "use LWP::UserAgent;";
die "using LWP::UserAgent: $@" if $@;
eval "use HTTP::Request::Common;";
die "using HTTP::Request::Common: $@" if $@;
my $ua = LWP::UserAgent->new;
#my $response = $ua->$method(
# $url, \%data,
# 'Content-Type'=>'application/x-www-form-urlencoded'
#);
my $req = HTTP::Request::Common::POST( $url, \@data );
my $response = $ua->request($req);
die $response->error_as_HTML if $response->is_error;
}
|