Package

org.coursera

naptime

Permalink

package naptime

Visibility
  1. Public
  2. All

Type Members

  1. trait DangerousAccessToUnderlyingRequest extends AnyRef

    Permalink
  2. sealed trait ETag extends AnyRef

    Permalink

    Resources should always use weak validators because Naptime does not guarantee byte-equality between responses.

    Resources should always use weak validators because Naptime does not guarantee byte-equality between responses. See ETag.Weak.

  3. trait Errors extends AnyRef

    Permalink

    Error responses.

    Error responses. Note: these error responses work by throwing special exceptions that are caught by the framework. They are not designed to work outside the framework.

  4. case class FacetField(facetEntries: Seq[FacetFieldValue], fieldCardinality: Option[Long]) extends Product with Serializable

    Permalink

    Contains all of the information relating to a facet in a sophisticated search.

    Contains all of the information relating to a facet in a sophisticated search.

    facetEntries

    An ordered (potentially partial) list of facet entries.

    fieldCardinality

    Not all potential values for this facet may be included. The fieldCardinality is the count of all possible different values for this facet.

  5. case class FacetFieldValue(id: String, name: Option[String], count: Long) extends Product with Serializable

    Permalink

    Information about one particular choice of value for one particular facet.

    Information about one particular choice of value for one particular facet.

    id

    The id or code for this facet value.

    name

    The display name for this facet value.

    count

    The number of results for this facet.

  6. sealed case class Fields[T](defaultFields: Set[String], fieldsPermissionsFunction: FieldsFunction, relations: Map[String, ResourceName], reverseRelations: Map[String, ReverseRelation])(implicit format: OFormat[T]) extends Product with Serializable

    Permalink

    Contains all the required information related to a resource's fields.

    Contains all the required information related to a resource's fields.

    T

    The type of the resource in the collection.

    defaultFields

    The default fields that should be included in a response.

    fieldsPermissionsFunction

    A function that, given a request header, determines if particular fields are to be included in the response. This function can be used to hide particular fields depending on arbitrary information about the request. (e.g. Sensitive fields can be made unavailable in certain contexts. (e.g. CORS, 3rd party requests to APIs, JSONP, etc.) IMPORTANT NOTE: this functionality is not fully implemented yet! WORK IN PROGRESS. DO NOT USE YET!

    relations

    A map of field name to related resource's name and version pair. This configuration is used to automatically join related resources as requested. For example, if we have an "author" id field that references the "userBasicProfile" v1 resource, and a "post" id field that references a "discoursePost" v1 the map would look like: Map("author" -> ("userBasicProfile", 1), "post" -> ("discoursePost", 1)).

    format

    The JSON serialization formatter for the resource.

    Annotations
    @implicitNotFound( ... )
  7. sealed trait FieldsFunction extends (RequestHeader, QueryFields) ⇒ QueryFields

    Permalink
  8. case class FinderReverseRelation(resourceName: ResourceName, finderName: String, arguments: Map[String, String] = Map.empty, description: String = "") extends ReverseRelation with Product with Serializable

    Permalink
  9. case class GetReverseRelation(resourceName: ResourceName, id: String, arguments: Map[String, String] = Map.empty, description: String = "") extends ReverseRelation with Product with Serializable

    Permalink
  10. case class MultiGetReverseRelation(resourceName: ResourceName, ids: String, arguments: Map[String, String] = Map.empty, description: String = "") extends ReverseRelation with Product with Serializable

    Permalink
  11. case class NaptimeActionException(httpCode: Int, errorCode: Option[String], message: Option[String], details: Option[JsValue] = None) extends RuntimeException with Product with Serializable

    Permalink

    Throw to break out of a Naptime action body on error.

  12. trait NaptimeModule extends BinderExposer with ScalaModule

    Permalink

    Inherit from this trait to bind resources and schema types.

    Inherit from this trait to bind resources and schema types.

    Naptime builds upon Guice to discover and find all resources in the service, as well as to discover the reverse mappings from high-level class types to their wire representations.

  13. final case class Ok[+T](content: T, related: Map[ResourceName, Related[_, _]] = Map.empty, pagination: Option[ResponsePagination] = None, eTag: Option[ETag] = None) extends RestResponse[T] with Product with Serializable

    Permalink
  14. case class PaginationConfiguration(defaultLimit: Int = 100) extends Product with Serializable

    Permalink

    Configure the defaults for pagination.

  15. final case class Redirect(url: String, isTemporary: Boolean) extends RestResponse[Nothing] with Product with Serializable

    Permalink
  16. sealed trait RequestEvidence extends NotNull

    Permalink

    Marker trait to try and hide access to the underlying Play request.

    Marker trait to try and hide access to the underlying Play request.

    Annotations
    @implicitNotFound( ... )
  17. trait RequestFields extends AnyRef

    Permalink

    Passed to Resources so if there are certain fields that require more work to fetch, they can skip that work if the request does not include it.

    Passed to Resources so if there are certain fields that require more work to fetch, they can skip that work if the request does not include it.

    Note: the API is intentionally severely constrained to allow for future flexibility and internal changes to the Naptime framework.

  18. trait RequestIncludes extends AnyRef

    Permalink

    Passed to Resources so if there are certain related objects that require more work to fetch, they can skip that work if the request does not ask for those related resources.

    Passed to Resources so if there are certain related objects that require more work to fetch, they can skip that work if the request does not ask for those related resources.

    Note: the API is intentionally severely constrained to allow for future flexibility and internal changes to the Naptime framework.

  19. case class RequestPagination(limit: Int, start: Option[String], isDefault: Boolean) extends Product with Serializable

    Permalink

    Calculates the request pagination.

    Calculates the request pagination.

    TODO: URL-safe base64 encoding

  20. case class ResourceName(topLevelName: String, version: Int, resourcePath: Seq[String] = List.empty) extends Product with Serializable

    Permalink

    The structured name + version + path of a resource.

    The structured name + version + path of a resource.

    topLevelName

    The first top level name.

    version

    The version of the top level resource.

    resourcePath

    The names of path selectors.

  21. case class ResponsePagination(next: Option[String], total: Option[Long] = None, facets: Option[Map[String, FacetField]] = None) extends Product with Serializable

    Permalink

    If there are subsequent pages, include a next 'pointer'.

    If there are subsequent pages, include a next 'pointer'. This is opaque to clients.

    TODO: consider base64 encoding over the wire for safety.

    facets

    If present, a map of field name to facet information.

  22. class RestContext[+AuthType, +BodyType] extends AnyRef

    Permalink

    All the contextual information about a naptime request.

  23. final case class RestError(error: NaptimeActionException) extends RestResponse[Nothing] with Product with Serializable

    Permalink
  24. sealed abstract class RestResponse[+T] extends AnyRef

    Permalink
  25. trait ReverseRelation extends AnyRef

    Permalink
  26. case class SingleElementFinderReverseRelation(resourceName: ResourceName, finderName: String, arguments: Map[String, String] = Map.empty, description: String = "") extends ReverseRelation with Product with Serializable

    Permalink

Value Members

  1. object ETag

    Permalink
  2. object Errors extends Errors

    Permalink
  3. object FacetField extends Serializable

    Permalink
  4. object FacetFieldValue extends Serializable

    Permalink
  5. object Fields extends Serializable

    Permalink
  6. object FieldsFunction

    Permalink
  7. object NaptimeActionException extends Serializable

    Permalink
  8. object NaptimeModule extends AbstractModule with ScalaModule

    Permalink

    Install this singleton module into your service to configure Naptime defaults to ensure a successful boot.

    Install this singleton module into your service to configure Naptime defaults to ensure a successful boot.

    install(NaptimeModule)

    Note: as of writing this comment, there is no need to install this module in your service for correct operation.

  9. object Ok extends Serializable

    Permalink
  10. object RequestFields

    Permalink
  11. object RequestPagination extends Serializable

    Permalink
  12. object ResourceName extends Serializable

    Permalink
  13. object ResponsePagination extends Serializable

    Permalink
  14. object SchemaUtils

    Permalink

    Helpers for working with Courier/Pegasus Schemas.

  15. object Types extends StrictLogging

    Permalink
  16. package access

    Permalink
  17. package actions

    Permalink
  18. package ari

    Permalink

    This ari defines the key abstractions for automatic resource inclusion as well as GraphQL.

    This ari defines the key abstractions for automatic resource inclusion as well as GraphQL.

    The system is split up into 3 distinct layers:

    +---------------------------------------------------------------------+
    |                       Presentation Layer                            |
    |           GraphQL            |            Naptime HTTP              |
    +------------------------------+--------------------------------------+
    |                                                                     |
    |                      Inclusion Engine                               |
    |                                                                     |
    +---------------------------------------------------------------------+
    |                        Data fetching                                |
    |         Local execution      |           remote execution           |
    +=====================================================================+
    |                                                                     |
    |                   Unmodified Naptime APIs                           |
    |                                                                     |
    +---------------------------------------------------------------------+

    A request enters the system via the presentation layer (typically parsed from the network). The presentation layer constructs a org.coursera.naptime.ari.Request and passes that to engine. The engine performs a number of validations against the schema, and then makes a number of requests to to the Data Fetching layer to assemble all of the (available) data required to construct a response. This is passed back to the presentation layer, which constructs a response to be sent out on the wire.

    The API between the presentation layer and the inclusion engine is the org.coursera.naptime.ari.EngineApi

    The API between the inclusion engine and the data fetching layer is defined by org.coursera.naptime.ari.FetcherApi.

    BEWARE: This code is currently in a high state of flux. Do not depend upon it unless you are prepared for breakages!

  19. package exceptions

    Permalink
  20. package path

    Permalink
  21. package resources

    Permalink
  22. package router2

    Permalink
  23. package schema

    Permalink

Ungrouped