@@ -79,6 +79,14 @@ def get_test_uri(self, test_id):
79
79
"""
80
80
return "/api/" + self .api_version + "/tests/" + str (test_id ) + "/"
81
81
82
+ def get_language_uri (self , language_type_id ):
83
+ """Returns the DefectDojo API URI for a test.
84
+
85
+ :param test_id: Id of the test
86
+
87
+ """
88
+ return "/api/" + self .api_version + "/language_types/" + str (language_type_id ) + "/"
89
+
82
90
def version_url (self ):
83
91
"""Returns the DefectDojo API version.
84
92
@@ -780,13 +788,13 @@ def get_credential_mapping(self, cred_mapping_id, limit=20):
780
788
"""
781
789
return self ._request ('GET' , 'credential_mappings/' + str (cred_mapping_id ) + '/' )
782
790
783
- ##### Container API #####
784
-
785
- def list_containers (self , name = None , container_type = None , limit = 20 ):
786
- """Retrieves all the globally configured credentials.
791
+ ##### App Analysis API #####
792
+ def list_app_analysis (self , id = None , product_id = None , name = None , limit = 20 ):
793
+ """Retrieves source code languages.
787
794
788
- :param name_contains: Search by credential name.
789
- :param username: Search by username
795
+ :param id: Search by lanaguage id.
796
+ :param product: Search by product id
797
+ :param language_name: Search by language name
790
798
:param limit: Number of records to return.
791
799
792
800
"""
@@ -795,20 +803,143 @@ def list_containers(self, name=None, container_type=None, limit=20):
795
803
if limit :
796
804
params ['limit' ] = limit
797
805
806
+ if id :
807
+ params ['id' ] = id
808
+
809
+ if product_id :
810
+ params ['product__id' ] = product_id
811
+
798
812
if name :
799
- params ['name__contains' ] = name
813
+ params ['name__icontains' ] = language_name
814
+
815
+ return self ._request ('GET' , 'app_analysis/' , params )
816
+
817
+ def create_app_analysis (self , product_id , user_id , name , confidence , version , icon , website ):
818
+ """
819
+ Create a application analysis to product mapping.
820
+ :param id: Language identification.
821
+ """
822
+
823
+ data = {
824
+ 'product' : self .get_product_uri (product_id ),
825
+ 'user' : self .get_user_uri (user_id ),
826
+ 'name' : name ,
827
+ 'confidence' : confidence ,
828
+ 'version' : version ,
829
+ 'icon' : icon ,
830
+ 'website' : website
831
+ }
832
+
833
+ return self ._request ('POST' , 'app_analysis/' , data = data )
834
+
835
+ def delete_app_analysis (self , id ):
836
+ """
837
+ Deletes an app analysis using the given id.
838
+ :param id: Language identification.
839
+ """
840
+ return self ._request ('DELETE' , 'app_analysis/' + str (id ) + '/' )
841
+
842
+ def delete_all_app_analysis_product (self , product_id ):
843
+ """
844
+ Delete all app analysis using the given id.
845
+ :product_id id: Product to remove
846
+ """
847
+ app_analysis = self .list_app_analysis (product_id = product_id )
848
+
849
+ if app_analysis .success :
850
+ for app in app_analysis .data ["objects" ]:
851
+ self .delete_app_analysis (self .get_id_from_url (app ['resource_uri' ]))
852
+
853
+ ##### Language API #####
854
+
855
+ def list_languages (self , id = None , product_id = None , language_name = None , limit = 20 ):
856
+ """Retrieves source code languages.
857
+
858
+ :param id: Search by lanaguage id.
859
+ :param product: Search by product id
860
+ :param language_name: Search by language name
861
+ :param limit: Number of records to return.
800
862
801
- if container_type :
802
- params ['container_type__contains' ] = container_type
863
+ """
864
+
865
+ params = {}
866
+ if limit :
867
+ params ['limit' ] = limit
868
+
869
+ if id :
870
+ params ['id' ] = id
871
+
872
+ if product_id :
873
+ params ['product__id' ] = product_id
874
+
875
+ if language_name :
876
+ params ['language_type__language__icontains' ] = language_name
877
+
878
+ return self ._request ('GET' , 'languages/' , params )
879
+
880
+ def create_language (self , product_id , user_id , files , code , blank , comment , language_type_id = None , language_name = None ):
881
+ """
882
+ Create a language to product mapping.
883
+ :param product_id: Product identification.
884
+ """
885
+ #If language name specified then lookup
886
+ if language_name :
887
+ languages = self .list_language_types (language_name = language_name )
888
+
889
+ if languages .success :
890
+ for language in languages .data ["objects" ]:
891
+ language_type = language ['resource_uri' ]
892
+
893
+ data = {
894
+ 'product' : self .get_product_uri (product_id ),
895
+ 'language_type' : language_type ,
896
+ 'user' : self .get_user_uri (user_id ),
897
+ 'files' : files ,
898
+ 'code' : code ,
899
+ 'blank' : blank ,
900
+ 'comment' : comment
901
+ }
902
+
903
+ return self ._request ('POST' , 'languages/' , data = data )
803
904
804
- return self ._request ('GET' , 'container/' , params )
905
+ def delete_language (self , id ):
906
+ """
907
+ Deletes a language using the given id.
908
+ :param id: Language identification.
909
+ """
910
+ return self ._request ('DELETE' , 'languages/' + str (id ) + '/' )
805
911
806
- def get_container (self , container_id , limit = 20 ):
912
+ def delete_all_languages_product (self , product_id ):
807
913
"""
808
- Retrieves a finding using the given container id.
809
- :param container_id: Container identification.
914
+ Delete all languages for a given product id.
915
+ :param id: Language identification.
916
+ """
917
+ languages = self .list_languages (product_id = product_id )
918
+
919
+ if languages .success :
920
+ for language in languages .data ["objects" ]:
921
+ self .delete_language (self .get_id_from_url (language ['resource_uri' ]))
922
+
923
+ def list_language_types (self , id = None , language_name = None , limit = 20 ):
924
+ """Retrieves source code languages.
925
+
926
+ :param id: Search by lanaguage id.
927
+ :param language_name: Search by language name
928
+ :param limit: Number of records to return.
929
+
810
930
"""
811
- return self ._request ('GET' , 'container/' + str (container_id ) + '/' )
931
+
932
+ params = {}
933
+ if limit :
934
+ params ['limit' ] = limit
935
+
936
+ if id :
937
+ params ['id' ] = id
938
+
939
+ if language_name :
940
+ params ['language__icontains' ] = language_name
941
+
942
+ return self ._request ('GET' , 'language_types/' , params )
812
943
813
944
###### Tool API #######
814
945
0 commit comments