[Slashdotjp-dev 386] CVS update: slashjp/Slash/Client/lib/Slash/Client

アーカイブの一覧に戻る

Tatsuki SUGIURA sugi****@users*****
2006年 7月 12日 (水) 20:41:37 JST


Index: slashjp/Slash/Client/lib/Slash/Client/Journal.pm
diff -u /dev/null slashjp/Slash/Client/lib/Slash/Client/Journal.pm:1.1
--- /dev/null	Wed Jul 12 20:41:37 2006
+++ slashjp/Slash/Client/lib/Slash/Client/Journal.pm	Wed Jul 12 20:41:37 2006
@@ -0,0 +1,189 @@
+# This code is a part of Slash, and is released under the GPL.
+# Copyright 1997-2005 by Open Source Technology Group. See README
+# and COPYING for more information, or see http://slashcode.com/.
+# $Id: Journal.pm,v 1.1 2006/07/12 11:41:37 sugi Exp $
+
+package Slash::Client::Journal;
+
+use strict;
+use warnings;
+
+use base 'Slash::Client';
+
+our $VERSION = 0.01;
+
+sub new {
+	my($class, $opts) = @_;
+
+	my $self = $class->SUPER::new($opts);
+	$self->{soap}{uri}   = "$self->{http}://$self->{host}/Slash/Journal/SOAP";
+	$self->{soap}{proxy} = "$self->{http}://$self->{host}/journal.pl";
+
+	return $self;
+}
+
+sub _return_from_entry {
+	my($self, $id, $list) = @_;
+
+	if ($list) {
+		my $entry = $self->get_entry($id);
+		return($id, $entry->{url}) if $entry && $entry->{url};
+	} else {
+		return $id;
+	}
+
+	return;
+}
+
+sub add_entry {
+	my($self, $data) = @_;
+
+	$data->{body} =~ s/\n/\012/g;  # Local to Unix newlines, JIC
+
+	my $id = 0;
+	if ($data->{subject} && $data->{body}) {
+		$id = $self->soap->add_entry($data)->result;
+	}
+
+	return $self->_return_from_entry($id, wantarray());
+}
+
+sub modify_entry {
+	my($self, $id, $data) = @_;
+
+	$data->{body} =~ s/\n/\012/g;  # Local to Unix newlines, JIC
+
+	my $newid = 0;
+	if ($data->{subject} && $data->{body} && $id) {
+		$newid = $self->soap->modify_entry($id, $data)->result;
+	}
+
+	return $self->_return_from_entry($id, wantarray());
+}
+
+sub delete_entry {
+	my($self, $id) = @_;
+
+	return $self->soap->delete_entry($id)->result;
+}
+
+sub get_entry {
+	my($self, $id) = @_;
+
+	return $self->soap->get_entry($id)->result;
+}
+
+sub get_entries {
+	my($self, $uid, $limit) = @_;
+
+	return $self->soap->get_entries($uid, $limit)->result;
+}
+
+1;
+
+# http://use.perl.org/~pudge/journal/3294
+
+__END__
+
+=head1 NAME
+
+Slash::Client::Journal - Write journal clients for Slash
+
+=head1 SYNOPSIS
+
+	my $client = Slash::Client::Journal->new({
+		host => 'use.perl.org',
+	});
+	my $entry = $client->get_entry(10_000);
+
+=head1 DESCRIPTION
+
+Slash::Client::Journal provides an API for writing clients for Slash journals.
+
+See L<Slash::Client> for details on authentication and for more information.
+
+=head2 Methods
+
+=over 4
+
+=item add_entry(HASHREF)
+
+Add an entry.  Must be authenticated.
+
+Pass key-value pairs for C<subject> and C<body> (both required).  Other optional
+keys are C<discuss>, C<posttype>, and C<tid>.
+
+C<discuss> is a boolean for turning on discussions.  If false, comments
+are not turned on.  If true, the user's prefs on the site are used (which
+is also the default).
+
+C<posttype> is an integer defining the post types.  This is subject to change,
+but is currently: 1 = Plain Old Text, 2 = HTML Formatted,
+3 = Extrans (html tags to text), 4 = Code.  Again, default is to simply use
+the user's preferences.
+
+C<tid> is a topic ID.  This varies widely between Slash sites.  To get a list,
+view the source of the journal editing page and look for the "tid" form values.
+
+In scalar context, returns the unique ID of the new entry, or false if failure.
+
+In list context, on success, returns the URL to the new journal entry as
+the second list element.
+
+
+=item modify_entry(ID, HASHREF)
+
+Modify an existing entry.  Must be authenticated.
+
+Parameters are just like C<add_entry>.  (Note: C<discuss> cannot be modified
+if a discussion had already been created for the entry.)
+
+In scalar context, returns the unique ID of the modified entry, or false if
+failure.
+
+In list context, on success, returns the URL to the modified journal entry as
+the second list element.
+
+
+=item delete_entry(ID)
+
+Deletes an existing entry.  Must be authenticated.
+
+Returns true on success, false on error.
+
+
+=item get_entries(UID [, LIMIT])
+
+Gets the entries for a given user.  If LIMIT is not supplied, a site-defined
+LIMIT is used.
+
+Returns an arrayref of hashrefs, where each hashref is an entry, with the keys
+being the entry's id, URL, and subject.
+
+Returns false on error.
+
+
+=item get_entry(ID)
+
+Get an entry.  Returns lots of information about the entry, including uid,
+nickname, date, subject, discussion ID, tid, body, URL, id, posttype,
+and discussion URL.
+
+Returns false on error.
+
+=back
+
+
+=head1 TODO
+
+Work on error handling.
+
+
+=head1 SEE ALSO
+
+Slash::Client(3).
+
+
+=head1 VERSION
+
+$Id: Journal.pm,v 1.1 2006/07/12 11:41:37 sugi Exp $


Slashdotjp-dev メーリングリストの案内
アーカイブの一覧に戻る