|
1 | 1 | package types
|
2 | 2 |
|
3 |
| -import "fmt" |
| 3 | +import ( |
| 4 | + "fmt" |
| 5 | + "strings" |
| 6 | +) |
4 | 7 |
|
5 | 8 | // IRODSAccessLevelType is a type for access level
|
6 | 9 | type IRODSAccessLevelType string
|
7 | 10 |
|
8 | 11 | const (
|
| 12 | + // IRODSAccessLevelNull is for null access |
| 13 | + IRODSAccessLevelNull IRODSAccessLevelType = "null" |
| 14 | + // IRODSAccessLevelExecute is for execute access |
| 15 | + IRODSAccessLevelExecute IRODSAccessLevelType = "execute" |
| 16 | + // IRODSAccessLevelReadAnnotation is for read annotation access |
| 17 | + IRODSAccessLevelReadAnnotation IRODSAccessLevelType = "read_annotation" |
| 18 | + // IRODSAccessLevelReadSystemMetadata is for read system metadata access |
| 19 | + IRODSAccessLevelReadSystemMetadata IRODSAccessLevelType = "read_system_metadata" |
| 20 | + // IRODSAccessLevelReadMetadata is for read metadata access |
| 21 | + IRODSAccessLevelReadMetadata IRODSAccessLevelType = "read_metadata" |
| 22 | + // IRODSAccessLevelReadObject is for read object access |
| 23 | + IRODSAccessLevelReadObject IRODSAccessLevelType = "read_object" |
| 24 | + // IRODSAccessLevelWriteAnnotation is for write annotation access |
| 25 | + IRODSAccessLevelWriteAnnotation IRODSAccessLevelType = "write_annotation" |
| 26 | + // IRODSAccessLevelCreateMetadata is for create metadata access |
| 27 | + IRODSAccessLevelCreateMetadata IRODSAccessLevelType = "create_metadata" |
| 28 | + // IRODSAccessLevelModifyMetadata is for modify metadata access |
| 29 | + IRODSAccessLevelModifyMetadata IRODSAccessLevelType = "modify_metadata" |
| 30 | + // IRODSAccessLevelDeleteMetadata is for delete metadata access |
| 31 | + IRODSAccessLevelDeleteMetadata IRODSAccessLevelType = "delete_metadata" |
| 32 | + // IRODSAccessLevelAdministerObject is for administer object access |
| 33 | + IRODSAccessLevelAdministerObject IRODSAccessLevelType = "administer_object" |
| 34 | + // IRODSAccessLevelCreateObject is for create object access |
| 35 | + IRODSAccessLevelCreateObject IRODSAccessLevelType = "create_object" |
| 36 | + // IRODSAccessLevelModifyObject is for modify object access |
| 37 | + IRODSAccessLevelModifyObject IRODSAccessLevelType = "modify_object" |
| 38 | + // IRODSAccessLevelDeleteObject is for delete object access |
| 39 | + IRODSAccessLevelDeleteObject IRODSAccessLevelType = "delete_object" |
| 40 | + // IRODSAccessLevelCreateToken is for create token access |
| 41 | + IRODSAccessLevelCreateToken IRODSAccessLevelType = "create_token" |
| 42 | + // IRODSAccessLevelDeleteToken is for delete token access |
| 43 | + IRODSAccessLevelDeleteToken IRODSAccessLevelType = "delete_token" |
| 44 | + // IRODSAccessLevelCurate is for curate access |
| 45 | + IRODSAccessLevelCurate IRODSAccessLevelType = "curate" |
9 | 46 | // IRODSAccessLevelOwner is for owner access
|
10 | 47 | IRODSAccessLevelOwner IRODSAccessLevelType = "own"
|
11 |
| - // IRODSAccessLevelWrite is for write access |
12 |
| - IRODSAccessLevelWrite IRODSAccessLevelType = "modify object" |
13 |
| - // IRODSAccessLevelRead is for read access |
14 |
| - IRODSAccessLevelRead IRODSAccessLevelType = "read object" |
15 |
| - // IRODSAccessLevelNone is for no access |
16 |
| - IRODSAccessLevelNone IRODSAccessLevelType = "" |
17 | 48 | )
|
18 | 49 |
|
| 50 | +func GetIRODSAccessLevelType(accessLevelType string) IRODSAccessLevelType { |
| 51 | + canonical := strings.ToLower(accessLevelType) |
| 52 | + canonical = strings.TrimSpace(canonical) |
| 53 | + canonical = strings.ReplaceAll(canonical, " ", "_") |
| 54 | + |
| 55 | + switch canonical { |
| 56 | + case string(IRODSAccessLevelExecute): |
| 57 | + return IRODSAccessLevelExecute |
| 58 | + case string(IRODSAccessLevelReadAnnotation): |
| 59 | + return IRODSAccessLevelReadAnnotation |
| 60 | + case string(IRODSAccessLevelReadSystemMetadata): |
| 61 | + return IRODSAccessLevelReadSystemMetadata |
| 62 | + case string(IRODSAccessLevelReadMetadata): |
| 63 | + return IRODSAccessLevelReadMetadata |
| 64 | + case string(IRODSAccessLevelReadObject), "read": |
| 65 | + return IRODSAccessLevelReadObject |
| 66 | + case string(IRODSAccessLevelWriteAnnotation): |
| 67 | + return IRODSAccessLevelWriteAnnotation |
| 68 | + case string(IRODSAccessLevelCreateMetadata): |
| 69 | + return IRODSAccessLevelCreateMetadata |
| 70 | + case string(IRODSAccessLevelModifyMetadata): |
| 71 | + return IRODSAccessLevelModifyMetadata |
| 72 | + case string(IRODSAccessLevelDeleteMetadata): |
| 73 | + return IRODSAccessLevelDeleteMetadata |
| 74 | + case string(IRODSAccessLevelAdministerObject): |
| 75 | + return IRODSAccessLevelAdministerObject |
| 76 | + case string(IRODSAccessLevelCreateObject), "create": |
| 77 | + return IRODSAccessLevelCreateObject |
| 78 | + case string(IRODSAccessLevelModifyObject), "modify", "write": |
| 79 | + return IRODSAccessLevelModifyObject |
| 80 | + case string(IRODSAccessLevelDeleteObject), "delete": |
| 81 | + return IRODSAccessLevelDeleteObject |
| 82 | + case string(IRODSAccessLevelCreateToken): |
| 83 | + return IRODSAccessLevelCreateToken |
| 84 | + case string(IRODSAccessLevelDeleteToken): |
| 85 | + return IRODSAccessLevelDeleteToken |
| 86 | + case string(IRODSAccessLevelCurate): |
| 87 | + return IRODSAccessLevelCurate |
| 88 | + case string(IRODSAccessLevelOwner): |
| 89 | + return IRODSAccessLevelOwner |
| 90 | + case string(IRODSAccessLevelNull): |
| 91 | + fallthrough |
| 92 | + default: |
| 93 | + return IRODSAccessLevelNull |
| 94 | + } |
| 95 | +} |
| 96 | + |
19 | 97 | // ChmodString returns the string for update access control messages.
|
20 | 98 | func (accessType IRODSAccessLevelType) ChmodString() string {
|
21 | 99 | switch accessType {
|
22 |
| - case IRODSAccessLevelRead: |
| 100 | + case IRODSAccessLevelReadObject: |
23 | 101 | return "read"
|
24 |
| - case IRODSAccessLevelWrite: |
| 102 | + case IRODSAccessLevelModifyObject: |
25 | 103 | return "write"
|
26 |
| - case IRODSAccessLevelNone: |
27 |
| - return "null" |
28 | 104 | default:
|
29 | 105 | return string(accessType)
|
30 | 106 | }
|
|
0 commit comments