noflo = require 'noflo'
url = require 'url'
path = require 'path'

exports.getComponent = ->
  c = new noflo.Component
  c.description = 'Route shared URLs to correct handler'
  c.icon = 'code-fork'
  c.inPorts.add 'in',
    datatype: 'string'
  c.outPorts.add 'webpage',
    datatype: 'string'
  c.outPorts.add 'gist',
    datatype: 'string'

  noflo.helpers.WirePattern c,
    in: 'in'
    out: ['webpage', 'gist']
    async: true
    forwardGroups: true
  , (data, groups, out, callback) ->
    outPort = 'webpage'
    parsed = url.parse data
    if parsed.hostname is 'gist.github.com'
      outPort = 'gist'
      data = path.basename parsed.pathname
    out[outPort].send data
    do callback

  c
