Sha256: 1950ddeb0c5c258514d15a0e051c1a481dbfc8e36c07eaf4d2811982107cd75a

Contents?: true

Size: 1.89 KB

Versions: 4

Compression:

Stored size: 1.89 KB

Contents

class Nyoibo
  constructor: (@url, id) ->
    if $("##{id}").length > 0
      @progressbar = new html5jp.progress(id)
      @progressbar.draw()
      @prepare_upload = -> true
      @before_upload  = -> true
      @after_upload   = -> true
      @upload_abort   = -> true
  upload: (file, params={}) ->
    @errors = []
    return false unless @prepare_upload.apply(@)

    try
      filesize = file.size
    catch e
      @errors.push "file not found"
    if filesize == 0
      @errors.push "file size is zero"

    return false if @errors.length > 0

    chunk = 102400
    start = 0

    ws = new WebSocket(@url)
    @before_upload.apply(@)
    ws.progressbar = @progressbar
    ws.after_upload = @after_upload
    ws.upload_abort = @upload_abort
    ws.onclose = ->
      ws.progressbar.reset()
      ws = null

    ws.onmessage = (evt) ->
      switch evt.data
        when 'OK Ready'
          params['filename'] = file.name
          params['size']     = filesize
          ws.send("JSON: " + JSON.stringify(params))
        when 'OK Bye'
          ws.progressbar.set_val(100)
          ws.after_upload.apply(@)
          ws.close()
        when 'ABORT'
          ws.upload_abort.apply(@)
        when 'EMPTY'
          ws.send("QUIT")
          ws.progressbar.set_val(100)
        when 'NEXT'
          val = Math.floor(start / filesize * 100)
          ws.progressbar.set_val(val)
          stop = start + chunk - 1
          if stop >= filesize
            stop = filesize

          blob = if typeof(file.mozSlice) == "function"
                   file.mozSlice(start, stop)
                 else if typeof(file.webkitSlice) == "function"
                   file.webkitSlice(start, stop)
          start = stop
          reader = new FileReader()
          reader.onloadend = (e) ->
            ws.send(e.target.result)

          setTimeout ->
            reader.readAsBinaryString(blob)
          , 300

@Nyoibo = Nyoibo

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nyoibo-0.0.3.3 lib/generators/nyoibo/templates/nyoibo.js.coffee
nyoibo-0.0.3.2 lib/generators/nyoibo/templates/nyoibo.js.coffee
nyoibo-0.0.3.1 lib/generators/nyoibo/templates/nyoibo.js.coffee
nyoibo-0.0.3 lib/generators/nyoibo/templates/nyoibo.js.coffee