(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress)
| 179 | } |
| 180 | |
| 181 | func (d *SMB) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress) error { |
| 182 | if err := d.checkConn(ctx); err != nil { |
| 183 | return err |
| 184 | } |
| 185 | fullPath := filepath.Join(dstDir.GetPath(), stream.GetName()) |
| 186 | out, err := d.fs.Create(fullPath) |
| 187 | if err != nil { |
| 188 | d.cleanLastConnTime() |
| 189 | return err |
| 190 | } |
| 191 | d.updateLastConnTime() |
| 192 | defer func() { |
| 193 | _ = out.Close() |
| 194 | if errors.Is(err, context.Canceled) { |
| 195 | _ = d.fs.Remove(fullPath) |
| 196 | } |
| 197 | }() |
| 198 | err = utils.CopyWithCtx(ctx, out, driver.NewLimitedUploadStream(ctx, stream), stream.GetSize(), up) |
| 199 | if err != nil { |
| 200 | return err |
| 201 | } |
| 202 | return nil |
| 203 | } |
| 204 | |
| 205 | func (d *SMB) GetDetails(ctx context.Context) (*model.StorageDetails, error) { |
| 206 | if err := d.checkConn(ctx); err != nil { |
nothing calls this directly
no test coverage detected