zotero / dataserver Goto Github PK
View Code? Open in Web Editor NEWZotero Data Server
License: Other
Zotero Data Server
License: Other
Following WebDAV, allow COPY
on the source /file
with a Destination
header pointing to the other library. Read access required on the source, write and file access on the target. Would perform a quota check.
On POST /users/<id>/items/<key>/file
, when the mtime parameter in the form data has the wrong format (for example, a date string instead of integer milliseconds), the upload authorization request returns an unhelpful 500 Internal Error "An error occurred". Better would be to return a 400 Bad request with an error message that refers to the incorrect form parameter
Hello,
If I make an API call which returns an error.
For example, getting the groups for a missing user:
curl -H 'Zotero-API-Version: 2' 'https://api.zotero.org/users/9999999999/groups?format=atom'
The response sent is "Not Found".
However, I requested the format to be atom. And the response is in text.
It would be awesome if all API calls could respond to the appropriate format, even if they are errors.
misc/test_setup fails in various places. I also can't find the definition of the WWW database.
I had to make these changes:
INSERT INTO shards VALUES (1, 1, 'zoterotest1', 'pass1', 'zoterotest1', 'up');
to
INSERT INTO shards VALUES (1, 1, 'zoterotest1', 'up', 0);
INSERT INTO shards VALUES (2, 1, 'zoterotest2', 'pass2', 'zoterotest2', 'up');
to
INSERT INTO shards VALUES (2, 1, 'zoterotest2', 'up', 0);
INSERT INTO shardLibraries VALUES (1, 'user')
to
INSERT INTO shardLibraries VALUES (1, 'user',0,1);
INSERT INTO shardLibraries VALUES (2, 'user')
to
INSERT INTO shardLibraries VALUES (2, 'user',0,1);
INSERT INTO shardLibraries VALUES (3, 'group')
to
INSERT INTO shardLibraries VALUES (3, 'group',0,1);
I had to skip the zotero_www_test commands since there doesn't appear to be a definition of that database.
Are there recent setup instructions on Ubuntu?
This will allow getting the tags for an arbitrary set of items. In this subview, the tag
parameter will still filter by tag, but the other search parameters — including q
— will apply to the 'items' component.
To allow getting the tags that match all items matching a given tag, we should extend q
to support labels (q=tag:foo
) or add a itemTag
parameter similar to itemKey
.
Not sure why we're doing this. Should just use an array and an object for multi- and single-object responses, respectively.
Return 409, which website can check for. The website will then need to prompt to delete all files in the group, perform a search for itemType=attachment, review the items' link modes (or use a linkMode search param that doesn't currently exist), and issue batches of DELETE requests before changing the setting.
/cc @fcheslack
Exception: Failed to eval Lua script: CROSSSLOT Keys in request don't hash to the same slot
More info: https://stackoverflow.com/questions/38042629/redis-cross-slot-error
This is with one shard and no replicas (because we're just using cluster for failover), so not sure why this is happening.
Instead of text/html
https://groups.google.com/d/topic/zotero-dev/0Atuj5nm5gY/discussion
@dstillman - sorry to "spam" here - but you guys are aware that the sync server is down and the Zotero forum is barely functional?
@stakats - maybe send out a tweet from the Zotero account?
Should be possible with zotero/citeproc-js-server#18
Not sure if there are any sorts of limits/restrictions we need. @fcheslack, will used styles fall out of the cache eventually?
Reported by @tnajdek:
Right now you have to do /keys/<key>
to get key info or delete. It should be possible to do those without embedding the key.
Just /keys
with Zotero-API-Key: <key>
doesn't make sense. /keys/current
is pretty ugly. Just /key
? And then to delete you'd do DELETE /key
? @fcheslack?
There's a general mechanism to switch between a string and an array for relations depending on how many values there are (since for some relations an array doesn't really make sense), but for related items it should always be an array.
Currently, the only way to get the current user's id is during the oauth dance.
It would be awesome to get an API call which would retrieve the current user.
For example:
curl -H 'Zotero-API-Version: 2' 'https://api.zotero.org/users/me?format=atom'
/users/:userID/storage or similar
After compressing the data, if we can easily tell the size of the compressed object, we could dynamically choose the storage class based on whether it's >75KB (which is a little bit more than half the minimum billable size for STANDARD_IA objects, figuring that STANDARD_IA is approximately half the price of STANDARD and request fees are a bit more).
This would need to apply to the dataserver and the migration script.
As noted in #49
This can wait until classic-sync code is removed.
This repo should be documented with at least a simple readme. If I can wrap my head around it, I'll get one started.
Concurrent request limit exceeded
Failed to remove an element from a sorted set in include/RequestLimiter.inc.php:162
Warning: Timed out concurrent requests found: 1
https://groups.google.com/d/topic/zotero-dev/yC_zPeo8ilI/discussion
For the docs once supported:
If ''If-Modified-Since-Version: '' is passed with a single-object read request (e.g., ''/users/1/items/ABCD2345''), a ''304 Not Modified'' will be returned if the individual object has not changed.
I'm looking into packaging this, but it seems that this requires the use of Amazon S3 storage. I was considering using a more flexible interface like Flysystem, which would allow for one API, but allowing use of different storage backend. Would this be something that you might consider integrating?
The API server expects headers matching a certain case - i.e. it will accept Authorization
but not authorization
. The HTTP standards say headers are case-insensitive and as a result some HTTP request libraries (such as the built-in JavaScript fetch()
) are incompatible with the Zotero API.
This occurs because fetch
appears to convert all custom request headers to lower case which means any authorized URL will always return a 403
. I've confirmed this in the current version of Atom Electron, Chrome/47.0.2526.73 Electron/0.36.2
and the latest version of Postman.
I'm not particularly familiar with the dataserver
code base, but it looks like looping over the apache_request_headers()
and converting to lower case in the apiController
could fix the issue? Happy to submit a pull request if this fix is suitable.
Phase out MySQL 5.1 and figure out what else in the pipeline is converting them to dotted squares
It could be useful to share citations as a graph of linked data (RDF(a)) with URIs and URLs on the server side, with the web interface.
References:
...
This caused this My Publications issue (since fixed in the JS library), but it might apply elsewhere in the library too.
Will need a way to specify exportCharset
when calling translation-server — probably a generalized way to specify translator-specific options?
https://forums.zotero.org/discussion/comment/263439#Comment_263439
This is not necessarily urgent, but upon 5.0 release may become an evident issue. Feeds are currently synced with syncedSettings
, but warrant their own endpoint if used very heavily (hundreds of feeds per user). We want this endpoint to be more generalised and fit future purpose of subscriptions as briefly discussed here
A new /subscriptions
endpoint is proposed with url
and type
values for filters.
To accommodate this endpoint at least two database tables are needed:
subscriptions
with subscriptionID
, url
and type
fieldssubscriptionsFeeds
with subscriptionID
as FK + other feed specific fieldsLater on subscriptionsCollections
and similar could be added.
Empty creator object is included in new item template, so it should be possible to pass it back unchanged
Hello all,
I have installed the server locally and have created some items in the test group via the database. I used the API to see that the groups are public and accessible, but I do not see it in the FF client. Any ideas why that might be?
Thanks in advance,
Nick
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.