@@ -71,18 +71,31 @@ accept_content(ReqData, Context) ->
71
71
rabbit_mgmt_util :bad_request (iolist_to_binary (io_lib :format (F ++ " ~n " , A )), ReqData , Context )
72
72
end .
73
73
74
- delete_resource (ReqData , Context ) ->
74
+ delete_resource (ReqData , Context = # context { user = # user { username = ActingUser }} ) ->
75
75
% % We need to retrieve manually if-unused and if-empty, as the HTTP API uses '-'
76
76
% % while the record uses '_'
77
77
IfUnused = <<" true" >> =:= rabbit_mgmt_util :qs_val (<<" if-unused" >>, ReqData ),
78
78
IfEmpty = <<" true" >> =:= rabbit_mgmt_util :qs_val (<<" if-empty" >>, ReqData ),
79
- Name = rabbit_mgmt_util :id (queue , ReqData ),
80
- rabbit_mgmt_util :direct_request (
81
- 'queue.delete' ,
82
- fun rabbit_mgmt_format :format_accept_content /1 ,
83
- [{queue , Name },
84
- {if_unused , IfUnused },
85
- {if_empty , IfEmpty }], " Delete queue error: ~ts " , ReqData , Context ).
79
+ VHost = rabbit_mgmt_util :id (vhost , ReqData ),
80
+ QName = rabbit_mgmt_util :id (queue , ReqData ),
81
+ Name = rabbit_misc :r (VHost , queue , QName ),
82
+ case rabbit_amqqueue :lookup (Name ) of
83
+ {ok , Q } ->
84
+ case rabbit_amqqueue :delete (Q , IfUnused , IfEmpty , ActingUser ) of
85
+ {ok , _ } ->
86
+ {true , ReqData , Context };
87
+ {error , not_empty } ->
88
+ Explanation = io_lib :format (" ~ts not empty" , [rabbit_misc :rs (Name )]),
89
+ rabbit_log :warning (" Delete queue error: ~ts " , [Explanation ]),
90
+ rabbit_mgmt_util :bad_request (list_to_binary (Explanation ), ReqData , Context );
91
+ {error , in_use } ->
92
+ Explanation = io_lib :format (" ~ts in use" , [rabbit_misc :rs (Name )]),
93
+ rabbit_log :warning (" Delete queue error: ~ts " , [Explanation ]),
94
+ rabbit_mgmt_util :bad_request (list_to_binary (Explanation ), ReqData , Context )
95
+ end ;
96
+ {error , not_found } ->
97
+ {true , ReqData , Context }
98
+ end .
86
99
87
100
is_authorized (ReqData , Context ) ->
88
101
rabbit_mgmt_util :is_authorized_vhost (ReqData , Context ).
0 commit comments