helios_aim 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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?'