001 package com.nimbusds.oauth2.sdk.client; 002 003 004 import java.net.URL; 005 006 import net.jcip.annotations.Immutable; 007 008 import com.nimbusds.oauth2.sdk.ParseException; 009 import com.nimbusds.oauth2.sdk.ProtectedResourceRequest; 010 import com.nimbusds.oauth2.sdk.http.HTTPRequest; 011 import com.nimbusds.oauth2.sdk.token.BearerAccessToken; 012 013 014 /** 015 * Client delete request. This class is immutable. 016 * 017 * <p>Example HTTP request: 018 * 019 * <pre> 020 * DELETE /register/s6BhdRkqt3 HTTP/1.1 021 * Accept: application/json 022 * Host: server.example.com 023 * Authorization: Bearer reg-23410913-abewfq.123483 024 * </pre> 025 * 026 * <p>Related specifications: 027 * 028 * <ul> 029 * <li>OAuth 2.0 Dynamic Client Registration Protocol 030 * (draft-ietf-oauth-dyn-reg-12), section 4.4. 031 * </ul> 032 * 033 * @author Vladimir Dzhuvinov 034 */ 035 @Immutable 036 public class ClientDeleteRequest extends ProtectedResourceRequest { 037 038 039 /** 040 * Creates a new client delete request. 041 * 042 * @param accessToken An OAuth 2.0 Bearer access token for the request, 043 * {@code null} if none. 044 */ 045 public ClientDeleteRequest(final BearerAccessToken accessToken) { 046 047 super(accessToken); 048 049 if (accessToken == null) 050 throw new IllegalArgumentException("The access token must not be null"); 051 } 052 053 054 @Override 055 public HTTPRequest toHTTPRequest(final URL url) { 056 057 HTTPRequest httpRequest = new HTTPRequest(HTTPRequest.Method.DELETE, url); 058 httpRequest.setAuthorization(getAccessToken().toAuthorizationHeader()); 059 return httpRequest; 060 } 061 062 063 /** 064 * Parses a client delete request from the specified HTTP DELETE 065 * request. 066 * 067 * @param httpRequest The HTTP request. Must not be {@code null}. 068 * 069 * @return The client add (register) request. 070 * 071 * @throws ParseException If the HTTP request couldn't be parsed to a 072 * client delete request. 073 */ 074 public static ClientDeleteRequest parse(final HTTPRequest httpRequest) 075 throws ParseException { 076 077 httpRequest.ensureMethod(HTTPRequest.Method.DELETE); 078 079 // Parse the bearer access token 080 String authzHeaderValue = httpRequest.getAuthorization(); 081 082 BearerAccessToken accessToken = BearerAccessToken.parse(authzHeaderValue); 083 084 return new ClientDeleteRequest(accessToken); 085 } 086 }