Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package org.litesoft.ddt;

import org.litesoft.html.*;
import org.litesoft.template.*;
import org.litesoft.useragent.*;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class IndexHtmlGenerator {
    private static final UserAgentFormFactorDeterminer UAFFD = new UserAgentFormFactorDeterminerImpl();

    private final Template mTemplate;

    public IndexHtmlGenerator( Template pTemplate ) {
        mTemplate = pTemplate;
    }

    public void respond( String pPath, HttpServletRequest pRequest, HttpServletResponse pResponse )
            throws ServletException, IOException {
        CacheHeaders.never( pResponse );

        String zDeviceToken = getCookie( pRequest, "DeviceToken" );
        if ( zDeviceToken != null ) {
            reply( pResponse, "LimitedMode" );
            return;
        }
        String zUserAuthToken = getCookie( pRequest, "UserAuthToken" );
        if ( zUserAuthToken != null ) {
            reply( pResponse, "FullMode" );
            return;
        }
        String zUserAgent = pRequest.getHeader( "user-agent" );
        System.out.println( "User Agent: " + zUserAgent );
        reply( pResponse, "Login" + UAFFD.determine( zUserAgent ) );
    }

    private void reply( HttpServletResponse pResponse, final String pWhat )
            throws IOException {
        pResponse.setContentType( "text/html" );
        mTemplate.dump( new Sink.Simple( pResponse.getWriter() ), new ValueProvider() {
            @Override
            public Object valueFor( String pKey ) {
                return pWhat;
            }
        } );
    }

    //    private static int hasCookie( HttpServletRequest pRequest, String... pCookieNames )
    //    {
    //        if ( pCookieNames != null )
    //        {
    //            for ( int i = 0; i < pCookieNames.length; i++ )
    //            {
    //                if ( null != checkAndClearCookie( pRequest, pCookieNames[i], true ) )
    //                {
    //                    return i;
    //                }
    //            }
    //        }
    //        return -1;
    //    }

    private static String getCookie( HttpServletRequest pRequest, String pName ) {
        return checkAndClearCookie( pRequest, pName, false );
    }

    private static String checkAndClearCookie( HttpServletRequest pRequest, String pName, boolean pClear ) {
        Cookie[] zCookies = pRequest.getCookies();
        if ( zCookies != null ) {
            for ( Cookie zCookie : zCookies ) {
                if ( zCookie.getName().equals( pName ) ) {
                    String zValue = zCookie.getValue();
                    if ( pClear ) {
                        zCookie.setMaxAge( 0 ); // Delete it...
                    }
                    return zValue;
                }
            }
        }
        return null;
    }
}

Commits for litesoft/trunk/DeviceDesktopTest/src/org/litesoft/ddt/IndexHtmlGenerator.java

Diff revisions: vs.
Revision Author Commited Message
961 Diff Diff GeorgeS picture GeorgeS Fri 01 Aug, 2014 03:13:31 +0000

Externalization Work.

927 Diff Diff GeorgeS picture GeorgeS Mon 17 Mar, 2014 03:58:40 +0000

Template system and index.html as a resource...

926 Diff Diff GeorgeS picture GeorgeS Fri 14 Mar, 2014 23:58:15 +0000

Switched from Cookie to Param.

924 Diff Diff GeorgeS picture GeorgeS Fri 14 Mar, 2014 22:02:56 +0000

Drop IWS

923 Diff Diff GeorgeS picture GeorgeS Fri 21 Feb, 2014 00:03:57 +0000

Multi-Port Jetty

922 Diff Diff GeorgeS picture GeorgeS Tue 18 Feb, 2014 16:18:01 +0000

Mini App ready for packaging...

920 GeorgeS picture GeorgeS Sun 16 Feb, 2014 19:06:51 +0000

DDT w/ Jetty