_ = require 'lodash'
module.exports =
  docker:
    url: 'http://abc.com:2375'
    model:
      container: ->
        model = sails.config
          .armodel "#{sails.config.docker.url}/containers"
        model = model
          .use model.api.use (opts) ->
            defaultOpts =
              headers:
                'Content-Type': 'application/json'
            _.extend defaultOpts, opts
        stamp = model
          .statics
            idAttribute: 'Id'
            url: (method = 'list', params = {}, idAttribute = @idAttribute) ->
              params[idAttribute] ?= '.'
              append = (url, path) ->
                URL = require 'url'
                obj = URL.parse url
                {join} = require 'path'
                obj.pathname = join obj.pathname, path
                URL.format obj
              switch method
                when 'create', 'update', 'start', 'stop'
                  append model.url(method, params, idAttribute), method
                when 'delete'
                  model.url method, params, idAttribute
                else 
                  append model.url(method, params, idAttribute), 'json'
          .methods
            getStamp: ->
              stamp
            start: ->
              res = yield model.api.post stamp.url 'start',
                _.pick @, stamp.idAttribute
              model.api.ok res, 204
            stop: ->
              res = yield model.api.post stamp.url 'stop',
                _.pick @, stamp.idAttribute
              model.api.ok res, 204