File Coverage

blib/lib/App/Difio/dotCloud.pm
Criterion Covered Total %
statement 15 15 100.0
branch n/a
condition n/a
subroutine 5 5 100.0
pod n/a
total 20 20 100.0


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__