Class: Spaceship::Tunes::Build

Inherits:
TunesBase show all
Defined in:
lib/spaceship/tunes/build.rb

Overview

Represents a build which is inside the build train

Direct Known Subclasses

ProcessingBuild

General metadata collapse

Analytics collapse

Attributes inherited from Base

#client, #raw_data

Analytics collapse

Methods inherited from TunesBase

client

Methods inherited from Base

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

Constructor Details

This class inherits a constructor from Spaceship::Base

Instance Attribute Details

#app_nameString

Returns The name of the app this build is for.

Returns:

  • (String)

    The name of the app this build is for



34
35
36
# File 'lib/spaceship/tunes/build.rb', line 34

def app_name
  @app_name
end

#build_trainSpaceship::Tunes::BuildTrain

Returns A reference to the build train this build is contained in.

Returns:



10
11
12
# File 'lib/spaceship/tunes/build.rb', line 10

def build_train
  @build_train
end

#build_versionString

Returns The build version (not the version number), but also is named ‘build number`.

Returns:

  • (String)

    The build version (not the version number), but also is named ‘build number`



19
20
21
# File 'lib/spaceship/tunes/build.rb', line 19

def build_version
  @build_version
end

#crash_countInteger

Returns Might be nil. The number of crashes of this build.

Returns:

  • (Integer)

    Might be nil. The number of crashes of this build



74
75
76
# File 'lib/spaceship/tunes/build.rb', line 74

def crash_count
  @crash_count
end

#external_expiry_dateInteger

Returns : When is the external build going to expire?.

Returns:

  • (Integer)

    : When is the external build going to expire?



43
44
45
# File 'lib/spaceship/tunes/build.rb', line 43

def external_expiry_date
  @external_expiry_date
end

#external_install_countInteger

Returns Number of installs for this build that come from external users.

Returns:

  • (Integer)

    Number of installs for this build that come from external users



68
69
70
# File 'lib/spaceship/tunes/build.rb', line 68

def external_install_count
  @external_install_count
end

#external_testing_enabledBool (readonly)

Returns Is external beta testing enabled for this train? Only one train can have enabled testing.

Returns:

  • (Bool)

    Is external beta testing enabled for this train? Only one train can have enabled testing.



46
47
48
# File 'lib/spaceship/tunes/build.rb', line 46

def external_testing_enabled
  @external_testing_enabled
end

#icon_urlString

Returns URL to the app icon of this build (150x150px).

Returns:

  • (String)

    URL to the app icon of this build (150x150px)



31
32
33
# File 'lib/spaceship/tunes/build.rb', line 31

def icon_url
  @icon_url
end

#idInteger

Returns The ID generated by iTunes Connect.

Returns:

  • (Integer)

    The ID generated by iTunes Connect



13
14
15
# File 'lib/spaceship/tunes/build.rb', line 13

def id
  @id
end

#install_countInteger

Returns Number of installs of this build.

Returns:

  • (Integer)

    Number of installs of this build



62
63
64
# File 'lib/spaceship/tunes/build.rb', line 62

def install_count
  @install_count
end

#internal_expiry_dateInteger

Returns When is this build going to be invalid.

Returns:

  • (Integer)

    When is this build going to be invalid



40
41
42
# File 'lib/spaceship/tunes/build.rb', line 40

def internal_expiry_date
  @internal_expiry_date
end

#internal_install_countInteger

Returns Number of installs for this build that come from internal users.

Returns:

  • (Integer)

    Number of installs for this build that come from internal users



65
66
67
# File 'lib/spaceship/tunes/build.rb', line 65

def internal_install_count
  @internal_install_count
end

#internal_testing_enabledBool (readonly)

Returns Is internal beta testing enabled for this train? Only one train can have enabled testing.

Returns:

  • (Bool)

    Is internal beta testing enabled for this train? Only one train can have enabled testing.



49
50
51
# File 'lib/spaceship/tunes/build.rb', line 49

def internal_testing_enabled
  @internal_testing_enabled
end

#platformString

Returns The platform of this build (e.g. ‘ios’).

Returns:

  • (String)

    The platform of this build (e.g. ‘ios’)



37
38
39
# File 'lib/spaceship/tunes/build.rb', line 37

def platform
  @platform
end

#processingBoolean

Returns Is this build currently processing?.

Returns:

  • (Boolean)

    Is this build currently processing?



25
26
27
# File 'lib/spaceship/tunes/build.rb', line 25

def processing
  @processing
end

#ready_to_installBool

Returns :.

Returns:

  • (Bool)

    :



55
56
57
# File 'lib/spaceship/tunes/build.rb', line 55

def ready_to_install
  @ready_to_install
end

#session_countInteger

Returns Might be nil. The number of sessions for this build.

Returns:

  • (Integer)

    Might be nil. The number of sessions for this build



71
72
73
# File 'lib/spaceship/tunes/build.rb', line 71

def session_count
  @session_count
end

#train_versionString

Returns The version number (e.g. 1.3).

Returns:

  • (String)

    The version number (e.g. 1.3)



22
23
24
# File 'lib/spaceship/tunes/build.rb', line 22

def train_version
  @train_version
end

#upload_dateInteger

Returns The number of ticks since 1970 (e.g. 1413966436000).

Returns:

  • (Integer)

    The number of ticks since 1970 (e.g. 1413966436000)



28
29
30
# File 'lib/spaceship/tunes/build.rb', line 28

def upload_date
  @upload_date
end

#validBoolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/spaceship/tunes/build.rb', line 16

def valid
  @valid
end

#watch_kit_enabledBool

Returns Does this build support WatchKit?.

Returns:

  • (Bool)

    Does this build support WatchKit?



52
53
54
# File 'lib/spaceship/tunes/build.rb', line 52

def watch_kit_enabled
  @watch_kit_enabled
end

Class Method Details

.factory(attrs) ⇒ Object

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



103
104
105
# File 'lib/spaceship/tunes/build.rb', line 103

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

Instance Method Details

#cancel_beta_review!Object

This will cancel the review process for this TestFlight build



199
200
201
202
203
# File 'lib/spaceship/tunes/build.rb', line 199

def cancel_beta_review!
  client.remove_testflight_build_from_review!(app_id: self.build_train.application.apple_id,
                                               train: self.build_train.version_string,
                                        build_number: self.build_version)
end

#setupObject



108
109
110
111
112
113
# File 'lib/spaceship/tunes/build.rb', line 108

def setup
  super

  self.external_expiry_date ||= 0
  self.internal_expiry_date ||= 0
end

#submit_for_beta_review!(metadata) ⇒ Object

This will submit this build for TestFlight beta review

Parameters:

  • metadata (Hash)

    A hash containing the following information (keys must be symbols):

     # Required Metadata:
      changelog: "Changelog",
      description: "Your Description",
      feedback_email: "Email Address for Feedback",
      marketing_url: "https://marketing.com",
      first_name: "Felix",
      last_name: "Krause",
      review_email: "Contact email address for Apple",
      phone_number: "0128383383",
    
    # Optional Metadata:
      privacy_policy_url: nil,
      review_notes: nil,
      review_user_name: nil,
      review_password: nil,
      encryption: false
    



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/spaceship/tunes/build.rb', line 150

def submit_for_beta_review!()
  # First, enable beta testing for this train (per iTC requirement)
  self.build_train.update_testing_status!(true, 'external')

  parameters = {
    app_id: self.build_train.application.apple_id,
    train: self.build_train.version_string,
    build_number: self.build_version,

    # Required Metadata:
    changelog: "No changelog provided",
    description: "No app description provided",
    feedback_email: "[email protected]",
    marketing_url: "http://marketing.com",
    first_name: "Felix",
    last_name: "Krause",
    review_email: "[email protected]",
    phone_number: "0123456789",
    significant_change: false,

    # Optional Metadata:
    privacy_policy_url: nil,
    review_user_name: nil,
    review_password: nil,
    encryption: false
  }.merge()

  client.submit_testflight_build_for_review!(parameters)

  return parameters
end

#testing_statusString

@examples:

External, Internal, Inactive, Expired

Returns:

  • (String)

    A nicely formatted string about the state of this build



185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/spaceship/tunes/build.rb', line 185

def testing_status
  testing ||= "External" if self.external_testing_enabled
  testing ||= "Internal" if self.internal_testing_enabled

  if Time.at(self.internal_expiry_date / 1000) > Time.now
    testing ||= "Inactive"
  else
    testing = "Expired"
  end

  return testing
end

#update_build_information!(whats_new: nil, description: nil, feedback_email: nil) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/spaceship/tunes/build.rb', line 115

def update_build_information!(whats_new: nil,
                              description: nil,
                              feedback_email: nil)
  parameters = {
    app_id: self.build_train.application.apple_id,
    train: self.build_train.version_string,
    build_number: self.build_version
  }.merge({
    whats_new: whats_new,
    description: description,
    feedback_email: feedback_email
  })
  client.update_build_information!(parameters)
end