@@ -24,25 +24,23 @@ def list_of_dictionaries_to_map(input_list, key_field, data_fields_list=None):
24
24
25
25
def get_project_tree (snyk_token , org_id , project_id ):
26
26
client = SnykClient (snyk_token )
27
- json_res_dep_graph = client .snyk_projects_get_product_dependency_graph (
28
- org_id , project_id
29
- )
30
- print_json (json_res_dep_graph )
27
+ res_dep_graph = client .organizations .get (org_id ).projects .get (project_id ).dependency_graph
28
+ print (res_dep_graph )
31
29
32
30
print ("\n Packages (Flat List):" )
33
- for pkg in json_res_dep_graph [ "depGraph" ][ " pkgs" ] :
34
- print ("%s | %s" % (pkg [ "id" ] , pkg [ " info" ] ))
31
+ for pkg in res_dep_graph . pkgs :
32
+ print ("%s | %s" % (pkg . id , pkg . info ))
35
33
36
- all_packages = json_res_dep_graph [ "depGraph" ][ " pkgs" ]
34
+ all_packages = res_dep_graph . pkgs
37
35
38
36
print ("\n Graph data:" )
39
- graph = json_res_dep_graph [ "depGraph" ][ " graph" ]
40
- root_node_id = graph [ " rootNodeId" ]
41
- nodes = graph [ " nodes" ]
37
+ graph = res_dep_graph . graph
38
+ root_node_id = graph . rootNodeId
39
+ nodes = graph . nodes
42
40
43
41
for node in nodes :
44
- print ("%s | %s" % (node [ " nodeId" ] , node [ " pkgId" ] ))
45
- child_nodes = node [ " deps" ]
42
+ print ("%s | %s" % (node . nodeId , node . pkgId ))
43
+ child_nodes = node . deps
46
44
if len (child_nodes ) > 0 :
47
45
for child_node in child_nodes :
48
46
print (" - Child: %s" % child_node )
@@ -52,62 +50,58 @@ def get_project_tree(snyk_token, org_id, project_id):
52
50
packages_lookup_map = {}
53
51
for pkg in all_packages :
54
52
print (pkg )
55
- package_id = pkg [ "id" ]
53
+ package_id = pkg . id
56
54
packages_lookup_map [package_id ] = {
57
- "package_name" : pkg [ " info" ][ " name" ] ,
58
- "package_version" : pkg [ " info" ][ " version" ] ,
55
+ "package_name" : pkg . info . name ,
56
+ "package_version" : pkg . info . version ,
59
57
}
60
58
61
59
# Get licenses for all dependencies in the project
62
- lst_res_license = client .snyk_dependencies_list_all_dependencies_by_project (
63
- org_id , project_id
64
- )
60
+ lst_res_license = client .organizations .get (org_id ).projects .get (project_id ).dependencies .all ()
65
61
66
62
# make into a lookup table by package_id
67
63
package_id_to_license_info_map = {} # package_id -> { license info }
68
64
for r in lst_res_license :
69
- package_id = r [ "id" ]
70
- licenses = r [ " licenses" ]
65
+ package_id = r . id
66
+ licenses = r . licenses
71
67
package_id_to_license_info_map [package_id ] = licenses
72
68
73
69
print ("\n \n package_id_to_license_info_map:" )
74
- print_json (package_id_to_license_info_map )
70
+ print (package_id_to_license_info_map )
75
71
76
72
# Get the license issues and then enhance package_id_to_license_info_map with the license classification or none
77
- get_project_issues_response = client .snyk_projects_project_issues (
78
- org_id , project_id
79
- )
80
- license_issues_list = get_project_issues_response ["issues" ]["licenses" ]
73
+ issues = client .organizations .get (org_id ).projects .get (project_id ).issueset .all ().issues
74
+ license_issues_list = issues .licenses
81
75
82
76
# map to lookup table
83
- license_issues_lookup_map = list_of_dictionaries_to_map ( license_issues_list , "id" )
77
+ license_issues_lookup_map = { license_issue . id : license_issue . severity for license_issue in license_issues_list }
84
78
85
79
for pkgId , licensesList in package_id_to_license_info_map .items ():
86
80
for l in licensesList :
87
- license_id = l [ "id" ]
81
+ license_id = l . id
88
82
print (license_id )
89
83
90
84
if license_id in license_issues_lookup_map :
91
85
print ("append additional info" )
92
- severity = license_issues_lookup_map [license_id ][ "severity" ]
93
- l [ " severity" ] = severity
86
+ severity = license_issues_lookup_map [license_id ]
87
+ l . severity = severity
94
88
else :
95
- l [ " severity" ] = "none"
89
+ l . severity = "none"
96
90
97
91
# lookup the license id in license_issues_lookup_map and see if there's an issue
98
92
# add a 'classification' to the licenseInfo
99
93
100
94
# Convert nodes to a dictionary by nodeId
101
95
node_lookup_map = {}
102
96
for node in nodes :
103
- node_id = node [ " nodeId" ]
104
- package_id = node [ " pkgId" ]
97
+ node_id = node . nodeId
98
+ package_id = node . pkgId
105
99
node_lookup_map [node_id ] = {
106
- "pkgId" : node [ " pkgId" ] ,
100
+ "pkgId" : node . pkgId ,
107
101
# TODO: Pull in the packages_name and package_version from packages_lookup_map
108
102
"package_name" : packages_lookup_map [package_id ]["package_name" ],
109
103
"package_version" : packages_lookup_map [package_id ]["package_version" ],
110
- "deps" : node [ " deps" ] ,
104
+ "deps" : node . deps ,
111
105
}
112
106
113
107
print (node_lookup_map )
@@ -126,10 +120,9 @@ def get_project_tree(snyk_token, org_id, project_id):
126
120
127
121
# Now create a new structure based on node_lookup_map which is a deeply nested structure of the same data
128
122
project_structured_tree = {}
123
+
129
124
130
- def get_node_to_append (
131
- node_id , base_path
132
- ): # might make sense to rename get_dependencies
125
+ def get_node_to_append (node_id , base_path ): # might make sense to rename get_dependencies
133
126
obj = node_lookup_map [node_id ]
134
127
pkgId = obj ["pkgId" ]
135
128
print ("node_id: %s" % pkgId )
@@ -160,7 +153,6 @@ def get_node_to_append(
160
153
# print(root_node_package_id)
161
154
project_dependencies_structure = get_node_to_append (root_node_id , "" )
162
155
project_structured_tree = {"project" : project_dependencies_structure }
163
-
164
156
return project_structured_tree
165
157
166
158
0 commit comments