Clean up some stuff prior to release. [c2175048a3a1] [blah, qbase, qtip, tip]
Merge with default [afdfbc98f906] [github/master, qparent]
Remove the mp3 processor from core Thingfish, broken out into a separate gem: thingfish-processor-mp3. [f81301422584]
Add etagging and content disposition headers to related resources requested by name. [b95907939c6a]
Add checksums to related resources as they are created. [3d0c0c109e53]
Remove related resources before the primary resource, so metastore backends that have associations can function as intended. [db4395d8c406]
Add a Content-Disposition with a filename hint, if the fetched object contains a title. [d0c0ca27b0f5]
Various alterations to ease integration with javascript REST libraries. - Return altered metadata content when POSTing, PUTing, or DELETEing resource metadata. - Make related resource keys accept the 'dash' character. - Include the oid of the resource as part of the resource metadata, for libraries that expect the object ID to be part of the object. Strip it back out when saving/merging. - Fix the metadata PUT path, so database-backed models can distinguish between a new row that needs inserting, and an existing one that needs updating. - Silently ignore operational metadata in PUT and POST updates, rather than throwing FORBIDDEN, which would require the client to strip those pairs before sending. FORBIDDEN is still thrown on explicit operational value modification attempts. [be74684c7084]
Ignore .paw files [81d20208b3f0]
Update my gem signing cert [6cc4136411d9]
Added tag v0.5.0.pre20161103181816 for changeset a5f9bfaa7f2c [7391dcefbba4]
Update the manifest, bump the gemspec [a5f9bfaa7f2c] [v0.5.0.pre20161103181816]
Include the oid of the resource as part of the metadata hash. [66a402580682]
Sanity check extracted metadata before attempting to store the resource. [6c9c98cdd472]
Add etag support for browser cached resources. Metadata must contain a checksum, generated by a processor (such as the sha256 one that comes bundled with Thingfish.) [3614874f8eac]
Add an ACL hook intended for child handlers to make access decisions based on arbitrary metadata content. [6ac636ee205e]
Uncomment and enable metadata ordering in the memory metastore [5d5ba303a60d]
Processors shouldn't run for requests under the metadata URI space. [a4229d8f9d47]
Ignore the coverage/ directory [a08dd251e71f]
Add REST endpoints for fetching related resources.
Fix the checksum processor for IOs without a path. [5d2c2fbb2ce2]
Update build files [7a262deea0d0]
Add a simple sha256 checksum processor. [3711856bc184]
Allow disabling the ZMQ socket. Fix a typo from last commit. Add a test event consumer. [d1c0d304b1cf]
Small fixes. - Fix related resource test (ensure 'parent' resource exists first) - Use the required metastore API when removing related resources. [4841db831f81]
Small fixes. - Only add the URI path separator if it is missing (mongrel conf might already include it) - Don't overshadow the mp3 metadata when generating album art titles. [4912822d28a9]
Bump development default ruby version, rename rvm gems file. [e4e32557a542]
Set uploadaddress for related resources too [40b1d097b450]
Bump Ruby version to 2.2 [f6c8229bda74]
Disambiguate all the methods which operate on OIDs. - Rename keys, each_key, and each_uuid to oids, each_oid, and each_oid, respectively. - Extract datastore specification into a shared behavior - Make the encoding of all of the test constant data ASCII-8BIT to better emulate what it will be coming from Mongrel2. [9a84ed84da51]
Extract metastore specs into a shared behavior. This also fixes the name of the memory metastore to follow the new naming convention. [ef01b34af2d1]
Add support for `sendfile` extended Mongrel2 responses. [dbd962101611]
Remove the old plugins [17ccaca5ab1d]
thingfishd -> thingfish [b6c2c468cb7f]
Merged with Mahlon's changes from Bitbucket. [76899dd87399]
Add support for async upload/sendfile download [b94cb96e64e4]
Break out spec helpers into a reusable lib [a4ba8d2a7097]
Add some more stuff to the ignorefile [e4d2afd49818]
Clean out historical artifacts, mostly pieces from the pre-strelka conversion. - Rename the plugins directory, these should be migrated to individual gems and then removed. - Remove the manual – we'll likely base a new version on this one, but it is currently inaccurate and misleading, so lets resurrect
Added tag pre-strelka-cleanup for changeset f935efac757c [6514860922e2]
Misc cleanups, dependency updates, get tests passing again. [f935efac757c] [pre-strelka-cleanup]
Require StringIO for testing, move coverage config to separate file. [1f9edecf087d]
Omit related resources from metastore searches by default [7252bdb1c3d0]
Bump strelka dependency [63400b456711]
Event socket changes for rbczmq/to make testing easier. - Use the rbczmq API for the event socket. - Split out the event socket setup into a public method - Call the setup by default from run so it doesn't get touched by tests. - Call setup_event_socket from tests that explicitly test events - Make tests use an ephemeral port to avoid collision with a real event socket on the same machine. [ec3287349e77]
Fixed up metadata handling to incorporate related resources and other processor-generated stuff. [d9c28ba32936]
Checkpoint of work on Processors [0af5dc420012]
Checkpoint commit of Wednesday morning's CommitPDX work [cb265e4abbff]
Add initial implementation of processors [ce172208b523]
Use released strelka 0.7 [733677acadb6]
Several small fixes. [7ec3313d645b]
Fix comment [8803da8d527b]
Use the yield matcher for transactional methods [7adf935344eb]
Enable random spec ordering, focus flag [c02b4f5fb7d5]
Implement PUT /<uuid>/metadata; add transactional blocks to the stores. [5ef34d8e9a86]
Implemented DELETE for the metadata API. [07a46ba8ad11]
Implement a few more metadata API methods. - POST /<uuid>/metadata/<key> - PUT /<uuid>/metadata/<key> - Make error messages more consistent. - Split out testing constants into a seperate file. [a678e3839ee1]
Don't include integration tests in the gem [3d54bb8f2282]
Ignore integration test dir until the dataset can be pared down [2ec0c20e7758]
Adding some experimental code [b6508788c587]
Add x-thingfish header metadata, added 'created' to default metadata. [c89763bdfffb]
Add Metastore#keys, each_key, and search. [8b98cbf62af7]
Add some details of search API [ad1eb3ecaf4a]
Move the server info endpoint to /serverinfo, implement a simple GET /. [b2ff85c9b84d]
Add simplisitic 'server' info, so eventual clients can easily tell what it is they are talking to. [34808799967f]
Protect some basic metadata that's necessary for the service. [bfee98fe514f]
Add GET /<uuid>/metadata, GET /<uuid>/metadata/<key>, POST /<uuid>/metadata [10a32ada134d]
Test idempotence of DELETE /<uuid> [12f781ed07f5]
Implement DELETE /<uuid> [60bb9cfdc1c7]
Update dependencies. [82fa6560f215]
Implemented PUT /«uuid», fixed case-sensitivity for UUIDs. [b1b9ffc2b63f]
Update Rakefile for newer versions of Hoe [2cc02ae19f7d]
Checkpoint of the morning's work: add PUT/replace [ab0a538d2ce3]
Add an example runtime directory [2966effaa1bb]
First simplest-thing implementation. [ea216a39e72d]
Checkpoint of initial work [c9b1044f2f68]
Rewritten to use Strelka [33bbf501e9b4]
Update for Ruby 1.9.3, rvm, and hoe-deveiate. [fe39f17578a2]
Make the checkin task run the specs first. [71fe229cc53c]
Converted to Hoe, moved web interface resources under the datadir. [853f1b58caf4]
More RSpec2 conversion work – all core specs passing, work on plugins to come. [30f6ed6263f0]
Snapshot of conversion to RSpec 2 [c6e3a86932d6]
Fixes for Ruby 1.9.2 [d546cf3c656a]
Require/space cleanup. [cd5286800471]
Preparing for work on the semantic metastore.
Updates for 1.9.1,
type of 'thingfish:Asset' - dcterms attributes are given the correct qname if none is specified. - Added copies of the core vocabularies to the resources dir
:Client, sequel metastore, etc.).
Build system fixes, VCS rev change in ThingFish::Client [84fec3d6440b]
Build updates, header cleanup, start of work on the Semantic Metastore.
Merge from a5ef839358ca. [7823e89cc2f9]
Housekeeping commit! * Remove the Subversion specific constants from all files, and replace with a more generic 'VCS' alternative. * Bump the gem dependency versions from TF 0.2.0 to TF 0.3.0. * ThingFish was originally conceived to solve some of the asset management problems we anticipated that we'd face at LAIKA studios. We never were blessed to work on it during studio hours, however. Everything you see here (with the exception of the mailing list handler/filter) was outside of studio hours, on our own time. While we're still hopeful that there will be an opportunity to work on ThingFish during regular hours, putting the entire thing under LAIKA's umbrella was premature and inaccurate. The copyright has been changed to reflect this reality. [8739f873ec58]
Initial version of the Semantic store, forked from the RDF simple store. [a5ef839358ca]
Fixed failing test by aliasing find_by_exact_properties to find_by_matching_properties for case-insensitivity, which I can't figure out how to do without a filter in SPARQL. [8ce3df3253ad]
Build system update and fixes for running under Ruby 1.9.1. [061e97d09417]
Improved search handler, reverted changes to sqlite and sequel metastores. * Modified search handler and metastores to optimize for the common case of returning full metadata for found resources. * Backed out the changes to the sequel and sqlite metastores, as we found ourselves going down the path to EAV madness. * Updated the HTML logger to work with newer versions of the webkit- rspec runner. * Modified the image filter to use namespaced properties. [ee3f297412cd]
Updated the build system [c48847eba9e1]
Merging the simple-rdf-store branch [36a597df19d7]
Rearranged the tf_plugin tool parts to function from an installed library or gem. * Updated the build system. * Moved plugin templates from plugins/.skel to data/thingfish/plugin_templates. * Cleaned up and updated the templates * Copied the shared behaviors and spec helpers into the template directory – we should probably just move at least the shared behaviors into the lib/thingfish/ directory so they can be loaded from an installed ThingFish gem/library. [bd0d0315bfe1]
Oops, excluded too much with the previous .hgignore. [e909ba234109]
Started addition of limit, offset, and order to search and metastore. * Updated to UUIDTools 2.0.x * Merged improvements to the manual-builder tasks/libraries back from Treequel and Redleaf. * Sqlite and Sequel metastores still unconverted. [7375c08a5d92]
Undoing subrepo stuff, as it doesn't work quite yet. [c491ad707540]
Ignoring customized etc/thingfish.conf files [047647b4edf2]
update tags [b1d7e1905b36]
Committing backout [804816fe3fcb]
Backed out changeset 966b00900a8c, which I should have merged to jqui-html-filter instead. [603f8a6061b9]
Merged 397:966b00900a8c, which I accidentally merged to default instead of the jqui-html-filter branch [f9f6327df568] <jqui-html-filter>
Changing rake subrepo to point to deveiate's anonymous repo [ad5c73417c52]
Syncing old pre-conversion stuff. [966b00900a8c]
Merged 395:b1d7e1905b36 from default [f8b5262fc661] <jqui-html-filter>
Started conversion of Rakefile.local stuff to use FileLists instead of Pathname arrays. [898d87b7f4e8]
Add the task object/spec framework. [b444580d9495] <background_tasks>
Checkpoint of background worker thread stuff. [de24065a0012] <background_tasks>
Add .exr extension to the default mime list. [5d0d28a16373]
Checkpoint: * Basic layout coming together. * Started the initial DAM front-end functionality. [2b37e0407a66] <jqui-html-filter>
Merged [log:thingfish/trunk@649-662 changes from trunk]. [aa350ba9cc63] <ruby-191-fixes>
Removed old rake task libraries. [6c53891f34f6]
Merging fixes from the [source:thingfish/branches/ruby-191-fixes Ruby 1.9.1 fixes branch]: * Converted to the devEiate build system * Fixed a bunch of each/#each_key uses that resulted in infinite loops under 1.9.1 * Use the configured Lockfile options in the filesystem filestore. * Added svn keywords to a bunch of files that were missing 'em. * Lots of Symbol vs. String fixes for instance_methods/#respond_to?/etc. * Set the encoding on files that have non-iso-latin1 characters * Moved benchmarking from the misc/rake/lib directory to a proper library file. * Fix for class.name == nil under 1.9.1 for anonymous classes * Moved bin/thingfishd functionality into ThingFish::Daemon.run [a863c7e4d7f9]
Make templated error response conditional on template being found [8745d5cfe5a7]
Merged from [log:thingfish/trunk@653:664 trunk] (and [log:thingfish/branches/ruby-191-fixes@643:663] the Ruby 1.9.1 fixes branch] via trunk). [cb450f13bd7d] <jqui-html-filter>
Adding some more libraries, started basic UI structure. [b4ae825e5919] <jqui-html-filter>
Updated jQuery to 1.3.2. [d8688c5bb06c]
Converted metadata keys generated by filters to be prefixed with the filter name and a colon instead of an underscore. This will help when we add namespaces to the RDF metastore, as we can use the prefix to map values to namespaced predicates. WARNING: if you have any current metadata, you'll need to convert them to the new format. Something like: PREFIXES = %w[ mp3 exif rfc822 image ] PREFIX_RE = Regexp.new( '^(' + PREFIXES.join('|') + ')_' ) upgraded_store = ThingFish::Metastore.create( 'backend', 'newstore' ) old_metastore.migrate do |uuid, properties| properties.keys.each do |key| if newkey = key.sub( PREFIX_RE, “\1:” ) properties[ newkey ] = properties.delete( key ) end end upgraded_store.set_properties( uuid, properties ) end [7476b4cdfe7c]
Update script links. [ddfd1985de15] <jqui-html-filter>
Adding jQuery UI files. [35b3605b3262] <jqui-html-filter>
643 at thingfish/trunk:648 trunk]. * Added svn:keywords to a bunch of stuff. [01e297a8b4ec] <ruby-191-fixes>
Checkpoint commit of initial RDF metastore work. [6dc9d80b84fa] <simple-rdf-store>
Factor metadata key pattern out into a constant [72b82591c44f]
:Config#create_configured_filters – send an empty options hash instead of nil if no options were specified. [414ee225637a]
Checkpoint commit [b62aa0275fb8] <ruby-191-fixes>
Removing miscommitted empty example [abc22d861373]
Added error-handling to the connection manager's process routine and the daemon's connection handler (fixes #57) [499f3464d34a]
Default key for the simplemetadata handler should be a symbol, not a string. [941dcd74346c]
Merging from [log:thingfish/releases/0.3.0@637 release 0.3.0]. [08a9b9db24d7]
Version bump to 0.3.0. [51f57cc59523] [0.3.0]
Generate the metaval table's composite primary key correctly. [4d13fa14f35f]
Add the ability to customize log formats via the config file, if you are doing something fancy or just don't like the way it looks. [e70badcddab1]
:Config. ThingFish::Daemon is still responsible for handler on_startup action, but the config is responsible mapping URIs to handlers. [53b987c40d2d]
Work on the API guided tour and the “Writing Handlers” manual pages [10a71085265f]
Fixing weird indent whitespace [4016e7acb7a6]
:FilesystemFileStore delete comment. * Add the 'Writing A FileStore' page to the manual. This closes #10. * Add additional outline pieces for the 'API guided tour' manual page. [5a6dd88e2df1]
Merge of the last 5 months of [log:thingfish/branches/evented- backend@619 work]. Among the main features in this merge: * Removal of the Mongrel dependency, in favor of our own ConnectionManager and Handler dispatch strategy. (This was after heavy exploration of rack, ebb, rev, io-reactor, and eventmachine.) * The status handler has been removed. (it subclassed a Mongrel handler) * DefaultHandler now falls back to use global 'resource_dir' configuration * Use symbols for methods with Request.http_method() * Startup actions for filestores and metastores renamed to 'on_startup' to denote event instead of action * Documentation updates (more on the way) * Config file format has changed for handlers, see example files for details * Added connection-level profiling * Added connection pipelining (woo woo!) * Updated 'ab' patches for latest binaries (benchmarking) [0ddb3c88c300]
Checkpointing. [352883574580] <evented-backend>
Checkpoint. We are pretty close now to the glorious and gigantic merge to trunk. [7cbc93378aba] <evented-backend>
Checkpoint! [42ab1a651328] <evented-backend>
checkpoint! [32afa8ba90bb] <evented-backend>
Checkpoint. [f2305c593079] <evented-backend>
Checkpoint. Feelin' fine. [bbd248e9180b] <evented-backend>
Whitespace cleanup and checkpoint commit of IO:Reactor work [490bfe11ac41] <evented-backend>
Checkpointy! [98df659ee00e] <evented-backend>
Updated LICENSE location in the comment headers. [242cbf37e15b] <rack-conversion>
Limit the sequel connection pool to a single connection. The default
Checkpoint of yesterday's work [2107735b4472] <rack-conversion>
Turning coverage back on for cruise build. [1f42f60bec96]
:Request for anomalies in Ebb: - env is never populated - the env headers don't get the HTTP_ prefix like all other HTTP headers * Trimmed out some duplicated examples in the spec for ThingFish::Request * Fixed another `.parent.parent` issue in the metastore_behavior lib [e50585fa078a] <rack-conversion>
Checkpoint commit of Ebb conversion work. [dea7cc145d21] <rack-conversion>
643 at thingfish/trunk:592 changes] from trunk. [acf6386c34d1] <rack-conversion>
Fix manual-generation task to work with RDoc 2.0 changes in Darkfish [ea8ce278b4e6] <rack-conversion>
Fix the cruisecontrol build to actually fail when specs fail [1f2f0906d64c] <rack-conversion>
Turned off debugging output in the Sequel metastore spec [360b2cc25e98]
Fixed parent.parent issue in spec require BEGIN block [4ec8e18bf73a]
Fixes for the manual when run without libtidy installed [4df21c450286]
Fixes for Sequel >= 2.1.x; older versions no longer supported [9ad98af4e6f7]
Fix manual-generation task to work with RDoc 2.0 changes in Darkfish [77577ea77b69]
Fix the cruisecontrol build to actually fail when specs fail [6b465eb9e298]
Checkpoint of ebb conversion work. [d53eb2da76a4] <rack-conversion>
Checkpoint merge of changes from [log:thingfish/trunk@560 trunk]. [2e4a329ef3b0] <rack-conversion>
Checkpointing work on Ebb conversion [1f6e6665c6bc] <rack-conversion>
Branching for Rack explorations and potential removal (overhaul!) of the ThingFish HTTP backend. [89c59267c056] <rack-conversion>
- Updated to generate and append thumbnails. - Refactored the calculation of the supported formats. * MP3 plugin: - Modified to accept 'audio/mpg' and 'audio/mp3' as well as 'audio/mpeg'. - Added some diagnostic logging for album-art extraction * Fixed a bug in the formupload handler's template when uploaded files don't have an associated title. * Wrapped Rakefile tasklib loading in better diagnostics * Renamed the 'rdoc' tasklib to 'docs' and moved the manual task to that library to eliminate the dependency on 'uv' for non-manual- related tasks. * Added coverage to the spec for ThingFish::Request and made check_body_ios check appended resource IOs as well as entity bodies. * Added a 'bench' shortcut for 'benchmarks:all' to the benchmark tasklib * Fixed a typo in ThingFish::Client API docs. * Changed the way recursion works in ThingFish::Request#yield_each_resource – no longer (needs) uses Enumerable::Enumerator, and eliminated newly-appended resources from sometimes being yielded back to the block. Thanks to Jeremiah Chase for pairing with me while tracking this down. [7bed6a01186a]
:Daemon#purge_related_resources() to allow for selective deleting. * Add some comments to the metastore intersect_each_tuple() method. [71e5c3b29b37]
:Request API. * Restructure ThingFish::Request's public interface to request bodies. * Update the ApacheBench patch (PUT and DELETE support) for Apache 2.2.9. * “Rollback” file storage on the event of a metadata store error. [25df74d9e214]
clobber_manual task that was breaking the CI build. * Removed the deprecated 'autorequire' from the gemspec [762647eef7b7]
Merged ThingFish “engine” work done in the [log:thingfish/branches/mp3-jukebox@551:559 mp3-jukebox branch]. [bf84a019bbc0]
:Request#get_body_and_metadata for ThingFish::Request#entity_bodies as the public interface to all top- level bodies in a given request. [fc93d0894da2] <mp3-jukebox>
Don't bother trying to find UUIDs when there are no query arguments. [80c81531c0e0] <mp3-jukebox>
Adding a little diagnostics to the rask tasklib loader. [2d9dc5b41499]
Removing superfluous (and broken) clobber_manual task [02892a1611c2]
oops) [702a67a7d9b2] <mp3-jukebox>
:Request.authed_user, so we can start using it for the mp3 jukebox handler. * Ensure errors are logged for filters that don't implement required API. * Documentation updates. [a6d5a8101c42] <mp3-jukebox>
- Always send 'password' string to backend - Force values to be stringified * SimpleSearch/SimpleMetadata handlers no longer explicitly require a simplemetastore backend – and advanced one is fine, as long as it implements the SimpleMetastore API. [3a013cbb2761] <mp3-jukebox>
:FIlesystemFileStore caching of sizes to help with startup speed when quotas are enabled. * Add a startup() method to Metastore and FileStore parent classes, so plugins have the opportunity to do maintenance tasks after effective uid is set. [2b50a17c1a63]
Removed accidentally-committed debugging in the manual task [47c429d60e48]
Merged in some stuff from Arrow's manual task. [96959e7d593c]
Removed experimental cruft from the benchmark graphing task. [7fd226ab5c86]
Re-integrated Gruff graphing into the build in an optional task 'benchmarks:graphs'. Closes #24. [1708d5d8ab17]
:Datapoint class. [fa269ff00476]
source:thingfish/trunkplugins/thingfish-handler- mailinglists/lib/thingfish/handler/mailinglists.rb source:thingfish/trunkplugins/thingfish-handler- mailinglists/spec/thingfish/handler/mailinglists_spec.rb * factor out message counting and last post date calculation into helper methods * hook up the /listname action, which returns a Hash of count and last post date [484d063ee4e7]
source:thingfish/trunkplugins/thingfish-handler-mailinglists/LICENSE source:thingfish/trunkplugins/thingfish-handler- mailinglists/Rakefile source:thingfish/trunkplugins/thingfish- handler-mailinglists/README * Add boilerplate for new plugin source:thingfish/trunkplugins/thingfish-handler- mailinglists/lib/thingfish/handler/mailinglists.rb source:thingfish/trunkplugins/thingfish-handler- mailinglists/spec/thingfish/handler/mailinglists_spec.rb * Add new mailing lists handler that can: * list the lists it knows about * count messages in a list * give the date of the most recent post to a list source:thingfish/trunkplugins/thingfish-metastore- rdf/spec/thingfish/metastore/rdf_spec.rb * Make RDF metastore specs pending if Redland is not installed source:thingfish/trunkplugins/thingfish-metastore- marshalled/lib/thingfish/metastore/marshalled.rb * Ensure that PStore is created with a plain string instead of a Pathname source:thingfish/trunkplugins/thingfish-filestore- filesystem/lib/thingfish/filestore/filesystem.rb * Skip checking total filestore size if the maxsize is not set. [452feef1d169]
//issues.apache.org/bugzilla/show_bug.cgi?id=44851 [8cdc693667e1]
source:thingfish/trunk/bin/ml_archiver.rb * rename MLArchiver class to DefaultArchiver * add available_archivers registry complete with attr_reader * add inherited hook to maintain archiver registry * add archiver_names and get_archiver methods to facilitate looking archivers up by name * add -a/–archiver flag to command line options to allow user to specify desired archiver * add list_name metadatum * add method to DefaultParser to return the delivered-to header as the list name * add EZMLM-specific archiver that knows how to manipulate the delivered-to header to parse out the list name * altered runner to use user-specified archiver to archive messages * removed svn:mime-type property so we can diff this file now [d6c26ce026c0]
:MetaStore to support migration between simple stores: - ThingFish::MetaStore#migrate_from - ThingFish::MetaStore#migrate - ThingFish::MetaStore#each_resource - ThingFish::MetaStore#dump_store - ThingFish::MetaStore#load_store - ThingFish::MetaStore#clear * Generalized the way the RDF MetaStore was converting nodes to plain keys and/or URIs. * Made the `start` script take an optional config file argument. Thanks to Sho for the suggestion. [21ed3c7656d3]
:SequelMetaStore#get_all_property_values method under FreeBSD. Still not sure why this happens, but the fix should work everywhere.
Oops. Fixing the build. Make Gruff output optional. [110d8e34cf52]
Checkpoint of some more benchmark task work [a0ad807afbce]
Committing more work on the benchmark Rake task. It's outputting stats via `ab` currently, but since ab can't do PUT or DELETE requests it's of limited usefulness. We're investigating replacing the actual core with `httperf` or Apache's `flood`. [35ce51fadcda]
Adding a new benchmark rake task. [84852b0b5855]
:MetaStore#dump_store for both debugging the contents of a store and for future migration tools. [a590601e3098]
Added some CSS fixes with Mahlon. Glasses girl is cute. [3fb059e28c9c]
:MetaStore APIs: find_by_exact_properties() –> find_exact_uuids() find_by_matching_properties() –> find_matching_uuids() Metastores can implement either one. You can inherit the intersect logic and use find_*_uuids(), or completely override find_by_*_properties() if your metastore has a more robust way to gather UUIDs. This removes all the duplicate logic in the current metastores. * Move a good portion of the SQL into constants, in the SQLite3 metastore. * Michael is naughty too. * Minor typo correction in Filter template. * Remove errant space in the 'start' script. * Correct my destruction of the RDF metastore spike. Also keep a commented SQLite backend storage example. Add example SparQL search. [6b0c4a221ede]
Michael and I worked on the mail archiver script and the slightly inappropriately named unarchiver script. I say that because the unarchiver is actually just a test script to create a Maildir(tm) [24b084f3eb97]
ThingFish::Loggable#log_debug * Add profiling support to ruby client library (and command line client.) [0ba43f5a8589]
:PROCESS_TIME, which is probably a sane default. [3160122817ff]
:Config directory creation methods. * Update for the Mongrel monkeypatch. EEeeeeeKkk eek Eeeee. [246f51f0e269]
:Config#spooldir_path to return the fully-qualified path to the spool directory, relative to the datadir if the spooldir is a relative path. * Made all plugins, handlers, etc. use the datadir and spooldir * Duplicate IO before yielding it in ThingFish::Request#each_body to prevent changes to it in the filters from affecting other systems' use of it. [a0c2287d7e18]
This is the big “make sure ThingFish works out of the box” commit. Thanks to Sho Fukamachi <sho.fukamachi@gmail.com> for his excellent suggestions. * Normalize plugin Rakefile and README content, and ensure they reflect reality. * Make sure that the default 'thingfish.conf' file uses the minimal plugin set that most people would find useful while experimenting/evaluating ThingFish. * Moved the -really- minimal config example to 'etc/thingfish.conf- minimal', for reference. * Added a 'QUICKSTART' document to aid with initial setup, and steer people to the Manual for more advanced usage. * Fix for the /search handler javascript, for the case where the JSON plugin is not present. (Fallsthrough to HTML view.) * Removed conflicting LICENSE file. Whoops. * Removed webgen from the list of default dependencies. * Added some command-line blurbs for the intended use of the 'start' script. * Fixed a bug in ThingFish::Request#query_args – use the uri accessor instead of the instance variable, which in some cases was uninitialized. [4464511ea30b]
:TIFF::Orientation objects before storing them into the metastore. * Stub tests for content-disposition Time.rfc822, so parsing the date string doesn't change to the timezone of the person running the test. Closes #40. [7ebe08e0eabe]
37. * Force metadata values to strings for equality/regexp comparisons in ThingFish::MemoryMetastore. Fixes bug:36. * Automatically create the spooldir if it doesn't already exist during multipart mime parsing. Closes issue:34. [7f62c8822c7a]
thingfish--[name] * Updated the tf_plugin convenience utility to reflect the above. [077c72a520bc]
Fixed up some broken CSS from the merge, started converting manual to the new format [8c63f19e05c6]
395 at thingfish/branches/look-and-feel:475 the look-and- feel branch]. * Added 'info' command to the Perl client. * Use server introspection to find the default handler location in the Perl client. * Updated to most recent version of the JQuery MultiFile upload plugin. [8d849def47fd]
:Client and ThingFish::Resource. [0142e71c5931]
Merged [log:thingfish/trunk@473:475] in preparation for merge to [source:thingfish/trunk]! [a0482c04baa1] <look-and-feel>
:Client. * Improved server info display for the [source: bin/thinfish command- line client]. [6f7b38a6d26a]
:Resource objects instead of UUID strings. * Add reset_logger() helper to specs. [1cc3548b5210]
:Filter#accept? instead of string equality to decide whether it should attempt extraction or not. * Made the image filter ignore more stuff, and use ThingFish::Filter#accept? for its determination of what should be done for each body too. * Merged RDF metastore work from the rdfms-work branch. * Wrapped the RDF metastore spec in a conditional so it won't run and throw errors if you don't have Redland-RDF installed. * A bit more work on the “Writing Handlers” section of the tutorial. * Updated the presentation with new stuff added for a presentation to R&D. * Added footnote CSS to the default stylesheet. [f524369184a2] <look-and-feel>
:Filter. * Added missing manual-generation default filter library. [ae9cf2103440] <look-and-feel>
643 at thingfish/trunk:468]. * Replaced the Rote manual-generation system with a custom one, as Rote's gratuitous monkey-patching stopped working under Rake 0.8.x. * Added the nascent RDF metastore. This will add a dependency on the Redland RDF libraries to the trunk when the branch is merged, but we can make the spec skip its tests if the require fails. [c713d4697aab] <look-and-feel>
Merged some Rakefile helper functions from other projects. [3cd9ebd2bb05]
Oops. Accidentally turned off coverage checks in the last commit. Re-enabled. [20ad5773893c]
fix_keywords task from above. [4aa573127d97]
:Daemon, which involved factoring out the request/response-generation code into a separate method and changing the monkeypatch to follow suit. * Implemented log formatting, with the added benefit of making the RSpec output include pretty-formatted logs if run under TextMate. * Made the 'svn:ci' task update with –ignore-externals turned on to avoid being able to commit using it if there's a problem with an external. [d465c8874775]
:VERSION to 0.2.0. * Started work on a new and improved bin/thingfish. [bc47e88b7f9d]
Merged [log:thingfish/trunk@440:450]. [7443a28166fd] <look-and-feel>
:Request#body accessors, instead of delegating to Mongrel [d214e697d962]
:Request#content_type() added for convenience. * Test coverage additions for metastore behavior. [44ad089d709f]
Reorganizing specs before new work on the client. [8d3a0407a60a]
Merged [log:thingfish/trunk@435:438]. [9acf75548f59] <look-and-feel>
Checkpointing manual work [c94a8ea6cc7a] <look-and-feel>
Merged [log:thingfish/trunk@431:433]. [a4e61fd50590] <look-and-feel>
Checkpoint of work on the manual and some structure changes for the index page [c7a05a229ccd] <look-and-feel>
has_uuid?(), set_properties(), and added to all current metastores. * Currently just does PUT to /metadata/uuid/key and /metadata/uuid. More to come. [8d72b4b93a6e]
Merged [log:thingfish/trunk@415:429]. [de8e547fe060] <look-and-feel>
- merged introduction section into the top-level index page and removed that section - removed the two empty sections - renumbered the other sections [9cdbf5fce668] <look-and-feel>
Committing the initial version of the `tf_plugin` utility for creating new plugins. [6a296d337fc9] <look-and-feel>
Removed debugging from the rote filters in the :manual task. [25a9760520b3] <look-and-feel>
419. * Inlined examples for handler tutorial. * More page-title conversion [7f7de261d056] <look-and-feel>
Another checkpoint commit. * Got auto-build of navigation working. * Cleaned up the CSS quite a bit, integrated some manual-specific structure. * Got the `example` macro working with syntax highlighting, etc. * Merged resources directory with `var/www/static`. Caveats: * Lots of pages still need cleanup * Paths in the auto-navigation aren't as dynamic as I'd like; they currently assume the manual's root is under `/manual` on the server. * No implementation of some of the other macros we'll need to replace from the webgen system. [c5a746f12fa4] <look-and-feel>
Checkpoint of work on conversion from webgen -> rote for manual generation [de937d9f1719] <look-and-feel>
:RemoteInstaller#install, which was broken by API changes in RubyGems 1.0.0. Will upstream this once I figure out how to write a test that expresses the failure. * Made logging for ThingFish::Client's spec more consistent with other specs. [16e4aa33750b]
Merge [log:thingfish/trunk@395:413]. [1cb0226b6da6] <look-and-feel>
Merged installer monkeypatch for RubyGems >= 1.0.0 [a188968c965b] <look-and-feel>
Adding some more manual content for Handlers. [ec2ad781834f]
Fixed calling convention in comment code. [a08e14350a02]
Added some more stuff to the Handlers section of the Hacker's Guide [8f53ed6267e1]
:MetaStore class. Closes #3. Index: lib/thingfish/metastore.rb
=================================================================== —
lib/thingfish/metastore.rb (revision 405) +++ lib/thingfish/metastore.rb
(working copy) @@ -51,6 +51,12 @@ # Removes all properties associated with
the given uuid
. # [get_all_property_keys()
] #
Return an Array of all property keys in the store. +#
[get_all_property_values()
] +# Return a uniquified Array of
all values in the metastore for the specified key
. +#
[find_by_exact_property()
] +# Return an array of uuids whose
metadata matched the criteria +# specified by hash
. The
criteria should be key-value pairs which describe +# exact metadata pairs.
# class ThingFish::MetaStore include PluginFactory, [6c2076b93a17]
Added a 'spec-only' mode to the coverage tasks [ade67b04ca3d]
Added some default style to tables. [c66c4c01f259] <look-and-feel>
:DefaultHandler * Remove the TODO file, moving its contents to Trac tickets. [812155e15d5e]
Checkpoint commit [f72f171230f4] <look-and-feel>
:Handler, and just propagated. The filters don't currently use it - maybe later. * Tune down the verbosity on StaticHandler logging. [7e8851a0cd93]
Fixed some coverage problems. [4454eb6df219]
fix_indent a little more useful, added an ignore-file list for files with here-docs, etc. * Made the output of the inspect handler less overwhelmingly green. * Fixed some indentation problems uncovered by style:fix_indent. [1fa9b983f4ca]
Oops. Adding the new main template. [3390361078f1]
- Added a 'style' namespace that will be used for style checks of code pending committal. - Updated the development dependencies. Still missing the filter dependencies, but I hope we can work out how to skip filter tests which fail because of dependency issues. - Added an inline monkeypatch for RSpec's autotester that allows the 'spec' command-line program to live anywhere in your path, not just /usr/bin and ./bin. - Fixed up the autotest task to work after the re-arrangement of stuff in the specs directories. - Read the ThingFish version from the library file instead of having it hardcoded in the Rakefile. * Added some work on the 'running' and 'connecting' docs. * Changed format of logging and made it show the logging class in debug level. [c597db4e2c45]
Added some stuff to the 'connecting' part of the developer's guide section of the manual. [cf1f5e507f38]
A few fixups for the 'gems' rake task. [f186cfa54609]
:Request#explicitly_accepts? method, for Accept checks sans wildcards * Update currently filters to use explicitly_accepts?() * Ensure response order with filters in configuration, remove reverse() in ThingFish::Daemon so filters are executes in same order for both request and response * Added initial 'make_html_content' method to ThingFish::Handler, this will be overridable in the in-progress HTML output filter. * Use Response#is_handled? instead of DEFAULT_STATUS where applicable. * Factored out various monkeypatchin' into monkeypatches.rb. [79f20cd82625]
:Response methods for determining HTTP status categories [ac4cd690b9b1]
:SimpleMetaStore. * Switch current metadata and search handlers to use the simple metastores. * Rewind IO body in ThingFish::Daemon#each_body for handoff to filters * Move handler specs to their own directory. [3eca52e92e79]
:Daemon. This will cause exceptions raised in filters to be ignored save for a message in the logs. * Misc. cleanup and docs fixups [36f665389c1b]
Checkpoint commit of work on RDF metastore, DAV handler, and initial experiment with Rubigen [cd4b9e67082b] <rdfms-work>
Fix for the timezone bug in the spec for the default handler (Fixes #4) [348958e741ce] <rdfms-work>
Removing some accidentally-committed gem_plugin cruft [4d3ea74c0d63] <rdfms-work>
Checkpoint commit before I leave for RubyConf [7d0fbdbb7cb7] <rdfms-work>
:HtmlInspectableObject for rendering Ruby objects in an HTML view. [3cc87166f931]
docs rake task * Added metadata browsing via the metadata and search handlers. * New method ThingFish::Config#find_handler_uri * Changed the testing config: - use the sqlite3 metastore - load the search handler - load the exif filter * Added some more filters to the advanced example config. [315a1f1993df]
* metadata and search erb templates shouldn't link to each other explicitly, but rather check that the other is registered, and use the registered uri. * metadata/search have no index content. (probably need their own resource dirs) * Add new metastore API: get_all_property_values() * Added to SQLite, memory, and marshalled metastores. * Move searchhandler search results to top of HTML page, link to metadata. [bd06caf4e6c4]
:ExifFilter and ThingFish::Mp3Filter * Added additional sqlite pragmas that might speed things up. We need benchmarks. :) * Correct daemon logging on uploads to reflect correct metastore keys * request#query_args() now returns 'nil' on defined keys without explicit value, instead of 'true'. * request#get_body_and_metadata() made public again to support the uploading of multipart bodies -without- parsing. [2b721d238487]
Oops. Forgot I was breaking the build by doing a copy from the .skel directory. Will check it back in once it passes all its tests [d86d70300ec8]
Fixed directory name for the RDF metastore plugin [84f6d285564e]
Copy skel plugin directory for RDF metastore plugin [4faf3ffb018f]
Apparently you can replace a directory with an external in one commit. Pity. [a880d8468dd3]
This is a two part commit, this first commit knowingly is broken. * Enforce a string when instantiating a new SQLite3 metastore. [526f6e6bb97e]
Merge from branches/upload_handler_merge rev 350. This branch was originally intended to merge the upload plugin into the defaulthandler. We changed our minds halfway through (made defaulthandler way too complex), but came out with some fun stuff anyway: * Move the upload form into its own erb template for easier future usage (maybe in the index_content with some thickbox yum!) * Move parts of store_resource up into daemon.rb so uploadhandler and defaulthandler don't have duplicated code. * Updated jquery to 1.2.1, and moved it from the uploadhandler's resource directory into the main static resource dir. * Sort list of files uploaded to /upload by title. * Organized javascript and style sheets into their own respective directories. * Index page cleanup * Added the HTTP status to the response error exception, rather than creating a new error class for each response status. * Added ThingFish::Request#metadata hash to support extraction filters * Added caching of query arg lookup to ThingFish::Request * Added ThingFish::Request#each_body, which does upload entity body extraction and metadata merge. This was extracted from the DefaultHandler to provide this functionality for more than just the upload and default handlers. Extraction filters, for example, will probably need access to uploaded entities before they're extracted by the handlers, so consolidating this in one spot made sense. * Added ThingFish::Request#is_ajax_request?, which may be convenient at a future date. * Firefox seems to treat the presense of a content_disposition header as if it always contains the 'attachment' keyword. Changed the conditional to affect the whole header instead of only the keyword. [af2989d92416]
Checkpointing for merge back. We decided not to merge upload into default, as it started making the default handler too complex. We retain some of the refactoring that we did to accomplish the merge, though, because it makes lots of things cleaner, and will have to be done anyway for extraction filters. [7df9706941b5] <upload_handler_merge>
Checkpoint commit [9417c934e113] <upload_handler_merge>
:Request to keep it and the metastore better separated. This makes it easier for the extraction filters to interact with metadata, and makes it possible to handle multipart requests in an abstracted way. * Found Firefox's Content-disposition handling to be weird, so it's now added only if there's an 'attach' query parameter. We'll probably add a /download URI to the default handler to do this, too. [420e25e70e6b] <upload_handler_merge>
Checkpoint commit [9919d2fa7ce5] <upload_handler_merge>
Updated overview diagram [ad927d9cb632]
Branching to merge the upload handler functionality into the default handler before we do upload metadata extraction. [e699f16c1871] <upload_handler_merge>
Removed reference to the Artistic License [1616c4f36861]
Oops. Forgot to add the YAML filter in the last commit [d0f7850666e1]
Fixed the incorrect javascript link in the index page. [fd7e842069e1]
Merge from the [diff:thingfish/trunk@301//thingfish/branches/content_negotiation content negotiation branch]: * New super-pretty rdoc generation * Framework for content filters * Handler restructuring for content negotiations * Updates to various handlers using ThingFish request/response objects * Renames for erb templates (html -> rhtml) * Content negotiated error responses with pretty html [09d40692a942]
dynamic static resource directory selection based on arbitrary conditionals!!! YEAH. A new para-dig-im! [4ca66fe7abdf] <content_negotiation>
Status handler: * Added coverage. * Fix structure returned for non-html requests. Static content handler: * Started spec, checkpoint. [c2ca48baeeef] <content_negotiation>
:Daemon. [f1a9dab51cd3] <content_negotiation>
:Daemon. * Set $0 for thingfishd appropriately. [ecb343c74b77] <content_negotiation>
More documentation work [d97cd6322c2f] <content_negotiation>
One fix and another partial fix for tests broken by the new error- response stuff [ccc059b64607] <content_negotiation>
Made some more progress on the API docs. [aaf219c4c7a1] <content_negotiation>
Initial commit of new RDoc generator/templates [3892fc42ede1] <content_negotiation>
Adding a few more images for the new RDoc generator [96cc13d9f137] <content_negotiation>
Checkpoint, adding coverage tests [ff4d61ce3887] <content_negotiation>
Checkpoint – all tests passing, working on coverage [730e9b256b15] <content_negotiation>
Checkpoint commit [b58cb472f79e] <content_negotiation>
Checkpoint [11d522fe6792] <content_negotiation>
:Request::AcceptParam out to ThingFish::AcceptParam. [5b5666f3a010] <content_negotiation>
Checkpoint. [f5cfde7a2d35] <content_negotiation>
Checkpoint commit [84d5b2bf27a8] <content_negotiation>
Checkpoint commit [4c6b40896062] <content_negotiation>
:Table to act more like a Hash. IDKFA. [0ca7ad3b59b8] <content_negotiation>
Adding work on new RDoc template, documentation fixup. [67f796b58001] <content_negotiation>
Checkpoint commit [4cd82feeaac6] <content_negotiation>
:Request. * Started implementation of ThingFish::Response. * Factored spool directory and buffer size into the top level of the config, and added default constants to ThingFish::Constants. [c8d6d95ddb44]
Added 'Accept' header parsing to ThingFish::Request [1c69b25385c3]
source: thingfish/trunk/Rakefile source: thingfish/trunk/docs/manual /src/02.Getting_Started/02.installation.page * Update dependency versions for external modules source: thingfish/trunk/docs/manual/src/02.Getting_Started/01.downlo ading.page * Point to new download spot! source: thingfish/trunk/docs/manual/src/02.Getting_Started/03.running.page source: thingfish/trunk/spec/daemon_spec.rb source: thingfish/trunk/lib/thingfish/daemon.rb source: thingfish/trunk/lib/thingfish/config.rb * Optionally drop privileges if running as root [b67c2f6af6bc]
Finished up the Accept-header parsing bits of the content- negotiation spike [c9a10edfd180]
Renamed COPYING files to “LICENSE” [cc86a6f8f847]
:Handler * Added a convenience method for building METHOD_NOT_ALLOWED responses to ThingFish::Handler: send_method_not_allowed_response * Factored out some common ThingFish::Handler behaviors into a new RSpec shared behavior * Added an index handler to the metadata handler that serves the list of keys in the metastore * Made the commitlog stop inserting the `source:` links, as they're in the commitlog view anyway. * Cleaned up logging in some tests to not spam test output * Updated the inspect handler to use the ResourceLoader framework * Moved some constant includes up into the toplevel binding, as RSpec's overloaded `include` doesn't behave in a predictable fashion. * Added a guard class to ThingFish::TestConstants to avoid displaying the warning about defined constants when it's required twice via different paths. * Added a spec/spec.opts file for `spec -O` [2e034a50ceae]
Cleaned up some old cruft [0d81c9691a6c]
RDoc formatting fixes for the README [bbb38a830576]
Made reset_logger reset the default logger's level too. [e90bb0d9499b]
Initial commit: listed milestones [153a618595ef]
autotest target * Fixed RDoc task: - Pathname objects -> strings - changed target directory to 'docs/api' - copy generated docs to the static content directory [48ce8c5b881d]
source:trunk/Rakefile * Fixed the clean task after the generated_manual task went away. [49d2ed9adb4e]
source:trunk/plugins/thingfish-sqlite3ms/spec/sqlite3ms_spec.rb * Fixed missing constants when running standalone. source:trunk/Rakefile * Merged the task that copies the manual to the static resource directory with the manual-generation task. * Copy the coverage stats into the static resource directory after building. source:trunk/lib/thingfish/handler/default.rb source:trunk/spec/defaulthandler_spec.rb source:trunk/var/www/index_content.html * Cleaned up and added logic to advise people how to generate the content linked from it if it doesn't exist. source:trunk/var/www/metadata.rhtml * Initial content. source:trunk/spec/mixins_spec.rb source:trunk/lib/thingfish/mixins.rb * Added a method resource_directory? to ResourceLoader that checks to be sure a directory of the specified name exists in the resource directory. [66f8cf30d085]
source:trunk/plugins/thingfish- fsfs/lib/thingfish/filestore/filesystem.rb source:trunk/plugins /thingfish-fsfs/spec/fsfs_spec.rb source:trunk/spec/memoryfilestore_spec.rb source:trunk/spec/lib/filestore_behavior.rb * Factored out common filestore tasks into a shared behavior source:trunk/plugins/thingfish- sqlite3ms/lib/thingfish/metastore/sqlite3.rb * Added missing RDoc comments source:trunk/Rakefile * Make the text spec a bit quieter * Moved the rcov verification task into the :coverage namespace source:trunk/spec/lib/helpers.rb * Made the name of the temp directory generated by make_tempdir a bit more sane. source:trunk/misc/rake/svn.rb * Use the quieter 'spec:text' task when committing instead of the full colorized one. [3b92140267f5]
source:trunk/spec/daemon_spec.rb source:trunk/spec/constants.rb source:trunk/spec/config_spec.rb source:trunk/spec/handler_spec.rb source:trunk/spec/client_spec.rb source:trunk/spec/defaulthandler_spec.rb source:trunk/spec/thingfish_spec.rb source:trunk/spec/memoryfilestore_spec.rb source:trunk/spec/resource_spec.rb source:trunk/spec/lib/constants.rb source:trunk/plugins/thingfish- fsfs/spec/fsfs_spec.rb * Factored constants and helpers out into spec/lib/ files. source:trunk/plugins/thingfish- inspecthandler/lib/thingfish/handler/inspect.rb * Corrected synopsis source:trunk/lib/thingfish/metastore.rb source:trunk/lib/thingfish/metastore/memory.rb source:trunk/spec/metastore_spec.rb source:trunk/spec/memorymetastore_spec.rb source:trunk/plugins /thingfish-sqlite3ms/lib/thingfish/metastore/sqlite3.rb source:trunk/plugins/thingfish-sqlite3ms/spec/sqlite3ms_spec.rb source:trunk/plugins/thingfish- marshalledms/lib/thingfish/metastore/marshalled.rb source:trunk/plugins/thingfish- marshalledms/spec/marshalledms_spec.rb * Moved MetaStore API specs into a shared behavior * API: Added new method get_all_property_keys to support the metadata handler. source:trunk/etc/thingfish.conf * Began work on a the Metadata handler [802cf7767fb2]
Bumped minor version after release of 0.0.1 [76d2758aef09]
source:trunk/Rakefile * Made $dryrun and $trace globals act like they used to in the good old days of Rake. source:trunk/misc/rake/helpers.rb * Fixed some more svn tasks source:trunk/misc/rake/svn.rb * Added a trace() function that logs only if $trace is turned on [7d3683b0bf9b]
Added a test for the UUID monkeypatch [6107f8eb227e]
source:thingfish/trunk/Rakefile * Fixed the 'spec' task to include all the specs. Oops. :P source:thingfish/trunk/spec/memoryfilestore_spec.rb source:thingfish/trunk/spec/memorymetastore_spec.rb source:thingfish/trunk/spec/defaulthandler_spec.rb source:thingfish/trunk/lib/thingfish/metastore/memory.rb source:thingfish/trunk/lib/thingfish/filestore/memory.rb source:thingfish/trunk/lib/thingfish/handler/default.rb * Modified to handle UUID objects for all operations on a filestore or metastore. [310ef333f7f2]
source:thingfish/trunk/Rakefile source:thingfish/trunk/misc/rake/helpers.rb source:thingfish/trunk/misc/rake/svn.rb source:thingfish/trunk/misc/rake/verifytask.rb source:thingfish/trunk/misc/rake/svnhelpers.rb * Added some helper stuff for subversion and development tasks source:thingfish/trunk/spec/metastore_spec.rb source:thingfish/trunk/lib/thingfish/metastore/memory.rb source:thingfish/trunk/lib/thingfish/exceptions.rb source:thingfish/trunk/lib/thingfish/metastore.rb * Added a test and a fix for the nil proxy bug (fixes #2) source:thingfish/trunk/lib/thingfish/client.rb * Fix for a missing constants bug [8705520f4f74]
source:thingfish/trunk/plugins/thingfish- statushandler/lib/thingfish/handler/status.rb * Dialed up the sample rate for less-dull (but perhaps less-valid?) results (i.e., more than none) source:thingfish/trunk/plugins/thingfish- uploadhandler/lib/thingfish/handler/upload.rb source:thingfish/trunk/plugins/thingfish- uploadhandler/resources/static/js/jquery.MultiFile.js source:thingfish/trunk/plugins/thingfish- uploadhandler/resources/static/js/jquery.js source:thingfish/trunk/plugins/thingfish- uploadhandler/resources/upload.rhtml * Turned upload fields into a dynamically-expandable array via jQuery MutliFile plugin. source:thingfish/trunk/docs/manual/src/03.Developers_Guide/examples/ storing.rb source:thingfish/trunk/docs/manual/src/03.Developers_Guid e/examples/fetching.rb source:thingfish/trunk/docs/manual/src/03.Dev elopers_Guide/examples/clientapi.rb source:thingfish/trunk/docs/manu al/src/03.Developers_Guide/examples/instantiating.rb * Got rid of the xmpfilter comment stuff, since it wasn't working anyway. source:thingfish/trunk/etc/thingfish.conf * Bumped default storage up to 1GB. [b036cf61df01]
source:thingfish/trunk/plugins/thingfish- uploadhandler/lib/thingfish/multipartparser.rb * Removed comment cruft source:thingfish/trunk/plugins/thingfish- uploadhandler/lib/thingfish/handler/upload.rb * Fixed buggy logging statement source:thingfish/trunk/plugins/thingfish- uploadhandler/spec/uploadhandler_spec.rb * Added tests for unsupported method handling and index content method. [1b83a0e0d9a5]
Ooops. Forgot to add the test data for the last example [b4f7a2a8d666]
source:thingfish/trunk/plugins/thingfish- uploadhandler/spec/mpmimeparser_spec.rb * Added an example for error-handling of truncated MIME documents [43cd6f5441fb]
source:thingfish/trunk/plugins/thingfish- uploadhandler/lib/thingfish/handler/upload.rb * Removed exception-handlers for both GET and POST source:thingfish/trunk/plugins/thingfish- uploadhandler/spec/uploadhandler_spec.rb * Added examples for GET requests [9347add6e354]
source:thingfish/trunk/plugins/thingfish- uploadhandler/lib/thingfish/handler/upload.rb * Fully-qualify references to the multipart mime parser * Change the upload function to reuse the parser for each request source:thingfish/trunk/plugins/thingfish- uploadhandler/spec/mpmimeparser_spec.rb source:thingfish/trunk/plugins/thingfish- uploadhandler/spec/uploadhandler_spec.rb * Guard against constants being declared more than once * Make tested handlers use local resource directory * Finish some unimplemented tests * Fix the two-upload test to expect a UUID object instead of a string containing a UUID. [ac1c94d2ad38]
source:thingfish/trunk/README * Extracted the index page of the wiki as README content. Stills needs some cleanup love. source:thingfish/trunk/lib/thingfish/mixins.rb * debugging statement [3c09c682358b]
Checkpoint commit [46ce8e35ded4] <multipart_upload>
Checkpoint commit of this morning's work [4073d79c9b13] <multipart_upload>
source:thingfish/branches/multipart_upload/plugins/thingfish- uploadhandler/lib/thingfish/handler/upload.rb source:thingfish/branches/multipart_upload/plugins/thingfish- uploadhandler/resources/upload.rhtml source:thingfish/branches/multipart_upload/plugins/thingfish- uploadhandler/spec/uploadhandler_spec.rb * Checkpoint commit for multipart upload handler. source:thingfish/branches/multipart_upload/loadpath.rb * Smarten up library include file for spec requires source:thingfish/branches/multipart_upload/lib/thingfish/daemon.rb * Fix comma display for handler mapping debug at startup source:thingfish/branches/multipart_upload/etc/thingfish.conf * Remove extraneous quotes, add config for upload handler [97ae270a131d] <multipart_upload>
source:thingfish/trunk/Rakefile * Fixed the cruise build, which was flubbing on the package task because the Rubygems task chokes on Pathname objects. source:thingfish/trunk/docs/manual/src/01.Introduction/01.intended- audience.page * Fixed the relocatable links. source:thingfish/trunk/docs/manual/src/default.css * Fixed the bottom border on image links. [6c19b0397c1d]
source:thingfish/trunk/var/www/static/default.css source:thingfish/trunk/docs/manual/src/default.css * Add some spacing underneath caption blocks. source:thingfish/trunk/docs/ThingFish Manual Outline.oo3/contents.xml * Since we have a manual now, no real need to keep this old thing lying around. source:thingfish/trunk/docs/manual/src/04.Hackers_Guide/03.writing- filters.page source:thingfish/trunk/docs/manual/src/04.Hackers_Guide/05.writing- metastores.page source:thingfish/trunk/docs/manual/src/04.Hackers_Guide/06.daemon- customization.page source:thingfish/trunk/docs/manual/src/04.Hackers_Guide/02.writing- handlers.page source:thingfish/trunk/docs/manual/src/04.Hackers_Guide/04.writing- filestores.page * Just add some placeholder text so the reader doesn't think we forgot about a page… or five. :) [42bf1d33e66f]
source:thingfish/trunk/lib/thingfish/handler.rb source:thingfish/trunk/lib/thingfish/daemon.rb source:thingfish/trunk/lib/thingfish/mixins.rb source:thingfish/trunk/lib/thingfish/handler/default.rb source:thingfish/trunk/spec/handler_spec.rb source:thingfish/trunk/spec/defaulthandler_spec.rb source:thingfish/trunk/plugins/thingfish- statushandler/lib/thingfish/handler/status.rb source:thingfish/trunk/plugins/thingfish- statushandler/resources/index_content.html source:thingfish/trunk/plugins/thingfish- statushandler/resources/index.rhtml source:thingfish/trunk/plugins /thingfish-statushandler/spec/statushandler_spec.rb source:thingfish/trunk/plugins/thingfish- inspecthandler/spec/inspecthandler_spec.rb source:thingfish/trunk/var/www/index_content.html source:thingfish/trunk/var/www/index.html * Factored out index page content into callbacks on handler plugins source:thingfish/trunk/Rakefile * Split out testing of plugins into a separate Rake task in an effort to separate plugins from the main distribution. source:thingfish/trunk/spec/daemon_spec.rb * Stubbed socket connect calls for ThingFish::Daemon to get rid of the failing tests when a server was already running. source:thingfish/trunk/spec/mixins_spec.rb * Added a method to check for the existance of a resource. [469882949475]
source:thingfish/trunk/lib/thingfish/handler/default.rb * Fallthrough to potential static content isn't really an 'error', per se. [b950d6367c8c]
source:thingfish/branches/multipart_upload/plugins/thingfish- uploadhandler/lib/thingfish/handler/upload.rb source:thingfish/branches/multipart_upload/plugins/thingfish- uploadhandler/resources/upload.rhtml source:thingfish/branches/multipart_upload/plugins/thingfish- uploadhandler/spec/uploadhandler_spec.rb source:thingfish/branches/multipart_upload/etc/thingfish.conf * Initial commit of multipart/form upload plugin. Not fully functional at this stage. source:thingfish/branches/multipart_upload/experiments/multipart_pa rsing/parse_1341.rb source:thingfish/branches/multipart_upload/exper iments/multipart_parsing/2_images.form * Spike for parser logic, and example multipart/form data. [1dc4e2dcb8e1] <multipart_upload>
//www.w3.org/Protocols/rfc1341/7_2_Multipart.html) [883d6ec430cc] <multipart_upload>
r109@turdcart: mahlon | 2007-06-05 20:32:40 -0700 source:thingfish/trunk/lib/thingfish/config.rb * Don't delete uri registration info from the config object as it is parsed * Force uris to an Array (it is plural, after all) source:thingfish/trunk/lib/thingfish/daemon.rb source:thingfish/trunk/lib/thingfish/handler.rb * Expose the global config object to plugins, in the same fashion as the metastore and filestore instance variables. (reader accessor from ThingFish::Daemon, hook into Mongrel's listener hook) source:thingfish/trunk/lib/thingfish/mixins.rb * Typo fix. source:thingfish/trunk/var/www/index.html * Conditional display for the browser upload handler link. (Not committed yet.) [a73470e7ff54]
:ResourceLoader mixin. * Tuned Rdoc output a bit * Made the :manual task in the Rakefile also copy the manual HTML to the default handler's static content directory. * Linked the manual from the default HTML index page. * Made the default HTML index page into an ERb page so we can build parts of it dynamically. * Linked in the Maintenance and Troubleshooting chapters of the manual. * Finished up most of the manual contents * Renamed 'Design Goals' to 'Design Principles' to better fit what they are. * Reverted the silly definition list dl.kvlist manual style to something more readable. * Fixed up some deprecated calls in the specs. [520b6a08b8a7]
:include inside a 'describe <mixinmodule>, “desc” do … end'-form example. * Added two examples for ThingFish::Client#has? * Added some more examples for ThingFish::MemoryFileStore * Finished up the initial version of ThingFish::Client and ThingFish::Resource. * Added some fixturing methods to the spec constants module. * Added a guard to ThingFish::AbstractClass for including classes that already don't have a public ::new. * Finished up the initial version of the command-line client
:Client instead of doing HTTP itself. [453bd440f36a]
r104@turdcart: mahlon | 2007-05-21 00:28:07 -0700 * Add svn keywords to html. [f606ac6a42f1]
r102@turdcart: mahlon | 2007-05-21 00:13:47 -0700 * Add new static resources mixin to the default handler. * Pretty-ify the default html, match the documentation. [c6b72016d060]
- Refactored schema-loading - Added schema revisioning via the 'user_version' pragma (though no action is currently taken if the schema is out of date) - Reworked the tests to run a bit faster - Added a clear method * Added some examples of storing a resource to the developer section of the manual * Some more little updates to the client docs * More RSpec 0.9.x conversion * Fixed the coverage percentage verification rake task * Factored the listener= callback up into the base handler so all handlers have a reference to the metastore and filestore if they need them. * Implemented fetching in the client library * Removed a few spec examples which tested stuff outside of its area of responsibility * Fleshed out ThingFish::Resource to include constructors for both Net::HTTPResponse objects and IOs. * Added a fixturing function for generating HTTP responses to the constants module. * Factored out subversion helpers into a new rake task lib [f0a13dce4703]
Moving .irbrc into new trunk dir [b490a7b0609b]
ThingFish::ResourceLoader * Renamed the ThingFish::StaticResources mixin to ThingFish::StaticResourcesHandler for clarity about what it actually does * Moved the initial schema for the SQLite3 metastore into a resource that's loadable on demand * Client library now implements store. * New class ThingFish::Resource for encapsulating a chunk of data fetched from the server and its associated metadata. * Added a synopsis for ThingFish::Daemon * Added a command-line client tool that uses ThingFish::Client instead of doing all the HTTP itself [source:trunk/bin/thingfish2 bin/thingfish2. This should eventually replace [source:trunk/bin/thingfish bin/thingfish]. [2eef0ce67743]