Geo-OGC-Service

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

         "requires" : {
            "ExtUtils::MakeMaker" : "0"
         }
      },
      "runtime" : {
         "requires" : {
            "Carp" : "0",
            "Clone" : "0",
            "Encode" : "0",
            "JSON" : "0",
            "Modern::Perl" : "0",
            "Plack::Builder" : "0",
            "Plack::Request" : "0",
            "XML::LibXML" : "0",
            "XML::LibXML::PrettyPrint" : "0",
            "perl" : "5.010000"
         }
      },
      "test" : {
         "requires" : {
            "HTTP::Request::Common" : "0",

META.yml  view on Meta::CPAN

name: Geo-OGC-Service
no_index:
  directory:
    - t
    - inc
requires:
  Carp: '0'
  Clone: '0'
  Encode: '0'
  JSON: '0'
  Modern::Perl: '0'
  Plack::Builder: '0'
  Plack::Request: '0'
  XML::LibXML: '0'
  XML::LibXML::PrettyPrint: '0'
  perl: '5.010000'
resources:
  repository: https://github.com/ajolma/Geo-OGC-Service
version: '0.14'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

Makefile.PL  view on Meta::CPAN

use ExtUtils::MakeMaker;

WriteMakefile1(
    NAME              => 'Geo::OGC::Service',
    VERSION_FROM      => 'lib/Geo/OGC/Service.pm', # finds $VERSION, requires EU::MM from perl >= 5.5
    PREREQ_PM         => { "Carp" => 0,
                           "Modern::Perl" => 0,
                           "Plack::Request" => 0,
                           "Plack::Builder" => 0,
                           "JSON" => 0,
                           "Encode" => 0,
                           "XML::LibXML" => 0,
                           "XML::LibXML::PrettyPrint" => 0, # for debugging
                           "Clone" => 0 },
    TEST_REQUIRES     => { "Plack::Test" => 0,
                           "HTTP::Request::Common" => 0,
                           "XML::SemanticDiff" => 0 },

lib/Geo/OGC/Service.pm  view on Meta::CPAN

None by default.

=head2 METHODS

=cut

package Geo::OGC::Service;

use 5.010000; # say // and //=
use Carp;
use Modern::Perl;
use Encode qw(decode encode);
use Plack::Request;
use Plack::Builder;
use JSON;
use XML::LibXML;
use Clone 'clone';
use XML::LibXML::PrettyPrint;

use parent qw/Plack::Component/;

lib/Geo/OGC/Service.pm  view on Meta::CPAN


=head2 DESCRIPTION

The class contains methods for common tasks for all services.

=head2 METHODS

=cut

package Geo::OGC::Service::Common;
use Modern::Perl;

=pod

=head3 CORS

Return the CORS headers as a list according to the configuration. CORS
may be in the configuration as a scalar or as a hash. A scalar value
is taken as a value for Access-Control-Allow-Origin. A hash may have
the following keys. (Note the missing prefix Access-Control-.)

lib/Geo/OGC/Service.pm  view on Meta::CPAN

elements. If there is no $content or $content is undef, a self-closing
tag is written. If $content is '/>' a closing tag is written.

Setting $tag to 0 or 1, allows writing plain content.

If $attribute{$key} is undefined the attribute is not written at all.

=cut

package Geo::OGC::Service::XMLWriter;
use Modern::Perl;
use Encode qw(decode encode is_utf8);
use Carp;

sub element {
    my $self = shift;
    my $tag = shift;
    return unless defined $tag;
    if (ref($tag) eq 'ARRAY') {
        for my $element ($tag, @_) {
            $self->element(@$element);

lib/Geo/OGC/Service.pm  view on Meta::CPAN

Using $w as XMLWriter sets writer, which is obtained from $responder,
to write XML. The writer is closed when $w is destroyed.

$headers and $declaration are optional. The defaults are
'Content-Type' => 'text/xml; charset=utf-8' and '<?xml version="1.0"
encoding="UTF-8"?>'.

=cut

package Geo::OGC::Service::XMLWriter::Streaming;
use Modern::Perl;

our @ISA = qw(Geo::OGC::Service::XMLWriter Plack::Util::Prototype); # can't use parent since Plack is not yet

sub new {
    my ($class, $responder, $headers, $declaration) = @_;
    my %headers;
    if (ref $headers) {
        %headers = @$headers;
    } else {
        $headers{'Content-Type'} = $headers;

lib/Geo/OGC/Service.pm  view on Meta::CPAN


Using $w to produce XML caches the XML. The cached XML can be
written by a writer obtained from a $responder.

$headers and $declaration are optional. The defaults are as in
Geo::OGC::Service::XMLWriter::Streaming.

=cut

package Geo::OGC::Service::XMLWriter::Caching;
use Modern::Perl;
use Encode qw(decode encode is_utf8);

our @ISA = qw(Geo::OGC::Service::XMLWriter);

sub new {
    my ($class, $headers, $declaration) = @_;
    my %headers;
    if (ref $headers) {
        %headers = @$headers;
    } else {



( run in 0.566 second using v1.01-cache-2.11-cpan-a5abf4f5562 )