Parent Directory
|
Revision Log
Revision 5734 - (view) (download) (as text)
| 1 : | sh002i | 4315 | ################################################################################ |
| 2 : | # WeBWorK Online Homework Delivery System | ||
| 3 : | sh002i | 5318 | # Copyright © 2000-2007 The WeBWorK Project, http://openwebwork.sf.net/ |
| 4 : | # $CVSHeader: webwork2/lib/WeBWorK/RPC.pm,v 1.2 2006/08/05 02:15:31 sh002i Exp $ | ||
| 5 : | sh002i | 4315 | # |
| 6 : | # This program is free software; you can redistribute it and/or modify it under | ||
| 7 : | # the terms of either: (a) the GNU General Public License as published by the | ||
| 8 : | # Free Software Foundation; either version 2, or (at your option) any later | ||
| 9 : | # version, or (b) the "Artistic License" which comes with this package. | ||
| 10 : | # | ||
| 11 : | # This program is distributed in the hope that it will be useful, but WITHOUT | ||
| 12 : | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
| 13 : | # FOR A PARTICULAR PURPOSE. See either the GNU General Public License or the | ||
| 14 : | # Artistic License for more details. | ||
| 15 : | ################################################################################ | ||
| 16 : | |||
| 17 : | package WeBWorK::RPC; | ||
| 18 : | |||
| 19 : | =head1 NAME | ||
| 20 : | |||
| 21 : | WeBWorK::RPC - Remote Procedure Calls for WeBWorK. | ||
| 22 : | |||
| 23 : | =cut | ||
| 24 : | |||
| 25 : | use strict; | ||
| 26 : | use warnings; | ||
| 27 : | |||
| 28 : | use Data::Dumper; | ||
| 29 : | use WeBWorK::Authen; | ||
| 30 : | use WeBWorK::Authz; | ||
| 31 : | use WeBWorK::CourseEnvironment; | ||
| 32 : | use WeBWorK::DB; | ||
| 33 : | use WeBWorK::RPC::Request; | ||
| 34 : | use WeBWorK::Utils qw/runtime_use/; | ||
| 35 : | |||
| 36 : | sub bootstrap { | ||
| 37 : | my ($invocant, %params) = @_; | ||
| 38 : | my $class = ref $invocant || $invocant; | ||
| 39 : | my $self = bless {}, $class; | ||
| 40 : | |||
| 41 : | my $r = $self->{r} = new WeBWorK::RPC::Request; | ||
| 42 : | |||
| 43 : | my $ce = eval { new WeBWorK::CourseEnvironment(\%WeBWorK::SeedCE) }; | ||
| 44 : | $@ and die "Failed to initialize course environment: $@\n"; | ||
| 45 : | $r->ce($ce); | ||
| 46 : | |||
| 47 : | my $authz = new WeBWorK::Authz($r); | ||
| 48 : | $r->authz($authz); | ||
| 49 : | |||
| 50 : | my $authen_module = WeBWorK::Authen::class($ce, "user_module"); | ||
| 51 : | runtime_use $authen_module; | ||
| 52 : | my $authen = $authen_module->new($r); | ||
| 53 : | $r->authen($authen); | ||
| 54 : | |||
| 55 : | if (defined $ce->{courseName} and $ce->{courseName} ne "") { | ||
| 56 : | my $db = new WeBWorK::DB($ce->{dbLayout}); | ||
| 57 : | $r->db($db); | ||
| 58 : | } | ||
| 59 : | |||
| 60 : | return $self, %params; | ||
| 61 : | } | ||
| 62 : | |||
| 63 : | sub hi { | ||
| 64 : | print STDERR __PACKAGE__."::hi(@_) called\n"; | ||
| 65 : | return "hello, world"; | ||
| 66 : | } | ||
| 67 : | |||
| 68 : | sub bye { | ||
| 69 : | print STDERR __PACKAGE__."::bye(@_) called\n"; | ||
| 70 : | return "goodbye, cruel world"; | ||
| 71 : | } | ||
| 72 : | |||
| 73 : | sub dumper { | ||
| 74 : | print STDERR __PACKAGE__."::dumper(@_) called\n"; | ||
| 75 : | return Dumper(\@_); | ||
| 76 : | } | ||
| 77 : | |||
| 78 : | sub get_course_environment { | ||
| 79 : | my ($self, %params) = bootstrap(@_); | ||
| 80 : | return $self->{r}->ce; | ||
| 81 : | } | ||
| 82 : | |||
| 83 : | sh002i | 4351 | ################################################################################ |
| 84 : | |||
| 85 : | package WeBWorK::RPC::CourseManagement; | ||
| 86 : | |||
| 87 : | use WeBWorK::Utils::CourseManagement; | ||
| 88 : | |||
| 89 : | sub listCourses { | ||
| 90 : | my ($self) = WeBWorK::RPC::bootstrap(@_); | ||
| 91 : | return WeBWorK::Utils::CourseManagement::listCourses($self->{r}->ce); | ||
| 92 : | } | ||
| 93 : | |||
| 94 : | sub listArchivedCourses { | ||
| 95 : | my ($self) = WeBWorK::RPC::bootstrap(@_); | ||
| 96 : | return WeBWorK::Utils::CourseManagement::listArchivedCourses($self->{r}->ce); | ||
| 97 : | } | ||
| 98 : | |||
| 99 : | sub addCourse { | ||
| 100 : | my ($self, %options) = WeBWorK::RPC::bootstrap(@_); | ||
| 101 : | die "missing courseID in \%options" unless defined $options{courseID}; | ||
| 102 : | $options{ce} = new WeBWorK::CourseEnvironment({ | ||
| 103 : | webwork_dir => $self->{r}->ce->{webwork_dir}, | ||
| 104 : | courseName => $options{courseID}, | ||
| 105 : | }); | ||
| 106 : | return WeBWorK::Utils::CourseManagement::addCourse(%options); | ||
| 107 : | } | ||
| 108 : | |||
| 109 : | sh002i | 4315 | 1; |
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |