Coretex
secret_factory.py
1 # Copyright (C) 2023 Coretex LLC
2 
3 # This file is part of Coretex.ai
4 
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License as
7 # published by the Free Software Foundation, either version 3 of the
8 # License, or (at your option) any later version.
9 
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Affero General Public License for more details.
14 
15 # You should have received a copy of the GNU Affero General Public License
16 # along with this program. If not, see <https://www.gnu.org/licenses/>.
17 
18 from typing import Dict, Any
19 
20 from .type import SecretType
21 from .secret import Secret
22 from .aws_secret import AWSSecret
23 from .git_secret import GitSecret
24 from .credentials import CredentialsSecret
25 from .project_secret import ProjectSecret
26 
27 
28 def create(value: Dict[str, Any]) -> Secret:
29  rawType = value.get("type_")
30  if rawType is None:
31  raise ValueError("Invalid Secret json received. \"type_\" field missing")
32 
33  del value["type_"]
34  type_ = SecretType(rawType)
35 
36  if type_ == SecretType.aws:
37  return AWSSecret.decode(value)
38 
39  if type_ == SecretType.git:
40  return GitSecret.decode(value)
41 
42  if type_ == SecretType.credentials:
43  return CredentialsSecret.decode(value)
44 
45  if type_ == SecretType.project:
46  return ProjectSecret.decode(value)