%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/waritko/go/src/github.com/odeke-em/drive/src/
Upload File :
Create Path :
Current File : //home/waritko/go/src/github.com/odeke-em/drive/src/new.go

// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package drive

import (
	"path/filepath"
	"time"
)

func (g *Commands) NewFolder() (err error) {
	return _newFile(g, true)
}

func (g *Commands) NewFile() (err error) {
	return _newFile(g, false)
}

func _newFile(g *Commands, folder bool) (err error) {
	var coercedMimeKey string
	if g.opts.Meta != nil {
		meta := *(g.opts.Meta)
		mimeKeys, ok := meta[MimeKey]
		if ok {
			coercedMimeKey = sepJoin("", mimeKeys...)
		}
	}

	spin := g.playabler()
	spin.play()
	defer spin.stop()

	for _, relToRootPath := range g.opts.Sources {
		parentPath, basename := g.pathSplitter(relToRootPath)

		parent, parErr := g.remoteMkdirAll(parentPath)
		if parErr != nil {
			g.log.LogErrf("newFile: %s %v\n", relToRootPath, parErr)
			continue
		}

		f := &File{
			ModTime: time.Now(),
			Name:    urlToPath(basename, false),
		}

		if folder {
			f.IsDir = true
		} else {
			mimeKey := coercedMimeKey
			if coercedMimeKey == "" {
				mimeKey = filepath.Ext(relToRootPath)
			}
			f.MimeType = mimeTypeFromQuery(mimeKey)
		}

		upArg := upsertOpt{
			parentId:   parent.Id,
			src:        f,
			retryCount: g.opts.ExponentialBackoffRetryCount,
		}

		freshFile, _, fErr := g.rem.upsertByComparison(nil, &upArg)
		if fErr != nil {
			g.log.LogErrf("newFile: %s creation failed %v\n", relToRootPath, fErr)
			continue
		}

		g.log.Logf("%s %s\n", relToRootPath, freshFile.Id)
	}

	return err
}

Zerion Mini Shell 1.0