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
0.116 2014-07-30 14:19 CEST
- LDAP.pm: get rid of 'Argument "Net::LDAP::LDAP_SUCCESS" isn't numeric'
warning (not clear how to properly use this constant); when searching
for the user's DN, check 'uid', 'cn', and 'email' fields for matches,
instead of just 'uid'
- rename DOCHAZKA_BASIC_AUTH_REALM for clarity and turn it into a site
configuration parameter so it can be overrided
0.117 2014-07-30 15:53 CEST
- Dispatch/Employee.pm: add proper ACL checks to 'employee/nick' and
'employee/eid'
- Dispatch/ACL.pm: put ACL check code into a separate module
- Test.pm: put some common testing code into a separate module
0.118 2014-07-30 17:04 CEST
- resolve two tickets re: "get database handle from parent and eliminate it
from function/method calls"
0.119 2014-07-31 02:25 CEST
- revamp ACL model: ACL profile of resource is now in the 'defaults'
attribute of the route object. ACL check reduced to four lines of
boilerplate code that are included in each target.
0.120 2014-07-31 03:33 CEST
- add 'employee/count' and 'employee/count/:priv' resources
0.121 2014-07-31 09:06 CEST
- Resource.pm: add log messages to _authenticate routine
0.122 2014-07-31 09:27 CEST
- another ACL revamp: do the ACL check in Resource.pm->forbidden, eliminate
boilerplate code in targets
0.123 2014-07-31 15:23 CEST
- allow site admin to set nick-to-LDAP mapping (DOCHAZKA_LDAP_NICK_MAPPING)
0.124 2014-07-31 15:38 CEST
- resolve ticket "make LDAP auth switchable so unit testing scripts can
disable it" by adding META_DOCHAZKA_UNIT_TESTING meta param and testing
for it in Resource.pm
- LDAP.pm now exports the ldap_exists and ldap_auth functions
0.125 2014-07-31 16:33 CEST
- t/000-depends.t: add dependency on Params::Validate
- Build.PL: build_require Test::Fatal, require Params::Validate
- Model/Activity.pm: add parameter validation code
0.126 2014-08-01 13:23 CEST
- Model/Activity.pm: load_by_code, load_by_aid, _load now use "best practices"
established in Model/Employee.pm
- start adding parameter validation code using Param::Validate
- start adding unit tests for the new parameter validation code
0.127 2014-08-01 17:07 CEST
- cleanup, validate parameters, add some tests that call functions with
invalid parameters
0.128 2014-08-01 18:21 CEST
- Model/Activity.pm, Model/Shared.pm: moved '_load' to shared so code can
be re-used
0.129 2014-08-01 18:54 CEST
- Model/Employee.pm: use the new Shared.pm->load routine
- Model/Activity.pm, Model/Employee.pm: eliminate deprecated _load routines
- t/: update tests to current state
0.130 2014-08-01 19:09 CEST
- Model/Schedule.pm, Model/Shared.pm: use shared 'load' routine for schedules
- t/: update tests to current state
0.131 2014-08-02 16:34 CEST
- Shared.pm: modify 'cud' and 'load' so they take named parameters, add
parameter validation, add a 'make_accessor' routine
- t/004-shared-paramvalid.t: elicit lots of fatal errors from Model/Shared.pm
- Model/: remove all database ping checks (replaced by a single line in
dbh.pm), adapt all calls to 'cud' and 'load', replace a lot of spaghetti code
with boilerplate
- t/: adapt tests to current state
0.132 2014-08-02 23:51 CEST
- dynamically generate routers and default targets from site configuration in
dispatch_GET_Config.pm (WIP)
0.133 2014-08-04 10:29 CEST
- dynamic generation of resources now works, in a global sense, but some
individual resources are broken
0.134 2014-08-04 12:12 CEST
- REST.pm: enable setting of 'debug_mode' in init routine
- Model/Employee.pm: 'select_multiple_by_nick' always return payload with
result_set and search_key, even when result_set is empty
- Dispatch/Employee.pm: simplify target routines
- Dispatch/Shared.pm: fix bug in make_get_default that was causing empty
resource list when generating HTTP request via Plack::Test
- add some calls to $log->debug
- Test.pm: add 'status_from_json' method to facilitate testing of HTTP
response
- t/330-dispatch.t: add a bunch of tests that examine the HTTP responses
returned when various resources are requested
0.135 2014-08-04 15:55 CEST
- t/330-dispatch.t: fill in missing tests of HTTP response content
- t/331-dispatch-employee.t: fill in missing tests of HTTP response content
- t/332-dispatch-privhistory.t: fill in missing tests of HTTP response content
- Dispatch/Privhistory.t: refactor targets so they make more sense
- Model/Privhistory.t: work on get_privhistory routine
- t/105-privhistory.t: update to reflect current code