Class: Spaceship::Tunes::IAPDetail
- Defined in:
- spaceship/lib/spaceship/tunes/iap_detail.rb
Instance Attribute Summary collapse
-
#application ⇒ Spaceship::Tunes::Application
A reference to the application.
-
#cleared_for_sale ⇒ Bool
Cleared for sale flag.
-
#is_news_subscription ⇒ Bool
If it is a news subscription.
-
#merch_screenshot ⇒ Hash
Hash containing existing promotional image data.
-
#product_id ⇒ String
The IAP Product-Id.
-
#purchase_id ⇒ Integer
The IAP id.
-
#raw_pricing_data ⇒ Hash
as subscription pricing, intro offers, etc.
-
#reference_name ⇒ String
The IAP Referencename.
-
#review_notes ⇒ String
The notes for the review team.
-
#review_screenshot ⇒ Hash
Hash containing existing review screenshot data.
-
#subscription_duration ⇒ String
Subscription duration.
-
#subscription_free_trial ⇒ String
Free trial period.
-
#subscription_price_target ⇒ Hash
Subscription pricing target.
Attributes inherited from Base
Instance Method Summary collapse
-
#delete! ⇒ Object
Deletes In-App-Purchase.
-
#pricing_info ⇒ [], ...
Retrieves the actual prices for an iap.
-
#pricing_intervals ⇒ Array
@example: [ { country: “WW”, begin_date: nil, end_date: nil, tier: 1 } ].
-
#pricing_intervals=(value = []) ⇒ Object
transforms user-set intervals to iTC ones.
-
#save! ⇒ Object
Saves the current In-App-Purchase.
- #setup ⇒ Object
-
#status ⇒ String
Human Readable status of the purchase.
-
#type ⇒ String
Human Readable type of the purchase.
-
#versions ⇒ Hash
@example: { ‘de-DE’: { name: “Name shown in AppStore”, description: “Description of the In app Purchase”.
-
#versions=(value = {}) ⇒ Object
transforms user-set versions to iTC ones.
Methods inherited from TunesBase
Methods inherited from Base
attr_accessor, attr_mapping, attributes, #attributes, factory, #initialize, #inspect, mapping_module, method_missing, set_client, #to_s
Constructor Details
This class inherits a constructor from Spaceship::Base
Instance Attribute Details
#application ⇒ Spaceship::Tunes::Application
Returns A reference to the application.
10 11 12 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 10 def application @application end |
#cleared_for_sale ⇒ Bool
Returns Cleared for sale flag.
31 32 33 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 31 def cleared_for_sale @cleared_for_sale end |
#is_news_subscription ⇒ Bool
Returns if it is a news subscription.
16 17 18 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 16 def is_news_subscription @is_news_subscription end |
#merch_screenshot ⇒ Hash
Returns Hash containing existing promotional image data.
34 35 36 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 34 def merch_screenshot @merch_screenshot end |
#product_id ⇒ String
Returns the IAP Product-Id.
22 23 24 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 22 def product_id @product_id end |
#purchase_id ⇒ Integer
Returns the IAP id.
13 14 15 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 13 def purchase_id @purchase_id end |
#raw_pricing_data ⇒ Hash
as subscription pricing, intro offers, etc.
47 48 49 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 47 def raw_pricing_data @raw_pricing_data end |
#reference_name ⇒ String
Returns the IAP Referencename.
19 20 21 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 19 def reference_name @reference_name end |
#review_notes ⇒ String
Returns the notes for the review team.
40 41 42 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 40 def review_notes @review_notes end |
#review_screenshot ⇒ Hash
Returns Hash containing existing review screenshot data.
37 38 39 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 37 def review_screenshot @review_screenshot end |
#subscription_duration ⇒ String
Returns subscription duration.
28 29 30 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 28 def subscription_duration @subscription_duration end |
#subscription_free_trial ⇒ String
Returns free trial period.
25 26 27 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 25 def subscription_free_trial @subscription_free_trial end |
#subscription_price_target ⇒ Hash
Returns subscription pricing target.
43 44 45 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 43 def subscription_price_target @subscription_price_target end |
Instance Method Details
#delete! ⇒ Object
Deletes In-App-Purchase
213 214 215 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 213 def delete! client.delete_iap!(app_id: application.apple_id, purchase_id: self.purchase_id) end |
#pricing_info ⇒ [], ...
Retrieves the actual prices for an iap.
225 226 227 228 229 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 225 def pricing_info return [] unless cleared_for_sale return world_wide_pricing_info if world_wide_pricing? territorial_pricing_info end |
#pricing_intervals ⇒ Array
@example:
[
{
country: "WW",
begin_date: nil,
end_date: nil,
tier: 1
}
]
130 131 132 133 134 135 136 137 138 139 140 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 130 def pricing_intervals @pricing_intervals ||= (raw_data["pricingIntervals"] || @raw_pricing_data["subscriptions"] || []).map do |interval| { tier: interval["value"]["tierStem"].to_i, begin_date: interval["value"]["priceTierEffectiveDate"], end_date: interval["value"]["priceTierEndDate"], grandfathered: interval["value"]["grandfathered"], country: interval["value"]["country"] } end end |
#pricing_intervals=(value = []) ⇒ Object
transforms user-set intervals to iTC ones
113 114 115 116 117 118 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 113 def pricing_intervals=(value = []) raw_pricing_intervals = client.transform_to_raw_pricing_intervals(application.apple_id, self.purchase_id, value) raw_data.set(["pricingIntervals"], raw_pricing_intervals) @raw_pricing_data["subscriptions"] = raw_pricing_intervals if @raw_pricing_data end |
#save! ⇒ Object
Saves the current In-App-Purchase
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 165 def save! # Transform localization versions back to original format. versions_array = [] versions.each do |language, value| versions_array << { "value" => { "description" => { "value" => value[:description] }, "name" => { "value" => value[:name] }, "localeCode" => language.to_s, "id" => value[:id] } } end raw_data.set(["versions"], [{ reviewNotes: { value: @review_notes }, contentHosting: raw_data['versions'].first['contentHosting'], "details" => { "value" => versions_array }, id: raw_data["versions"].first["id"], reviewScreenshot: { "value" => review_screenshot } }]) # transform pricingDetails raw_pricing_intervals = client.transform_to_raw_pricing_intervals(application.apple_id, self.purchase_id, pricing_intervals, subscription_price_target) raw_data.set(["pricingIntervals"], raw_pricing_intervals) @raw_pricing_data["subscriptions"] = raw_pricing_intervals if @raw_pricing_data if @merch_screenshot # Upload App Store Promotional image (Optional) upload_file = UploadFile.from_path(@merch_screenshot) merch_data = client.upload_purchase_merch_screenshot(application.apple_id, upload_file) raw_data["versions"][0]["merch"] = merch_data end if @review_screenshot # Upload Screenshot upload_file = UploadFile.from_path(@review_screenshot) screenshot_data = client.upload_purchase_review_screenshot(application.apple_id, upload_file) raw_data["versions"][0]["reviewScreenshot"] = screenshot_data end # Update the Purchase client.update_iap!(app_id: application.apple_id, purchase_id: self.purchase_id, data: raw_data) # Update pricing for a recurring subscription. if raw_data["addOnType"] == Spaceship::Tunes::IAPType::RECURRING client.update_recurring_iap_pricing!(app_id: application.apple_id, purchase_id: self.purchase_id, pricing_intervals: raw_data["pricingIntervals"]) end end |
#setup ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 59 def setup @raw_pricing_data = @raw_data["pricingData"] @raw_data.delete("pricingData") if @raw_pricing_data @raw_data.set(["pricingIntervals"], @raw_pricing_data["subscriptions"]) end end |
#status ⇒ String
Returns Human Readable status of the purchase.
148 149 150 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 148 def status Tunes::IAPStatus.get_from_string(raw_data["versions"].first["status"]) end |
#type ⇒ String
Returns Human Readable type of the purchase.
143 144 145 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 143 def type Tunes::IAPType.get_from_string(raw_data["addOnType"]) end |
#versions ⇒ Hash
@example: {
'de-DE': {
name: "Name shown in AppStore",
description: "Description of the In app Purchase"
}
}
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 76 def versions parsed_versions = {} raw_versions = raw_data["versions"].first["details"]["value"] raw_versions.each do |localized_version| language = localized_version["value"]["localeCode"] parsed_versions[language.to_sym] = { name: localized_version["value"]["name"]["value"], description: localized_version["value"]["description"]["value"], id: localized_version["value"]["id"], status: localized_version["value"]["status"] } end return parsed_versions end |
#versions=(value = {}) ⇒ Object
transforms user-set versions to iTC ones
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 92 def versions=(value = {}) if value.kind_of?(Array) # input that comes from iTC api return end new_versions = [] value.each do |language, current_version| new_versions << { "value" => { "name" => { "value" => current_version[:name] }, "description" => { "value" => current_version[:description] }, "localeCode" => language.to_s, "id" => current_version[:id] } } end raw_data.set(["versions"], [{ reviewNotes: { value: @review_notes }, "contentHosting" => raw_data['versions'].first['contentHosting'], "details" => { "value" => new_versions }, "id" => raw_data["versions"].first["id"], "reviewScreenshot" => { "value" => review_screenshot } }]) end |