helios_aim 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +173 -0
  4. data/LICENSE +19 -0
  5. data/README.md +363 -0
  6. data/Rakefile +10 -0
  7. data/bin/helios +20 -0
  8. data/helios_aim.gemspec +47 -0
  9. data/lib/helios.rb +27 -0
  10. data/lib/helios/backend.rb +64 -0
  11. data/lib/helios/backend/data.rb +40 -0
  12. data/lib/helios/backend/in-app-purchase.rb +43 -0
  13. data/lib/helios/backend/newsstand.rb +97 -0
  14. data/lib/helios/backend/passbook.rb +41 -0
  15. data/lib/helios/backend/push-notification.rb +110 -0
  16. data/lib/helios/commands.rb +4 -0
  17. data/lib/helios/commands/console.rb +21 -0
  18. data/lib/helios/commands/link.rb +19 -0
  19. data/lib/helios/commands/new.rb +76 -0
  20. data/lib/helios/commands/server.rb +52 -0
  21. data/lib/helios/frontend.rb +66 -0
  22. data/lib/helios/frontend/fonts/icons.eot +0 -0
  23. data/lib/helios/frontend/fonts/icons.ttf +0 -0
  24. data/lib/helios/frontend/fonts/icons.woff +0 -0
  25. data/lib/helios/frontend/images/bg.jpg +0 -0
  26. data/lib/helios/frontend/images/helios.svg +33 -0
  27. data/lib/helios/frontend/javascripts/helios.coffee +72 -0
  28. data/lib/helios/frontend/javascripts/helios/collections.coffee +99 -0
  29. data/lib/helios/frontend/javascripts/helios/models.coffee +23 -0
  30. data/lib/helios/frontend/javascripts/helios/router.coffee +50 -0
  31. data/lib/helios/frontend/javascripts/helios/views.coffee +307 -0
  32. data/lib/helios/frontend/javascripts/vendor/backbone.datagrid.js +662 -0
  33. data/lib/helios/frontend/javascripts/vendor/backbone.js +1487 -0
  34. data/lib/helios/frontend/javascripts/vendor/backbone.paginator.js +1046 -0
  35. data/lib/helios/frontend/javascripts/vendor/codemirror.javascript.js +411 -0
  36. data/lib/helios/frontend/javascripts/vendor/codemirror.js +3047 -0
  37. data/lib/helios/frontend/javascripts/vendor/date.js +104 -0
  38. data/lib/helios/frontend/javascripts/vendor/foundation.js +331 -0
  39. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.alerts.js +50 -0
  40. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.clearing.js +478 -0
  41. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.cookie.js +74 -0
  42. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.dropdown.js +122 -0
  43. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.forms.js +403 -0
  44. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.joyride.js +613 -0
  45. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.magellan.js +130 -0
  46. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.orbit.js +355 -0
  47. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.placeholder.js +159 -0
  48. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.reveal.js +272 -0
  49. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.section.js +183 -0
  50. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.tooltips.js +195 -0
  51. data/lib/helios/frontend/javascripts/vendor/foundation/foundation.topbar.js +208 -0
  52. data/lib/helios/frontend/javascripts/vendor/jquery.js +9597 -0
  53. data/lib/helios/frontend/javascripts/vendor/jquery/jquery.fileupload-ui.js +807 -0
  54. data/lib/helios/frontend/javascripts/vendor/jquery/jquery.fileupload.js +1201 -0
  55. data/lib/helios/frontend/javascripts/vendor/jquery/jquery.ui.widget.js +530 -0
  56. data/lib/helios/frontend/javascripts/vendor/linkheaders.js +117 -0
  57. data/lib/helios/frontend/javascripts/vendor/underscore.js +1227 -0
  58. data/lib/helios/frontend/stylesheets/_codemirror.sass +219 -0
  59. data/lib/helios/frontend/stylesheets/_fonts.sass +80 -0
  60. data/lib/helios/frontend/stylesheets/_iphone.sass +141 -0
  61. data/lib/helios/frontend/stylesheets/_settings.scss +989 -0
  62. data/lib/helios/frontend/stylesheets/screen.sass +187 -0
  63. data/lib/helios/frontend/templates/data/entities.jst.tpl +11 -0
  64. data/lib/helios/frontend/templates/in-app-purchase/receipts.jst.tpl +11 -0
  65. data/lib/helios/frontend/templates/navigation.jst.tpl +31 -0
  66. data/lib/helios/frontend/templates/newsstand/issues.jst.tpl +16 -0
  67. data/lib/helios/frontend/templates/newsstand/new.jst.tpl +28 -0
  68. data/lib/helios/frontend/templates/passbook/passes.jst.tpl +11 -0
  69. data/lib/helios/frontend/templates/push-notification/compose.jst.tpl +70 -0
  70. data/lib/helios/frontend/templates/push-notification/devices.jst.tpl +17 -0
  71. data/lib/helios/frontend/views/index.haml +22 -0
  72. data/lib/helios/templates/.env.erb +1 -0
  73. data/lib/helios/templates/.gitignore +3 -0
  74. data/lib/helios/templates/Gemfile.erb +10 -0
  75. data/lib/helios/templates/Procfile.erb +1 -0
  76. data/lib/helios/templates/README.md.erb +4 -0
  77. data/lib/helios/templates/config.ru.erb +11 -0
  78. data/lib/helios/version.rb +3 -0
  79. metadata +475 -0
@@ -0,0 +1,4 @@
1
+ require 'helios/commands/new'
2
+ require 'helios/commands/link'
3
+ require 'helios/commands/console'
4
+ require 'helios/commands/server'
@@ -0,0 +1,21 @@
1
+ command :console do |c|
2
+ c.syntax = 'helios console'
3
+ c.summary = 'Open IRB session with Helios environment'
4
+
5
+ c.action do |args, options|
6
+ require 'irb'
7
+ require 'dotenv'
8
+ require 'sequel'
9
+ require 'helios'
10
+
11
+ include Rack
12
+
13
+ Dotenv.load
14
+ Sequel.connect(ENV['DATABASE_URL'])
15
+
16
+ ARGV.clear
17
+ IRB.start
18
+ end
19
+ end
20
+
21
+ alias_command :c, :console
@@ -0,0 +1,19 @@
1
+ require 'fileutils'
2
+
3
+ command :link do |c|
4
+ c.syntax = 'helios link path/to/Model.xcdatamodel'
5
+ c.summary = 'Links a Core Data model'
6
+
7
+ c.action do |args, options|
8
+ say_error "Missing argument: path/to/Model.xcdatamodel" and abort if args.empty?
9
+ path = args.first
10
+
11
+ begin
12
+ File.link(path, File.basename(path))
13
+ say_ok "Xcode data model successfully linked"
14
+ say "Any changes made to the data model file will automatically be propagated to Helios the next time the server is started."
15
+ rescue => exception
16
+ say_error exception.message and abort
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,76 @@
1
+ require 'fileutils'
2
+
3
+ command :new do |c|
4
+ c.syntax = 'helios new path/to/app'
5
+ c.summary = 'Creates a new Helios project'
6
+ c.description = <<-EOF
7
+ The `helios new` command creates a new Helios application with a default
8
+ directory structure and configuration at the path you specify.
9
+ EOF
10
+ # c.example = <<-EOF
11
+ # helios new #{File.join(Dir.pwd, "app")}
12
+
13
+ # This generates a skeletal Helios installation in #{File.join(Dir.pwd, "app")}.
14
+ # See the README in the newly created application to get going.
15
+ # EOF
16
+
17
+ c.option '--skip-gemfile', "Don't create a Gemfile"
18
+ c.option '-B', '--skip-bundle', "Don't run bundle install"
19
+ c.option '-G', '--skip-git', "Don't create a git repository"
20
+
21
+ c.option '--edge', "Setup the application with Gemfile pointing to Helios repository"
22
+
23
+ c.option '-f', '--force', "Overwrite files that already exist"
24
+ c.option '-p', '--pretend', "Run but do not make any changes"
25
+ c.option '-s', '--skip', "Skip files that already exist"
26
+
27
+ c.action do |args, options|
28
+ say_error "Missing argument: path/to/app" and abort if args.empty?
29
+ path = args.first
30
+ app_name = path.split(/\//).last
31
+
32
+ begin
33
+ FileUtils.mkdir_p(path) and Dir.chdir(path)
34
+
35
+ Dir.glob(File.join(File.dirname(__FILE__), "../templates/") + "*.erb", File::FNM_DOTMATCH).each do |template|
36
+ file = File.basename(template, ".erb")
37
+ erb = ERB.new(File.read(template))
38
+
39
+ next if file === "Gemfile" and options.skip_gemfile
40
+
41
+ if File.exist?(file)
42
+ if options.force and not options.skip
43
+ log "overwrite", file
44
+ else
45
+ log "exists", file
46
+ end
47
+ else
48
+ log "create", file
49
+ end
50
+
51
+ next if options.pretend
52
+
53
+ File.open(file, 'w') do |f|
54
+ f.puts erb.result binding
55
+ end
56
+ end
57
+
58
+ unless options.skip_bundle or not File.exist?("Gemfile")
59
+ log "run", "bundle install"
60
+ system 'bundle install'
61
+ end
62
+
63
+ unless options.skip_git
64
+ log "run", "git init"
65
+ system 'git init'
66
+ system 'git add .'
67
+ system 'git commit -m "Initial Commit"'
68
+ end
69
+ rescue => exception
70
+ say_error exception.message and abort
71
+ end
72
+ end
73
+ end
74
+
75
+ alias_command :create, :new
76
+ alias_command :generate, :new
@@ -0,0 +1,52 @@
1
+ require 'dotenv'
2
+ require 'sequel'
3
+
4
+ command :server do |c|
5
+ c.syntax = 'helios server'
6
+ c.summary = 'Start running Helios locally'
7
+ c.option '-w', "--[no-]warn", "Warn about possible database issues"
8
+
9
+ c.action do |args, options|
10
+ validate_database_settings! unless options.warn == false
11
+
12
+ begin
13
+ exec 'foreman start'
14
+ rescue => exception
15
+ say_error exception.message and abort
16
+ end
17
+ end
18
+ end
19
+
20
+ alias_command :s, :server
21
+ alias_command :start, :server
22
+ alias_command :launch, :server
23
+
24
+ private
25
+
26
+ def validate_database_settings!
27
+ Dotenv.load
28
+
29
+ say_error "DATABASE_URL environment variable not set in .env or in Rails config/database.yml" and abort if ENV['DATABASE_URL'].nil?
30
+
31
+ uri = URI(ENV['DATABASE_URL'])
32
+
33
+ say_error "DATABASE_URL environment variable not set to PostgreSQL database" and abort unless ["postgres", "postgresql"].include?(uri.scheme)
34
+
35
+ begin
36
+ db = Sequel.connect(ENV['DATABASE_URL'])
37
+ db.test_connection
38
+ rescue Sequel::DatabaseConnectionError => error
39
+ say_warning %{Error connecting to database: "#{error.message.strip}"}
40
+ case error.message
41
+ when /database "(.+)" does not exist/
42
+ if agree "Would you like to create this database now? (y/n)"
43
+ host, database = uri.host, uri.path.delete("/")
44
+
45
+ log 'createdb', database
46
+ system "createdb -h #{host} #{database}"
47
+ end
48
+ else
49
+ abort unless agree "Continue starting Helios? (y/n)"
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,66 @@
1
+ require 'sinatra/base'
2
+ require 'sinatra/assetpack'
3
+ require 'sinatra/backbone'
4
+ require 'sinatra/support'
5
+ require 'rack/contrib'
6
+
7
+ require 'compass'
8
+ require 'zurb-foundation'
9
+
10
+ module Helios
11
+ class Frontend < Sinatra::Base
12
+ set :root, File.join(File.dirname(__FILE__), "frontend")
13
+ set :sass, load_paths: ["#{self.root}/stylesheets"]
14
+
15
+ register Sinatra::CompassSupport
16
+ register Sinatra::AssetPack
17
+ register Sinatra::JstPages
18
+
19
+ use Rack::BounceFavicon
20
+
21
+ assets do
22
+ serve '/javascripts', from: '/javascripts'
23
+ serve '/stylesheets', from: '/stylesheets'
24
+ serve '/images', from: '/images'
25
+ serve '/fonts', from: '/fonts'
26
+
27
+ js :application, '/javascripts/application.js', [
28
+ 'javascripts/vendor/jquery.js',
29
+ 'javascripts/vendor/jquery/jquery.ui.widget.js',
30
+ 'javascripts/vendor/jquery/jquery.fileupload.js',
31
+ 'javascripts/vendor/jquery/jquery.fileupload-ui.js',
32
+ 'javascripts/vendor/underscore.js',
33
+ 'javascripts/vendor/backbone.js',
34
+ 'javascripts/vendor/backbone.paginator.js',
35
+ 'javascripts/vendor/backbone.datagrid.js',
36
+ 'javascripts/vendor/codemirror.js',
37
+ 'javascripts/vendor/codemirror.javascript.js',
38
+ 'javascripts/vendor/foundation.js',
39
+ 'javascripts/vendor/foundation/foundation.dropdown.js',
40
+ 'javascripts/vendor/foundation/foundation.reveal.js',
41
+ 'javascripts/vendor/date.js',
42
+ 'javascripts/vendor/linkheaders.js',
43
+ 'javascripts/helios.js',
44
+ 'javascripts/helios/models.js',
45
+ 'javascripts/helios/collections.js',
46
+ 'javascripts/helios/templates.js',
47
+ 'javascripts/helios/views.js',
48
+ 'javascripts/helios/router.js',
49
+ ]
50
+
51
+ css :application, '/stylesheets/application.css', [
52
+ 'stylesheets/screen.css'
53
+ ]
54
+ end
55
+
56
+ serve_jst '/javascripts/helios/templates.js', root: settings.root + '/templates'
57
+
58
+ get '' do
59
+ redirect request.fullpath + "/"
60
+ end
61
+
62
+ get '/' do
63
+ haml :index
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,33 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="200px" height="100px" viewBox="0 0 200 100" enable-background="new 0 0 200 100" xml:space="preserve">
6
+ <g>
7
+ <path fill="#BFBC3D" d="M11.75,44.979c1.637-2.497,5.251-5.166,11.019-5.166c11.708,0,14.463,7.49,14.463,14.982v21.518
8
+ c0,2.587-2.065,4.477-4.647,4.477c-2.757,0-4.649-1.89-4.649-4.477V56.515c0-4.908-1.98-8.265-7.575-8.265
9
+ c-6.458,0-8.61,3.788-8.61,8.869v19.193c0,2.587-1.98,4.477-4.647,4.477c-2.669,0-4.65-1.89-4.65-4.477V23.457
10
+ c0-2.582,2.065-4.649,4.65-4.649c2.582,0,4.647,2.068,4.647,4.649V44.979z"/>
11
+ <path fill="#BFBC3D" d="M62.28,39.813c14.548,0,17.216,11.192,17.216,17.13c0,3.186,0,6.889-5.251,6.889H52.98
12
+ c0,6.196,4.392,9.041,10.074,9.041c3.788,0,6.455-1.296,8.522-2.67c0.945-0.604,1.635-0.949,2.755-0.949
13
+ c2.239,0,4.046,1.808,4.046,4.048c0,1.379-0.689,2.494-1.464,3.186c-1.464,1.379-6.026,4.735-13.859,4.735
14
+ c-11.967,0-19.372-6.459-19.372-20.835C43.683,47.217,50.571,39.813,62.28,39.813z M53.238,56.086h17.048
15
+ c0-4.221-2.412-8.352-8.006-8.352C57.286,47.734,53.669,50.574,53.238,56.086z"/>
16
+ <path fill="#BFBC3D" d="M95.676,23.457v47.175c0,1.033,1.033,1.55,1.637,1.55c2.409,0,4.304,1.895,4.304,4.306
17
+ c0,2.412-1.895,4.302-4.304,4.302c-6.715,0-10.934-3.785-10.934-11.019V23.457c0-2.582,2.066-4.649,4.647-4.649
18
+ C93.611,18.807,95.676,20.875,95.676,23.457z"/>
19
+ <path fill="#BFBC3D" d="M106.433,30.257c0-3.96,1.982-5.683,5.51-5.683c3.615,0,5.598,1.722,5.598,5.683
20
+ c0,3.356-1.982,5.424-5.598,5.424C108.415,35.682,106.433,33.614,106.433,30.257z M116.595,76.142c0,2.582-2.07,4.647-4.652,4.647
21
+ s-4.647-2.065-4.647-4.647V44.979c0-2.584,2.065-4.65,4.647-4.65s4.652,2.065,4.652,4.65V76.142z"/>
22
+ <path fill="#BFBC3D" d="M142.248,81.223c-11.623,0-18.857-6.63-18.857-20.664c0-14.116,7.234-20.746,18.857-20.746
23
+ c11.618,0,18.853,6.63,18.853,20.746C161.101,74.593,153.866,81.223,142.248,81.223z M142.248,47.734
24
+ c-6.201,0-9.471,4.304-9.471,12.825c0,8.437,3.27,12.743,9.471,12.743c6.196,0,9.47-4.307,9.47-12.743
25
+ C151.718,52.038,148.444,47.734,142.248,47.734z"/>
26
+ <path fill="#BFBC3D" d="M176.675,51.176c0,6.372,21.177,3.444,21.177,17.649c0,8.091-6.884,12.223-15.754,12.223
27
+ c-7.4,0-13.085-3.356-15.233-6.026c-0.692-0.857-1.038-1.632-1.038-2.665c0-2.24,1.896-4.136,4.136-4.136
28
+ c0.857,0,1.72,0.259,2.67,1.033c2.323,1.895,5.164,3.531,9.466,3.531c3.877,0,6.371-1.032,6.371-3.443
29
+ c0-6.977-21.089-3.357-21.089-17.993c0-7.748,6.455-11.536,14.376-11.536c6.109,0,11.536,2.324,13.947,5.336
30
+ c0.517,0.689,0.857,1.293,0.857,2.584c0,2.238-1.891,4.131-4.131,4.131c-1.203,0-1.979-0.517-2.928-1.206
31
+ c-1.896-1.376-4.219-2.755-7.746-2.755C178.57,47.904,176.675,49.025,176.675,51.176z"/>
32
+ </g>
33
+ </svg>
@@ -0,0 +1,72 @@
1
+ window.Helios = {
2
+ Version: "0.0.1"
3
+
4
+ Models: {}
5
+ Collections: {}
6
+ Views: {}
7
+ Routers: {}
8
+
9
+ initialize: ->
10
+ window.app = new Helios.Routers.Root
11
+
12
+ for entity in Helios.entities.models
13
+ do (entity) ->
14
+ name = entity.get('name').toLowerCase()
15
+ window.app[name] = ->
16
+ @views.entity = new Helios.Views.Entity({model: entity})
17
+ window.app.route entity.url(), name
18
+
19
+ window.app.views.entities = new Helios.Views.Entities({collection: Helios.entities})
20
+ window.app.views.entities.render() if Helios.services['data']
21
+
22
+ Backbone.history.start({
23
+ root: window.location.pathname,
24
+ pushState: false,
25
+ hashChange: true
26
+ })
27
+ }
28
+
29
+ $ ->
30
+ $.fn.serializeMultipart = ->
31
+ obj = $(this)
32
+
33
+ formData = new FormData()
34
+ $.each $(obj).find("input[type='file']"), (i, tag) ->
35
+ $.each $(tag)[0].files, (j, file) ->
36
+ formData.append tag.name, file
37
+
38
+ params = $(obj).serializeArray()
39
+ $.each params, (i, val) ->
40
+ formData.append val.name, val.value
41
+
42
+ formData
43
+
44
+ $(document).foundation()
45
+ $('body').delegate 'a[href^=#]', 'click', (event) ->
46
+ event.preventDefault()
47
+ href = $(this).attr('href')
48
+ window.app.navigate(href, {trigger: true, replace: true})
49
+
50
+ Helios.services = {}
51
+ $.ajax(type: 'OPTIONS', url: "/", success: (data, status, xhr) ->
52
+ header = xhr.getResponseHeader("Link")
53
+ $.linkheaders(header).each (idx, link) ->
54
+ href = link.attr('href')
55
+ rel = link.rels()[0]
56
+
57
+ switch rel
58
+ when "Helios::Backend::Data"
59
+ Helios.services['data'] = href
60
+ when "Helios::Backend::InAppPurchase"
61
+ Helios.services['in-app-purchase'] = href
62
+ when "Helios::Backend::Newsstand"
63
+ Helios.services['newsstand'] = href
64
+ when "Helios::Backend::PushNotification"
65
+ Helios.services['push-notification'] = href
66
+ when "Helios::Backend::Passbook"
67
+ Helios.services['passbook'] = href
68
+
69
+ Helios.entities = new Helios.Collections.Entities
70
+ Helios.entities.fetch(type: 'OPTIONS', url: (Helios.services['data'] || "") + '/resources', success: Helios.initialize, error: Helios.initialize)
71
+ )
72
+
@@ -0,0 +1,99 @@
1
+ class Helios.Collection extends Backbone.Paginator.requestPager
2
+ paginator_ui:
3
+ firstPage: 1,
4
+ currentPage: 1,
5
+ perPage: 20
6
+
7
+ server_api:
8
+ 'q': ->
9
+ @query || ""
10
+ 'limit': ->
11
+ @perPage
12
+ 'offset': ->
13
+ (@currentPage - 1) * @perPage
14
+
15
+ parse: (response, options) ->
16
+ if _.isArray(response)
17
+ response
18
+ else
19
+ if response.page?
20
+ @total = response.total
21
+ @page = response.page
22
+ @totalPages = Math.ceil(@total / @perPage)
23
+
24
+ _.detect response, (value, key) ->
25
+ _.isArray(value)
26
+
27
+ class Helios.Collections.Entities extends Backbone.Collection
28
+ model: Helios.Models.Entity
29
+ url: '/'
30
+
31
+ parse: (response, options) ->
32
+ if _.isArray(response)
33
+ response
34
+ else
35
+ if response.page?
36
+ @total = response.total
37
+ @page = response.page
38
+ @totalPages = Math.ceil(@total / @perPage)
39
+
40
+ _.detect response, (value, key) ->
41
+ _.isArray(value)
42
+
43
+ class Helios.Collections.Resources extends Backbone.Collection
44
+ model: Helios.Models.Resource
45
+
46
+ parse: (response, options) ->
47
+ if _.isArray(response)
48
+ response
49
+ else
50
+ if response.page?
51
+ @total = response.total
52
+ @page = response.page
53
+ @totalPages = Math.ceil(@total / @perPage)
54
+
55
+ _.detect response, (value, key) ->
56
+ _.isArray(value)
57
+
58
+ class Helios.Collections.Devices extends Helios.Collection
59
+ model: Helios.Models.Device
60
+ fields: ['token', 'alias', 'badge', 'locale', 'language', 'timezone', 'ip_address', 'lat', 'lng']
61
+
62
+ paginator_core:
63
+ type: 'GET'
64
+ dataType: 'json'
65
+ url: '/devices?'
66
+
67
+ comparator: (device) ->
68
+ device.get('token')
69
+
70
+
71
+ class Helios.Collections.Receipts extends Helios.Collection
72
+ model: Helios.Models.Receipt
73
+
74
+ fields: ['transaction_id', 'product_id', 'purchase_date', 'original_transaction_id', 'original_purchase_date', 'app_item_id', 'version_external_identifier', 'bid', 'bvrs', 'ip_address']
75
+
76
+ paginator_core:
77
+ type: 'GET'
78
+ dataType: 'json'
79
+ url: '/receipts?'
80
+
81
+ class Helios.Collections.Passes extends Helios.Collection
82
+ model: Helios.Models.Pass
83
+ url: '/passes'
84
+ fields: ['pass_type_identifier', 'serial_number', 'authentication_token']
85
+
86
+ paginator_core:
87
+ type: 'GET'
88
+ dataType: 'json'
89
+ url: '/passes?'
90
+
91
+ class Helios.Collections.Issues extends Helios.Collection
92
+ model: Helios.Models.Issue
93
+ url: '/issues'
94
+ fields: ['name', 'title', 'summary', 'published_at', 'expires_at']
95
+
96
+ paginator_core:
97
+ type: 'GET'
98
+ dataType: 'json'
99
+ url: '/issues?'