LitleOnline 8.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/DESCRIPTION +5 -0
  2. data/LICENSE +22 -0
  3. data/README.md +69 -0
  4. data/Rakefile +92 -0
  5. data/SETUP.md +47 -0
  6. data/bin/Setup.rb +103 -0
  7. data/bin/sample_driver.rb +49 -0
  8. data/index.html +176 -0
  9. data/index.html.1 +176 -0
  10. data/lib/Checker.rb +56 -0
  11. data/lib/Communications.rb +85 -0
  12. data/lib/Configuration.rb +45 -0
  13. data/lib/LitleOnline.rb +52 -0
  14. data/lib/LitleOnlineRequest.rb +399 -0
  15. data/lib/LitleXmlMapper.rb +48 -0
  16. data/lib/Obj2xml.rb +37 -0
  17. data/lib/XMLFields.rb +378 -0
  18. data/test/certification/certTest1_base.rb +948 -0
  19. data/test/certification/certTest2_authenhanced.rb +571 -0
  20. data/test/certification/certTest3_authreversal.rb +184 -0
  21. data/test/certification/certTest4_echeck.rb +279 -0
  22. data/test/certification/certTest5_token.rb +222 -0
  23. data/test/certification/ts_all.rb +31 -0
  24. data/test/functional/test_auth.rb +135 -0
  25. data/test/functional/test_authReversal.rb +68 -0
  26. data/test/functional/test_capture.rb +71 -0
  27. data/test/functional/test_captureGivenAuth.rb +161 -0
  28. data/test/functional/test_credit.rb +154 -0
  29. data/test/functional/test_echeckCredit.rb +116 -0
  30. data/test/functional/test_echeckRedeposit.rb +78 -0
  31. data/test/functional/test_echeckSale.rb +157 -0
  32. data/test/functional/test_echeckVerification.rb +92 -0
  33. data/test/functional/test_forceCapture.rb +105 -0
  34. data/test/functional/test_sale.rb +198 -0
  35. data/test/functional/test_token.rb +102 -0
  36. data/test/functional/test_xmlfields.rb +403 -0
  37. data/test/functional/ts_all.rb +39 -0
  38. data/test/unit/test_Checker.rb +58 -0
  39. data/test/unit/test_LitleOnlineRequest.rb +288 -0
  40. data/test/unit/test_auth.rb +168 -0
  41. data/test/unit/test_authReversal.rb +41 -0
  42. data/test/unit/test_capture.rb +40 -0
  43. data/test/unit/test_captureGivenAuth.rb +108 -0
  44. data/test/unit/test_credit.rb +117 -0
  45. data/test/unit/test_echeckCredit.rb +45 -0
  46. data/test/unit/test_echeckRedeposit.rb +76 -0
  47. data/test/unit/test_echeckSale.rb +45 -0
  48. data/test/unit/test_echeckVerification.rb +75 -0
  49. data/test/unit/test_forceCapture.rb +122 -0
  50. data/test/unit/test_sale.rb +249 -0
  51. data/test/unit/test_token.rb +70 -0
  52. data/test/unit/test_xmlfields.rb +173 -0
  53. data/test/unit/ts_unit.rb +41 -0
  54. metadata +166 -0
@@ -0,0 +1,5 @@
1
+ Litle Online Ruby SDK created for version 8.10 of Litle XML online format, see the XSD schema for specific fields that are supported by this format.
2
+
3
+ This gem contains an application interface in the Ruby programming language created by Litle & Co.
4
+
5
+
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2011 Litle & Co.
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,69 @@
1
+ Litle Online Ruby SDK
2
+ =====================
3
+
4
+ About Litle
5
+ ------------
6
+ [Litle & Co.](http://www.litle.com) powers the payment processing engines for leading companies that sell directly to consumers through internet retail, direct response marketing (TV, radio and telephone), and online services. Litle & Co. is the leading, independent authority in card-not-present (CNP) commerce, transaction processing and merchant services.
7
+
8
+
9
+ About this SDK
10
+ --------------
11
+ The Litle Ruby SDK is a Ruby implementation of the [Litle & Co.](http://www.litle.com). XML API. This SDK was created to make it as easy as possible to connect process your payments with Litle. This SDK utilizes the HTTPS protocol to securely connect to Litle. Using the SDK requires coordination with the Litle team in order to be provided with credentials for accessing our systems.
12
+
13
+ Our Ruby SDK supports all of the functionality present in Litle XML v8. Please see the online copy of our XSD for Litle XML to get more details on what is supported by the Litle payments engine.
14
+
15
+ This SDK is implemented to support the Ruby programming language and was created by Litle & Co. It is intended use is for online transactions processing utilizing your account on the Litle payments engine.
16
+
17
+ See LICENSE file for details on using this software.
18
+
19
+ Source Code available from : https://github.com/LitleCo/litle-sdk-for-ruby
20
+
21
+ Please contact [Litle & Co.](http://www.litle.com) to receive valid merchant credentials in order to run tests successfully or if you require assistance in any way. We are reachable at MerchantSDKSupport@litle.com
22
+
23
+ Setup
24
+ -----
25
+
26
+ 1) Install the LitleOnline Ruby gem from rubygems.org, this will install the latest SDK gem in your Ruby environment.
27
+ Our gem is available publicly from rubygems.org. Use the command below to install.
28
+
29
+ >sudo gem install LitleOnline
30
+
31
+ Note: If you get errors, you might have to configure your proxy.
32
+
33
+ 2) Once the gem is installed run our setup program to generate a configuration file. The configuration file resides in your home directory
34
+ $HOME/.litle_SDK_config.yml
35
+
36
+ For more details on setup see our instructions [here](https://github.com/LitleCo/litle-sdk-for-ruby/blob/master/SETUP.md)
37
+
38
+ 3.) Create a ruby file similar to:
39
+
40
+ ```ruby
41
+ require 'LitleOnline'
42
+
43
+ # Visa $10 Sale
44
+ litleSaleTxn = {
45
+ 'reportGroup'=>'rpt_grp',
46
+ 'orderId'=>'1234567',
47
+ 'card'=>{
48
+ 'type'=>'VI',
49
+ 'number' =>'4100000000000001',
50
+ 'expDate' =>'1212'},
51
+ 'orderSource'=>'ecommerce',
52
+ 'amount'=>'1000'
53
+ }
54
+
55
+ # Peform the transaction on the Litle Platform
56
+ response = LitleOnlineRequest.sale(litleSaleTxn)
57
+
58
+ # display result
59
+ puts "Message: "+ response.message
60
+ puts "Litle Transaction ID: "+ response.saleResponse.litleTxnId
61
+ ```
62
+
63
+ 3) Next run this file using ruby. You should see the following result provided you have connectivity to the Litle certification environment. You will see an HTTP error if you don't have access to the Litle URL
64
+
65
+ Message: Valid Format
66
+ Litle Transaction ID: <your-numeric-litle-txn-id>
67
+
68
+
69
+ Please contact Lilte & Co. with any further questions. You can reach us at RubySupport@litle.com.
@@ -0,0 +1,92 @@
1
+ =begin
2
+ Copyright (c) 2011 Litle & Co.
3
+
4
+ Permission is hereby granted, free of charge, to any person
5
+ obtaining a copy of this software and associated documentation
6
+ files (the "Software"), to deal in the Software without
7
+ restriction, including without limitation the rights to use,
8
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the
10
+ Software is furnished to do so, subject to the following
11
+ conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
+ OTHER DEALINGS IN THE SOFTWARE.
24
+ =end
25
+ require 'rubygems'
26
+ require 'rubygems/package_task'
27
+ require 'rake/testtask'
28
+ require 'rake/clean'
29
+
30
+ spec = Gem::Specification.new do |s|
31
+ FileUtils.rm_rf('pkg')
32
+ s.name = "LitleOnline"
33
+ s.summary = "Ruby SDK produced by Litle & Co. for online transaction processing using Litle XML format v8.10"
34
+ s.description = File.read(File.join(File.dirname(__FILE__), 'DESCRIPTION'))
35
+ s.requirements =
36
+ [ 'Contact sdksupport@litle.com for more information' ]
37
+ s.version = "8.10.0"
38
+ s.author = "Litle & Co"
39
+ s.email = "sdksupport@litle.com"
40
+ s.homepage = "http://www.litle.com/developers"
41
+ s.platform = Gem::Platform::RUBY
42
+ s.required_ruby_version = '>=1.9'
43
+ s.files = Dir['**/**']
44
+ s.executables = [ 'sample_driver.rb', 'Setup.rb' ]
45
+ s.test_files = Dir["test/unit/ts_unit.rb"]
46
+ s.has_rdoc = true
47
+ s.add_dependency('i18n')
48
+ s.add_dependency('xml-simple')
49
+ s.add_dependency('activesupport')
50
+ s.add_dependency('xml-object')
51
+ s.add_development_dependency('mocha')
52
+ end
53
+
54
+ Gem::PackageTask.new(spec) do |pkg|
55
+ pkg.gem_spec = spec
56
+ pkg.need_zip = true
57
+ pkg.need_tar = true
58
+ end
59
+
60
+ namespace :test do
61
+
62
+ Rake::TestTask.new do |t|
63
+ t.libs << '.'
64
+ t.name = 'unit'
65
+ t.test_files = FileList['test/unit/ts_unit.rb']
66
+ t.verbose = true
67
+ end
68
+
69
+ Rake::TestTask.new do |t|
70
+ t.libs << '.'
71
+ t.name = 'functional'
72
+ t.test_files = FileList['test/functional/ts_all.rb']
73
+ t.verbose = true
74
+ end
75
+
76
+ Rake::TestTask.new do |t|
77
+ t.libs << '.'
78
+ t.name = 'certification'
79
+ t.test_files = FileList['test/certification/certTest*.rb']
80
+ t.verbose = true
81
+ end
82
+
83
+ Rake::TestTask.new do |t|
84
+ t.libs << '.'
85
+ t.name = 'all'
86
+ t.test_files = FileList['test/**/*.rb']
87
+ t.verbose = true
88
+ end
89
+
90
+ end
91
+
92
+ task :default =>'gem'
@@ -0,0 +1,47 @@
1
+ Setting up and Configuring the Litle SDK
2
+ =========================================
3
+
4
+ Running the built in configuration file generator
5
+ -------------------------------------------------
6
+ The Ruby SDK ships with a built in program which can be used to generate your specific configuration.
7
+
8
+ This program runs as follows:
9
+
10
+ ```
11
+ >Setup.rb
12
+ Welcome to Litle Ruby_SDK
13
+ please input your user name:
14
+ test_user
15
+ please input your password:
16
+ test_password
17
+ Please choose Litle url from the following list (example: 'cert') or directly input another URL:
18
+ cert => https://cert.litle.com/vap/communicator/online
19
+ precert => https://precert.litle.com/vap/communicator/online
20
+ production1 => https://payments.litle.com/vap/communicator/online
21
+ production2 => https://payments2.litle.com/vap/communicator/online
22
+ cert
23
+ Please input the proxy address, if no proxy hit enter key:
24
+
25
+ Please input the proxy port, if no proxy hit enter key:
26
+
27
+ The Litle configuration file has been generated, the file is located at: /<your-home-directory>/.litle_SDK_config.yml
28
+ ```
29
+
30
+ Modifying your configuration
31
+ ----------------------------
32
+ You may change the configuration values at anytime by running Setup.rb again, or simpy opening the configuration file directly in the editor of your choice and changing the appropriate fields.
33
+
34
+ Changing the location of the Litle configuration file:
35
+ ------------------------------------------------------
36
+ NOTICE you can set the environment variable $LITLE_CONFIG_DIR to locate your configuration file in a location other than the $HOME Directory, the the file will reside in $LITLE_CONFIG_DIR/.litle_SDK_config.yml
37
+
38
+ Sample configuration file contents
39
+ ----------------------------------
40
+ ```
41
+ user: test_user
42
+ password: test_password
43
+ version: 8.10
44
+ url: https://precert.litle.com/vap/communicator/online
45
+ proxy_addr: yourproxyserver
46
+ proxy_port: 8080
47
+ ```
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ =begin
4
+ Copyright (c) 2011 Litle & Co.
5
+
6
+ Permission is hereby granted, free of charge, to any person
7
+ obtaining a copy of this software and associated documentation
8
+ files (the "Software"), to deal in the Software without
9
+ restriction, including without limitation the rights to use,
10
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the
12
+ Software is furnished to do so, subject to the following
13
+ conditions:
14
+
15
+ The above copyright notice and this permission notice shall be
16
+ included in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25
+ OTHER DEALINGS IN THE SOFTWARE.
26
+ =end
27
+
28
+ # make setup file executable
29
+
30
+ #
31
+ # Configuration generation for URL and credentials
32
+ #
33
+ class Setup
34
+ attr_reader :handle, :path
35
+ def initialize(filename)
36
+ @handle = File.new(filename, File::CREAT|File::TRUNC|File::RDWR, 0600)
37
+ File.open(filename, "w") do |f|
38
+ puts "Welcome to Litle Ruby_SDK"
39
+ puts "Please input your user name:"
40
+ f.puts "user: "+ gets
41
+ puts "Please input your password:"
42
+ f.puts "password: " + gets
43
+ puts "Please input your merchantId:"
44
+ f.puts "currency_merchant_map:"
45
+ f.puts " DEFAULT: " + gets
46
+ f.puts "default_report_group: 'Default Report Group'"
47
+ f.puts "version: '8.10'"
48
+ puts "Please choose Litle url from the following list (example: 'cert') or directly input another URL: \nsandbox => https://www.testlitle.com/sandbox/communicator/online \ncert => https://cert.litle.com/vap/communicator/online \nprecert => https://precert.litle.com/vap/communicator/online \nproduction1 => https://payments.litle.com/vap/communicator/online \nproduction2 => https://payments2.litle.com/vap/communicator/online"
49
+ f.puts "url: " + Setup.choice(gets)
50
+ puts "Please input the proxy address, if no proxy hit enter key: "
51
+ f.puts "proxy_addr: " + gets
52
+ puts "Please input the proxy port, if no proxy hit enter key: "
53
+ f.puts "proxy_port: " + gets
54
+ f.puts "printxml: false"
55
+ f.puts "timeout: 65"
56
+ end
57
+ end
58
+
59
+ def finished
60
+ @handle.close
61
+ end
62
+
63
+ def Setup.choice(litle_env)
64
+ litle_online_ctx = 'vap/communicator/online'
65
+ if litle_env == "sandbox\n"
66
+ return 'https://www.testlitle.com/sandbox/communicator/online'
67
+ elsif litle_env == "cert\n"
68
+ return 'https://cert.litle.com/' + litle_online_ctx
69
+ elsif litle_env == "precert\n"
70
+ return 'https://precert.litle.com/' + litle_online_ctx
71
+ elsif litle_env == "production1\n"
72
+ return 'https://payments.litle.com/' + litle_online_ctx
73
+ elsif litle_env == "production2\n"
74
+ return 'https://payments2.litle.com/' + litle_online_ctx
75
+ else
76
+ return 'https://www.testlitle.com/sandbox/communicator/online'
77
+ end
78
+ end
79
+ end
80
+
81
+ #
82
+ #
83
+ # Optionally enable the configuration to reside in a custom location
84
+ # if the $LITLE_CONFIG_DIR directory is set
85
+ #
86
+
87
+ # make the config.yml file in the LITLE_CONFIG_DIR directory or HOME directory
88
+ if !(ENV['LITLE_CONFIG_DIR'].nil?)
89
+ path = ENV['LITLE_CONFIG_DIR']
90
+ else
91
+ path = ENV['HOME']
92
+ end
93
+
94
+ # make the config.yml file hidden
95
+ # create a config file contain all the configuration data
96
+ config_file = path + "/.litle_SDK_config.yml"
97
+ f = Setup.new(config_file)
98
+
99
+ # return the path of the config file and the path file
100
+ @path = File.expand_path(config_file)
101
+ puts "The Litle configuration file has been generated, the file is located at: " + @path
102
+ f.finished
103
+
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ =begin
4
+ Copyright (c) 2011 Litle & Co.
5
+
6
+ Permission is hereby granted, free of charge, to any person
7
+ obtaining a copy of this software and associated documentation
8
+ files (the "Software"), to deal in the Software without
9
+ restriction, including without limitation the rights to use,
10
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the
12
+ Software is furnished to do so, subject to the following
13
+ conditions:
14
+
15
+ The above copyright notice and this permission notice shall be
16
+ included in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25
+ OTHER DEALINGS IN THE SOFTWARE.
26
+ =end
27
+
28
+ #Sample Driver
29
+ require 'LitleOnline'
30
+
31
+ hash = {
32
+ 'reportGroup'=>'product1',
33
+ 'orderId'=>'12344',
34
+ 'card'=>{
35
+ 'type'=>'VI',
36
+ 'number' =>'4100000000000001',
37
+ 'expDate' =>'1210'
38
+ },
39
+ 'orderSource'=>'ecommerce',
40
+ 'amount'=>'106'
41
+ }
42
+
43
+ #perform credit transaction
44
+ response= LitleOnlineRequest.new.credit(hash)
45
+
46
+ #display results
47
+
48
+ puts "Message: "+response.message
49
+ puts "Litle Transaction ID: "+response.creditResponse.litleTxnId
@@ -0,0 +1,176 @@
1
+ <!doctype html>
2
+ <!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
3
+ <!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
4
+ <!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
5
+ <!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
6
+ <!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"><!--<![endif]-->
7
+ <head>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
10
+ <title>Welcome to Grails</title>
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
12
+ <link rel="shortcut icon" href="/sandbox/static/images/favicon.ico" type="image/x-icon">
13
+ <link rel="apple-touch-icon" href="/sandbox/static/images/apple-touch-icon.png">
14
+ <link rel="apple-touch-icon" sizes="114x114" href="/sandbox/static/images/apple-touch-icon-retina.png">
15
+ <link rel="stylesheet" href="/sandbox/static/css/main.css" type="text/css">
16
+ <link rel="stylesheet" href="/sandbox/static/css/mobile.css" type="text/css">
17
+
18
+ <meta name="layout" content="main"/>
19
+
20
+ <style type="text/css" media="screen">
21
+ #status {
22
+ background-color: #eee;
23
+ border: .2em solid #fff;
24
+ margin: 2em 2em 1em;
25
+ padding: 1em;
26
+ width: 12em;
27
+ float: left;
28
+ -moz-box-shadow: 0px 0px 1.25em #ccc;
29
+ -webkit-box-shadow: 0px 0px 1.25em #ccc;
30
+ box-shadow: 0px 0px 1.25em #ccc;
31
+ -moz-border-radius: 0.6em;
32
+ -webkit-border-radius: 0.6em;
33
+ border-radius: 0.6em;
34
+ }
35
+
36
+ .ie6 #status {
37
+ display: inline; /* float double margin fix http://www.positioniseverything.net/explorer/doubled-margin.html */
38
+ }
39
+
40
+ #status ul {
41
+ font-size: 0.9em;
42
+ list-style-type: none;
43
+ margin-bottom: 0.6em;
44
+ padding: 0;
45
+ }
46
+
47
+ #status h1 {
48
+ text-transform: uppercase;
49
+ font-size: 1.1em;
50
+ margin: 0 0 0.3em;
51
+ }
52
+
53
+ #page-body {
54
+ margin: 2em 1em 1.25em 18em;
55
+ }
56
+
57
+ h2 {
58
+ margin-top: 1em;
59
+ margin-bottom: 0.3em;
60
+ font-size: 1em;
61
+ }
62
+
63
+ p {
64
+ margin: 0.25em 0;
65
+ }
66
+
67
+ #controller-list ul {
68
+ list-style-position: inside;
69
+ }
70
+
71
+ #controller-list li {
72
+ list-style-position: inside;
73
+ margin: 0.25em 0;
74
+ }
75
+
76
+ @media screen and (max-width: 480px) {
77
+ #status {
78
+ display: none;
79
+ }
80
+
81
+ #page-body {
82
+ margin: 0 1em 1em;
83
+ }
84
+
85
+ #page-body h1 {
86
+ margin-top: 0;
87
+ }
88
+ }
89
+ </style>
90
+
91
+
92
+ </head>
93
+ <body>
94
+ <div id="grailsLogo" role="banner"><a href="http://grails.org"><img src="/sandbox/static/images/grails_logo.png" alt="Grails"/></a></div>
95
+
96
+ <a href="#page-body" class="skip">Skip to content&hellip;</a>
97
+ <div id="status" role="complementary">
98
+ <h1>Application Status</h1>
99
+ <ul>
100
+ <li>App version: 0.1</li>
101
+ <li>Grails version: 2.0.0</li>
102
+ <li>Groovy version: 1.8.4</li>
103
+ <li>JVM version: 1.6.0_10</li>
104
+ <li>Reloading active: false</li>
105
+ <li>Controllers: 1</li>
106
+ <li>Domains: 8</li>
107
+ <li>Services: 2</li>
108
+ <li>Tag Libraries: 12</li>
109
+ </ul>
110
+ <h1>Installed Plugins</h1>
111
+ <ul>
112
+
113
+ <li>logging - 2.0.0</li>
114
+
115
+ <li>core - 2.0.0</li>
116
+
117
+ <li>i18n - 2.0.0</li>
118
+
119
+ <li>urlMappings - 2.0.0</li>
120
+
121
+ <li>groovyPages - 2.0.0</li>
122
+
123
+ <li>codecs - 2.0.0</li>
124
+
125
+ <li>servlets - 2.0.0</li>
126
+
127
+ <li>dataSource - 2.0.0</li>
128
+
129
+ <li>jquery - 1.7.1</li>
130
+
131
+ <li>resources - 1.1.5</li>
132
+
133
+ <li>controllers - 2.0.0</li>
134
+
135
+ <li>domainClass - 2.0.0</li>
136
+
137
+ <li>mimeTypes - 2.0.0</li>
138
+
139
+ <li>scaffolding - 2.0.0</li>
140
+
141
+ <li>hibernate - 2.0.0</li>
142
+
143
+ <li>filters - 2.0.0</li>
144
+
145
+ <li>validation - 2.0.0</li>
146
+
147
+ <li>converters - 2.0.0</li>
148
+
149
+ <li>services - 2.0.0</li>
150
+
151
+ </ul>
152
+ </div>
153
+ <div id="page-body" role="main">
154
+ <h1>Welcome to Grails</h1>
155
+ <p>Congratulations, you have successfully started your first Grails application! At the moment
156
+ this is the default page, feel free to modify it to either redirect to a controller or display whatever
157
+ content you may choose. Below is a list of controllers that are currently deployed in this application,
158
+ click on each to execute its default action:</p>
159
+
160
+ <div id="controller-list" role="navigation">
161
+ <h2>Available Controllers:</h2>
162
+ <ul>
163
+
164
+ <li class="controller"><a href="/sandbox/communicator/index">com.litle.sandbox.CommunicatorController</a></li>
165
+
166
+ </ul>
167
+ </div>
168
+ </div>
169
+
170
+ <div class="footer" role="contentinfo"></div>
171
+ <div id="spinner" class="spinner" style="display:none;">Loading&hellip;</div>
172
+
173
+ <script src="/sandbox/static/js/application.js" type="text/javascript" ></script>
174
+
175
+ </body>
176
+ </html>