diff --git a/app.js b/app.js index b7ab276..461218e 100644 --- a/app.js +++ b/app.js @@ -14,6 +14,7 @@ import index from './routes/index'; import recent from './routes/recent'; import search from './routes/search'; import share from './routes/share'; +import itunesProxy from './routes/itunes-proxy'; const debug = debuglog('match.audio'); @@ -38,6 +39,7 @@ app.use(route.get('/', index)); app.use(route.get('/recent', recent)); app.use(route.post('/search', search)); app.use(route.get('/:service/:type/:id.:format?', share)); +app.use(route.get('/itunes/(.*)', itunesProxy)); if (!module.parent) { app.listen(process.env.PORT || 3000, () => { diff --git a/routes/itunes-proxy.js b/routes/itunes-proxy.js new file mode 100644 index 0000000..11dc5bd --- /dev/null +++ b/routes/itunes-proxy.js @@ -0,0 +1,14 @@ +import { parse } from 'url'; +import request from 'superagent'; + +export default function* (next) { + const url = `http://${this.request.url.substr(8)}`; + const parsed = parse(url); + if (parsed.host.match(/mzstatic\.com/)) { + const proxyResponse = yield request.get(url); + this.set(proxyResponse.headers); + this.body = proxyResponse.body; + } else { + yield next; + } +}