line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
#!/usr/bin/env perl |
2
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
##################################################################################### |
4
|
|
|
|
|
|
|
# |
5
|
|
|
|
|
|
|
# Copyright (c) 2012, Alexander Todorov . See POD section. |
6
|
|
|
|
|
|
|
# |
7
|
|
|
|
|
|
|
##################################################################################### |
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
package App::Difio::dotCloud; |
10
|
|
|
|
|
|
|
our $VERSION = '2.02'; |
11
|
|
|
|
|
|
|
our $NAME = "difio-dotcloud-perl"; |
12
|
|
|
|
|
|
|
|
13
|
1
|
|
|
1
|
|
27551
|
use App::Difio::dotCloud::Parser; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
45
|
|
14
|
|
|
|
|
|
|
@ISA = qw(App::Difio::dotCloud::Parser); |
15
|
|
|
|
|
|
|
|
16
|
1
|
|
|
1
|
|
5
|
use strict; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
26
|
|
17
|
1
|
|
|
1
|
|
5
|
use warnings; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
36
|
|
18
|
|
|
|
|
|
|
|
19
|
1
|
|
|
1
|
|
1653
|
use JSON; |
|
1
|
|
|
|
|
18646
|
|
|
1
|
|
|
|
|
6
|
|
20
|
1
|
|
|
1
|
|
1629
|
use LWP::UserAgent; |
|
1
|
|
|
|
|
105845
|
|
|
1
|
|
|
|
|
403
|
|
21
|
|
|
|
|
|
|
|
22
|
|
|
|
|
|
|
# load dotCloud environment |
23
|
|
|
|
|
|
|
local $/; |
24
|
|
|
|
|
|
|
open( my $fh, '<', '/home/dotcloud/environment.json' ); |
25
|
|
|
|
|
|
|
my $json_text = <$fh>; |
26
|
|
|
|
|
|
|
my $dotcloud_env = decode_json( $json_text ); |
27
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
my $data = { |
29
|
|
|
|
|
|
|
'user_id' => $dotcloud_env->{'DIFIO_USER_ID'}, |
30
|
|
|
|
|
|
|
'app_name' => $dotcloud_env->{'DOTCLOUD_PROJECT'}.".".$dotcloud_env->{'DOTCLOUD_SERVICE_NAME'}, |
31
|
|
|
|
|
|
|
'app_uuid' => $dotcloud_env->{'DIFIO_UUID'}, |
32
|
|
|
|
|
|
|
'app_type' => "Perl", |
33
|
|
|
|
|
|
|
'app_url' => $dotcloud_env->{'DOTCLOUD_'.uc($dotcloud_env->{'DOTCLOUD_SERVICE_NAME'}).'_HTTP_URL'}, |
34
|
|
|
|
|
|
|
'app_vendor' => 1, # dotCloud |
35
|
|
|
|
|
|
|
'pkg_type' => 400, # Perl / CPAN |
36
|
|
|
|
|
|
|
'installed' => [], |
37
|
|
|
|
|
|
|
}; |
38
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
my $pod_parsed = ""; |
40
|
|
|
|
|
|
|
my $parser = App::Difio::dotCloud::Parser->new(); |
41
|
|
|
|
|
|
|
$parser->output_string( \$pod_parsed ); |
42
|
|
|
|
|
|
|
$parser->parse_file("/home/dotcloud/perl5/lib/perl5/x86_64-linux/perllocal.pod"); |
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
my @installed; |
45
|
|
|
|
|
|
|
foreach my $nv (split(/\n/, $pod_parsed)) { |
46
|
|
|
|
|
|
|
my @name_ver = split(/ /, $nv); |
47
|
|
|
|
|
|
|
push(@installed, {'n' => $name_ver[0], 'v' => $name_ver[1]}); |
48
|
|
|
|
|
|
|
} |
49
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
$data->{'installed'} = [ @installed ]; |
52
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
my $json_data = to_json($data); # , { pretty => 1 }); |
54
|
|
|
|
|
|
|
|
55
|
|
|
|
|
|
|
my $ua = new LWP::UserAgent(('agent' => "$NAME/$VERSION")); |
56
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
# will URL Encode by default |
58
|
|
|
|
|
|
|
my $response = $ua->post('https://difio-otb.rhcloud.com/application/register/', { json_data => $json_data}); |
59
|
|
|
|
|
|
|
|
60
|
|
|
|
|
|
|
if (! $response->is_success) { |
61
|
|
|
|
|
|
|
die $response->status_line; |
62
|
|
|
|
|
|
|
} |
63
|
|
|
|
|
|
|
|
64
|
|
|
|
|
|
|
my $content = from_json($response->decoded_content); |
65
|
|
|
|
|
|
|
print "Difio: $content->{'message'}\n"; |
66
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
exit $content->{'exit_code'}; |
68
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
|
70
|
|
|
|
|
|
|
1; |
71
|
|
|
|
|
|
|
__END__ |