Revision history for Dochazka-REST
0.001 2014-06-07 22:35 CEST
- start distro using 'module-starter'
- bring in useful scripts from perl-CELL project (release.sh, dev.sh,
test.sh)
- set license to BSD-3-Clause
- Spec.pm: add technical specification (current state)
- add empty shells: bin/dochazka-rest, REST.pm, Activity.pm, Employee.pm,
History.pm, Interval.pm, Lock.pm, Policy.pm, Status.pm
- generate a proper README
0.002 2014-06-07 23:07 CEST
- tweak release script
- update MANIFEST (put files in alphabetical order)
0.003 2014-06-09 10:53 CEST
- move outdated top-level README to doc/
- add a new top-level README stub
- git repo cleanup
- t/001-init.t: test for server initialization routine
- REST.pm: start implementing init routine
0.004 2014-06-09 18:23 CEST
- REST.pm: produce a more convincing 'init' method
- t/000-depends.t: check dependencies
- t/001-init.t: unit tests for the 'init' method
- t/pod-coverage.t: check pod only in taxative list of modules (i.e.,
ignore config/*.pm)
0.005 2014-06-11 10:01 CEST
- REST.pm: add $REST singleton, flesh out init routine
0.006 2014-06-13 15:38 CEST
- add project-web.sh script to update http://dochazka.sourceforge.net
with contents of Spec.pm
- Spec.pm: work on "intervals" table -- use tsrange and EXCLUDE constraint
with gist index to exclude overlapping intervals for a given employee
- config/dbinit_Config.pm: fix data_source in DBINIT_CONNECT
- REST.pm: flesh out initialization routine
- t/001-init.t: improve initialization routine unit test
- add missing distro files to MANIFEST
- add auto-generated README file to top-level git repo
- get rid of old OBS CI stuff (moved to archive)
0.007 2014-06-13 21:59 CEST
- config/dbinit_Config.pm: revamp
- REST.pm: add reset_db routine, make separate connect_db routine that can
connect to any database, add create_tables routine
- t/001-init.t: unit test now drops and re-creates the testing database
0.008 2014-06-19 09:34 CEST
- REST.pm: minor cleanup in connect_db(), init now optionally takes verbose
parameter (and passes it to $CELL->load)
0.009 2014-06-19 15:51 CEST
- status-strings.pod: Status string verbiage removed from Spec.pm because
we will not implement status strings in version 1.0
- dbinit_Config.pm: add lots more SQL
- Spec.pm: try to keep documentation in stride with dbinit_Config.pm
0.010 2014-06-19 22:38 CEST
- add more SQL to dbinit_Config.pm
- Spec.pm: keep documenting the table definitions
0.011 2014-06-21 16:51 CEST
- dbinit_Config.pm: AutoCommit default to 1, add nicks table, add
current_priv SQL function
- employee_Config.pm: add configuration file just for employee
- t/001-init.t: cleanup
- t/002-insert-employee.t: new tests
- REST.pm: improve create_tables
- Spec.pm: blearily try to write employee-related verbiage
0.012 2014-07-04 02:08 CEST
- t/: add license boilerplate
- t/: rename 002-insert-employee.t to 002-nick.t
- start writing App::Dochazka::REST::Model::Nick
- release.sh: run bash-ism with bash instead of sh
0.013 2014-07-04 10:17 CEST
- Nick.pm: make it a little less naive
- t/002-nick.t: add tests
0.014 2014-07-04 13:37 CEST
- t/002-nick.t: test for non-existent IDs and nicks
0.015 2014-07-04 16:19 CEST
- got rid of Nick as a separate entity after figuring out that a simple
UNIQUE constraint in the employees table does what I needed
- create_tables now adds superuser employee with admin privs
0.016 2014-07-06 02:37 CEST
- Dochazka_Message_en.conf: add "db not reachable" error message
- break employeehistory table into schedhistory and privhistory
- add a second round of dbinit SQL statements to ensure that the root
employee is immutable
- Employee.pm: refactoring (WIP)
- Spec.pm: update verbiage
- stored procedure 'current_priv' now returns 'passerby' if current priv
level cannot be determined
- t/002-root.t: new tests for immutable root employee
- t/003-current-priv.t: new tests for current_priv stored procedure
- t/004-employee.t: skip tests for Employee.pm (WIP)
0.016 2014-07-06 02:41 CEST
- fix MANIFEST
0.017 2014-07-06 22:17 CEST
- refactored Employee.pm
- t/004-employee.pm: new unit tests for Employee.pm
- dbinit_Config.pm: add remark field to employees table
0.018 2014-07-07 12:30 CEST
- config/Dochazka_Config.pm: add comments
- config/employee_Config.pm: add SQL_EMPLOYEE_CURRENT_PRIV
- Employee.pm: _load now resets employee object, start working on ACL
checks
- t/004-employee.t: finished refactoring old tests
0.019 2014-07-07 14:44 CEST
- REST.pm: implement connect_db_pristine and set DOCHAZKA_EID_OF_ROOT
site param
- t/: adjust tests for same
0.020 2014-07-07 16:08 CEST
- Employee.pm: implement UPDATE functionality
0.021 2014-07-07 16:48 CEST
- Employee.pm: add accessor functions
- t/004-employee.pm: add tests for accessors
0.022 2014-07-07 19:23 CEST
- remove Policy.pm as it is only a stub and might not be needed
- config/dbinit_Config.pm: make a generalized priv_at_timestamp function
and change current_priv into a wrapper around that function
- Priv.pm: move priv_by_eid to the new Priv.pm module
- Employee.pm: add 'priv' accessor method, edit POD a little
0.023 2014-07-07 20:35 CEST
- rename Priv.pm to Privhistory.pm
- Privhistory.pm: start working on insert_priv
- t/005-privhistory.t: start implementing privhistory tests
0.024 2014-07-07 21:27 CEST
- fix some nitpicks
0.025 2014-07-08 01:30 CEST
- employee_Config.pm, Employee.pm: eliminate double DBI call by
including call to current_priv() in SELECT statement
- add stub Timestamp.pm for timestamp-related utilities
- dbinit_Config.pm: make priv_at_timestamp use '<=' instead of '<'
- Privhistory.pm, t/005-privhistory.t: add privhistory_by_eid
0.026 2014-07-08 10:46 CEST
- Employee.pm: make _load return DOCHAZKA_RECORDS_FETCHED when SELECT
succeeds
0.027 2014-07-08 12:35 CEST
- Employee.pm, t/004-employee.pm: fix buggy eid_by_nick function, export
it, add test for it
- Spec.pm: write verbiage for employee Perl API current state
0.028 2014-07-08 22:51 CEST
- Privhistory.pm: implementing OO interface to privhistory table
- Factory.pm: add new module under Util/ with 'makereset' function
- Employee.pm: use new makereset function
0.029 2014-07-08 23:46 CEST
- Privhistory.pm: use the new function 'makereset', move priv_by_eid to
Factory.pm (not sure if it really belongs here, though)
- Factory.pm: refactor makereset
0.030 2014-07-09 00:29 CEST
- Factory.pm, Employee.pm, Privhistory.pm: add and use 'make_spawn'
- t/006-reset.t: add test demonstrating how spawn "validates" the
attributes provided in PARAMHASH
- Privhistory.pm no longer exports any functions
0.031 2014-07-09 01:32 CEST
- t/005-privhistory.t: add unit tests
- Privhistory.pm: make 'load' trigger warning if nothing found
0.032 2014-07-09 12:09 CEST
- make privhistory SQL statements return int_id where appropriate
- t/005-privhistory.t: add some int_id tests
- start working on a delete method for privhistory objects
0.033 2014-07-09 14:41 CEST
- dbinit_Config.pm: fix valid_sched_intvl trigger, add translate_interval
function
- Spec.pm: fix date in sample schedule tsrange (year was wrong)
- rename privhistory_Config.pm to priv_Config.pm
0.034 2014-07-09 15:07 CEST
- schedule_Config.pm: add SQL_SCHEDULE_INSERT param
- add stubby Schedule.pm and Schedintvl.pm in lib/Dochazka/REST/Model
0.035 2014-07-09 23:12 CEST
- dbinit_Config.pm: rename translate_interval to translate_schedintvl,
merge 'schedhistory' table into 'schedules'
- schedule_Config.pm: add definitions for SQL_SCHEDINTVL_INSERT and
SQL_SCHEDINTVL_SELECT
- add Schedintvl.pm, remove Schedhistory.pm
- Spec.pm: update schedule verbiage to reflect table structure change
- Interval.pm: make a stub class for activity intervals
- t/007-interval.t: add stub unit-test file for interval objects
0.036 2014-07-10 00:48 CEST
- Model/Schedule.pm: fix up boilerplate, flesh out insert method
- Util/Timestamp.pm: add qw( $today $yesterday $tomorrow ) exports
- t/005-privhistory.t: import $today, $yesterday from Timestamp.pm
- rename t/007-interval.t to t/007-schedule.t
- t/007-schedule.t: import $today, $yesterday from Timestamp.pm, add tests for
insert method
0.037 2014-07-10 15:57 CEST
- begin implementing new schedules concept (table structure and other
database artifacts, objects, object methods, unit tests)
- rename Schedintvl.pm to Schedintvls.pm because the object will contain
all the intervals that make up a single schedule
- for now, the new schedules concept is described in tickets/tickets
pending re-write of schedule-related verbiage in Spec.pm
- Factory.pm: make_reset function now calls 'populate' method _iff_ there
is one
- Schedintvls.pm now uses populate method to automatically load a new
"scratch SID" every time an object is spawned/reset
0.038 2014-07-10 16:32 CEST
- Spec.pm: adjust verbiage to accommodate revamped schedule logic
0.039 2014-07-10 17:31 CEST
- Spec.pm: re-organize sections, add note concerning 'jsonb' type in
PostgreSQL 9.4
- re-generate project web page http://dochazka.sourceforget.net
0.040 2014-07-11 10:03 CEST
- Schedintvls, t/007-schedule.t: implement basic insert method, start working
on a translate method
- dbinit_Config.pm, schedule_Config.pm: fix translate_schedintvl
0.041 2014-07-11 15:38 CEST
- schedule_Config.pm: develop SQL_SCHEDINTVLS_SELECT statement
- Schedintvls.pm: rename translate to load, load now succesfully converts
tsranges array to our more-readable schedule format (but doesn't yet sort
the array), added json method, started work on sort method
- t/007-schedule.t: add tests for $schedintvls->load
0.042 2014-07-11 20:27 CEST
- schedule_Config.pm: add ORDER BY to SQL_SCHEDINTVLS_SELECT, so the intervals
come out of the database pre-sorted
- Schedintvls.pm: get rid of sort method
- t/007-schedule.t: insert schedule intervals in reverse chronological order
to test sorting functionality
0.043 2014-07-11 22:40 CEST
- dbinit_Config.pm: add remark field to schedules table, fix a small bug
(round_effective trigger applies to schedhistory table, not schedules)
- schedule_Config.pm: tweak param names, fix SQL_SCHEDULE_INSERT, add
SQL_SCHEDULE_SELECT
- Schedule.pm: fix attributes, revamp insert method
- t/007-schedule.t: add seven more unit tests
0.044 2014-07-12 22:08 CEST
- schedule_Config.pm: add SQL_SCHEDHISTORY_INSERT,
SQL_SCHEDHISTORY_SELECT_ARBITRARY, and SQL_SCHEDHISTORY_SELECT_CURRENT
- Schedintvls.pm: add debugging code to populate method
- t/007-schedule.pm: add unit tests for $schedhistory->insert,
$schedhistory->load
0.045 2014-07-13 09:26 CEST
- schedule_Config.pm: make two schedule SELECT statements: "select sid
given schedule" and "select schedule given sid"
- Schedule.pm: get rid of load method, add get_json exported function
- t/007-schedule.pm: add tests for get_json
0.046 2014-07-13 10:20 CEST
- Schedintvls.pm: cleanup; put translated intervals into a separate attribute,
$self->{schedule}, instead of overwriting $self->{intvls}
0.047 2014-07-13 11:08 CEST
- schedule_Config.pm, Schedintvls.pm, t/007-schedule.t: implement and test
delete method for Schedintvls objects
- Spec.pm: clarifications
0.048 2014-07-13 11:46 CEST
- Spec.pm: write up the "Privilege levels in the Perl API" section
0.049 2014-07-13 13:12 CEST
- tickets/tickets: add new tickets, clean up old tickets
- regenerate project webpage
- REST.pm: rename init -> init_no_db and make a new 'init' that "does
everything", including connecting to the database
- t/: adjust tests to use the new 'init' and 'init_no_db' methods
0.050 2014-07-13 16:15 CEST
- dbinit_Config.pm: implement schedule_at_timestamp and current_schedule stored
procedures
- employee_Config.pm: have SELECTs get employee's current_schedule
- t/007-schedule.t: test for presence of schedule attribute in employee object
0.051 2014-07-13 16:55 CEST
- employee_Config.pm: add SQL_EMPLOYEE_SCHEDULE_AT_TIMESTAMP and
SQL_EMPLOYEE_CURRENT_SCHEDULE
- REST.pm: add 'eid_of_root' method
- Employee.pm: add 'schedule' accessor
- Factory.pm: add 'schedule_by_eid' function
- t/002-root.t: add several 'eid_of_root' unit tests
- t/004-employee.t: clean up, add more tests
0.052 2014-07-13 20:27 CEST
- Spec.pm: update to reflect current state of code
- dbinit_Config.pm, Schedintvls.pm, t/007-schedule.t: minor cleanup
0.053 2014-07-13 22:24 CEST
- dbinit_Config.pm: add activities and intervals tables
- Spec.pm: work on Activities, Intervals, and Locks sections
0.054 2014-07-14 10:08 CEST
- Activity.pm: adapt existing code from Employee.pm
- rename 'name' column to 'code' in 'activities' table
- activity_Config.pm: new file
0.055 2014-07-14 12:10 CEST
- Spec.pm: change L<...> to C<...> to avoid pod2html's annoying practice of
rendering the links as "the ... manpage"
- bin/dochazka-rest: add license boilerplate
- moved 'cud' subroutine into new module App::Dochazka::REST::Model::Shared
to avoid code duplication in Activity.pm and Employee.pm
- t/008-activity.t: add stub for activity-related unit tests
- config/Dochazka_Message_en.conf: add a DOCHAZKA_DBI_ERR message for
reporting DBI errors
- config/employee_Config.pm: add SQL_EMPLOYEE_DELETE
0.056 2014-07-14 12:43 CEST
- Spec.pm: cleanup
- config/Dochazka_Config.pm: add DOCHAZKA_ACTIVITY_DEFINITIONS
- REST.pm: have 'create_tables' insert initial set of activities
0.057 2014-07-14 12:59 CEST
- config/Dochazka_Messages.conf: remove colon from DOCHAZKA_DBI_ERR
- model/Shared.pm: fix bug in cud (wasn't returning err status on DBI err)
- t/008-activity.t: add lots of unit tests
0.058 2014-07-14 15:59 CEST
- activity_Config.pm: add 'upper' safeguards to make sure no lower-case
activity code makes it into the database, yet to accept lower-case in
SELECTs
- dbinit_Config.pm: add 'code_to_upper' trigger on activities table,
split off valid_intvl from valid_schedintvl so it can be applied to
both 'schedintvls' and 'intervals'
- Spec.pm: update to reflect latest code
- t/008-activity.t: add more unit tests
0.059 2014-07-14 16:24 CEST
- Privhistory.pm: block in 'get_privhistory' function
- rename t/008-activity.t to t/009-activity.t
- add stub t/008-schedintvls.t for testing "illegal" schedintvls
0.060 2014-07-14 20:38 CEST
- REST.pm: put 'create_tables' SQL incantations into a transaction
- Schedintvls: put 'insert' SQL incantations into a transaction that
gets rolled back if any of the intervals are bad
- t/008-schedintvls.t: test with bogus intervals, test that no
intervals are inserted if any of them are bad
0.061 2014-07-15 11:06 CEST
- t/001-init.t: make diagnostic messages more useful
- config/sql/interval_Config.pm: new SQL for use in Interval.pm
- Interval.pm: start developing the stub into something useful
- dochazka_Config.pm: add DOCHAZKA_ADVANCE_INTERVALS_MAX_DAYS
- dbinit_Config.pm: rename intervals.int_id to intervals.iid (Interval ID)
- REST.pm: revamp 'try' code block in 'create_tables'
- Activity.pm, Employee.pm: use new best practice for 'cud' calls
- Privhistory.pm, Schedhistory.pm: rewrite insert and delete methods to use 'cud'
- Schedule.pm: rewrite insert method to use 'cud'
- Shared.pm: add 'open_transaction' and 'close_transaction', revamp 'cud' to use
Try::Tiny
0.062 2014-07-15 13:17 CEST
- make adjustments so test suite succeeds even if PostgreSQL server not
present
0.063 2014-07-15 16:56 CEST
- dbinit_Config.pm, REST.pm: get rid of DBINIT_AUTOCOMMIT
- dbinit_Config.pm, Dochazka_Config.pm, REST.pm: use DOCHAZKA_DBNAME
instead of DBINIT_DBNAME
- REST.pm: reset_db now drops/re-creates 'dochazka' user and grants all
dochazka database privileges to that user, 'create_tables' runs as
user 'dochazka'
- REST.pm: connect_db_pristine takes full PARAMHASH
0.064 2014-07-15 17:48 CEST
- more modifications to ensure test suite doesn't fail on build workers and
other automatons (CPAN Testers, Open Build Service)
0.065 2014-07-15 18:00 CEST
- rename to App::Dochazka::REST
0.066 2014-07-15 18:02 CEST
- fix current_ver.plx and prepare release script for CPAN
0.067 2014-07-15 22:36 CEST
- dbinit_Config.pm: fix 'intervals' table definition
- interval_Config.pm, Interval.pm: add missing 'long_desc' everywhere
- t/010-interval.t: start unit test file for activity intervals
- move priv_by_eid and sched_by_eid functions from Factory.pm to Shared.pm,
populate 'aclpriv' attribute in each function that consults it, instead of in
Factory.pm->make_reset
- POD cleanup
- Util/Timestamp.pm, t/011-tsrange_equal.t: add tsrange_equal function
- Util/Timestamp.pm, t/: split $today into two ($today and $today_ts), and
do the same for $yesterday and $tomorrow -- hopefully this makes the code
_less_ complicated
0.068 2014-07-16 08:35 CEST
- Build.PL: add DBD::Pg and DBI dependencies
0.069 2014-07-16 22:11 CEST
- move 'make_spawn' and 'reset' from Util/Factory.pm to Model/Shared.pm,
delete Util/Factory.pm
0.070 2014-07-17 11:42 CEST
- Shared.pm, REST.pm: get rid of open_transaction and close_transaction as they
don't work as expected
- Schedintvls.pm, t/007-schedule.t: revamp 'delete' method
- Dochazka_Message_en.conf: add DOCHAZKA_RECORDS_DELETED
0.071 2014-07-17 21:37 CEST
- dbinit_Config.pm: add locks table
- Spec.pm: work on Lock section
- Interval.pm: make load_by_iid also load the long_desc, add 'update' and
'delete' methods
- Lock.pm: first crack at lock data model
- Activity.pm: fix order of attributes in update and make delete reset the
object on success
0.072 2014-07-17 21:42 CEST
- MANIFEST: minor fix
0.073 2014-07-18 08:19 CEST
- Schedule.pm: add an untested 'delete' method
- Privhistory.pm, Schedhistory.pm, Schedintvls.pm: add 'no update method' verbiage
- Shared.pm: when croaking on odd number of arguments, stringify the actual
arguments and include them in the error message
- t/009-activity.pm: add tests for 'update' method
0.074 2014-07-18 08:39 CEST
- Build.PL: add another missing dependency (JSON.pm)
0.075 2014-07-18 09:44 CEST
- now that App::Dochazka::REST is on CPAN, and since Spec.pm was getting to
be too big, make the following documentation changes:
- break out the "... in the database" and "... in the Perl API" sections
into the respective data model modules under C<App::Dochazka::REST::Model>
- move the rest of the Spec.pm verbiage into L<App::Dochazka::REST>
0.076 2014-07-18 10:20 CEST
- MANIFEST: update to reflect current state
- REST.pm, Privhistory.pm, Schedhistory.pm: work on POD
0.077 2014-07-18 13:16 CEST
- REST.pm: POD cleanup
- Interval.pm: add missing POD verbiage
- release.sh: attempt to fix minor brokenness that sometimes causes version
numbers to get messed up when switching from one development machine to
another
- Shared.pm: add 'noof' function
- t/001-init.t: add comments and two unit tests
- t/003-current_priv.t, t/004-employee.t: rework tests, clean up database
when done
0.078 2014-07-18 13:43 CEST
- Privhistory.pm, etc.: change privhistory.int_id to privhistory.phid
- Schedhistory.pm, etc.: change schedhistory.int_id to schedhistory.shid
- schedule_Config.pm: add missing SQL_SCHEDHISTORY_DELETE parameter
0.079 2014-07-18 16:13 CEST
- schedule_Config.pm: add SQL_SCHEDULE_SELECT and SQL_SCHEDULE_DELETE
- Schedule.pm: fix bug in 'delete' method, implement 'load_by_sid' method
- t/: clean up several unit test files (unit test files no longer leave
any database artifacts behind, so each one starts from a clean slate
and can be run independently)
0.080 2014-07-19 18:03 CEST
- lock_Config.pm, t/012-lock.t: add the beginnings of some SQL and unit tests
for lock objects
- privhistory_Config.pm: add SQL_PRIVHISTORY_SELECT_BY_PHID and
SQL_PRIVHISTORY_SELECT_RANGE
- Privhistory.pm, t/005-privhistory.t: add load_by_phid method and get_privhistory function
- Timestamp.pm: add untested functions 'split_tsrange' and 'canonicalize_ts'
0.081 2014-07-21 09:08 CEST
- minor edit to bump version number as PAUSE refuses to accept version 0.080
0.082 2014-07-21 19:44 CEST
- Build.PL: add another dependency to appease CPAN Testers
- bin/*, config/dochazka-rest.psgi, Resource.pm: start working on executable
for starting the server
0.083 2014-07-22 10:18 CEST
- dochazka-rest.psgi: minimize
- Resource.pm: add POD, work on 'resource_exists' (path dispatcher)
- Dispatch.pm: put path dispatch state machine into separate module
0.084 2014-07-22 14:32 CEST
- bin/dochazka-rest: rework into standalone server startup script
- t/301-psgi.t: start testing web server functionality
- REST.pm: add POD re: starting server and authentication, include PSGI
$app coderef in $REST singleton
- config/Dochazka_Config.pm, Resource.pm: add DOCHAZKA_REST_HTML param
defining the HTML displayed when someone accesses the server from a
browser
- Resource.pm: enable HTTP Basic Authorization for authentication, using a
hard-coded dummy username/password pair for now
- Build.PL, t/000-dependencies.t: update dependencies
0.085 2014-07-23 09:12 CEST
- t/000-depends.t: fix bug (wrong number of tests)
- dispatch_Message_en.conf: new file for path dispatch messages
- Dispatch.pm: work on '_get_response'
- Resource.pm: use 'expurgate' method (new in App::CELL::Status 0.194)
- t/301-dispatch.t: rename from 301-psgi.t and add unit tests
0.086 2014-07-23 09:40 CEST
- REST.pm, Dispatch.pm: document request syntax
0.087 2014-07-23 11:16 CEST
- Dochazka_Config.pm: improve default HTML (DOCHAZKA_REST_HTML)
- t/301-dispatch.t: add unit tests
- Dispatch.pm: remove SYNOPSIS so the meat of the POD starts higher up on
the page
- obs.sh: add OBS CI script
0.088 2014-07-23 12:53 CEST
- bin/dochazka-rest: load the local sitedir
- REST.pm: explain current installation/bootstrap process in detail in the
"INSTALLATION" section
0.089 2014-07-23 15:19 CEST
- config/Dochazka_Config.pm: add DOCHAZKA_URI_MAX_LENGTH
- REST.pm: work on "REST INTERFACE" POD
- Dispatch.pm: fix methods so they all set "extraneous_url_part" if
appropriate
- Resource.pm: add uri_too_long method
- t/: rename 301-dispatch.t to 301-resource.t and split off 330-dispatch.t
from it, test uri_too_long in 301-resource.t
0.090 2014-07-23 17:23 CEST
- Employee.pm: add 'expurgate' and 'select_multiple_by_nick' methods
- Dispatch: add '/lookup/employee/nick' request (doesn't quite work yet)
- remove all mentions of 'acleid' and 'aclpriv' from data model;
authorization will take place at the web resource level
0.091 2014-07-23 23:08 CEST
- Employee.pm: finally find and fix problem with 'expurgate'
- t/004-employee.t: add tests for expurgate method
- REST.pm: get rid of $REST singleton: 'init' now acts as a constructor
returning an object
- lots of modifications to all files to make them work without $REST singleton
0.092 2014-07-24 08:12 CEST
- Dispatch: deprecate '_get_response' in favor of 'is_auth' which will be
called from Response.pm->is_authorized
0.093 2014-07-24 08:18 CEST
- Build.PL: require perl 5.012 (RT#97442 -- thanks, Slaven!)
0.094 2014-07-24 10:52 CEST
- bin/: eliminate $REST singleton
- /version now reports whether server is UP or DOWN
0.095 2014-07-24 11:58 CEST
- config/: DOCHAZKA_REST_HTML is now a message, no longer a site param,
and it also newly reports the version number and server status
- dbh.pm: add 'status' routine that reports database server status
- Dispatch.pm: use the new dbh.pm->status routine in '_version'
- Resource.pm: use the new dbh.pm->status routine in 'render_html'
0.096 2014-07-24 14:19 CEST
- Employee.pm: revamp load_by_nick and load_by_eid
so they now work as both instance and class methods
- Schedintvls.pm: fix parentage and use dbh.pm->dbh method
- Shared.pm: spawn no longer sticks dbh into objects
- Resource.pm: use $CELL->msg in render_html
- t/: update tests to current state
0.097 2014-07-24 15:37 CEST
- bin/dochazka-rest: force Plack::Middleware::StackTrace to be used on
_all_ errors
- Resource.pm: make the server display HTML by default, with the
JSON response embedded in the HTML
0.098 2014-07-24 17:49 CEST
- Resource.pm, Dispatch.pm: finished converting to 'is_auth',
eliminated deprecated 'resource_exists' and '_get_response'
routines, added a 'forbidden' request that always triggers a
403
0.099 2014-07-25 14:50 CEST
- config/Dochazka_Config.pm: add DOCHAZKA_URI and DOCHAZKA_DOCUMENTATION_URI
site params
- REST.pm: work on POD
- Dispatch.pm: a flurry of modifications
- Resource.pm: change $self->{'context'} into a hashref, implement a _push
method to make it easy to add to it
- t/: disable all data model tests except 001-init.t, tests can be activated by
setting an environment variable
0.100 2014-07-25 17:19 CEST
- added CSS to our HTML template to enable line wrapping in <pre></pre>
blocks
- Build.PL: require Path::Router
0.101 2014-07-26 23:24 CEST
- Resource.pm, Dispatch.pm: major revamp to implement Path::Router
- Resource.pm, Dispatch.pm, LDAP.pm: authentication
- Dispatch/Employee.pm: get ready for each resource to have its own controller
(dispatch) module
- Employee.pm: authentication
- t/: update tests to current state, add some HTTP tests
0.102 2014-07-27 19:18 CEST
- each major resource will have its own controller, e.g.:
App::Dochazka::REST::Dispatch::Employee
- each controller will inherit from App::Dochazka::REST::Dispatch,
where the 'init' method will also run the 'init' methods in
all of its sub-controllers (taken from the DISPATCH_CONTROLLERS
site param)
- implement separate Path::Router instances for GET, POST, etc.
0.103 2014-07-27 20:42 CEST
- Resource.pm, Dispatch.pm, Dispatch/Employee.pm: separate router accessor and
router initialization routines so there are separate routers for each HTTP
method (just 'GET' and 'POST' for now) -- this is necessary to be able to
handle a GET request for, e.g., '/employee/nick/bud' differently than a
POST request for the same path/resource
0.104 2014-07-27 21:03 CEST
- add GET route /employee/eid/:param
0.105 2014-07-27 22:44 CEST
- move 'authenticate' from Model/Employee.pm to Resource.pm and rename to
'_authenticate')
- Dispatch/Employee.pm: add default GET target
- cleanup
- t/: rename data model tests to 1??-something.t and tweak them so they run
cleanly again
0.106 2014-07-28 10:26 CEST
- cleanup
- put current employee object in request context
- Resource.pm, Dispatch*: send entire context to targets and let them pick out
what they need from it
0.107 2014-07-28 12:16 CEST
- add core dependencies to Build.PL
- clean up test suite
- t/: fix 3?? tests so they don't break builds in OBS
0.108 2014-07-28 13:16 CEST
- Resource.pm: expurgate employee objects (to remove passhash and salt)
before displaying them; if DOCHAZKA_DEBUG environment variable is set,
display the entire context, otherwise display 'entity' only
- Model/Employee.pm: make 'expurgate' method delete 'passhash' and 'salt'
attributes
- Dispatch/Employee.pm: make 'employee/nick/:param' resource return
an array only when the search finds more than one employee
0.109 2014-07-28 14:28 CEST
- bring back 'employee/current' resource
- fix 'link' attribute displayed for each resource by '_get_default' targets
0.110 2014-07-28 16:23 CEST
- working on LDAP authentication
0.111 2014-07-28 21:12 CEST
- work on LDAP authentication
- add a 'privhistory' resource
- start working on 'privhistory/current' and 'privhistory/current/:tsrange'
resources, implement ACL restriction ('active' and 'admin' only)
- t/332-dispatch-privhistory.t: add tests for 'privhistory' resource, including
test of ACL restriction
0.112 2014-07-28 22:25 CEST
- Privhistory.pm: fix bug "when handed a backwards tsrange, get_privhistory
returns 0 records instead of returning DOCHAZKA_DBI_ERR as it should"
- test for the bug
0.113 2014-07-29 09:46 CEST
- REST.pm: work on POD (Request-response cycle)
0.114 2014-07-29 17:51 CEST
- LDAP auth
- privhistory resource
- Model/Employee.pm: implement true/false 'nick_exists' exported function
0.115 2014-07-30 09:08 CEST
- Model/Privhistory.pm: fix bug "DBI errors should not include file and line
number in 'catch' block of 'get_privhistory' routine"
- Model/Employee.pm: add 'eid_exists' exported function; rewrite 'nick_exists';
revise load_by_nick, load_by_employee, and _load methods
- Dispatch/Privhistory.pm: add 'privhistory/nick' and 'privhistory/eid'
resources