/** * If client can accept text/html, always prefer it. WebKit-based browsers * claim to want application/xml, but we don't want to give it to them. See * <a href="https://webarchive.jira.com/browse/HER-1603">https://webarchive.jira.com/browse/HER-1603</a> */ public Variant getPreferredVariant() { boolean addExplicitTextHtmlPreference = false; for (Preference<MediaType> mediaTypePreference: getRequest().getClientInfo().getAcceptedMediaTypes()) { if (mediaTypePreference.getMetadata().equals(MediaType.TEXT_HTML)) { mediaTypePreference.setQuality(Float.MAX_VALUE); addExplicitTextHtmlPreference = false; break; } else if (mediaTypePreference.getMetadata().includes(MediaType.TEXT_HTML)) { addExplicitTextHtmlPreference = true; } } if (addExplicitTextHtmlPreference) { List<Preference<MediaType>> acceptedMediaTypes = getRequest().getClientInfo().getAcceptedMediaTypes(); acceptedMediaTypes.add(new Preference<MediaType>(MediaType.TEXT_HTML, Float.MAX_VALUE)); getRequest().getClientInfo().setAcceptedMediaTypes(acceptedMediaTypes); } return super.getPreferredVariant(); }
/** * Returns the client-specific information. * * @return The client-specific information. */ @Override public ClientInfo getClientInfo() { return getWrappedRequest().getClientInfo(); }
/** * A beforeHandle will simply embed in request attributes a Nexus interface implemntor, depending on key used to * name it. */ protected int beforeHandle( Request request, Response response ) { String agentInfo = request.getClientInfo().getAgent() != null ? request .getClientInfo().getAgent().toLowerCase() : "unknown"; // This solution was the only that came on my mind :) // should work only if client specified more then one "alternatives" if ( StringUtils.indexOfAny( agentInfo, new String[] { "mozilla", "firefox", "msie", "opera", "safari" } ) > -1 && request.getClientInfo().getAcceptedMediaTypes().size() > 1 ) { // overriding client preferences, since it is a browser to TEXT/HTML // doing this by adding text/html as firxt to accepted media types with quality 1 request .getClientInfo().getAcceptedMediaTypes().add( 0, new Preference<MediaType>( MediaType.TEXT_HTML, 1 ) ); } return CONTINUE; }
List<String> clientAddresses = request.getClientInfo().getAddresses(); return request.getClientInfo().getAddress();
public static String findIP( Request request ) { Form form = (Form) request.getAttributes().get( "org.restlet.http.headers" ); String forwardedIP = getFirstForwardedIp( form.getFirstValue( FORWARD_HEADER ) ); if ( forwardedIP != null ) { return forwardedIP; } List<String> ipAddresses = request.getClientInfo().getAddresses(); return resolveIp( ipAddresses ); }
+ ( ( request != null ) ? request.getClientInfo().getAddress() : "?" ) );
@Override public ClientInfo getCurrentThreadClientInfo() { final Subject subject = SecurityUtils.getSubject(); if (subject != null && subject.getPrincipal() != null) { final String userId = subject.getPrincipal().toString(); final Request current = Request.getCurrent(); if (current != null) { final String currentIp = RemoteIPFinder.findIP(current); final String currentUa = current.getClientInfo().getAgent(); return new ClientInfo(userId, currentIp, currentUa); } else { // this is not HTTP processing thread at all return null; } } // we have no Shiro subject or "anonymous" user (from Shiro perspective, null principals return null; } }
private Request makeRequest(Reference uri, MediaType accepts) { Request request = new Request(); logger.debug("Making new request for " + uri + " -- " + uri.getTargetRef()); request.setResourceRef(uri.getTargetRef()); if (accepts != null) { request.getClientInfo().getAcceptedMediaTypes().add( new Preference<MediaType>(accepts)); } if (baseURI.isParent(uri) && username != null) { logger.debug("Authenticating as " + username); ChallengeResponse challengeResponse = new ChallengeResponse(ChallengeScheme.HTTP_BASIC, username, password); request.setChallengeResponse(challengeResponse); } else { logger.warn("Not supplying credentials for out-of-site URI " + uri); } return request; }
void checkPosMediaType(Representation entity) throws GeoWebCacheException { String remoteAdr = getRequest().getClientInfo().getAddress(); if (entity == null || ((!entity.getMediaType().includes(MediaType.APPLICATION_XML)) && (!entity.getMediaType().includes(MediaType.APPLICATION_JSON)))) { String message = "Request from "+ remoteAdr + " did not specify MIME type" + " of the document posted. Please specify application/xml " + " or application/json"; throw new GeoWebCacheException(message); } else { log.info("Received seed request from " + remoteAdr); } }
@Override public ClientInfo getCurrentThreadClientInfo() { final Subject subject = SecurityUtils.getSubject(); if ( subject != null && subject.getPrincipal() != null ) { final String userId = subject.getPrincipal().toString(); final Request current = Request.getCurrent(); if ( current != null ) { final String currentIp = RemoteIPFinder.findIP( current ); final String currentUa = current.getClientInfo().getAgent(); return new ClientInfo( userId, currentIp, currentUa ); } else { // this is not HTTP processing thread at all return null; } } // we have no Shiro subject or "anonymous" user (from Shiro perspective, null principals return null; } }
/** * If client can accept text/html, always prefer it. WebKit-based browsers * claim to want application/xml, but we don't want to give it to them. See * <a href="https://webarchive.jira.com/browse/HER-1603">https://webarchive.jira.com/browse/HER-1603</a> */ public Variant getPreferredVariant() { boolean addExplicitTextHtmlPreference = false; for (Preference<MediaType> mediaTypePreference: getRequest().getClientInfo().getAcceptedMediaTypes()) { if (mediaTypePreference.getMetadata().equals(MediaType.TEXT_HTML)) { mediaTypePreference.setQuality(Float.MAX_VALUE); addExplicitTextHtmlPreference = false; break; } else if (mediaTypePreference.getMetadata().includes(MediaType.TEXT_HTML)) { addExplicitTextHtmlPreference = true; } } if (addExplicitTextHtmlPreference) { List<Preference<MediaType>> acceptedMediaTypes = getRequest().getClientInfo().getAcceptedMediaTypes(); acceptedMediaTypes.add(new Preference<MediaType>(MediaType.TEXT_HTML, Float.MAX_VALUE)); getRequest().getClientInfo().setAcceptedMediaTypes(acceptedMediaTypes); } return super.getPreferredVariant(); }
/** * Returns the preferred variant according to the client preferences * specified in the request. * * @return The preferred variant. */ public Variant getPreferredVariant() { Variant result = null; final List<Variant> variants = getVariants(); if ((variants != null) && (!variants.isEmpty())) { Language language = null; // Compute the preferred variant. Get the default language // preference from the Application (if any). final Application app = Application.getCurrent(); if (app != null) { language = app.getMetadataService().getDefaultLanguage(); } result = getRequest().getClientInfo().getPreferredVariant(variants, language); } return result; }
request.getClientInfo().getAcceptedMediaTypes().add( new Preference<MediaType>(representation.getMediaType()));
request.getClientInfo().getAcceptedMediaTypes().add( new Preference<MediaType>( representation.getMediaType() ) );
if ( df == null ) { accepts = getRequest().getClientInfo().getAcceptedMediaTypes(); acceptsAll = accepts.isEmpty(); for ( Iterator<Preference<MediaType>> i = accepts.iterator(); i.hasNext(); ) {
result.getRequestContext().put(AccessManager.REQUEST_USER, subject.getPrincipal().toString()); result.getRequestContext().put(AccessManager.REQUEST_AGENT, request.getClientInfo().getAgent());
request.getClientInfo().getAcceptedMediaTypes(). add(new Preference<MediaType>(representation.getMediaType()));
result.getRequestContext().put(AccessManager.REQUEST_USER, subject.getPrincipal().toString()); result.getRequestContext().put(AccessManager.REQUEST_AGENT, request.getClientInfo().getAgent());
result.getRequestContext().put( AccessManager.REQUEST_AGENT, request.getClientInfo().getAgent() );
result.getRequestContext().put( AccessManager.REQUEST_AGENT, request.getClientInfo().getAgent() );