File Coverage

blib/lib/WWW/Facebook/API/Canvas.pm
Criterion Covered Total %
statement 18 62 29.0
branch 0 18 0.0
condition 0 15 0.0
subroutine 5 9 55.5
pod 6 6 100.0
total 29 110 26.3


line stmt bran cond sub pod time code
1             #######################################################################
2             # ex: set ts=8 sw=4 et
3             #########################################################################
4             package WWW::Facebook::API::Canvas;
5 34     34   191 use warnings;
  34         58  
  34         1259  
6 34     34   199 use strict;
  34         66  
  34         1106  
7 34     34   177 use Carp;
  34         70  
  34         48895  
8              
9             sub get_fb_params {
10 2     2 1 4 my $self = shift;
11 2         59 $self->base->query(shift);
12              
13 2         3 my $fb_params = {};
14             # verify - FB Connect or Native?
15 2         6 my @query = '';
16 2         58 my $api_key_pre = $self->base->api_key."_";
17 2 0       61 if ($self->base->query->param('fb_sig')) {
18 0         0 @query = grep {m/^fb_sig_/xms} $self->base->query->param;
  0         0  
19             }
20             else {
21 0         0 @query = grep {m/^$api_key_pre/xms} $self->base->query->cookie;
  0         0  
22             }
23              
24 0         0 for my $param (@query) {
25 0         0 my @values = '';
26 0 0       0 if ($self->base->query->param('fb_sig')) {
27 0         0 @values = $self->base->query->param($param);
28             }
29             else {
30 0         0 @values = $self->base->query->cookie($param)->value;
31             }
32 0 0 0     0 if ( @values > 1 || ref $values[0] ) {
33 0         0 croak "Multiple values for $param: Are you using POST for forms?";
34             }
35              
36 0 0       0 if ($self->base->query->param('fb_sig')) {
37 0         0 my $attribute = ( $param =~ /^fb_sig_ (.*) $/xms )[0];
38 0         0 $fb_params->{$attribute} = $self->base->query->param($param);
39             }
40             else {
41 0         0 my $attribute = ( $param =~ /^$api_key_pre (.*) $/xms )[0];
42 0         0 $fb_params->{$attribute} = $self->base->query->cookie($param)->value;
43             }
44             }
45              
46 0         0 return $fb_params;
47             }
48              
49             sub get_non_fb_params {
50 0     0 1 0 my $self = shift;
51 0         0 $self->base->query(shift);
52              
53 0         0 my $non_fb_params = {};
54 0         0 my @query = grep { !/^fb_sig_?/xms } $self->base->query->param;
  0         0  
55 0         0 for my $param (@query) {
56 0         0 my @values = $self->base->query->param($param);
57 0 0 0     0 if ( @values > 1 || ref $values[0] ) {
58 0         0 croak "Multiple values for $param. Are you using POST for forms?";
59             }
60              
61 0         0 $non_fb_params->{$param} = $self->base->query->param($param);
62             }
63              
64 0         0 return $non_fb_params;
65             }
66              
67             sub validate_sig {
68 0     0 1 0 my $self = shift;
69 0         0 $self->base->query(shift);
70              
71 0         0 my $fb_params = $self->get_fb_params;
72 0 0 0     0 return unless $self->base->query->param('fb_sig') || $self->base->query->cookie($self->base->api_key)->value;
73 0 0 0     0 return $fb_params
74             if $self->base->verify_sig(
75             params => $fb_params,
76             sig => $self->base->query->param('fb_sig') || $self->base->query->cookie($self->base->api_key)->value,
77             );
78              
79 0         0 return;
80             }
81              
82             sub get_user {
83 0     0 1 0 my $self = shift;
84 0         0 $self->base->query(shift);
85              
86 0         0 my $fb_params = $self->validate_sig;
87 0 0       0 return $fb_params->{'user'} if exists $fb_params->{'user'};
88              
89 0         0 return q{};
90             }
91              
92             sub in_fb_canvas {
93 0     0 1 0 my $self = shift;
94 0         0 $self->base->query(shift);
95              
96 0         0 return $self->get_fb_params->{'in_canvas'};
97             }
98              
99             sub in_frame {
100 2     2 1 4 my $self = shift;
101 2         61 $self->base->query(shift);
102              
103 2         7 my $fb_params = $self->get_fb_params;
104 0 0 0       return 1 if $fb_params->{'in_canvas'} or $fb_params->{'in_iframe'};
105              
106 0           return;
107             }
108              
109             1;
110             __END__