[Jifty-commit] jifty branch, webservices-in-td, created. ed646b11efa3cb223643de41a7cf65bf5ea81e35
Jifty commits
jifty-commit at lists.jifty.org
Thu Dec 10 14:12:08 EST 2009
The branch, webservices-in-td has been created
at ed646b11efa3cb223643de41a7cf65bf5ea81e35 (commit)
- Log -----------------------------------------------------------------
commit d6587d6d5d8ffc15e0f9528c4aec8fc8670458dd
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Tue May 12 23:55:50 2009 +0000
- Create branch webservices-in-td
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7019 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
commit 0ae11a1e8d5f485a60c82ce7913b2d52e73a73af
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed May 13 00:42:07 2009 +0000
* add services method in Jifty::Web
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7020 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/Web.pm b/lib/Jifty/Web.pm
index 84dfb9d..47d51fe 100644
--- a/lib/Jifty/Web.pm
+++ b/lib/Jifty/Web.pm
@@ -1319,7 +1319,6 @@ sub region {
$region->render;
}
-
=head3 replace_current_region PATH
Replaces the current region with a new region and renders it Returns undef if there's no current region
@@ -1384,6 +1383,17 @@ sub qualified_parent_region {
@region_stack, @_;
}
+=head3 services
+
+Returns L<Jifty::Web::Services> object.
+
+=cut
+
+sub services {
+ require Jifty::Web::Services;
+ return new Jifty::Web::Services;
+}
+
=head2 is_ssl
Indicates whether the current request was made using SSL.
commit 6dc97cb089171c8b901c49be0bae04c0bda996a0
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed May 13 00:43:28 2009 +0000
* add Jifty::Web::Services
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7021 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/Web/Services.pm b/lib/Jifty/Web/Services.pm
new file mode 100644
index 0000000..9176439
--- /dev/null
+++ b/lib/Jifty/Web/Services.pm
@@ -0,0 +1,175 @@
+package Jifty::Web::Services;
+
+use strict;
+use warnings;
+
+use base qw(Jifty::Object);
+
+use Scalar::Util qw(blessed);
+use XML::Simple;
+use Jifty::JSON;
+use Jifty::YAML;
+
+sub JSON {
+ my $self = shift;
+
+ Jifty->handler->apache->content_type("text/x-json");
+
+ my %results = Jifty->web->response->results;
+ for (values %results) {
+ $_ = $_->as_hash;
+
+ # backwards compatibility :(
+ $_->{_content} = delete $_->{content};
+ }
+ Jifty->web->out( Jifty::JSON::objToJson(\%results) );
+}
+
+sub YAML {
+ my $self = shift;
+
+ Jifty->handler->apache->content_type("text/x-yaml");
+
+ my %results = Jifty->web->response->results;
+ for (values %results) {
+ $_ = $_->as_hash;
+
+ # backwards compatibility :(
+ $_->{_content} = delete $_->{content};
+ }
+ Jifty->web->out( Jifty::YAML::Dump(\%results) );
+}
+
+sub XML {
+ my $self = shift;
+
+ Jifty->handler->apache->content_type('text/xml; charset=utf-8');
+
+ my $output = "";
+ my $writer = XML::Writer->new( OUTPUT => \$output, UNSAFE => 1 );
+ $writer->xmlDecl( "UTF-8", "yes" );
+ $writer->startTag("response");
+
+ if (my $ext = Jifty->web->request->argument('_webservice_external_redirect')) {
+ $writer->startTag("redirect");
+ $writer->cdataElement(url=> $ext);
+ $writer->endTag;
+ $writer->endTag;
+ Jifty->web->out($output);
+ return;
+ }
+
+ FRAGMENT:
+ for my $fragment ( Jifty->web->request->fragments ) {
+ # Set up the form if need be
+ Jifty->web->form->_init;
+ Jifty->web->form->is_open(1) if $fragment->in_form;
+
+ # Set up the region stack
+ local Jifty->web->{'region_stack'} = [];
+ my @regions;
+ do {
+ push @regions, $fragment;
+ } while ($fragment = $fragment->parent);
+
+ for my $current (reverse @regions) {
+ my $new = Jifty->web->get_region( join '-', grep {$_} Jifty->web->qualified_region, $current->name );
+
+ # Arguments can be complex mapped hash values. Get their
+ # real values by mapping.
+ my %defaults = %{$current->arguments || {}};
+ for (keys %defaults) {
+ my ($key, $value) = Jifty::Request::Mapper->map(destination => $_, source => $defaults{$_});
+ delete $defaults{$_};
+ $defaults{$key} = $value;
+ }
+
+ $new ||= Jifty::Web::PageRegion->new(
+ name => $current->name,
+ path => URI::Escape::uri_unescape($current->path),
+ region_wrapper => $current->wrapper,
+ parent => Jifty->web->current_region,
+ defaults => \%defaults,
+ );
+
+ # It's possible that the pageregion creation could fail -- no
+ # name, for instance. In that case, bail on this fragment.
+ next FRAGMENT unless $new;
+
+ $new->enter;
+ }
+
+ # Stuff the rendered region into the XML
+ my $current_region = Jifty->web->current_region;
+ $writer->startTag( "fragment", id => $current_region->qualified_name );
+ my $args = $current_region->arguments;
+ $writer->dataElement( "argument", $args->{$_}, name => $_) for sort keys %$args;
+ if (Jifty->config->framework('ClientTemplate') && $current_region->client_cacheable) {
+ $writer->cdataElement( "cacheable", $current_region->client_cache_content, type => $current_region->client_cacheable );
+ }
+ $writer->cdataElement( "content", $current_region->as_string );
+ $writer->endTag();
+
+ # Clean up region stack and form
+ Jifty->web->current_region->exit while Jifty->web->current_region;
+ Jifty->web->form->is_open(0);
+ }
+
+ my %results = Jifty->web->response->results;
+ for (keys %results) {
+ $writer->startTag("result", moniker => $_, class => $results{$_}->action_class);
+ $writer->dataElement("success", $results{$_}->success);
+
+ $writer->dataElement("message", $results{$_}->message) if $results{$_}->message;
+ $writer->dataElement("error", $results{$_}->error) if $results{$_}->error;
+
+ my %warnings = $results{$_}->field_warnings;
+ my %errors = $results{$_}->field_errors;
+ my %fields; $fields{$_}++ for keys(%warnings), keys(%errors);
+ for (sort keys %fields) {
+ next unless $warnings{$_} or $errors{$_};
+ $writer->startTag("field", name => $_);
+ $writer->dataElement("warning", $warnings{$_}) if $warnings{$_};
+ $writer->dataElement("error", $errors{$_}) if $errors{$_};
+ $writer->endTag();
+ }
+
+ # XXX TODO: Hack because we don't have a good way to serialize
+ # Jifty::DBI::Record's yet, which are technically circular data
+ # structures at some level (current_user of a
+ # current_user->user_object is itself)
+ my $content = stripkids($results{$_}->content);
+ $writer->raw(XML::Simple::XMLout($content, NoAttr => 1, RootName => "content", NoIndent => 1))
+ if keys %{$content};
+
+ $writer->endTag();
+ }
+
+ $writer->endTag();
+ Jifty->handler->apache->content_type('text/xml; charset=UTF-8');
+ Jifty->web->out($output);
+}
+
+sub stripkids {
+ my $top = shift;
+ if ( not ref $top ) {
+ return $top
+ }
+ elsif (
+ blessed($top)
+ and ( $top->isa("Jifty::DBI::Record")
+ or $top->isa("Jifty::DBI::Collection") )
+ )
+ {
+ return undef;
+ }
+ elsif ( ref $top eq 'HASH' ) {
+ $top->{$_} = stripkids( $top->{$_} ) foreach keys %$top;
+ }
+ elsif ( ref $top eq 'ARRAY' ) {
+ push @$top, stripkids( $_ ) foreach splice @$top;
+ }
+ return $top;
+}
+
+1;
commit b0e437b93869764e515277b0c3ac7f3fe7587491
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed May 13 00:49:17 2009 +0000
* replace share/web/templates/__jifty/webservices/* with method calls
* use lower case method names
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7022 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/Web/Services.pm b/lib/Jifty/Web/Services.pm
index 9176439..1dd346e 100644
--- a/lib/Jifty/Web/Services.pm
+++ b/lib/Jifty/Web/Services.pm
@@ -10,7 +10,7 @@ use XML::Simple;
use Jifty::JSON;
use Jifty::YAML;
-sub JSON {
+sub json {
my $self = shift;
Jifty->handler->apache->content_type("text/x-json");
@@ -25,7 +25,7 @@ sub JSON {
Jifty->web->out( Jifty::JSON::objToJson(\%results) );
}
-sub YAML {
+sub yaml {
my $self = shift;
Jifty->handler->apache->content_type("text/x-yaml");
@@ -40,10 +40,10 @@ sub YAML {
Jifty->web->out( Jifty::YAML::Dump(\%results) );
}
-sub XML {
+sub xml {
my $self = shift;
- Jifty->handler->apache->content_type('text/xml; charset=utf-8');
+ Jifty->handler->apache->content_type('text/xml; charset=UTF-8');
my $output = "";
my $writer = XML::Writer->new( OUTPUT => \$output, UNSAFE => 1 );
@@ -138,7 +138,7 @@ sub XML {
# Jifty::DBI::Record's yet, which are technically circular data
# structures at some level (current_user of a
# current_user->user_object is itself)
- my $content = stripkids($results{$_}->content);
+ my $content = _stripkids($results{$_}->content);
$writer->raw(XML::Simple::XMLout($content, NoAttr => 1, RootName => "content", NoIndent => 1))
if keys %{$content};
@@ -146,11 +146,10 @@ sub XML {
}
$writer->endTag();
- Jifty->handler->apache->content_type('text/xml; charset=UTF-8');
Jifty->web->out($output);
}
-sub stripkids {
+sub _stripkids {
my $top = shift;
if ( not ref $top ) {
return $top
diff --git a/share/web/templates/__jifty/webservices/json b/share/web/templates/__jifty/webservices/json
index bacde46..1a89cee 100644
--- a/share/web/templates/__jifty/webservices/json
+++ b/share/web/templates/__jifty/webservices/json
@@ -1,13 +1,3 @@
-% $r->content_type("text/x-json");
-<% Jifty::JSON::objToJson(\%results) |n%>
-
<%INIT>
-my %results = Jifty->web->response->results;
-for (values %results) {
- $_ = $_->as_hash;
-
- # backwards compatibility :(
- $_->{_content} = delete $_->{content};
-}
+return Jifty->web->services->json;
</%INIT>
-
diff --git a/share/web/templates/__jifty/webservices/xml b/share/web/templates/__jifty/webservices/xml
index e4c8d8d..bd7baab 100644
--- a/share/web/templates/__jifty/webservices/xml
+++ b/share/web/templates/__jifty/webservices/xml
@@ -1,130 +1,3 @@
-<%init>
-my $output = "";
-my $writer = XML::Writer->new( OUTPUT => \$output, UNSAFE => 1 );
-$r->content_type('text/xml; charset=utf-8');
-$writer->xmlDecl( "UTF-8", "yes" );
-$writer->startTag("response");
-
-if (my $ext = Jifty->web->request->argument('_webservice_external_redirect')) {
- $writer->startTag("redirect");
- $writer->cdataElement(url=> $ext);
- $writer->endTag();
- $writer->endTag();
- Jifty->web->out($output);
- $m->abort;
-}
-
-FRAGMENT:
-for my $fragment ( Jifty->web->request->fragments ) {
- # Set up the form if need be
- Jifty->web->form->_init;
- Jifty->web->form->is_open(1) if $fragment->in_form;
-
- # Set up the region stack
- local Jifty->web->{'region_stack'} = [];
- my @regions;
- do {
- push @regions, $fragment;
- } while ($fragment = $fragment->parent);
-
- for my $current (reverse @regions) {
- my $new = Jifty->web->get_region( join '-', grep {$_} Jifty->web->qualified_region, $current->name );
-
- # Arguments can be complex mapped hash values. Get their
- # real values by mapping.
- my %defaults = %{$current->arguments || {}};
- for (keys %defaults) {
- my ($key, $value) = Jifty::Request::Mapper->map(destination => $_, source => $defaults{$_});
- delete $defaults{$_};
- $defaults{$key} = $value;
- }
-
- $new ||= Jifty::Web::PageRegion->new(
- name => $current->name,
- path => URI::Escape::uri_unescape($current->path),
- region_wrapper => $current->wrapper,
- parent => Jifty->web->current_region,
- defaults => \%defaults,
- );
-
- # It's possible that the pageregion creation could fail -- no
- # name, for instance. In that case, bail on this fragment.
- next FRAGMENT unless $new;
-
- $new->enter;
- }
-
- # Stuff the rendered region into the XML
- $writer->startTag( "fragment", id => Jifty->web->current_region->qualified_name );
- my %args = %{ Jifty->web->current_region->arguments };
- $writer->dataElement( "argument", $args{$_}, name => $_) for sort keys %args;
- if (Jifty->config->framework('ClientTemplate') && Jifty->web->current_region->client_cacheable) {
- $writer->cdataElement( "cacheable", Jifty->web->current_region->client_cache_content, type => Jifty->web->current_region->client_cacheable );
- }
- $writer->cdataElement( "content", Jifty->web->current_region->as_string );
- $writer->endTag();
-
- # Clean up region stack and form
- Jifty->web->current_region->exit while Jifty->web->current_region;
- Jifty->web->form->is_open(0);
-}
-
-my %results = Jifty->web->response->results;
-for (keys %results) {
- $writer->startTag("result", moniker => $_, class => $results{$_}->action_class);
- $writer->dataElement("success", $results{$_}->success);
-
- $writer->dataElement("message", $results{$_}->message) if $results{$_}->message;
- $writer->dataElement("error", $results{$_}->error) if $results{$_}->error;
-
- my %warnings = $results{$_}->field_warnings;
- my %errors = $results{$_}->field_errors;
- my %fields; $fields{$_}++ for keys(%warnings), keys(%errors);
- for (sort keys %fields) {
- next unless $warnings{$_} or $errors{$_};
- $writer->startTag("field", name => $_);
- $writer->dataElement("warning", $warnings{$_}) if $warnings{$_};
- $writer->dataElement("error", $errors{$_}) if $errors{$_};
- $writer->endTag();
- }
-
- # XXX TODO: Hack because we don't have a good way to serialize
- # Jifty::DBI::Record's yet, which are technically circular data
- # structures at some level (current_user of a
- # current_user->user_object is itself)
- my $content = stripkids($results{$_}->content);
- $writer->raw(XML::Simple::XMLout($content, NoAttr => 1, RootName => "content", NoIndent => 1))
- if keys %{$content};
-
- $writer->endTag();
-}
-
-$writer->endTag();
-Jifty->handler->apache->content_type('text/xml; charset=UTF-8');
-Jifty->web->out($output);
-</%init>
-<%once>
-use Scalar::Util qw(blessed);
-use XML::Simple;
-sub stripkids {
- my $top = shift;
- if ( not ref $top ) { return $top }
- elsif (
- blessed($top)
- and ( $top->isa("Jifty::DBI::Record")
- or $top->isa("Jifty::DBI::Collection") )
- )
- {
- return undef;
- } elsif ( ref $top eq 'HASH' ) {
- foreach my $item ( keys %$top ) {
- $top->{$item} = stripkids( $top->{$item} );
- }
- } elsif ( ref $top eq 'ARRAY' ) {
- for ( 0 .. $#{$top} ) {
- $top->[$_] = stripkids( $top->[$_] );
- }
- }
- return $top;
-}
-</%once>
+<%INIT>
+return Jifty->web->services->xml;
+</%INIT>
diff --git a/share/web/templates/__jifty/webservices/yaml b/share/web/templates/__jifty/webservices/yaml
index aba0115..ccc7a45 100644
--- a/share/web/templates/__jifty/webservices/yaml
+++ b/share/web/templates/__jifty/webservices/yaml
@@ -1,13 +1,4 @@
-% $r->content_type("text/x-yaml");
-<% Jifty::YAML::Dump(\%results) |n%>
-
<%INIT>
-my %results = Jifty->web->response->results;
-for (values %results) {
- $_ = $_->as_hash;
-
- # backwards compatibility :(
- $_->{_content} = delete $_->{content};
-}
+return Jifty->web->services->yaml;
</%INIT>
commit 4d2998a629d38d866b72605f0ec661a054ddfe68
Author: Alex Vandiver <alexmv at bestpractical.com>
Date: Wed May 13 18:47:32 2009 +0000
Complete stripkids -> _stripkids renaming
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7031 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/Web/Services.pm b/lib/Jifty/Web/Services.pm
index 1dd346e..2a88ad3 100644
--- a/lib/Jifty/Web/Services.pm
+++ b/lib/Jifty/Web/Services.pm
@@ -163,10 +163,10 @@ sub _stripkids {
return undef;
}
elsif ( ref $top eq 'HASH' ) {
- $top->{$_} = stripkids( $top->{$_} ) foreach keys %$top;
+ $top->{$_} = _stripkids( $top->{$_} ) foreach keys %$top;
}
elsif ( ref $top eq 'ARRAY' ) {
- push @$top, stripkids( $_ ) foreach splice @$top;
+ push @$top, _stripkids( $_ ) foreach splice @$top;
}
return $top;
}
commit ab920baa4f3d889b01159b9bcdbbc010c081c4ec
Author: Alex Vandiver <alexmv at bestpractical.com>
Date: Wed May 13 18:48:02 2009 +0000
Jifty::web::Services has no ->new method
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7032 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/Web.pm b/lib/Jifty/Web.pm
index 47d51fe..d0e878a 100644
--- a/lib/Jifty/Web.pm
+++ b/lib/Jifty/Web.pm
@@ -1391,7 +1391,7 @@ Returns L<Jifty::Web::Services> object.
sub services {
require Jifty::Web::Services;
- return new Jifty::Web::Services;
+ return 'Jifty::Web::Services';
}
=head2 is_ssl
commit 7f31447a799a17cc861ba728b96e4cff36ac10fd
Author: Alex Vandiver <alexmv at bestpractical.com>
Date: Wed May 13 18:48:05 2009 +0000
Refactor common code
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7033 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/Web/Services.pm b/lib/Jifty/Web/Services.pm
index 2a88ad3..61738bb 100644
--- a/lib/Jifty/Web/Services.pm
+++ b/lib/Jifty/Web/Services.pm
@@ -10,11 +10,9 @@ use XML::Simple;
use Jifty::JSON;
use Jifty::YAML;
-sub json {
+sub _results {
my $self = shift;
- Jifty->handler->apache->content_type("text/x-json");
-
my %results = Jifty->web->response->results;
for (values %results) {
$_ = $_->as_hash;
@@ -22,22 +20,19 @@ sub json {
# backwards compatibility :(
$_->{_content} = delete $_->{content};
}
- Jifty->web->out( Jifty::JSON::objToJson(\%results) );
+ return \%results;
}
-sub yaml {
+sub json {
my $self = shift;
+ Jifty->handler->apache->content_type("text/x-json");
+ Jifty->web->out( Jifty::JSON::objToJson( $self->_results ) );
+}
+sub yaml {
+ my $self = shift;
Jifty->handler->apache->content_type("text/x-yaml");
-
- my %results = Jifty->web->response->results;
- for (values %results) {
- $_ = $_->as_hash;
-
- # backwards compatibility :(
- $_->{_content} = delete $_->{content};
- }
- Jifty->web->out( Jifty::YAML::Dump(\%results) );
+ Jifty->web->out( Jifty::YAML::Dump( $self->_results ) );
}
sub xml {
commit 5adde315fd03cb2583d9957dc593c319652b5f2e
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Sun May 17 03:49:05 2009 +0000
* delete old copies of core templates
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7042 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/View/Declare/CoreTemplates.pm b/lib/Jifty/View/Declare/CoreTemplates.pm
index 99fad7d..a2b0ba4 100644
--- a/lib/Jifty/View/Declare/CoreTemplates.pm
+++ b/lib/Jifty/View/Declare/CoreTemplates.pm
@@ -5,8 +5,6 @@ use warnings;
use Jifty::View::Declare -base;
-use Scalar::Defer;
-
=head1 NAME
Jifty::View::Declare::CoreTemplates - Templates Jifty can't function without
@@ -200,152 +198,19 @@ template '__jifty/validator.xml' => sub {
Jifty->web->out($output);
};
-template '__jifty/webservices/xml' => sub {
- my $output = "";
- my $writer = XML::Writer->new(
- OUTPUT => \$output,
- UNSAFE => 1
- );
- $writer->xmlDecl( "UTF-8", "yes" );
- $writer->startTag("response");
- for my $f ( Jifty->web->request->fragments ) {
-
- # Set up the region stack
- local Jifty->web->{'region_stack'} = [];
- my @regions;
- do {
- push @regions, $f;
- } while ( $f = $f->parent );
-
- for $f ( reverse @regions ) {
- my $new =
- Jifty->web->get_region( join '-',
- grep { $_ } Jifty->web->qualified_region, $f->name );
-
- # Arguments can be complex mapped hash values. Get their
- # real values by mapping.
- my %defaults = %{ $f->arguments || {} };
- for ( keys %defaults ) {
- my ( $key, $value ) = Jifty::Request::Mapper->map(
- destination => $_,
- source => $defaults{$_}
- );
- delete $defaults{$_};
- $defaults{$key} = $value;
- }
-
- $new ||= Jifty::Web::PageRegion->new(
- name => $f->name,
- path => $f->path,
- region_wrapper => $f->wrapper,
- parent => Jifty->web->current_region,
- defaults => \%defaults,
- );
- $new->enter;
- }
-
- # Stuff the rendered region into the XML
- $writer->startTag( "fragment",
- id => Jifty->web->current_region->qualified_name );
- my %args = %{ Jifty->web->current_region->arguments };
- $writer->dataElement( "argument", $args{$_}, name => $_ )
- for sort keys %args;
- $writer->cdataElement( "content",
- Jifty->web->current_region->as_string );
- $writer->endTag();
-
- Jifty->web->current_region->exit while Jifty->web->current_region;
- }
-
- my %results = Jifty->web->response->results;
- for ( keys %results ) {
- $writer->startTag(
- "result",
- moniker => $_,
- class => $results{$_}->action_class
- );
- $writer->dataElement( "success", $results{$_}->success );
-
- $writer->dataElement( "message", $results{$_}->message )
- if $results{$_}->message;
- $writer->dataElement( "error", $results{$_}->error )
- if $results{$_}->error;
-
- my %warnings = $results{$_}->field_warnings;
- my %errors = $results{$_}->field_errors;
- my %fields;
- $fields{$_}++ for keys(%warnings), keys(%errors);
- for ( sort keys %fields ) {
- next unless $warnings{$_} or $errors{$_};
- $writer->startTag( "field", name => $_ );
- $writer->dataElement( "warning", $warnings{$_} )
- if $warnings{$_};
- $writer->dataElement( "error", $errors{$_} )
- if $errors{$_};
- $writer->endTag();
- }
-
- # XXX TODO: Hack because we don't have a good way to serialize
- # Jifty::DBI::Record's yet, which are technically circular data
- # structures at some level (current_user of a
- # current_user->user_object is itself)
- use Scalar::Util qw(blessed);
- my $content = $results{$_}->content;
-
-
- $content = _stripkids($content);
- use XML::Simple;
- $writer->raw(
- XML::Simple::XMLout(
- $content,
- NoAttr => 1,
- RootName => "content",
- NoIndent => 1
- )
- ) if keys %{$content};
-
- $writer->endTag();
- }
-
- $writer->endTag();
- Jifty->handler->apache->content_type('text/xml; charset=UTF-8');
-
- # For some reason, this line is needed, lest we end up outputting ISO-8859-1 text
- utf8::decode($output);
+=cut
- outs_raw($output);
+template '__jifty/webservices/xml' => sub {
+ Jifty->web->services->xml;
+ return;
+};
+template '__jifty/webservices/json' => sub {
+ Jifty->web->services->json;
+ return;
};
-
- sub _stripkids {
- my $top = shift;
- if ( not ref $top ) { return $top }
- elsif (
- blessed($top)
- and ( $top->isa("Jifty::DBI::Record")
- or $top->isa("Jifty::DBI::Collection") )
- )
- {
- return undef;
- }
- elsif ( ref $top eq 'HASH' ) {
- foreach my $item ( keys %$top ) {
- $top->{$item} = _stripkids( $top->{$item} );
- }
- }
- elsif ( ref $top eq 'ARRAY' ) {
- for ( 0 .. $#{$top} ) {
- $top->[$_] = _stripkids( $top->[$_] );
- }
- }
- return $top;
- }
-
-
template '__jifty/webservices/yaml' => sub {
- Jifty->handler->apache->content_type("text/x-yaml");
- outs( Jifty::YAML::Dump( { Jifty->web->response->results } ) );
+ Jifty->web->services->yaml;
+ return;
};
-=cut
-
1;
commit 150f037609d6172b5951e8085a8d53d043d443d9
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Sun May 17 03:49:50 2009 +0000
* put core templates into roots
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7043 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/View/Declare/Handler.pm b/lib/Jifty/View/Declare/Handler.pm
index 153e058..c9c8d77 100644
--- a/lib/Jifty/View/Declare/Handler.pm
+++ b/lib/Jifty/View/Declare/Handler.pm
@@ -47,6 +47,9 @@ sub config {
%{ Jifty->config->framework('Web')->{'TemplateDeclareConfig'} ||{}},
);
+ Jifty::Util->require('Jifty::View::Declare::CoreTemplates');
+ push @{$config{roots}}, 'Jifty::View::Declare::CoreTemplates';
+
for my $plugin ( Jifty->plugins ) {
my $comp_root = $plugin->template_class;
Jifty::Util->require($comp_root);
commit 0645257c68599452d841e92246ff5a3408c47cb8
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Sun May 17 03:53:45 2009 +0000
* add simple constructor
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7044 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/Web/Services.pm b/lib/Jifty/Web/Services.pm
index 61738bb..47191e0 100644
--- a/lib/Jifty/Web/Services.pm
+++ b/lib/Jifty/Web/Services.pm
@@ -10,6 +10,11 @@ use XML::Simple;
use Jifty::JSON;
use Jifty::YAML;
+sub new {
+ my $proto = shift;
+ return bless {}, ref($proto)||$proto;
+}
+
sub _results {
my $self = shift;
commit ed646b11efa3cb223643de41a7cf65bf5ea81e35
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Sun May 17 03:57:10 2009 +0000
* return back constructing of an object cuz we have constructor,
I believe at some point we'll need real object
git-svn-id: svn+ssh://svn.bestpractical.com/svn/jifty.org/jifty/branches/webservices-in-td@7045 e84bef0a-9b06-0410-84ba-c4c9edb13aeb
diff --git a/lib/Jifty/Web.pm b/lib/Jifty/Web.pm
index d0e878a..47d51fe 100644
--- a/lib/Jifty/Web.pm
+++ b/lib/Jifty/Web.pm
@@ -1391,7 +1391,7 @@ Returns L<Jifty::Web::Services> object.
sub services {
require Jifty::Web::Services;
- return 'Jifty::Web::Services';
+ return new Jifty::Web::Services;
}
=head2 is_ssl
-----------------------------------------------------------------------
More information about the Jifty-commit
mailing list