mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-03 19:17:11 -05:00 
			
		
		
		
	fix(cli): upload large file with openAPI api (#5246)
* fix(cli): upload large file with openAPI * function name * fix: use boolean false * chore: version bump * fix: package-lock version --------- Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
This commit is contained in:
		
							parent
							
								
									af1113bf9e
								
							
						
					
					
						commit
						8ff4a08a2c
					
				
							
								
								
									
										4
									
								
								cli/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								cli/package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,12 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@immich/cli",
 | 
			
		||||
  "version": "2.0.3",
 | 
			
		||||
  "version": "2.0.4",
 | 
			
		||||
  "lockfileVersion": 2,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "packages": {
 | 
			
		||||
    "": {
 | 
			
		||||
      "name": "@immich/cli",
 | 
			
		||||
      "version": "2.0.3",
 | 
			
		||||
      "version": "2.0.4",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "axios": "^1.6.2",
 | 
			
		||||
 | 
			
		||||
@ -1,12 +1,16 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@immich/cli",
 | 
			
		||||
  "version": "2.0.3",
 | 
			
		||||
  "version": "2.0.4",
 | 
			
		||||
  "description": "Command Line Interface (CLI) for Immich",
 | 
			
		||||
  "main": "dist/index.js",
 | 
			
		||||
  "bin": {
 | 
			
		||||
    "immich": "./dist/src/index.js"
 | 
			
		||||
  },
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
    "immich",
 | 
			
		||||
    "cli"
 | 
			
		||||
  ],
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "axios": "^1.6.2",
 | 
			
		||||
    "byte-size": "^8.1.1",
 | 
			
		||||
@ -77,7 +81,7 @@
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
    "url": "git+https://github.com/immich-app/immich.git",
 | 
			
		||||
    "url": "github:immich-app/immich",
 | 
			
		||||
    "directory": "cli"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,7 @@ import {
 | 
			
		||||
  UserApi,
 | 
			
		||||
} from './open-api';
 | 
			
		||||
import { ApiConfiguration } from '../cores/api-configuration';
 | 
			
		||||
import FormData from 'form-data';
 | 
			
		||||
 | 
			
		||||
export class ImmichApi {
 | 
			
		||||
  public userApi: UserApi;
 | 
			
		||||
@ -35,6 +36,7 @@ export class ImmichApi {
 | 
			
		||||
          'x-api-key': apiKey,
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      formDataCtor: FormData,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.userApi = new UserApi(this.config);
 | 
			
		||||
 | 
			
		||||
@ -8,11 +8,11 @@ export class Asset {
 | 
			
		||||
  readonly path: string;
 | 
			
		||||
  readonly deviceId!: string;
 | 
			
		||||
 | 
			
		||||
  assetData?: File;
 | 
			
		||||
  assetData?: fs.ReadStream;
 | 
			
		||||
  deviceAssetId?: string;
 | 
			
		||||
  fileCreatedAt?: string;
 | 
			
		||||
  fileModifiedAt?: string;
 | 
			
		||||
  sidecarData?: File;
 | 
			
		||||
  sidecarData?: fs.ReadStream;
 | 
			
		||||
  sidecarPath?: string;
 | 
			
		||||
  fileSize!: number;
 | 
			
		||||
  albumName?: string;
 | 
			
		||||
@ -30,13 +30,13 @@ export class Asset {
 | 
			
		||||
    this.fileSize = stats.size;
 | 
			
		||||
    this.albumName = this.extractAlbumName();
 | 
			
		||||
 | 
			
		||||
    this.assetData = await this.getFileObject(this.path);
 | 
			
		||||
    this.assetData = this.getReadStream(this.path);
 | 
			
		||||
 | 
			
		||||
    // TODO: doesn't xmp replace the file extension? Will need investigation
 | 
			
		||||
    const sideCarPath = `${this.path}.xmp`;
 | 
			
		||||
    try {
 | 
			
		||||
      fs.accessSync(sideCarPath, fs.constants.R_OK);
 | 
			
		||||
      this.sidecarData = await this.getFileObject(sideCarPath);
 | 
			
		||||
      this.sidecarData = this.getReadStream(sideCarPath);
 | 
			
		||||
    } catch (error) {}
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -48,19 +48,18 @@ export class Asset {
 | 
			
		||||
    if (!this.deviceId) throw new Error('Device id not set');
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
      assetData: this.assetData,
 | 
			
		||||
      assetData: this.assetData as any,
 | 
			
		||||
      deviceAssetId: this.deviceAssetId,
 | 
			
		||||
      deviceId: this.deviceId,
 | 
			
		||||
      fileCreatedAt: this.fileCreatedAt,
 | 
			
		||||
      fileModifiedAt: this.fileModifiedAt,
 | 
			
		||||
      isFavorite: false,
 | 
			
		||||
      sidecarData: this.sidecarData,
 | 
			
		||||
      sidecarData: this.sidecarData as any,
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private async getFileObject(path: string): Promise<File> {
 | 
			
		||||
    const buffer = await fs.promises.readFile(path);
 | 
			
		||||
    return new File([buffer], basename(path));
 | 
			
		||||
  private getReadStream(path: string): fs.ReadStream {
 | 
			
		||||
    return fs.createReadStream(path);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async delete(): Promise<void> {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user