From 780596480a44447666e276747da48dbfb04b2825 Mon Sep 17 00:00:00 2001 From: Brian Beck Date: Tue, 13 Dec 2016 21:18:33 -0800 Subject: [PATCH] Add Disc type, lookup, and discs field on Media (#16) * Add Disc type, lookup, and discs field on Media * Remove query optimization so search subqueries work --- docs/schema.md | 34 ++- docs/types.md | 89 +++++++- schema.json | 200 +++++++++++++++++- src/queries/lookup.js | 18 +- src/resolvers.js | 37 +++- src/types/disc.js | 46 ++++ src/types/index.js | 1 + src/types/media.js | 12 +- src/types/node.js | 9 +- .../fixtures/09cfb1f92b3dd549c5bedb798a351677 | Bin 0 -> 5562 bytes .../09cfb1f92b3dd549c5bedb798a351677.headers | 29 +++ .../fixtures/0ef72077f3a9b6c1962b15d7fe3ce831 | Bin 0 -> 5776 bytes .../0ef72077f3a9b6c1962b15d7fe3ce831.headers | 29 +++ .../fixtures/2f9e4c201203a33929006daf7b750f02 | Bin 0 -> 653 bytes .../2f9e4c201203a33929006daf7b750f02.headers | 29 +++ .../fixtures/42f40bd6ce862b553415369e4aae5c78 | Bin 0 -> 5530 bytes .../42f40bd6ce862b553415369e4aae5c78.headers | 29 +++ .../fixtures/46531076b098c8c871b33d19c26a8238 | Bin 0 -> 5590 bytes .../46531076b098c8c871b33d19c26a8238.headers | 29 +++ .../fixtures/4a4a2484d3a51083d527e0d09c78d2bd | Bin 0 -> 5644 bytes .../4a4a2484d3a51083d527e0d09c78d2bd.headers | 29 +++ .../fixtures/4d223095d0a662328e7304f0e22d7cd5 | Bin 0 -> 5520 bytes .../4d223095d0a662328e7304f0e22d7cd5.headers | 29 +++ .../fixtures/4e2b1581f7cb0bbd3c5e40c83b0695ca | Bin 0 -> 5495 bytes .../4e2b1581f7cb0bbd3c5e40c83b0695ca.headers | 29 +++ .../fixtures/50eed45006ac687345f88f82f940541c | Bin 0 -> 5482 bytes .../50eed45006ac687345f88f82f940541c.headers | 29 +++ .../fixtures/5587cbca6ce9cbeb52754f32f8720461 | Bin 0 -> 5830 bytes .../5587cbca6ce9cbeb52754f32f8720461.headers | 29 +++ .../fixtures/5eaca7f373d448e50af4f742153d551a | Bin 0 -> 5647 bytes .../5eaca7f373d448e50af4f742153d551a.headers | 29 +++ .../fixtures/6100bf95f6a2fc73a34ce80de76b2ea9 | Bin 0 -> 5624 bytes .../6100bf95f6a2fc73a34ce80de76b2ea9.headers | 29 +++ .../fixtures/7d26defc18d36a78fa294252c2929aba | Bin 0 -> 5507 bytes .../7d26defc18d36a78fa294252c2929aba.headers | 29 +++ .../fixtures/84c5658a165655d0beea1840cc65b29e | Bin 0 -> 5599 bytes .../84c5658a165655d0beea1840cc65b29e.headers | 29 +++ .../fixtures/87a55fd7ad8a5996efd9fa87a188decb | Bin 0 -> 646 bytes .../87a55fd7ad8a5996efd9fa87a188decb.headers | 29 +++ .../fixtures/8b531977c80772b52f69fa86983fb719 | Bin 0 -> 2459 bytes .../8b531977c80772b52f69fa86983fb719.headers | 29 +++ .../fixtures/8e96f4f0200526a12901b8b3f596cd5e | Bin 0 -> 5567 bytes .../8e96f4f0200526a12901b8b3f596cd5e.headers | 29 +++ .../fixtures/942f9d096b7e5f2a79cf945af616c347 | Bin 0 -> 1419 bytes .../942f9d096b7e5f2a79cf945af616c347.headers | 29 +++ .../fixtures/9fe6edd3110d84cfd764cab7344c3061 | Bin 0 -> 5554 bytes .../9fe6edd3110d84cfd764cab7344c3061.headers | 29 +++ .../fixtures/a97a8246ca686a803bc85880341f01f7 | Bin 0 -> 5519 bytes .../a97a8246ca686a803bc85880341f01f7.headers | 29 +++ .../fixtures/ad145d4c621f3570ce7f13ae70291eec | Bin 0 -> 5619 bytes .../ad145d4c621f3570ce7f13ae70291eec.headers | 29 +++ .../fixtures/adf2f53c6377e95ec5bd1fcb502c403f | Bin 0 -> 5569 bytes .../adf2f53c6377e95ec5bd1fcb502c403f.headers | 29 +++ .../fixtures/afe809da6a1182c06e0b3a6016806801 | Bin 0 -> 5467 bytes .../afe809da6a1182c06e0b3a6016806801.headers | 29 +++ .../fixtures/b31e543dce9796e06556a651cc9856c2 | Bin 0 -> 5480 bytes .../b31e543dce9796e06556a651cc9856c2.headers | 29 +++ .../fixtures/b867d371abb4b963b6f68cbfc103f644 | Bin 0 -> 5541 bytes .../b867d371abb4b963b6f68cbfc103f644.headers | 29 +++ .../fixtures/c5e74502a62b5e330f0e44f9daece6ec | Bin 0 -> 5593 bytes .../c5e74502a62b5e330f0e44f9daece6ec.headers | 29 +++ .../fixtures/cd5ea3df3b6164f9b021690a01da1424 | Bin 0 -> 5618 bytes .../cd5ea3df3b6164f9b021690a01da1424.headers | 29 +++ .../fixtures/cdfa24feec8a751a9257cba4c542ca08 | Bin 0 -> 859 bytes .../cdfa24feec8a751a9257cba4c542ca08.headers | 29 +++ .../fixtures/d202c6a6d4935cbe9f922833b3fa14d2 | Bin 0 -> 5610 bytes .../d202c6a6d4935cbe9f922833b3fa14d2.headers | 29 +++ .../fixtures/dce546fb301927f48b5a344af5157931 | Bin 0 -> 5515 bytes .../dce546fb301927f48b5a344af5157931.headers | 29 +++ .../fixtures/e2e06e403837e86ba8a0f80693d2e189 | Bin 0 -> 5488 bytes .../e2e06e403837e86ba8a0f80693d2e189.headers | 29 +++ .../fixtures/fd7b5af8b59c7fe254b576ea6c206774 | Bin 0 -> 5572 bytes .../fd7b5af8b59c7fe254b576ea6c206774.headers | 29 +++ test/schema.js | 124 +++++++++++ 74 files changed, 1472 insertions(+), 26 deletions(-) create mode 100644 src/types/disc.js create mode 100644 test/fixtures/09cfb1f92b3dd549c5bedb798a351677 create mode 100644 test/fixtures/09cfb1f92b3dd549c5bedb798a351677.headers create mode 100644 test/fixtures/0ef72077f3a9b6c1962b15d7fe3ce831 create mode 100644 test/fixtures/0ef72077f3a9b6c1962b15d7fe3ce831.headers create mode 100644 test/fixtures/2f9e4c201203a33929006daf7b750f02 create mode 100644 test/fixtures/2f9e4c201203a33929006daf7b750f02.headers create mode 100644 test/fixtures/42f40bd6ce862b553415369e4aae5c78 create mode 100644 test/fixtures/42f40bd6ce862b553415369e4aae5c78.headers create mode 100644 test/fixtures/46531076b098c8c871b33d19c26a8238 create mode 100644 test/fixtures/46531076b098c8c871b33d19c26a8238.headers create mode 100644 test/fixtures/4a4a2484d3a51083d527e0d09c78d2bd create mode 100644 test/fixtures/4a4a2484d3a51083d527e0d09c78d2bd.headers create mode 100644 test/fixtures/4d223095d0a662328e7304f0e22d7cd5 create mode 100644 test/fixtures/4d223095d0a662328e7304f0e22d7cd5.headers create mode 100644 test/fixtures/4e2b1581f7cb0bbd3c5e40c83b0695ca create mode 100644 test/fixtures/4e2b1581f7cb0bbd3c5e40c83b0695ca.headers create mode 100644 test/fixtures/50eed45006ac687345f88f82f940541c create mode 100644 test/fixtures/50eed45006ac687345f88f82f940541c.headers create mode 100644 test/fixtures/5587cbca6ce9cbeb52754f32f8720461 create mode 100644 test/fixtures/5587cbca6ce9cbeb52754f32f8720461.headers create mode 100644 test/fixtures/5eaca7f373d448e50af4f742153d551a create mode 100644 test/fixtures/5eaca7f373d448e50af4f742153d551a.headers create mode 100644 test/fixtures/6100bf95f6a2fc73a34ce80de76b2ea9 create mode 100644 test/fixtures/6100bf95f6a2fc73a34ce80de76b2ea9.headers create mode 100644 test/fixtures/7d26defc18d36a78fa294252c2929aba create mode 100644 test/fixtures/7d26defc18d36a78fa294252c2929aba.headers create mode 100644 test/fixtures/84c5658a165655d0beea1840cc65b29e create mode 100644 test/fixtures/84c5658a165655d0beea1840cc65b29e.headers create mode 100644 test/fixtures/87a55fd7ad8a5996efd9fa87a188decb create mode 100644 test/fixtures/87a55fd7ad8a5996efd9fa87a188decb.headers create mode 100644 test/fixtures/8b531977c80772b52f69fa86983fb719 create mode 100644 test/fixtures/8b531977c80772b52f69fa86983fb719.headers create mode 100644 test/fixtures/8e96f4f0200526a12901b8b3f596cd5e create mode 100644 test/fixtures/8e96f4f0200526a12901b8b3f596cd5e.headers create mode 100644 test/fixtures/942f9d096b7e5f2a79cf945af616c347 create mode 100644 test/fixtures/942f9d096b7e5f2a79cf945af616c347.headers create mode 100644 test/fixtures/9fe6edd3110d84cfd764cab7344c3061 create mode 100644 test/fixtures/9fe6edd3110d84cfd764cab7344c3061.headers create mode 100644 test/fixtures/a97a8246ca686a803bc85880341f01f7 create mode 100644 test/fixtures/a97a8246ca686a803bc85880341f01f7.headers create mode 100644 test/fixtures/ad145d4c621f3570ce7f13ae70291eec create mode 100644 test/fixtures/ad145d4c621f3570ce7f13ae70291eec.headers create mode 100644 test/fixtures/adf2f53c6377e95ec5bd1fcb502c403f create mode 100644 test/fixtures/adf2f53c6377e95ec5bd1fcb502c403f.headers create mode 100644 test/fixtures/afe809da6a1182c06e0b3a6016806801 create mode 100644 test/fixtures/afe809da6a1182c06e0b3a6016806801.headers create mode 100644 test/fixtures/b31e543dce9796e06556a651cc9856c2 create mode 100644 test/fixtures/b31e543dce9796e06556a651cc9856c2.headers create mode 100644 test/fixtures/b867d371abb4b963b6f68cbfc103f644 create mode 100644 test/fixtures/b867d371abb4b963b6f68cbfc103f644.headers create mode 100644 test/fixtures/c5e74502a62b5e330f0e44f9daece6ec create mode 100644 test/fixtures/c5e74502a62b5e330f0e44f9daece6ec.headers create mode 100644 test/fixtures/cd5ea3df3b6164f9b021690a01da1424 create mode 100644 test/fixtures/cd5ea3df3b6164f9b021690a01da1424.headers create mode 100644 test/fixtures/cdfa24feec8a751a9257cba4c542ca08 create mode 100644 test/fixtures/cdfa24feec8a751a9257cba4c542ca08.headers create mode 100644 test/fixtures/d202c6a6d4935cbe9f922833b3fa14d2 create mode 100644 test/fixtures/d202c6a6d4935cbe9f922833b3fa14d2.headers create mode 100644 test/fixtures/dce546fb301927f48b5a344af5157931 create mode 100644 test/fixtures/dce546fb301927f48b5a344af5157931.headers create mode 100644 test/fixtures/e2e06e403837e86ba8a0f80693d2e189 create mode 100644 test/fixtures/e2e06e403837e86ba8a0f80693d2e189.headers create mode 100644 test/fixtures/fd7b5af8b59c7fe254b576ea6c206774 create mode 100644 test/fixtures/fd7b5af8b59c7fe254b576ea6c206774.headers diff --git a/docs/schema.md b/docs/schema.md index 53c499f..886de8c 100644 --- a/docs/schema.md +++ b/docs/schema.md @@ -153,7 +153,7 @@ type Artist implements Node, Entity { area: Area # The area in which an artist began their career (or where - # were born, if the artist is a person). + # they were born, if the artist is a person). beginArea: Area # The area in which an artist ended their career (or where @@ -590,6 +590,28 @@ scalar Date # Decimal degrees, used for latitude and longitude. scalar Degrees +# Information about the physical CD and releases associated with a +# particular [disc ID](https://musicbrainz.org/doc/Disc_ID). +type Disc implements Node { + # The ID of an object + id: ID! + + # The [disc ID](https://musicbrainz.org/doc/Disc_ID) of this disc. + discID: DiscID! + + # The number of offsets (tracks) on the disc. + offsetCount: Int! + + # The sector offset of each track on the disc. + offsets: [Int] + + # The sector offset of the lead-out (the end of the disc). + sectors: Int! + + # The list of releases linked to this disc ID. + releases(after: String, first: Int): ReleaseConnection +} + # [Disc ID](https://musicbrainz.org/doc/Disc_ID) is the code # number which MusicBrainz uses to link a physical CD to a [release](https://musicbrainz.org/doc/Release) # listing. @@ -928,6 +950,13 @@ type LookupQuery { mbid: MBID! ): Collection + # Look up a specific physical disc by its disc ID. + disc( + # The [disc ID](https://musicbrainz.org/doc/Disc_ID) + # of the disc. + discID: DiscID! + ): Disc + # Look up a specific event by its MBID. event( # The MBID of the entity. @@ -1019,6 +1048,9 @@ type Medium { # The number of audio tracks on this medium. trackCount: Int + + # A list of physical discs and their disc IDs for this medium. + discs: [Disc] } # An object with an ID diff --git a/docs/types.md b/docs/types.md index f016348..6d8c6d8 100644 --- a/docs/types.md +++ b/docs/types.md @@ -18,6 +18,7 @@ You may also be interested in reading the [schema in GraphQL syntax](schema.md).
  • [CollectionConnection](#collectionconnection)
  • [CollectionEdge](#collectionedge)
  • [Coordinates](#coordinates)
  • +
  • [Disc](#disc)
  • [Event](#event)
  • [EventConnection](#eventconnection)
  • [EventEdge](#eventedge)
  • @@ -555,7 +556,7 @@ is often, but not always, its birth/formation country. Area The area in which an artist began their career (or where -were born, if the artist is a person). +they were born, if the artist is a person). @@ -1656,6 +1657,72 @@ Geographic coordinates described with latitude and longitude. +### Disc + +Information about the physical CD and releases associated with a +particular [disc ID](https://musicbrainz.org/doc/Disc_ID). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Field / ArgumentTypeDescription
    id ID! + The ID of an object +
    discID DiscID! + The disc ID of this disc. +
    offsetCount Int! + The number of offsets (tracks) on the disc. +
    offsets [Int] + The sector offset of each track on the disc. +
    sectors Int! + The sector offset of the lead-out (the end of the disc). +
    releases ReleaseConnection + The list of releases linked to this disc ID. +
    afterString
    firstInt
    + ### Event An [event](https://musicbrainz.org/doc/Event) refers to an @@ -2399,6 +2466,19 @@ A lookup of an individual MusicBrainz entity by its MBID. MBID! The MBID of the entity. + + disc + Disc + + Look up a specific physical disc by its disc ID. + + + + discID + DiscID! + The disc ID +of the disc. + event Event @@ -2579,6 +2659,13 @@ multi-disc release). The number of audio tracks on this medium. + + discs + [Disc] + + A list of physical discs and their disc IDs for this medium. + + ### PageInfo diff --git a/schema.json b/schema.json index ce19f01..4e4da69 100644 --- a/schema.json +++ b/schema.json @@ -167,6 +167,33 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "disc", + "description": "Look up a specific physical disc by its disc ID.", + "args": [ + { + "name": "discID", + "description": "The [disc ID](https://musicbrainz.org/doc/Disc_ID)\nof the disc.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DiscID", + "ofType": null + } + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "Disc", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "event", "description": "Look up a specific event by its MBID.", @@ -898,6 +925,11 @@ "name": "Release", "ofType": null }, + { + "kind": "OBJECT", + "name": "Disc", + "ofType": null + }, { "kind": "OBJECT", "name": "Label", @@ -1459,7 +1491,7 @@ }, { "name": "beginArea", - "description": "The area in which an artist began their career (or where\nwere born, if the artist is a person).", + "description": "The area in which an artist began their career (or where\nthey were born, if the artist is a person).", "args": [], "type": { "kind": "OBJECT", @@ -3301,6 +3333,22 @@ }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "discs", + "description": "A list of physical discs and their disc IDs for this medium.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Disc", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -3308,6 +3356,146 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "OBJECT", + "name": "Disc", + "description": "Information about the physical CD and releases associated with a\nparticular [disc ID](https://musicbrainz.org/doc/Disc_ID).", + "fields": [ + { + "name": "id", + "description": "The ID of an object", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "discID", + "description": "The [disc ID](https://musicbrainz.org/doc/Disc_ID) of this disc.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DiscID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offsetCount", + "description": "The number of offsets (tracks) on the disc.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offsets", + "description": "The sector offset of each track on the disc.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sectors", + "description": "The sector offset of the lead-out (the end of the disc).", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "releases", + "description": "The list of releases linked to this disc ID.", + "args": [ + { + "name": "after", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "first", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "ReleaseConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "DiscID", + "description": "[Disc ID](https://musicbrainz.org/doc/Disc_ID) is the code\nnumber which MusicBrainz uses to link a physical CD to a [release](https://musicbrainz.org/doc/Release)\nlisting.\n\nA release may have any number of disc IDs, and a disc ID may be linked to\nmultiple releases. This is because disc ID calculation involves a hash of the\nframe offsets of the CD tracks.\n\nDifferent pressing of a CD often have slightly different frame offsets, and\nhence different disc IDs.\n\nConversely, two different CDs may happen to have exactly the same set of frame\noffsets and hence the same disc ID.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "LabelConnection", @@ -9138,16 +9326,6 @@ "enumValues": null, "possibleTypes": null }, - { - "kind": "SCALAR", - "name": "DiscID", - "description": "[Disc ID](https://musicbrainz.org/doc/Disc_ID) is the code\nnumber which MusicBrainz uses to link a physical CD to a [release](https://musicbrainz.org/doc/Release)\nlisting.\n\nA release may have any number of disc IDs, and a disc ID may be linked to\nmultiple releases. This is because disc ID calculation involves a hash of the\nframe offsets of the CD tracks.\n\nDifferent pressing of a CD often have slightly different frame offsets, and\nhence different disc IDs.\n\nConversely, two different CDs may happen to have exactly the same set of frame\noffsets and hence the same disc ID.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, { "kind": "SCALAR", "name": "ISWC", diff --git a/src/queries/lookup.js b/src/queries/lookup.js index 4f01819..50277bf 100644 --- a/src/queries/lookup.js +++ b/src/queries/lookup.js @@ -1,10 +1,12 @@ -import { GraphQLObjectType } from 'graphql' +import { GraphQLObjectType, GraphQLNonNull } from 'graphql' import { resolveLookup } from '../resolvers' import { mbid, toWords } from '../types/helpers' import { Area, Artist, Collection, + Disc, + DiscID, Event, Instrument, Label, @@ -36,6 +38,20 @@ export const LookupQuery = new GraphQLObjectType({ area: createLookupField(Area), artist: createLookupField(Artist), collection: createLookupField(Collection), + disc: { + type: Disc, + description: 'Look up a specific physical disc by its disc ID.', + args: { + discID: { + type: new GraphQLNonNull(DiscID), + description: `The [disc ID](https://musicbrainz.org/doc/Disc_ID) +of the disc.` + } + }, + resolve: (root, { discID }, { loaders }, info) => { + return loaders.lookup.load(['discid', discID]) + } + }, event: createLookupField(Event), instrument: createLookupField(Instrument), label: createLookupField(Label), diff --git a/src/resolvers.js b/src/resolvers.js index 8f8b80c..0012aa4 100644 --- a/src/resolvers.js +++ b/src/resolvers.js @@ -38,20 +38,20 @@ export function includeRelationships (params, info, fragments = info.fragments) export function includeSubqueries (params, info, fragments = info.fragments) { const subqueryIncludes = { - aliases: 'aliases', - artistCredit: 'artist-credits', - artistCredits: 'artist-credits', - isrcs: 'isrcs', - media: 'media', - rating: 'ratings', - tags: 'tags' + aliases: ['aliases'], + artistCredit: ['artist-credits'], + artistCredits: ['artist-credits'], + isrcs: ['isrcs'], + media: ['media', 'discids'], + rating: ['ratings'], + tags: ['tags'] } let fields = getFields(info, fragments) const include = [] for (const key in subqueryIncludes) { if (fields[key]) { const value = subqueryIncludes[key] - include.push(value) + include.push(...value) } } params = { @@ -104,6 +104,13 @@ export function resolveBrowse (root, { let request if (discID) { request = loaders.lookup.load(['discid', discID, params]) + // If fetching releases by disc ID, they will already include the `media` + // and `discids` subqueries, and it is invalid to specify them. + if (params.inc) { + params.inc = params.inc.filter(value => { + return value !== 'media' && value !== 'discids' + }) + } } else if (isrc) { request = loaders.lookup.load(['isrc', isrc, params]) } else if (iswc) { @@ -193,7 +200,7 @@ export function createSubqueryResolver ({ inc, key } = {}, handler = value => va return (entity, args, { loaders }, info) => { key = key || toDashed(info.fieldName) let promise - if (key in entity || (entity._inc && entity._inc.indexOf(key) >= 0)) { + if (key in entity) { promise = Promise.resolve(entity) } else { const { _type: entityType, id } = entity @@ -203,3 +210,15 @@ export function createSubqueryResolver ({ inc, key } = {}, handler = value => va return promise.then(entity => handler(entity[key], args)) } } + +export function resolveDiscReleases (disc, args, context, info) { + const { releases } = disc + if (releases != null) { + return { + totalCount: releases.length, + ...connectionFromArray(releases, args) + } + } + args = { ...args, discID: disc.id } + return resolveBrowse(disc, args, context, info) +} diff --git a/src/types/disc.js b/src/types/disc.js new file mode 100644 index 0000000..1c89193 --- /dev/null +++ b/src/types/disc.js @@ -0,0 +1,46 @@ +import { + GraphQLObjectType, + GraphQLNonNull, + GraphQLList, + GraphQLInt +} from 'graphql/type' +import { forwardConnectionArgs } from 'graphql-relay' +import Node from './node' +import { DiscID } from './scalars' +import { ReleaseConnection } from './release' +import { resolveDiscReleases } from '../resolvers' +import { id, resolveHyphenated } from './helpers' + +export default new GraphQLObjectType({ + name: 'Disc', + description: `Information about the physical CD and releases associated with a +particular [disc ID](https://musicbrainz.org/doc/Disc_ID).`, + interfaces: () => [Node], + fields: () => ({ + id, + discID: { + type: new GraphQLNonNull(DiscID), + description: `The [disc ID](https://musicbrainz.org/doc/Disc_ID) of this disc.`, + resolve: disc => disc.id + }, + offsetCount: { + type: new GraphQLNonNull(GraphQLInt), + description: 'The number of offsets (tracks) on the disc.', + resolve: resolveHyphenated + }, + offsets: { + type: new GraphQLList(GraphQLInt), + description: 'The sector offset of each track on the disc.' + }, + sectors: { + type: new GraphQLNonNull(GraphQLInt), + description: 'The sector offset of the lead-out (the end of the disc).' + }, + releases: { + type: ReleaseConnection, + description: 'The list of releases linked to this disc ID.', + args: forwardConnectionArgs, + resolve: resolveDiscReleases + } + }) +}) diff --git a/src/types/index.js b/src/types/index.js index 5a9dbe2..b054640 100644 --- a/src/types/index.js +++ b/src/types/index.js @@ -5,6 +5,7 @@ export { default as Entity, EntityConnection } from './entity' export { default as Area, AreaConnection } from './area' export { default as Artist, ArtistConnection } from './artist' export { default as Collection, CollectionConnection } from './collection' +export { default as Disc } from './disc' export { default as Event, EventConnection } from './event' export { default as Instrument, InstrumentConnection } from './instrument' export { default as Label, LabelConnection } from './label' diff --git a/src/types/media.js b/src/types/media.js index abc43d0..60162c6 100644 --- a/src/types/media.js +++ b/src/types/media.js @@ -1,4 +1,10 @@ -import { GraphQLObjectType, GraphQLString, GraphQLInt } from 'graphql/type' +import { + GraphQLObjectType, + GraphQLList, + GraphQLString, + GraphQLInt +} from 'graphql/type' +import Disc from './disc' import { resolveHyphenated, fieldWithID } from './helpers' export default new GraphQLObjectType({ @@ -26,6 +32,10 @@ multi-disc release).` type: GraphQLInt, description: 'The number of audio tracks on this medium.', resolve: resolveHyphenated + }, + discs: { + type: new GraphQLList(Disc), + description: 'A list of physical discs and their disc IDs for this medium.' } }) }) diff --git a/src/types/node.js b/src/types/node.js index 35d8124..427d004 100644 --- a/src/types/node.js +++ b/src/types/node.js @@ -3,6 +3,10 @@ import { toDashed } from './helpers' const debug = require('debug')('graphbrainz:types/node') +const TYPE_MODULES = { + discid: 'disc' +} + const { nodeInterface, nodeField } = nodeDefinitions( (globalID, { loaders }) => { const { type, id } = fromGlobalId(globalID) @@ -10,10 +14,11 @@ const { nodeInterface, nodeField } = nodeDefinitions( return loaders.lookup.load([entityType, id]) }, (obj) => { + const type = TYPE_MODULES[obj._type] || obj._type try { - return require(`./${obj._type}`).default + return require(`./${type}`).default } catch (err) { - debug(`Failed to load type: ${obj._type}`) + debug(`Failed to load type: ${type}`) return null } } diff --git a/test/fixtures/09cfb1f92b3dd549c5bedb798a351677 b/test/fixtures/09cfb1f92b3dd549c5bedb798a351677 new file mode 100644 index 0000000000000000000000000000000000000000..45c46e21e84b167877734f363cf36efa688e94ad GIT binary patch literal 5562 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 OFaHn0Ddc-6?EnBVRthTs literal 0 HcmV?d00001 diff --git a/test/fixtures/0ef72077f3a9b6c1962b15d7fe3ce831.headers b/test/fixtures/0ef72077f3a9b6c1962b15d7fe3ce831.headers new file mode 100644 index 0000000..6d7aa99 --- /dev/null +++ b/test/fixtures/0ef72077f3a9b6c1962b15d7fe3ce831.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:55:55 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "633", + "x-ratelimit-reset": "1481687756", + "server": "Plack::Handler::Starlet", + "etag": "W/\"8efbe85e770c94f1eafaa164979660c3\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/5JmJmTPkKkYLm2QFsIh1mpjIBsQ-?fmt=json", + "time": 657, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/2f9e4c201203a33929006daf7b750f02 b/test/fixtures/2f9e4c201203a33929006daf7b750f02 new file mode 100644 index 0000000000000000000000000000000000000000..c05ac1ae6003297a67893564c489e22c3bd9cb86 GIT binary patch literal 653 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 k5&n68?xEDf{6Bgw_cDUgID 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/4a4a2484d3a51083d527e0d09c78d2bd.headers b/test/fixtures/4a4a2484d3a51083d527e0d09c78d2bd.headers new file mode 100644 index 0000000..98cb18c --- /dev/null +++ b/test/fixtures/4a4a2484d3a51083d527e0d09c78d2bd.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:11 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "554", + "x-ratelimit-reset": "1481687772", + "server": "Plack::Handler::Starlet", + "etag": "W/\"46ab7ed9acc3d2f5050133ed1c09d5b4\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/ZQApCKC13fLDKtoelWo0nUXSlDI-?fmt=json", + "time": 678, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/4d223095d0a662328e7304f0e22d7cd5 b/test/fixtures/4d223095d0a662328e7304f0e22d7cd5 new file mode 100644 index 0000000000000000000000000000000000000000..2ce275cab5e51d7aef49cbfad5cd4ea100a217b6 GIT binary patch literal 5520 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 S&Ao^>g8v5(cF|hS=>P!FZK(wS literal 0 HcmV?d00001 diff --git a/test/fixtures/4d223095d0a662328e7304f0e22d7cd5.headers b/test/fixtures/4d223095d0a662328e7304f0e22d7cd5.headers new file mode 100644 index 0000000..1ade984 --- /dev/null +++ b/test/fixtures/4d223095d0a662328e7304f0e22d7cd5.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:00 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "328", + "x-ratelimit-reset": "1481687760", + "server": "Plack::Handler::Starlet", + "etag": "W/\"baf39b8ec310f75c4879e425278c87ee\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/LJbrPXYlRQOp92.q09PsOJIDp64-?fmt=json", + "time": 565, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/4e2b1581f7cb0bbd3c5e40c83b0695ca b/test/fixtures/4e2b1581f7cb0bbd3c5e40c83b0695ca new file mode 100644 index 0000000000000000000000000000000000000000..2c287f2ce18f76e63b59b19b340f729aa835b6ce GIT binary patch literal 5495 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 Q0prjA4^D=X28Hba0KRZ)J^%m! literal 0 HcmV?d00001 diff --git a/test/fixtures/5587cbca6ce9cbeb52754f32f8720461.headers b/test/fixtures/5587cbca6ce9cbeb52754f32f8720461.headers new file mode 100644 index 0000000..efa0be3 --- /dev/null +++ b/test/fixtures/5587cbca6ce9cbeb52754f32f8720461.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:55:55 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "623", + "x-ratelimit-reset": "1481687756", + "server": "Plack::Handler::Starlet", + "etag": "W/\"614ec88016c46be66c850f4681039414\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/BTRGIyOdiZ9zJWqrOdTpo5l6RNY-?fmt=json", + "time": 633, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/5eaca7f373d448e50af4f742153d551a b/test/fixtures/5eaca7f373d448e50af4f742153d551a new file mode 100644 index 0000000000000000000000000000000000000000..c16c2d55d8fc22a7f73b4f2489730f6f909ab299 GIT binary patch literal 5647 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/5eaca7f373d448e50af4f742153d551a.headers b/test/fixtures/5eaca7f373d448e50af4f742153d551a.headers new file mode 100644 index 0000000..d1f031c --- /dev/null +++ b/test/fixtures/5eaca7f373d448e50af4f742153d551a.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:55:55 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "628", + "x-ratelimit-reset": "1481687756", + "server": "Plack::Handler::Starlet", + "etag": "W/\"cda0e7ee08880dfac7d510261e1914d0\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/JqKqVx.6RyPF63qiq.UkZKL1amc-?fmt=json", + "time": 657, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/6100bf95f6a2fc73a34ce80de76b2ea9 b/test/fixtures/6100bf95f6a2fc73a34ce80de76b2ea9 new file mode 100644 index 0000000000000000000000000000000000000000..6eb9139900bfa564f231a59cc552894a0197445e GIT binary patch literal 5624 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/6100bf95f6a2fc73a34ce80de76b2ea9.headers b/test/fixtures/6100bf95f6a2fc73a34ce80de76b2ea9.headers new file mode 100644 index 0000000..ddc8888 --- /dev/null +++ b/test/fixtures/6100bf95f6a2fc73a34ce80de76b2ea9.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:17 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "648", + "x-ratelimit-reset": "1481687778", + "server": "Plack::Handler::Starlet", + "etag": "W/\"1e23b4d88952ed276b5a0c139ffb5982\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/iyuUxXxwVb95qzws9gT.0p.NNS0-?fmt=json", + "time": 595, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/7d26defc18d36a78fa294252c2929aba b/test/fixtures/7d26defc18d36a78fa294252c2929aba new file mode 100644 index 0000000000000000000000000000000000000000..583fa5bf9945f773ead989e4ebdf813892743f7e GIT binary patch literal 5507 zcmV-}6@2O+iwFP!000001MQt@Q{z0dhW`qc&xj*Swk6N|iG4zbHDMV}O-*@)43LB* zY%|4wKP?-Q;3&4@*s*yJPt`L(2$tMxEq&$g_P^S|cZc2np!Q9(sIJr1THn9*?ST)k z{O`Y7&vtL@t9IuKwY}Q6TEH}{xjsdhavf32^^p~LJ_;Pi!&uinY6P{_+F)o8AK(JD z!yst8ZTl8p8@7kHKD^Yr_E)y-{>@6W?fEO+U}Xp|?035zcu&}dMl8eibQd|U?;}cW z7jZ{(kj`C;yI5x$_u;*FzSp+HKE7WWUJSbZJ9`M(y3WkiS~my= z{t&s{hYq~mdVfK@TQl&g#x=@T!5*5vYMMGRS2@=(U)40z(v4NkAk<{5n#tgD@MeQ@ z`s=Ox#@^lDUF+zkar5)X9XZ|^)UUO>-k&HA(j@4BgXA3f&X0aHbnnbdQTKhNf%q#WXpEFI?A%=w9reMPI_E z`JdM1UhC@5?(VSh=gAxL)0g$D2Hom7KVwaEaW$-Q(X=j_#+X9W1`V4g@C(s2=b~v# z3!5ewPdB~#!3e~nQ+8qO%`O|Qlim8uq1V2&{_dUM_Yb{RuWQ_zCkGRqlaC`O&;de- z=&fZ4L%}OxC~ky?5?`RVVmQH2rV$#-Fn-1RLNT7QKeNKiV)&J5Si}&Q)x*n%zZUi< z;blp5S&hhy5Z>V4edGS@dCfd|IodJlefxgx^yaehL$mMP$X}+KhK|D>VJ4bp;*JdH zhG^O%Vbex*M;wPun`~y&jo@$dp^v>Y{e106|J!_iKIrUV|McFF*F2 z{?WzH+mqwNo<-K~v2`>!+^cW(OkHhAG?p?XI2sZX4T*4|m~%{xk@0bi7+i>PBHAHL z7>Z%h4lzPQ5hFAdAz})frud0d3(p>-AAbTG7%bR)cw+sYZQF)_ad`Z9jkRaZ>Gbu5 z^SLH4eqUeq4L`7S_S?~U`|4r$*xp?`J$dNf2N&B>U!r%N+?{n#Z!ZrY8@rb~&+X^4 z*1*1PocFcVX%jk`3C5?CQQ_Yv1^)(D7Pd1?VOj%oBlK@#iF={ohp{oj49D$)4W8m0 zaI1{LyQo3Ji3JWJ1`UVKVOgPbXe_jgA%5bNkJsJ($D18;yxG2Jt_>g9&EC(>R!X?+ZA0+;Z(7 za@m9J@qXj)p|3Uej!&C=-Qmf)*VT5`*Qdq^&X`m(Uo#vj<%aTF_&#`Gv~G8ebN|J? zJKmuChv$2Ahfn*9n90$f`6mPYY}Yhr4CP;q>|9`RUBDjQhV&1M8}_hI?xV2TdI73mkW+&M$DBQ}Erl zlb;qIIvJig`Ms^ol9ON9xj%RHtCz#a&Q1Nw{jGKC!S3PTdu@36vUWAGH{P9ZAK=Xm z%j^ZW*V|hr-h0_OxbAO1?z>X=$k3aly%EB`sdbmIlsO%(bu`?u;MfQ&kR}#lBRY(W zrAhR}iq^X5Fiy15nPK?-xBJt)b|0Ese(Pb^+-;uM^{3wNXLEac9ue4RqCb1=v^w7} zhFu%qQ{!RRb2$F9>Foc+LA@YDz5aTSZKF8cf+f~7h>dhuu@Loi2iclUkjY%mT~nt% z)kMtQhwy#EaJ}xJJ#0g${Y?{Bbi0p!AKCpO{O?}3A0deTSA!p)y8WBlx4^y~_z*-x ztnPPwZ}h_3<-iyYTz&L%(C>BA6HH*w?%5$(7<3T@BO?vW;e~Lcws%wmBgEe*%u75+C!8|ma!L?&2}6!Fj`;SDYOa$<3A5k-|zMP0d)WE&;QkK?G9Y* zO8mVKmV@cx_S-$dGk(~^j<~u5BL)43SHP(`#<2Q=|KkyJiQGf?Dc0e35#^?bV6nB3 z9S|SEDaByE?;36(%rEIG_`DRXj8RHDvN7w8pvJ^g}f>H{= zBr1F+0i`5ua~ar*8cK-~4K)m+x-HKEWM<>8<+GK_qm*>&Q3!6C3NM%h17^V_a=Rn~ zn=#f&f*b|Wl^Da3A%k2ni3*>oI7(5W9);kR&xTUcsYfBWWi&>KkYfoSdFVPF^(BRR zr21|a{-Taj79%G!I8Pc%Delv`L~;^8V~)pY`Q&6Z&TyvoX=12hkks?b{6J=8mlWzz z2yRh9De2Us5Zn^$iy#_BVx2@_Q#F)Q5;<9oGn_F>d6x-HP>~!c%j>&Eh!Hq}`q$&XH|<0kVDSxWp%(N0_26LZ+vPDKmT*PUl#IzS@K!$^vLNuw4X)3e(4d1(vgu zv55?koHhj_nFK1Qo%Yc8R+`Wwc#E9ZL=1vku5W1$^uXWMwUUrO8G|SRs00sJ#3qZjP{?lPU*NCwYKMDJoPOdOH<)k))x=m5G5r!M~AI5Yo z`r!k2d-FRj#@zP&C;xV36UJJ`*+vtR8jeR?%8*Ara2ws>$ngRL8FpY})1toaSRceT zA0|tjFJ_rMGR8C|*HMQ~xqjR-GLw=zCui(5E54|RTt{7r62wb^T7R9BMwsv=~xKoYSA0F)fCaRJe|uk1iiN zP5CZYh%X9)PD;!m3qMlfR57^qc^OmAk{$_TN~b>sVW$|}sv2V|gdeGZD+yz&o?ItM zrkVjLWt8ivBc%fQ1)L+5>{1L;lFD_`=}$hCDLE!#)6$_z$aNydB!2$LYdR0Nx7pcG zGHPI(TW9r)-P)AuWJ){&v(_@S`LR%>oRR5lX5t`4NzI4LeZWBQRvi%@+HwZ{`3QSf z<1|QmxlG_kig0GCp(Z6$vpJ7MI2AdG6yD@R4WkA=58TOhx1JB~EXH!?J=nvhQ>4Z_ z5g{#@iPXpa&&$U=KE!krjnQ3Ept5TRm$N(wQOz?~@pQAx>JQUOs(w5RHDCkkN= z)90SyA=7nSB+fO+v2_CBv6v|?w8va|($iGTKc_}S3LRuB5pb}@gf1q+6otB_7+aDM zB-vlRQ>9!vQBr!>G^Bb>AV^sfupn?{Jf`(A_15Xmj0~}V3Wz7G2PiP8MLj^&{y{Va z8kRY{vd&6U@FXylYQ&nYEla116CQASRzK3o3?Q1dJW?{eQz(N}l8ow;%CS5*>=tD3Ir3%$wFTOn9Yh36%slx3#ssg*%0iN#f|3{sWQ+n25?NmsRW z(k9hal|m}}D&c}EDRoN9x|*kI za?Y}xbOw>2)JbsWEU-XLsgosbZ+@VV&JX4*^^;h2ZGK#kq8eJFFh^SI=L;7o;)0T- zJ5?+7Go{o~3H1wL4AoTXEGEp6H~n8(H91#>hicX2lIXzaOT#K|j8bsHD7-hhZ&1^5 zkqv9RP~;HgP{&3N+#LlUwqehmrMh^pu#!}TC04E_Ce)a#HcNUX8KQ6LM;|0OyBlc| z9DPE3^Rebm13Kk(@7@&}+y*ZIb0BDkA!-u~jN~yy93A^M*0~0^HAB}hT_dg}=lCS*jivLMgv6<(m&vIbj;T^r zoGBbrQYKZ^5~oU{FH-e}x>zG;WK(e*Q<7LCp(;)hlwp1xGnF`1lANPjI3_MN7-oDcb`Ez6zcofsQ*r`%!o$BTHR70>+h!`iY z{GLK^(3fE6OR!U>U?r)g;eub&n}7RNptc_B6uHJ zDn&g6y%3>}3N2Vj%#(BQ|CR3b>C?T&!o}uwaCK$2sp%tClq6RTT2-h#^eV3mBvWfFSP^FdQAR=% zT&9vi^HnOEb#>XZxjq=_qhcj2u{5Jjk#O}C$gbHyqp2~H`9 zN&<~lOA;&zBUb()VCpO{A*nPA-1|}xeabRYRZJf)YLd!0RV781<_)>FZo>e znH5C2@;)icQ=^+=I@2{o zO*cSxz=;T(H6I)nd{?Li7MAJERuM#c9Emt5`u@#KZIHYA^O44wAJsWJ1 zN40;6I;PKTU97u$c&=mNzK3ZzXatAOVUo9V-Rwc@HwM3t&iBd78sA_K zXIIbnd-s1^TYuT(;1eW^l?aFpr(1)VLI=5Wk(i{Y95l0Y`GGu{O z5v;uq9QO>}wfGb%YC?bf!Hje_3AY-(UxuyVZlfZ_AA33fljCKRaY=`l{{#AAx`@u{ F004`sm#+W- literal 0 HcmV?d00001 diff --git a/test/fixtures/7d26defc18d36a78fa294252c2929aba.headers b/test/fixtures/7d26defc18d36a78fa294252c2929aba.headers new file mode 100644 index 0000000..29cea3d --- /dev/null +++ b/test/fixtures/7d26defc18d36a78fa294252c2929aba.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:11 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "558", + "x-ratelimit-reset": "1481687772", + "server": "Plack::Handler::Starlet", + "etag": "W/\"dac58f112dc22a1767c7308c353b7ddc\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/YgQIINbxyNhTDK5Iyot3I9irp3c-?fmt=json", + "time": 634, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/84c5658a165655d0beea1840cc65b29e b/test/fixtures/84c5658a165655d0beea1840cc65b29e new file mode 100644 index 0000000000000000000000000000000000000000..ec3b8438cb8d033ca7f85e250b2cd6c012b4997a GIT binary patch literal 5599 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/84c5658a165655d0beea1840cc65b29e.headers b/test/fixtures/84c5658a165655d0beea1840cc65b29e.headers new file mode 100644 index 0000000..929768f --- /dev/null +++ b/test/fixtures/84c5658a165655d0beea1840cc65b29e.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:00 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "326", + "x-ratelimit-reset": "1481687760", + "server": "Plack::Handler::Starlet", + "etag": "W/\"b4482322628423dfefc67b264b740ed4\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/KfzSur0dV4W.P4zSxxNnF0eUvwQ-?fmt=json", + "time": 623, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/87a55fd7ad8a5996efd9fa87a188decb b/test/fixtures/87a55fd7ad8a5996efd9fa87a188decb new file mode 100644 index 0000000000000000000000000000000000000000..d52d7ad04268fc6ff781fe2daaa7538034fc0f18 GIT binary patch literal 646 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 Z^Ob!LhyKO`>xcdH@qdO8q;WJG004Pc+u#5I literal 0 HcmV?d00001 diff --git a/test/fixtures/8b531977c80772b52f69fa86983fb719.headers b/test/fixtures/8b531977c80772b52f69fa86983fb719.headers new file mode 100644 index 0000000..83eaa20 --- /dev/null +++ b/test/fixtures/8b531977c80772b52f69fa86983fb719.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:55:50 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "333", + "x-ratelimit-reset": "1481687750", + "server": "Plack::Handler::Starlet", + "etag": "W/\"74fcc7a55c8bf1b95b3c890d7ae26868\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/rKs_PWM2y.8B7uVgxqJqzTDz7vs-?fmt=json", + "time": 443, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/8e96f4f0200526a12901b8b3f596cd5e b/test/fixtures/8e96f4f0200526a12901b8b3f596cd5e new file mode 100644 index 0000000000000000000000000000000000000000..e9a489f342c664b2d3546186c3fd6c73b7802fbb GIT binary patch literal 5567 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 N{{cY(SYyuV005b~#Y6xA literal 0 HcmV?d00001 diff --git a/test/fixtures/8e96f4f0200526a12901b8b3f596cd5e.headers b/test/fixtures/8e96f4f0200526a12901b8b3f596cd5e.headers new file mode 100644 index 0000000..297d113 --- /dev/null +++ b/test/fixtures/8e96f4f0200526a12901b8b3f596cd5e.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:11 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "551", + "x-ratelimit-reset": "1481687772", + "server": "Plack::Handler::Starlet", + "etag": "W/\"784303af8cc0139a7dfb83ab641f799e\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/dT0qfu73Iao5WeycmQB3MOWJ3F8-?fmt=json", + "time": 625, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/942f9d096b7e5f2a79cf945af616c347 b/test/fixtures/942f9d096b7e5f2a79cf945af616c347 new file mode 100644 index 0000000000000000000000000000000000000000..dfea3182390a6c797fe7fcd1db527b1f5e07b7e8 GIT binary patch literal 1419 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 Ay#N3J literal 0 HcmV?d00001 diff --git a/test/fixtures/9fe6edd3110d84cfd764cab7344c3061.headers b/test/fixtures/9fe6edd3110d84cfd764cab7344c3061.headers new file mode 100644 index 0000000..7f0e550 --- /dev/null +++ b/test/fixtures/9fe6edd3110d84cfd764cab7344c3061.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:06 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "422", + "x-ratelimit-reset": "1481687766", + "server": "Plack::Handler::Starlet", + "etag": "W/\"99f9bf6fb616eef573908b2cdee82ade\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/OpEqBUFSMylTQ_KyaQMw0CFjeBQ-?fmt=json", + "time": 589, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/a97a8246ca686a803bc85880341f01f7 b/test/fixtures/a97a8246ca686a803bc85880341f01f7 new file mode 100644 index 0000000000000000000000000000000000000000..e04614ee0778db41412c812acc07233b5e6a34a3 GIT binary patch literal 5519 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 N_Wwrv@jTAy005Bu6#f7J literal 0 HcmV?d00001 diff --git a/test/fixtures/ad145d4c621f3570ce7f13ae70291eec.headers b/test/fixtures/ad145d4c621f3570ce7f13ae70291eec.headers new file mode 100644 index 0000000..f5daf76 --- /dev/null +++ b/test/fixtures/ad145d4c621f3570ce7f13ae70291eec.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:11 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "553", + "x-ratelimit-reset": "1481687772", + "server": "Plack::Handler::Starlet", + "etag": "W/\"6bf1abc5131d83247f11aba2cea66e92\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/ZpxxNqBzOe1KJQUSJotRAdo1FAA-?fmt=json", + "time": 622, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/adf2f53c6377e95ec5bd1fcb502c403f b/test/fixtures/adf2f53c6377e95ec5bd1fcb502c403f new file mode 100644 index 0000000000000000000000000000000000000000..bce15c6b14a2aeffd7a442ef717d4ecf71547de1 GIT binary patch literal 5569 zcmV;y6+Y@8iwFP!000001MQtzbECY{$G=J{*H#WlfW-4&Wgo|r)y{fqYKk@SB(WXa zS)a;xe_N1=7cj_JV(^^I#U!yYG_BV5^S_&aSKI#TKdbvE_h;SHyQ{;e#_rY5OZ(-l zHE`}4=Y9PWt=3li!Cl}Cg2C!P|NVE>b^2b{58zXV&6uWH)Yjn#9Cjc0Z6`V=?Dp@S zAsn)~1+V+$K=O^@nDfzi|^QK zuAQ_4GcY>clh^)%wHK}phOdL5;oPECZcB6&`_;PIYhC}^-5oZ5J^Mp;`nrDIAX^>x za>_3R+hoFC#!b+4#_ct@y_!bAUXw)jVt9kw%NV!U)+2kdru|6x_S2S)*2!-D_0Vr$ z*>8L25B)>G)$5vf*2zJ_7K764HewjAhcV{H*(P@;yaLW-X5>u%1B~NM1h^8glh}zL8qsN^w|N`k=(IRKt&WrT{Lw~x4~>Vjmo@9;^=QW; z5ABDw)7z`Ycip-7#@eV6zBM2Fntx`TuN@h0&6k&h&W;wGK0QaVn=lV<4(?i`+&s$f z+5}U%c{YyBGvm8vT4bI@)6AP_cmsdh@_oSvA+kV(M-D&Q>-nEW@HeQ|M{by}+=U1>XHojyIv)Ww4EKbJvC|*Y4 zVcCp_A$-b;A`imQio%fUaTwas$UrdT;Q@h~ch3;GAMtX2OFP>3Veh8yH=oaT39E0m zuFqZ?-^lpfcwxNJt>@O>(<^Q5uif5Xzw8fAzhB&3Y#V89q(KLV;e=0xCXK?G!0G_p zpy6m*z$~(tYIZc7*euUpQ@1{Cxx7BE*ALv6*MpnZR>Q2nc88>HxBETf<+f4Ld3v&q z$fqq=$Lqb##->if?^}&wH@G|RYMs-I=G|6(x*wT#%6N!jVkD-eNBxNEU<>74MyCeW zxh)nk_|i#>g3EwQXY`}19?XUh8*hh!-q<@nZSHl4C+mJ!-&tQzjCC-SPI?>*8?;fW?>-7?MJ+)$9Ei@42-i~ z%jzASRFjSCu>7+$ND53GvNsF3ZW4YrP z!M|;}@t%+GU(N@+WY=FmehN1ny}8-z89R@su`OdCgQYA@nfFN4^bmH?^g1_AH)u5A z*pYF%7Ik2gFAHEk(o-E3+0uS}Jbk%%c|LP(^Wp7zU|+Y^wBFjmK~ozWUw+-!uU`+J zI=A&}@2B3Whr5Sw5Bl)xb?rK_meSMKq4A`kN9$0kjV<&(#@+mdUcxV?spL8zez`y2 zKF~HdY^xXE-E41J+TQEV!A*brY2O=*deDCb^eYXq${pZN(1^t!gT@XA4 zJQ|12@NvLb3t`yy+Rhz6Yw$8e{h-$m20;hjj|>FIdHr^eZ^XYl!wwvF=X9dr9Ur91t=;UA9f3j3~s8KKBy1S8^Mid@4XNQ3<`3#n<@#N#$~`$N=m z?)jPboSxH(_x;Yj3#;P~b5`NCsYBX>E+WtlNJkth@awPc9j(GZzUn(eek9C)I?~_( zD{|1oqjT3DzQP+F?)tkKmxfR5Fw6-n5(fLVoJc z){Q?E!UU�r-+I0}OatbT(IQx<*?u7FMs?6CwcDn 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/afe809da6a1182c06e0b3a6016806801.headers b/test/fixtures/afe809da6a1182c06e0b3a6016806801.headers new file mode 100644 index 0000000..4544ca0 --- /dev/null +++ b/test/fixtures/afe809da6a1182c06e0b3a6016806801.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:06 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "427", + "x-ratelimit-reset": "1481687766", + "server": "Plack::Handler::Starlet", + "etag": "W/\"b96f6e53db8de36a9636aaf43ec81d81\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/Nxl.5VZyyw0PwNZmfKOjUo.hNHQ-?fmt=json", + "time": 568, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/b31e543dce9796e06556a651cc9856c2 b/test/fixtures/b31e543dce9796e06556a651cc9856c2 new file mode 100644 index 0000000000000000000000000000000000000000..a0be04dac1879942a1798caca54fca79dd2db707 GIT binary patch literal 5480 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/b31e543dce9796e06556a651cc9856c2.headers b/test/fixtures/b31e543dce9796e06556a651cc9856c2.headers new file mode 100644 index 0000000..e274dd3 --- /dev/null +++ b/test/fixtures/b31e543dce9796e06556a651cc9856c2.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:06 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "425", + "x-ratelimit-reset": "1481687766", + "server": "Plack::Handler::Starlet", + "etag": "W/\"8f6f3f31f4a37066b07ac26d78ea1fa4\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/MvkF2QCiXS.tu7kJYnDfAX2A6II-?fmt=json", + "time": 580, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/b867d371abb4b963b6f68cbfc103f644 b/test/fixtures/b867d371abb4b963b6f68cbfc103f644 new file mode 100644 index 0000000000000000000000000000000000000000..d63ff3c1d7bd9689fc1b12cd6a55512f95563a76 GIT binary patch literal 5541 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/b867d371abb4b963b6f68cbfc103f644.headers b/test/fixtures/b867d371abb4b963b6f68cbfc103f644.headers new file mode 100644 index 0000000..b9eab7f --- /dev/null +++ b/test/fixtures/b867d371abb4b963b6f68cbfc103f644.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:00 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "319", + "x-ratelimit-reset": "1481687760", + "server": "Plack::Handler::Starlet", + "etag": "W/\"4e8503a236dbcbe9d5583f5a684fb8ec\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/M5ef947_b48iguGQaG.URuoqfXE-?fmt=json", + "time": 616, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/c5e74502a62b5e330f0e44f9daece6ec b/test/fixtures/c5e74502a62b5e330f0e44f9daece6ec new file mode 100644 index 0000000000000000000000000000000000000000..96833f4b16dbc8b19f07df511a4c342590838abe GIT binary patch literal 5593 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 nP!j=Q#HG-Xa!t6DGo6mFkOE0a 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/cdfa24feec8a751a9257cba4c542ca08.headers b/test/fixtures/cdfa24feec8a751a9257cba4c542ca08.headers new file mode 100644 index 0000000..d0b6ce0 --- /dev/null +++ b/test/fixtures/cdfa24feec8a751a9257cba4c542ca08.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:55:50 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "331", + "x-ratelimit-reset": "1481687750", + "server": "Plack::Handler::Starlet", + "etag": "W/\"b47b135de1ba186aaacb5cf1899a3cfc\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/ZODzHFPuY6DfakUIAd7bTSne224-?fmt=json", + "time": 418, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/d202c6a6d4935cbe9f922833b3fa14d2 b/test/fixtures/d202c6a6d4935cbe9f922833b3fa14d2 new file mode 100644 index 0000000000000000000000000000000000000000..f9033ab1027abc73ec638e5a3f8f8b884f56eef7 GIT binary patch literal 5610 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 E0E)o=i~s-t literal 0 HcmV?d00001 diff --git a/test/fixtures/d202c6a6d4935cbe9f922833b3fa14d2.headers b/test/fixtures/d202c6a6d4935cbe9f922833b3fa14d2.headers new file mode 100644 index 0000000..6c7bf07 --- /dev/null +++ b/test/fixtures/d202c6a6d4935cbe9f922833b3fa14d2.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:22 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "306", + "x-ratelimit-reset": "1481687782", + "server": "Plack::Handler::Starlet", + "etag": "W/\"94a1d89e4094492980cc3c59a43bfaa7\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/vnTnHXtoa0q35uGdb80jCbMY0fI-?fmt=json", + "time": 616, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/dce546fb301927f48b5a344af5157931 b/test/fixtures/dce546fb301927f48b5a344af5157931 new file mode 100644 index 0000000000000000000000000000000000000000..584891cdd74ebb3ec460177117232a4a64d91439 GIT binary patch literal 5515 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 N{{x~_zbek@006o(vJU_N literal 0 HcmV?d00001 diff --git a/test/fixtures/dce546fb301927f48b5a344af5157931.headers b/test/fixtures/dce546fb301927f48b5a344af5157931.headers new file mode 100644 index 0000000..8656fc7 --- /dev/null +++ b/test/fixtures/dce546fb301927f48b5a344af5157931.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:00 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "320", + "x-ratelimit-reset": "1481687760", + "server": "Plack::Handler::Starlet", + "etag": "W/\"18ffe91f797d0ac3f7bb5f55afe8af9e\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/Ljf3f57fCuw7rpaaa5eXOQz.7iQ-?fmt=json", + "time": 612, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/e2e06e403837e86ba8a0f80693d2e189 b/test/fixtures/e2e06e403837e86ba8a0f80693d2e189 new file mode 100644 index 0000000000000000000000000000000000000000..d578fbdf660d68d810c747b4392034efc331e188 GIT binary patch literal 5488 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/e2e06e403837e86ba8a0f80693d2e189.headers b/test/fixtures/e2e06e403837e86ba8a0f80693d2e189.headers new file mode 100644 index 0000000..d7f51c4 --- /dev/null +++ b/test/fixtures/e2e06e403837e86ba8a0f80693d2e189.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:17 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "651", + "x-ratelimit-reset": "1481687778", + "server": "Plack::Handler::Starlet", + "etag": "W/\"ed7b1e67a098c033f07a041ffa76a998\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/eRs4VG66pPW2MqTunBs9dEZTm9A-?fmt=json", + "time": 564, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/fixtures/fd7b5af8b59c7fe254b576ea6c206774 b/test/fixtures/fd7b5af8b59c7fe254b576ea6c206774 new file mode 100644 index 0000000000000000000000000000000000000000..281dbd12035b5cd4f2c418efa8038dd1e9898647 GIT binary patch literal 5572 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/fd7b5af8b59c7fe254b576ea6c206774.headers b/test/fixtures/fd7b5af8b59c7fe254b576ea6c206774.headers new file mode 100644 index 0000000..bd69879 --- /dev/null +++ b/test/fixtures/fd7b5af8b59c7fe254b576ea6c206774.headers @@ -0,0 +1,29 @@ +{ + "statusCode": 200, + "headers": { + "date": "Wed, 14 Dec 2016 03:56:22 GMT", + "content-type": "application/json; charset=utf-8", + "transfer-encoding": "chunked", + "connection": "keep-alive", + "keep-alive": "timeout=15", + "vary": "Accept-Encoding", + "x-ratelimit-limit": "700", + "x-ratelimit-remaining": "304", + "x-ratelimit-reset": "1481687782", + "server": "Plack::Handler::Starlet", + "etag": "W/\"87d86129dfb94d7fb7710f38e30c4605\"", + "access-control-allow-origin": "*", + "content-encoding": "gzip" + }, + "url": "http://musicbrainz.org:80/ws/2/discid/tH_cY6hcuSDeTuG6GSWI4wp_x6E-?fmt=json", + "time": 619, + "request": { + "method": "GET", + "headers": { + "User-Agent": "graphbrainz/4.4.0 ( https://github.com/exogen/graphbrainz )", + "host": "musicbrainz.org", + "accept-encoding": "gzip, deflate", + "accept": "application/json" + } + } +} \ No newline at end of file diff --git a/test/schema.js b/test/schema.js index 16e1452..33f9f20 100644 --- a/test/schema.js +++ b/test/schema.js @@ -907,3 +907,127 @@ test('some entities support ratings', testData, ` t.true(releaseGroups.some(releaseGroup => releaseGroup.rating.voteCount > 0)) t.true(releaseGroups.some(releaseGroup => releaseGroup.rating.value > 3)) }) + +test('discs can be looked up by disc ID', testData, ` + { + lookup { + disc(discID: "TMXdzZkTcc9Jq24PD0w5J9_AXms-") { + id + discID + offsetCount + offsets + sectors + releases { + totalCount + edges { + node { + mbid + } + } + } + } + } + } +`, (t, data) => { + const { disc } = data.lookup + t.is(disc.discID, 'TMXdzZkTcc9Jq24PD0w5J9_AXms-') + t.is(disc.offsetCount, 9) + t.is(disc.sectors, 193443) + t.deepEqual(disc.offsets, [ + 150, 18190, 34163, 66150, 87453, 116853, 151413, 166833, 184123 + ]) + t.is(disc.releases.totalCount, 1) + t.is(disc.releases.edges.length, 1) + t.is(disc.releases.edges[0].node.mbid, '7f6d3088-837d-495e-905f-be5c70ac2d82') +}) + +test('release media has a list of discs', testData, ` + { + lookup { + release(mbid: "7f6d3088-837d-495e-905f-be5c70ac2d82") { + media { + discs { + discID + releases { + totalCount + edges { + node { + mbid + } + } + } + } + } + } + } + } +`, (t, data) => { + const { release } = data.lookup + t.is(release.media.length, 1) + t.is(release.media[0].discs.length, 2) +}) + +test('disc queries can be deeply nested', testData, ` + { + lookup { + disc(discID: "TMXdzZkTcc9Jq24PD0w5J9_AXms-") { + discID + offsetCount + offsets + sectors + releases { + totalCount + edges { + node { + mbid + title + date + media { + discs { + discID + releases { + edges { + node { + date + media { + discs { + discID + releases { + edges { + node { + date + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +`, (t, data) => { + const { disc } = data.lookup + t.true(disc.releases.edges.length > 0) + disc.releases.edges.forEach(release => { + t.true(release.node.media.length > 0) + release.node.media.forEach(medium => { + t.true(medium.discs.length > 0) + medium.discs.forEach(disc => { + t.true(disc.releases.edges.length > 0) + disc.releases.edges.forEach(release => { + t.true(release.node.media.length > 0) + release.node.media.forEach(medium => { + t.true(medium.discs.length > 0) + }) + }) + }) + }) + }) +})