summaryrefslogtreecommitdiff
path: root/lib/Net/HTTP/Spore/Meta.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Net/HTTP/Spore/Meta.pm')
-rw-r--r--lib/Net/HTTP/Spore/Meta.pm47
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/Net/HTTP/Spore/Meta.pm b/lib/Net/HTTP/Spore/Meta.pm
new file mode 100644
index 0000000..8b4942a
--- /dev/null
+++ b/lib/Net/HTTP/Spore/Meta.pm
@@ -0,0 +1,47 @@
+package Net::HTTP::Spore::Meta;
+
+use Moose;
+use Moose::Exporter;
+use Moose::Util::MetaRole;
+
+our $VERSION = '0.14';
+
+Moose::Exporter->setup_import_methods(
+ with_meta => [qw/spore_method/],
+ also => [qw/Moose/]
+);
+
+sub spore_method {
+ my $meta = shift;
+ my $name = shift;
+ $meta->add_spore_method($name, @_);
+}
+
+sub init_meta {
+ my ($class, %options) = @_;
+
+ my $for = $options{for_class};
+ Moose->init_meta(%options);
+
+ my $meta = Moose::Util::MetaRole::apply_metaroles(
+ for => $for,
+ class_metaroles => {
+ class => ['Net::HTTP::Spore::Meta::Class'],
+ },
+ );
+
+ Moose::Util::MetaRole::apply_base_class_roles(
+ for => $for,
+ roles => [
+ qw/
+ Net::HTTP::Spore::Role::UserAgent
+ Net::HTTP::Spore::Role::Request
+ Net::HTTP::Spore::Role::Middleware
+ /
+ ],
+ );
+
+ $meta;
+};
+
+1;