blob: protocol now supports ?fallback=img on notfound
This commit is contained in:
		
							parent
							
								
									753b9058ec
								
							
						
					
					
						commit
						f988d7fbe8
					
				@ -1,13 +1,15 @@
 | 
				
			|||||||
var path = require('path')
 | 
					var path        = require('path')
 | 
				
			||||||
var multicb = require('multicb')
 | 
					var multicb     = require('multicb')
 | 
				
			||||||
var toPath = require('multiblob/util').toPath
 | 
					var toPath      = require('multiblob/util').toPath
 | 
				
			||||||
var createHash = require('multiblob/util').createHash
 | 
					var createHash  = require('multiblob/util').createHash
 | 
				
			||||||
var pull = require('pull-stream')
 | 
					var pull        = require('pull-stream')
 | 
				
			||||||
var toPull = require('stream-to-pull-stream')
 | 
					var toPull      = require('stream-to-pull-stream')
 | 
				
			||||||
var querystring = require('querystring')
 | 
					var querystring = require('querystring')
 | 
				
			||||||
var fs = require('fs')
 | 
					var fs          = require('fs')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = function (blobs_dir, checkout_dir) {
 | 
					module.exports = function (blobs_dir, checkout_dir) {
 | 
				
			||||||
 | 
					  var fallback_img_path = path.join(__dirname, '../../node_modules/ssbplug-phoenix/img/default-prof-pic.png')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return {
 | 
					  return {
 | 
				
			||||||
    // behavior for the blob: protocol
 | 
					    // behavior for the blob: protocol
 | 
				
			||||||
    protocol: function (request) {
 | 
					    protocol: function (request) {
 | 
				
			||||||
@ -15,7 +17,17 @@ module.exports = function (blobs_dir, checkout_dir) {
 | 
				
			|||||||
      // simple fetch
 | 
					      // simple fetch
 | 
				
			||||||
      var parsed = url_parse(request.url)
 | 
					      var parsed = url_parse(request.url)
 | 
				
			||||||
      if (request.method == 'GET' && parsed) {
 | 
					      if (request.method == 'GET' && parsed) {
 | 
				
			||||||
        return new protocol.RequestFileJob(toPath(blobs_dir, parsed.hash))
 | 
					        var filepath = toPath(blobs_dir, parsed.hash)
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					          // check if the file exists
 | 
				
			||||||
 | 
					          fs.statSync(filepath) // :HACK: make async when we figure out how to make a protocol-handler support that
 | 
				
			||||||
 | 
					          return new protocol.RequestFileJob(filepath)
 | 
				
			||||||
 | 
					        } catch (e) {
 | 
				
			||||||
 | 
					          // notfound
 | 
				
			||||||
 | 
					          if (parsed.qs.fallback == 'img')
 | 
				
			||||||
 | 
					            return new protocol.RequestFileJob(fallback_img_path)
 | 
				
			||||||
 | 
					          return new protocol.RequestErrorJob(-6)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user