Skip to content
Snippets Groups Projects
Commit 1a7b7916 authored by Anton Soldatov's avatar Anton Soldatov
Browse files

RedMiner::API renamed to Redminer to avoid confusion with Redmine::API

parent f08b42b9
No related branches found
No related tags found
No related merge requests found
Changes
Makefile.PL
MANIFEST
README
t/RedMiner-API.t
lib/RedMiner/API.pm
README.md
t/00-use.t
t/01-dispatching.t
t/02-realworld.t
t/03-realworld-no-wrapping.t
t/04-pod.t
t/05-pod-coverage.t
lib/Redminer.pm
......@@ -2,8 +2,8 @@ use 5.010;
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'RedMiner::API',
VERSION_FROM => 'lib/RedMiner/API.pm',
NAME => 'Redminer',
VERSION_FROM => 'lib/Redminer.pm',
PREREQ_PM => {
'URI' => 0,
'URI::QueryParam' => 0,
......@@ -11,7 +11,7 @@ WriteMakefile(
'JSON::XS' => 0,
},
($] >= 5.005 ? ( ## Add these new keywords supported since 5.005
ABSTRACT_FROM => 'lib/RedMiner/API.pm',
ABSTRACT_FROM => 'lib/Redminer.pm',
AUTHOR => 'Anton Soldatov <igelhaus@gmail.com>')
: ()),
);
......@@ -6,8 +6,8 @@ Currently the project consists of two parts:
1. `redminer` script itself. For now it supports only creating projects with subprojects
from a given layout, but in the future it's aimed for various RedMine automation tasks
2. `RedMiner::API` module, a Perl binding to [RedMine REST API](http://www.redmine.org/projects/redmine/wiki/Rest_api).
Please refer to [built-in POD documentation](../master/lib/RedMiner/API.pm) for more details
2. `Redminer` module, a Perl binding to [RedMine REST API](http://www.redmine.org/projects/redmine/wiki/Rest_api).
Please refer to [built-in POD documentation](../master/lib/Redminer.pm) for more details
## Non-core Dependencies
......
package RedMiner::API;
package Redminer;
use 5.010;
use strict;
......@@ -18,17 +18,17 @@ use Encode qw/decode/;
=head1 NAME
RedMiner::API - Wrapper for RedMine REST API (http://www.redmine.org/projects/redmine/wiki/Rest_api).
Redminer - Wrapper for RedMine REST API (http://www.redmine.org/projects/redmine/wiki/Rest_api).
=head1 SYNOPSIS
use RedMiner::API;
my $redminer = RedMiner::API->new(
use Redminer;
my $redminer = Redminer->new(
host => 'example.com/redmine',
key => 'xxx',
);
# password-based auth is also supported:
#my $redminer = RedMiner::API->new(
#my $redminer = Redminer->new(
# host => 'example.com/redmine',
# user => 'redminer',
# pass => 'p@s$w0rD',
......@@ -37,7 +37,7 @@ RedMiner::API - Wrapper for RedMine REST API (http://www.redmine.org/projects/re
my $project = $redminer->createProject({
identifier => 'my-project',
name => 'My Project',
description => 'My project, created with *RedMiner::API*',
description => 'My project, created with *Redminer*',
});
if (!$project) {
say STDERR 'Error(s) creating project: ', join("\n", map { $_ } $redminer->errorDetails->{errors});
......@@ -52,7 +52,7 @@ RedMiner::API - Wrapper for RedMine REST API (http://www.redmine.org/projects/re
my $issue = $redminer->createIssue({
project_id => $project_id,
subject => 'Test issue for RedMiner::API',
subject => 'Test issue for Redminer',
description => 'Issue description',
});
......@@ -145,7 +145,7 @@ be retrieved like this:
=head2 new
my $redminer = RedMiner::API->new(%options);
my $redminer = Redminer->new(%options);
Following options are recognized:
......@@ -188,7 +188,7 @@ By default RedMine API requires you to wrap you object data like this:
By default this module follows this convention. However, if you specify something like
my $redminer = RedMiner::API->new(
my $redminer = Redminer->new(
host => 'example.com/redmine',
key => 'xxx',
no_wrapper_object => 1,
......@@ -510,13 +510,13 @@ between this module and Redmine::API are:
=item *
B<Dependencies>. Redmine::API depends on Moo and REST::Client which in turn depends on
LWP::UserAgent, URI and possibly others. RedMiner::API uses pure Perl OOP and
LWP::UserAgent, URI and possibly others. Redminer uses pure Perl OOP and
depends directly on LWP::UserAgent and URI.
=item *
B<Call conventions>. Although both modules use dynamic dispatching for building actual HTTP
requests, they do it in a different manner. In particular, RedMiner::API tries to
requests, they do it in a different manner. In particular, Redminer tries to
dispatch a single method name without using chains of interrim objects as Redmine::API does.
=back
......
......@@ -11,7 +11,7 @@ use Encode qw/encode/;
use Getopt::Long;
use Config::IniFiles;
use RedMiner::API;
use Redminer;
my $conf_fname = $ENV{HOME} . '/.redminer/redminer.conf';
my $layout_fname = $ENV{HOME} . '/.redminer/default-layout.conf';
......@@ -44,7 +44,7 @@ if (!$layout) {
warn 'Unable to access layout config';
}
my $redminer = RedMiner::API->new(
my $redminer = Redminer->new(
host => $conf->val('redmine', 'host') // '',
user => $conf->val('redmine', 'user') // '',
pass => $conf->val('redmine', 'pass') // '',
......
......@@ -3,6 +3,6 @@ use warnings;
use Test::More tests => 1;
BEGIN { use_ok('RedMiner::API') };
BEGIN { use_ok('Redminer') };
exit;
......@@ -3,12 +3,12 @@ use warnings;
use Test::More tests => 29;
eval 'use RedMiner::API';
eval 'use Redminer';
#
# Testing internal name dispatching with a dummy object
#
my $redminer = RedMiner::API->new(
my $redminer = Redminer->new(
host => '',
key => '',
);
......
......@@ -4,13 +4,13 @@ use warnings;
use Test::More;
use JSON::XS qw/encode_json/;
if ($ENV{REDMINER_API_DEVEL}) {
if ($ENV{REDMINER_DEVEL}) {
plan tests => 5;
} else{
plan skip_all => 'Development tests (REDMINER_API_DEVEL not set)';
plan skip_all => 'Development tests (REDMINER_DEVEL not set)';
}
eval 'use RedMiner::API';
eval 'use Redminer';
#
# Read API key from a simple config file in the format 'host;key'
......@@ -20,7 +20,7 @@ my $key = '';
my $key_fname = $ENV{HOME} . '/.redminer/key';
if (!-e $key_fname) {
BAIL_OUT('REDMINER_API_DEVEL set, but key file is not accessible');
BAIL_OUT('REDMINER_DEVEL set, but key file is not accessible');
}
open my $FH_key, '<', $key_fname;
......@@ -29,7 +29,7 @@ my $key_data = <$FH_key>;
chomp $key_data;
close $FH_key;
my $redminer = RedMiner::API->new(
my $redminer = Redminer->new(
host => $host,
key => $key,
);
......@@ -50,7 +50,7 @@ ok($redminer->updateProject($project_id, { project => { inherit_members => 1 } }
my $issue = $redminer->createIssue({ issue => {
project_id => $project_id,
subject => 'Test issue for RedMiner::API',
subject => 'Test issue for Redminer',
description => 'Test description',
}});
ok(defined $issue->{issue}{id}, 'Issue created with ID #' . $issue->{issue}{id});
......
......@@ -4,13 +4,13 @@ use warnings;
use Test::More;
use JSON::XS qw/encode_json/;
if ($ENV{REDMINER_API_DEVEL}) {
if ($ENV{REDMINER_DEVEL}) {
plan tests => 5;
} else{
plan skip_all => 'Development tests (REDMINER_API_DEVEL not set)';
plan skip_all => 'Development tests (REDMINER_DEVEL not set)';
}
eval 'use RedMiner::API';
eval 'use Redminer';
#
# Read API key from a simple config file in the format 'host;key'
......@@ -20,7 +20,7 @@ my $key = '';
my $key_fname = $ENV{HOME} . '/.redminer/key';
if (!-e $key_fname) {
BAIL_OUT('REDMINER_API_DEVEL set, but key file is not accessible');
BAIL_OUT('REDMINER_DEVEL set, but key file is not accessible');
}
open my $FH_key, '<', $key_fname;
......@@ -29,7 +29,7 @@ my $key_data = <$FH_key>;
chomp $key_data;
close $FH_key;
my $redminer = RedMiner::API->new(
my $redminer = Redminer->new(
host => $host,
key => $key,
no_wrapper_object => 1,
......@@ -51,7 +51,7 @@ ok($redminer->updateProject($project_id, { inherit_members => 1 }), 'Project upd
my $issue = $redminer->createIssue({
project_id => $project_id,
subject => 'Test issue for RedMiner::API',
subject => 'Test issue for Redminer',
description => 'Test description',
});
ok(defined $issue->{id}, 'Issue created with ID #' . $issue->{id});
......
......@@ -8,4 +8,4 @@ plan skip_all => 'Test::Pod::Coverage required for testing pod coverage' if $@;
plan tests => 1;
pod_coverage_ok('RedMiner::API', 'RedMiner::API POD ok');
pod_coverage_ok('Redminer', 'Redminer POD ok');
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment