001: /*
002: * Copyright 2005-2007 Noelios Consulting.
003: *
004: * The contents of this file are subject to the terms of the Common Development
005: * and Distribution License (the "License"). You may not use this file except in
006: * compliance with the License.
007: *
008: * You can obtain a copy of the license at
009: * http://www.opensource.org/licenses/cddl1.txt See the License for the specific
010: * language governing permissions and limitations under the License.
011: *
012: * When distributing Covered Code, include this CDDL HEADER in each file and
013: * include the License file at http://www.opensource.org/licenses/cddl1.txt If
014: * applicable, add the following below this CDDL HEADER, with the fields
015: * enclosed by brackets "[]" replaced with your own identifying information:
016: * Portions Copyright [yyyy] [name of copyright owner]
017: */
018:
019: package org.restlet.example.book.rest.ch7;
020:
021: import org.restlet.Client;
022: import org.restlet.data.ChallengeResponse;
023: import org.restlet.data.ChallengeScheme;
024: import org.restlet.data.Form;
025: import org.restlet.data.Method;
026: import org.restlet.data.Protocol;
027: import org.restlet.data.Request;
028: import org.restlet.data.Response;
029:
030: /**
031: * Client code that can be used to test the application developped in the
032: * chapter 7 of the book and converted to Restlets in the chapter 13.
033: *
034: * @author Jerome Louvel (contact@noelios.com)
035: */
036: public class ApplicationTest {
037: /** Base application URI. */
038: public static final String APPLICATION_URI = "http://localhost:3000/v1";
039:
040: public static void deleteBookmark(String userName, String password,
041: String uri) {
042: Request request = getAuthenticatedRequest(Method.DELETE,
043: getBookmarkUri(userName, uri), userName, password);
044: Response resp = new Client(Protocol.HTTP).handle(request);
045: System.out.println(resp.getStatus() + " : "
046: + resp.getRedirectRef());
047: }
048:
049: public static void deleteUser(String userName, String password) {
050: Request request = getAuthenticatedRequest(Method.DELETE,
051: getUserUri(userName), userName, password);
052: Response resp = new Client(Protocol.HTTP).handle(request);
053: System.out.println(resp.getStatus() + " : "
054: + resp.getRedirectRef());
055: }
056:
057: /**
058: * Creates an authenticated request.
059: *
060: * @param method
061: * The request method.
062: * @param uri
063: * The target resource URI.
064: * @param login
065: * The login name.
066: * @param password
067: * The password.
068: * @return The authenticated request to use.
069: */
070: public static Request getAuthenticatedRequest(Method method,
071: String uri, String login, String password) {
072: Request request = new Request(method, uri);
073: request.setChallengeResponse(new ChallengeResponse(
074: ChallengeScheme.HTTP_BASIC, login, password));
075: return request;
076: }
077:
078: public static String getBookmarkUri(String userName, String uri) {
079: return APPLICATION_URI + "/users/" + userName + "/bookmarks/"
080: + uri;
081: }
082:
083: public static String getUserUri(String name) {
084: return APPLICATION_URI + "/users/" + name;
085: }
086:
087: /**
088: * Main method to use for testing.
089: *
090: * @param args
091: * The arguments or nothing for a usage description.
092: */
093: public static void main(String... args) throws Exception {
094: if (args.length == 0) {
095: System.out
096: .println("Usage depends on the number of arguments:");
097: System.out
098: .println(" - Deletes a user : userName, password");
099: System.out
100: .println(" - Deletes a bookmark : userName, password, URI");
101: System.out
102: .println(" - Adds a new user : userName, password, \"full name\", email");
103: System.out
104: .println(" - Adds a new bookmark: userName, password, URI, shortDescription, longDescription, restrict");
105: } else if (args.length == 2) {
106: deleteUser(args[0], args[1]);
107: } else if (args.length == 3) {
108: deleteBookmark(args[0], args[1], args[2]);
109: } else if (args.length == 4) {
110: putUser(args[0], args[1], args[2], args[3]);
111: } else if (args.length == 6) {
112: putBookmark(args[0], args[1], args[2], args[3], args[4],
113: Boolean.valueOf(args[5]));
114: }
115: }
116:
117: public static void putBookmark(String userName, String password,
118: String uri, String shortDescription,
119: String longDescription, boolean restrict) {
120: Form form = new Form();
121: form.add("bookmark[short_description]", shortDescription);
122: form.add("bookmark[long_description]", longDescription);
123: form.add("bookmark[restrict]", Boolean.toString(restrict));
124:
125: // Create an authenticated request as a bookmark is in
126: // the user's private area
127: Request request = getAuthenticatedRequest(Method.PUT,
128: getBookmarkUri(userName, uri), userName, password);
129: request.setEntity(form.getWebRepresentation());
130:
131: // Invoke the client HTTP connector
132: Response resp = new Client(Protocol.HTTP).handle(request);
133: System.out.println(resp.getStatus());
134: }
135:
136: public static void putUser(String userName, String password,
137: String fullName, String email) {
138: Form form = new Form();
139: form.add("user[password]", password);
140: form.add("user[full_name]", fullName);
141: form.add("user[email]", email);
142:
143: Response resp = new Client(Protocol.HTTP).put(
144: getUserUri(userName), form.getWebRepresentation());
145: System.out.println(resp.getStatus());
146: }
147:
148: }
|