From 44de44ac6a3879c78b7e31d7e460bb0125275237 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Mon, 24 Mar 2014 20:01:39 -0700 Subject: Adding index page to backend with API info. --- src/com/p4square/grow/backend/GrowBackend.java | 7 ++-- src/com/p4square/grow/backend/apiinfo.html | 41 ++++++++++++++++++++++ .../grow/backend/resources/BannerResource.java | 19 ++++++++-- .../backend/resources/SurveyResultsResource.java | 11 +++++- src/com/p4square/grow/model/Banner.java | 20 +++++++++++ 5 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 src/com/p4square/grow/backend/apiinfo.html create mode 100644 src/com/p4square/grow/model/Banner.java (limited to 'src') diff --git a/src/com/p4square/grow/backend/GrowBackend.java b/src/com/p4square/grow/backend/GrowBackend.java index 683c99b..e747a1b 100644 --- a/src/com/p4square/grow/backend/GrowBackend.java +++ b/src/com/p4square/grow/backend/GrowBackend.java @@ -10,8 +10,10 @@ import org.apache.log4j.Logger; import org.restlet.Application; import org.restlet.Component; -import org.restlet.data.Protocol; import org.restlet.Restlet; +import org.restlet.data.Protocol; +import org.restlet.data.Reference; +import org.restlet.resource.Directory; import org.restlet.routing.Router; import com.p4square.grow.config.Config; @@ -107,7 +109,6 @@ public class GrowBackend extends Application Router router = new Router(getContext()); // Account API - router.attach("/accounts", AccountResource.class); router.attach("/accounts/{userId}", AccountResource.class); // Survey API @@ -133,6 +134,8 @@ public class GrowBackend extends Application router.attach("/feed/{topic}/{thread}", ThreadResource.class); //router.attach("/feed/{topic/{thread}/{message}", MessageResource.class); + router.attachDefault(new Directory(getContext(), new Reference(getClass().getResource("apiinfo.html")))); + return router; } diff --git a/src/com/p4square/grow/backend/apiinfo.html b/src/com/p4square/grow/backend/apiinfo.html new file mode 100644 index 0000000..a3637c9 --- /dev/null +++ b/src/com/p4square/grow/backend/apiinfo.html @@ -0,0 +1,41 @@ + + +API Info + + +
+
/backend/accounts/{userId}
+
GET information about userId or PUT new information.
+ +
/backend/assessment/question/{questionId}
+
GET information about questionId. Special questionIds: first identifies first question. count returns total number of questions.
+ +
/backend/accounts/{userId}/assessment
+
GET the assessment summary for userId or DELETE userId's assessment.
+ +
/backend/accounts/{userId}/assessment/answers/{questionId}
+
GET userId's answer to questionId, PUT a new answer, or DELETE an answer.
+ +
/backend/training/{level}
+
GET all video information for level.
+ +
/backend/training/{level}/videos/{videoId}
+
GET video information for videoId in level.
+ +
/backend/accounts/{userId}/training
+
GET training record summary for userId.
+ +
/backend/accounts/{userId}/training/videos/{videoId}
+
GET training record for userId and videoId or PUT a new record.
+ +
/backend/banner
+
GET the info banner or PUT new banner info.
+ +
/backend/feed/{topic}
+
Get all threads for forum topic.
+ +
/backend/feed/{topic}/{thread}
+
Get all responses to question thread on forum topic.
+
+ + diff --git a/src/com/p4square/grow/backend/resources/BannerResource.java b/src/com/p4square/grow/backend/resources/BannerResource.java index 4551777..8519f64 100644 --- a/src/com/p4square/grow/backend/resources/BannerResource.java +++ b/src/com/p4square/grow/backend/resources/BannerResource.java @@ -7,14 +7,19 @@ package com.p4square.grow.backend.resources; import java.io.IOException; import org.restlet.data.Status; -import org.restlet.resource.ServerResource; +import org.restlet.ext.jackson.JacksonRepresentation; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; +import org.restlet.resource.ServerResource; + +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.log4j.Logger; import com.p4square.grow.backend.GrowBackend; import com.p4square.grow.backend.db.CassandraDatabase; +import com.p4square.grow.model.Banner; +import com.p4square.grow.provider.JsonEncodedProvider; /** * Fetches or sets the banner string. @@ -24,6 +29,8 @@ import com.p4square.grow.backend.db.CassandraDatabase; public class BannerResource extends ServerResource { private static final Logger LOG = Logger.getLogger(BannerResource.class); + public static final ObjectMapper MAPPER = JsonEncodedProvider.MAPPER; + private CassandraDatabase mDb; @Override @@ -42,7 +49,7 @@ public class BannerResource extends ServerResource { String result = mDb.getKey("strings", "banner"); if (result == null || result.length() == 0) { - result = "{}"; + result = "{\"html\":null}"; } return new StringRepresentation(result); @@ -54,7 +61,13 @@ public class BannerResource extends ServerResource { @Override protected Representation put(Representation entity) { try { - mDb.putKey("strings", "banner", entity.getText()); + JacksonRepresentation representation = + new JacksonRepresentation<>(entity, Banner.class); + representation.setObjectMapper(MAPPER); + + Banner banner = representation.getObject(); + + mDb.putKey("strings", "banner", MAPPER.writeValueAsString(banner)); setStatus(Status.SUCCESS_NO_CONTENT); } catch (IOException e) { diff --git a/src/com/p4square/grow/backend/resources/SurveyResultsResource.java b/src/com/p4square/grow/backend/resources/SurveyResultsResource.java index 4fba599..404ccec 100644 --- a/src/com/p4square/grow/backend/resources/SurveyResultsResource.java +++ b/src/com/p4square/grow/backend/resources/SurveyResultsResource.java @@ -26,6 +26,7 @@ import com.p4square.grow.model.Answer; import com.p4square.grow.model.Question; import com.p4square.grow.model.RecordedAnswer; import com.p4square.grow.model.Score; +import com.p4square.grow.model.UserRecord; import com.p4square.grow.provider.Provider; @@ -45,6 +46,7 @@ public class SurveyResultsResource extends ServerResource { private CassandraDatabase mDb; private Provider mQuestionProvider; + private Provider mUserRecordProvider; private RequestType mRequestType; private String mUserId; @@ -57,6 +59,7 @@ public class SurveyResultsResource extends ServerResource { final GrowBackend backend = (GrowBackend) getApplication(); mDb = backend.getDatabase(); mQuestionProvider = backend.getQuestionProvider(); + mUserRecordProvider = backend.getUserRecordProvider(); mUserId = getAttribute("userId"); mQuestionId = getAttribute("questionId"); @@ -152,7 +155,13 @@ public class SurveyResultsResource extends ServerResource { case ASSESSMENT: try { mDb.deleteRow("assessments", mUserId); - mDb.deleteKey("accounts", mUserId, "value"); // TODO: IMPORTANT! This needs to be narrower. + + UserRecord record = mUserRecordProvider.get(mUserId); + if (record != null) { + record.setLanding("assessment"); + mUserRecordProvider.put(mUserId, record); + } + success = true; } catch (Exception e) { diff --git a/src/com/p4square/grow/model/Banner.java b/src/com/p4square/grow/model/Banner.java new file mode 100644 index 0000000..b786b36 --- /dev/null +++ b/src/com/p4square/grow/model/Banner.java @@ -0,0 +1,20 @@ +/* + * Copyright 2014 Jesse Morgan + */ + +package com.p4square.grow.model; + +/** + * Page Banner Data. + */ +public class Banner { + private String mHtml; + + public String getHtml() { + return mHtml; + } + + public void setHtml(final String html) { + mHtml = html; + } +} -- cgit v1.2.3