Skip to content

Commit

Permalink
add loans and remove employee option
Browse files Browse the repository at this point in the history
  • Loading branch information
cosmasken committed Apr 5, 2024
1 parent 75cdb95 commit 3ab3059
Show file tree
Hide file tree
Showing 178 changed files with 30,290 additions and 780 deletions.
20 changes: 20 additions & 0 deletions .dfx/local/canister_ids.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"__Candid_UI": {
"local": "be2us-64aaa-aaaaa-qaabq-cai"
},
"assets": {
"local": "bw4dl-smaaa-aaaaa-qaacq-cai"
},
"backend": {
"local": "bd3sg-teaaa-aaaaa-qaaba-cai"
},
"ckbtc_ledger": {
"local": "bkyz2-fmaaa-aaaaa-qaaaq-cai"
},
"icrc1_index": {
"local": "br5f7-7uaaa-aaaaa-qaaca-cai"
},
"internet_identity": {
"local": "b77ix-eeaaa-aaaaa-qaada-cai"
}
}
Binary file added .dfx/local/canisters/assets/assets.wasm.gz
Binary file not shown.
262 changes: 262 additions & 0 deletions .dfx/local/canisters/assets/assetstorage.did
Original file line number Diff line number Diff line change
@@ -0,0 +1,262 @@
type BatchId = nat;
type ChunkId = nat;
type Key = text;
type Time = int;

type CreateAssetArguments = record {
key: Key;
content_type: text;
max_age: opt nat64;
headers: opt vec HeaderField;
enable_aliasing: opt bool;
allow_raw_access: opt bool;
};

// Add or change content for an asset, by content encoding
type SetAssetContentArguments = record {
key: Key;
content_encoding: text;
chunk_ids: vec ChunkId;
sha256: opt blob;
};

// Remove content for an asset, by content encoding
type UnsetAssetContentArguments = record {
key: Key;
content_encoding: text;
};

// Delete an asset
type DeleteAssetArguments = record {
key: Key;
};

// Reset everything
type ClearArguments = record {};

type BatchOperationKind = variant {
CreateAsset: CreateAssetArguments;
SetAssetContent: SetAssetContentArguments;

SetAssetProperties: SetAssetPropertiesArguments;

UnsetAssetContent: UnsetAssetContentArguments;
DeleteAsset: DeleteAssetArguments;

Clear: ClearArguments;
};

type CommitBatchArguments = record {
batch_id: BatchId;
operations: vec BatchOperationKind
};

type CommitProposedBatchArguments = record {
batch_id: BatchId;
evidence: blob;
};

type ComputeEvidenceArguments = record {
batch_id: BatchId;
max_iterations: opt nat16
};

type DeleteBatchArguments = record {
batch_id: BatchId;
};

type HeaderField = record { text; text; };

type HttpRequest = record {
method: text;
url: text;
headers: vec HeaderField;
body: blob;
certificate_version: opt nat16;
};

type HttpResponse = record {
status_code: nat16;
headers: vec HeaderField;
body: blob;
streaming_strategy: opt StreamingStrategy;
};

type StreamingCallbackHttpResponse = record {
body: blob;
token: opt StreamingCallbackToken;
};

type StreamingCallbackToken = record {
key: Key;
content_encoding: text;
index: nat;
sha256: opt blob;
};

type StreamingStrategy = variant {
Callback: record {
callback: func (StreamingCallbackToken) -> (opt StreamingCallbackHttpResponse) query;
token: StreamingCallbackToken;
};
};

type SetAssetPropertiesArguments = record {
key: Key;
max_age: opt opt nat64;
headers: opt opt vec HeaderField;
allow_raw_access: opt opt bool;
is_aliased: opt opt bool;
};

type ConfigurationResponse = record {
max_batches: opt nat64;
max_chunks: opt nat64;
max_bytes: opt nat64;
};

type ConfigureArguments = record {
max_batches: opt opt nat64;
max_chunks: opt opt nat64;
max_bytes: opt opt nat64;
};

type Permission = variant {
Commit;
ManagePermissions;
Prepare;
};

type GrantPermission = record {
to_principal: principal;
permission: Permission;
};
type RevokePermission = record {
of_principal: principal;
permission: Permission;
};
type ListPermitted = record { permission: Permission };

type ValidationResult = variant { Ok : text; Err : text };

type AssetCanisterArgs = variant {
Init: InitArgs;
Upgrade: UpgradeArgs;
};

type InitArgs = record {};

type UpgradeArgs = record {
set_permissions: opt SetPermissions;
};

/// Sets the list of principals granted each permission.
type SetPermissions = record {
prepare: vec principal;
commit: vec principal;
manage_permissions: vec principal;
};

service: (asset_canister_args: opt AssetCanisterArgs) -> {
api_version: () -> (nat16) query;

get: (record {
key: Key;
accept_encodings: vec text;
}) -> (record {
content: blob; // may be the entirety of the content, or just chunk index 0
content_type: text;
content_encoding: text;
sha256: opt blob; // sha256 of entire asset encoding, calculated by dfx and passed in SetAssetContentArguments
total_length: nat; // all chunks except last have size == content.size()
}) query;

// if get() returned chunks > 1, call this to retrieve them.
// chunks may or may not be split up at the same boundaries as presented to create_chunk().
get_chunk: (record {
key: Key;
content_encoding: text;
index: nat;
sha256: opt blob; // sha256 of entire asset encoding, calculated by dfx and passed in SetAssetContentArguments
}) -> (record { content: blob }) query;

list : (record {}) -> (vec record {
key: Key;
content_type: text;
encodings: vec record {
content_encoding: text;
sha256: opt blob; // sha256 of entire asset encoding, calculated by dfx and passed in SetAssetContentArguments
length: nat; // Size of this encoding's blob. Calculated when uploading assets.
modified: Time;
};
}) query;

certified_tree : (record {}) -> (record {
certificate: blob;
tree: blob;
}) query;

create_batch : (record {}) -> (record { batch_id: BatchId });

create_chunk: (record { batch_id: BatchId; content: blob }) -> (record { chunk_id: ChunkId });

// Perform all operations successfully, or reject
commit_batch: (CommitBatchArguments) -> ();

// Save the batch operations for later commit
propose_commit_batch: (CommitBatchArguments) -> ();

// Given a batch already proposed, perform all operations successfully, or reject
commit_proposed_batch: (CommitProposedBatchArguments) -> ();

// Compute a hash over the CommitBatchArguments. Call until it returns Some(evidence).
compute_evidence: (ComputeEvidenceArguments) -> (opt blob);

// Delete a batch that has been created, or proposed for commit, but not yet committed
delete_batch: (DeleteBatchArguments) -> ();

create_asset: (CreateAssetArguments) -> ();
set_asset_content: (SetAssetContentArguments) -> ();
unset_asset_content: (UnsetAssetContentArguments) -> ();

delete_asset: (DeleteAssetArguments) -> ();

clear: (ClearArguments) -> ();

// Single call to create an asset with content for a single content encoding that
// fits within the message ingress limit.
store: (record {
key: Key;
content_type: text;
content_encoding: text;
content: blob;
sha256: opt blob
}) -> ();

http_request: (request: HttpRequest) -> (HttpResponse) query;
http_request_streaming_callback: (token: StreamingCallbackToken) -> (opt StreamingCallbackHttpResponse) query;

authorize: (principal) -> ();
deauthorize: (principal) -> ();
list_authorized: () -> (vec principal);
grant_permission: (GrantPermission) -> ();
revoke_permission: (RevokePermission) -> ();
list_permitted: (ListPermitted) -> (vec principal);
take_ownership: () -> ();

get_asset_properties : (key: Key) -> (record {
max_age: opt nat64;
headers: opt vec HeaderField;
allow_raw_access: opt bool;
is_aliased: opt bool; } ) query;
set_asset_properties: (SetAssetPropertiesArguments) -> ();

get_configuration: () -> (ConfigurationResponse);
configure: (ConfigureArguments) -> ();

validate_grant_permission: (GrantPermission) -> (ValidationResult);
validate_revoke_permission: (RevokePermission) -> (ValidationResult);
validate_take_ownership: () -> (ValidationResult);
validate_commit_proposed_batch: (CommitProposedBatchArguments) -> (ValidationResult);
validate_configure: (ConfigureArguments) -> (ValidationResult);
}
Binary file added .dfx/local/canisters/assets/assetstorage.wasm.gz
Binary file not shown.

0 comments on commit 3ab3059

Please sign in to comment.