Class: Spaceship::Portal::App

Inherits:
Spaceship::PortalBase show all
Defined in:
lib/spaceship/portal/app.rb

Overview

Represents an App ID from the Developer Portal

Instance Attribute Summary collapse

Attributes inherited from Base

#client, #raw_data

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Spaceship::PortalBase

client

Methods inherited from Base

attr_accessor, attr_mapping, #attributes, attributes, #initialize, #inspect, mapping_module, method_missing, set_client, #setup, #to_s

Constructor Details

This class inherits a constructor from Spaceship::Base

Instance Attribute Details

#app_groups_countFixnum



46
47
48
# File 'lib/spaceship/portal/app.rb', line 46

def app_groups_count
  @app_groups_count
end

#app_idString

Returns The identifier of this app, provided by the Dev Portal.

Examples:

"RGAWZGXSAA"


8
9
10
# File 'lib/spaceship/portal/app.rb', line 8

def app_id
  @app_id
end

#bundle_idString

Returns The bundle_id (app identifier) of your app.

Examples:

"com.krausefx.app"


28
29
30
# File 'lib/spaceship/portal/app.rb', line 28

def bundle_id
  @bundle_id
end

#cloud_containers_countFixnum



49
50
51
# File 'lib/spaceship/portal/app.rb', line 49

def cloud_containers_count
  @cloud_containers_count
end

#dev_push_enabledBool



40
41
42
# File 'lib/spaceship/portal/app.rb', line 40

def dev_push_enabled
  @dev_push_enabled
end

#enabled_featuresArray



37
38
39
# File 'lib/spaceship/portal/app.rb', line 37

def enabled_features
  @enabled_features
end

#featuresHash



34
35
36
# File 'lib/spaceship/portal/app.rb', line 34

def features
  @features
end

#identifiers_countFixnum



52
53
54
# File 'lib/spaceship/portal/app.rb', line 52

def identifiers_count
  @identifiers_count
end

#is_wildcardBool



31
32
33
# File 'lib/spaceship/portal/app.rb', line 31

def is_wildcard
  @is_wildcard
end

#nameString

Returns The name you provided for this app.

Examples:

"Spaceship"


13
14
15
# File 'lib/spaceship/portal/app.rb', line 13

def name
  @name
end

#platformString

Returns the supported platform of this app.

Examples:

"ios"


18
19
20
# File 'lib/spaceship/portal/app.rb', line 18

def platform
  @platform
end

#prefixObject

Prefix provided by the Dev Portal

Examples:

"5A997XSHK2"


23
24
25
# File 'lib/spaceship/portal/app.rb', line 23

def prefix
  @prefix
end

#prod_push_enabledBool



43
44
45
# File 'lib/spaceship/portal/app.rb', line 43

def prod_push_enabled
  @prod_push_enabled
end

Class Method Details

.all(mac: false) ⇒ Array



79
80
81
# File 'lib/spaceship/portal/app.rb', line 79

def all(mac: false)
  client.apps(mac: mac).map { |app| self.factory(app) }
end

.create!(bundle_id: nil, name: nil, mac: false) ⇒ App

Creates a new App ID on the Apple Dev Portal

if bundle_id ends with ‘*’ then it is a wildcard id otherwise, it is an explicit id



90
91
92
93
94
95
96
97
98
99
# File 'lib/spaceship/portal/app.rb', line 90

def create!(bundle_id: nil, name: nil, mac: false)
  if bundle_id.end_with?('*')
    type = :wildcard
  else
    type = :explicit
  end

  new_app = client.create_app!(type, name, bundle_id, mac: mac)
  self.new(new_app)
end

.factory(attrs) ⇒ Object

Create a new object based on a hash. This is used to create a new object based on the server response.



73
74
75
# File 'lib/spaceship/portal/app.rb', line 73

def factory(attrs)
  self.new(attrs)
end

.find(bundle_id, mac: false) ⇒ App

Find a specific App ID based on the bundle_id



104
105
106
107
108
# File 'lib/spaceship/portal/app.rb', line 104

def find(bundle_id, mac: false)
  all(mac: mac).find do |app|
    app.bundle_id == bundle_id
  end
end

Instance Method Details

#associate_groups(groups) ⇒ App

Associate specific groups with this app



128
129
130
131
132
# File 'lib/spaceship/portal/app.rb', line 128

def associate_groups(groups)
  raise "`associate_groups` not available for Mac apps" if mac?
  app = client.associate_groups_with_app(self, groups)
  self.class.factory(app)
end

#delete!App

Delete this App ID. This action will most likely fail if the App ID is already in the store or there are active profiles



114
115
116
117
# File 'lib/spaceship/portal/app.rb', line 114

def delete!
  client.delete_app!(app_id, mac: mac?)
  self
end

#detailsApp

Fetch a specific App ID details based on the bundle_id



121
122
123
124
# File 'lib/spaceship/portal/app.rb', line 121

def details
  app = client.details_for_app(self)
  self.class.factory(app)
end

#mac?Bool



143
144
145
# File 'lib/spaceship/portal/app.rb', line 143

def mac?
  platform == 'mac'
end

#update_service(service) ⇒ App

Update a service for the app with given AppService object



136
137
138
139
140
# File 'lib/spaceship/portal/app.rb', line 136

def update_service(service)
  raise "`update_service` not implemented for Mac apps" if mac?
  app = client.update_service_for_app(self, service)
  self.class.factory(app)
end