Commit Graph

192 Commits

Author SHA1 Message Date
Julien BLACHE
42f39938d5 Start implementing DAAP updates
Stall update requests if revision-number == current revision. This is a
first step that is necessary to get clients to work properly (eg Remote).
2010-01-28 19:20:00 +01:00
Julien BLACHE
b5b9f92d97 Fix HTTP error return in daap_session_find() 2010-01-27 12:18:22 +01:00
Julien BLACHE
98cb978b9b Set capability atoms to true in server-info reply
Capability atoms like mslr, msbr and friends should be set to true; it
seems their presence in the reply is actually enough, though.
2010-01-25 18:33:25 +01:00
Julien BLACHE
022bebe1d9 Send back mslr in server-info reply, indicating login is required
At least FrontRow honours this atom of the server-info reply.
2010-01-24 10:53:49 +01:00
Julien BLACHE
d3fe586d5b Remove a special case for playlist #1
Not needed anymore, now that playlist #1 has been turned into a smart
playlist.
2010-01-22 19:02:29 +01:00
Ace Jones
1af1cf51c7 Return special playlists in playlist list response 2010-01-21 17:56:44 +01:00
Julien BLACHE
87abc3f432 Avoid useless double attempt at converting string to integer
Fixup dmap_add_field() and one of its callers to avoid making two useless
attempts at converting a string to an integer in some cases.
2010-01-20 18:34:36 +01:00
Julien BLACHE
ba251b16ae Start keeping track of DAAP sessions
This will soon be required as we'll need to keep some knowledge about
the session in some cases. This also makes us a bit more compliant.
2010-01-20 18:24:52 +01:00
Ace Jones
d96cdd7400 Add DAAP request handler for databases/###/groups (albums)
As of now we only support album groups, but there may be more than
album groups.
2010-01-10 14:43:23 +01:00
Ace Jones
e033d35195 Rework error handling in daap_reply_playlists()
Kill a bit of code duplication in the error handling.
2010-01-10 14:43:22 +01:00
Ace Jones
ac82b176a0 Rework error handling in daap_reply_songlist_generic()
Kill a bit of code duplication in the error handling.
2010-01-10 14:43:22 +01:00
Ace Jones
cac2c032f6 Add the daap.songalbumartist DMAP field 2010-01-10 12:11:00 +01:00
Julien BLACHE
974a74a833 Update copyright notices for 2010 2010-01-05 19:34:00 +01:00
Ace Jones
d3350713d1 Return daap.songalbumid as a hash of the album_artist + album
iPhone remote will later want to query by album. Instead of doing a
fulltext query, it uses a 64-bit hash of the album + album_artist. It
is not necessary to use the same hash algorithm that iTunes uses. The
important thing is that we can later respond to a query=('daap.songalbumid:xxx')
with this value.
2010-01-04 18:00:05 +01:00
Ace Jones
117ee15e44 Add handler for DMAP extra_data requests
iPhone Remote uses the following requests to get cover art for
songs and albums:

/databases/#/items/#/extra_data/artwork
/databases/#/groups/#/extra_data/artwork

For now, we will return the valid and correct response that we
have "No content".  In the future, the real artwork could be
extracted and returned here.
2010-01-03 18:55:32 +01:00
Ace Jones
abbba5cf47 Fix typo in DAAP error message 2009-12-30 18:47:41 +01:00
Ace Jones
76fc069f22 Fix missing argument to debug call 2009-12-30 18:46:41 +01:00
Julien BLACHE
403153f64b Reindent the dmap_fields table, no code changes 2009-12-26 09:28:28 +01:00
Ace Jones
000e13b7ee Return TV metadata in DMAP response 2009-12-26 09:23:13 +01:00
Ace Jones
d231faff2d Handle DAAP activity request
Reply to the DAAP /activity request with 204 / No content. Used by iTunes to
ping the server while streaming.
2009-12-20 14:43:28 +01:00
Julien BLACHE
b9e7df5be3 Return a proper Content-Type when streaming videos
Clients like Front Row expect video/<type> for video streaming, whereas iTunes
likes application/x-dmap-tagged when streaming audio.

Based on a patch by Ace Jones <ace.jones1@yahoo.com>.
2009-12-08 21:04:30 +01:00
Julien BLACHE
946758cec7 Rework iTunes 9 absolute request uri fix 2009-11-14 11:23:03 +01:00
Julien BLACHE
f8f183f2f6 Fixup iTunes 9 Request-URI before processing
iTunes 9 sends requests with a Request-URI like
  daap://10.1.1.20:3689/server-info

The DAAP server expected the Request-URI to be just /server-info, and so
couldn't match the request to any handler.

In addition, evhttp would declare this request a proxy request which also
broke keep-alive handling resulting in the server closing the connection
after the reply. iTunes doesn't like that.
2009-11-13 21:53:47 +01:00
Julien BLACHE
c36b3c360d Fix DAAP request regexps - IDs can (thankfully) be more than 1-digit long 2009-11-01 12:39:11 +01:00
Julien BLACHE
e1c0b6d4b7 Move *_offsetof() macro definitions to db.h 2009-06-11 23:17:17 +02:00
Julien BLACHE
c589d92b14 Use db_get_count() wherever applicable; simplify db_{pl,files}_get_count() prototypes 2009-06-11 18:41:50 +02:00
Julien BLACHE
a200703393 Switch to the new database code 2009-06-10 19:04:18 +02:00
Julien BLACHE
52d3fd1064 Clear evkeyvalq structs before use; fix crasher 2009-06-07 19:06:59 +02:00
Julien BLACHE
28350ae9a6 Look for a query or filter parameter in DAAP queries
The filter is passed in the query parameter if it's a search, but if it's
a browse it's in the filter parameter.
2009-06-07 19:06:51 +02:00
Julien BLACHE
7642b1c6d7 Use the new ANTLR parser for DAAP queries 2009-06-07 19:06:50 +02:00
Julien BLACHE
68db2ae7c2 Add new ANTLR parser for DAAP queries 2009-06-07 19:06:46 +02:00
Julien BLACHE
cefd3f3d1d Make dmap_fields_hash static 2009-06-01 18:01:24 +02:00
Julien BLACHE
11fd038d16 Use new logger facility 2009-05-09 17:14:06 +02:00
Julien BLACHE
10bb9dec57 Remove useless daapd.h 2009-05-05 16:22:11 +02:00
Julien BLACHE
e4fe084619 Use embedded evhttp 2009-05-03 11:16:57 +02:00
Julien BLACHE
c9868175fd Implement URI encoding quirk for iTunes and Roku
iTunes and Roku devices do not encode + as %2B in the query string and
do not encode space as + either in the query string (though at least the
Roku encode space as %20 everywhere). This needs to be worked around or
browse queries fail to parse because + was decoded as space when the query
really needs a + character.
2009-05-03 11:16:57 +02:00
Julien BLACHE
09ef188d90 Add authentication to web interface, RSP and DAAP 2009-05-03 11:16:57 +02:00
Julien BLACHE
7a601d7daa Enable streaming of transcoded content 2009-05-03 11:16:57 +02:00
Julien BLACHE
e5cc417e96 Add DJB hash function to misc.[ch] and use it 2009-05-03 11:16:51 +02:00
Julien BLACHE
0a1c4545dc Move safe_ato[il]() to misc.[ch] 2009-04-30 14:46:37 +02:00
Julien BLACHE
91414c10d7 Use a hashtable for dmap fields lookup
The hashtable is built around an AVL tree and the DJB hash function;
the AVL tree is built at init time and the init routine checks for
collisions.
2009-04-30 13:57:40 +02:00
Julien BLACHE
00876facde Introduce DAAP protocol implementation
Same restrictions as RSP at the moment:
 - no transcoding
 - no authentication
2009-04-30 13:57:34 +02:00