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.
-
#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 |
#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.
43 44 45 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 43 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.
36 37 38 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 36 def review_notes @review_notes end |
#review_screenshot ⇒ Hash
Returns Hash containing existing review screenshot data.
156 157 158 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 156 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.
39 40 41 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 39 def subscription_price_target @subscription_price_target end |
Instance Method Details
#delete! ⇒ Object
Deletes In-App-Purchase
227 228 229 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 227 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.
239 240 241 242 243 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 239 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
}
]
133 134 135 136 137 138 139 140 141 142 143 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 133 def pricing_intervals @pricing_intervals ||= (raw_data["pricingIntervals"] || []).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
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 106 def pricing_intervals=(value = []) new_intervals = [] value.each do |current_interval| new_intervals << { "value" => { "tierStem" => current_interval[:tier], "priceTierEndDate" => current_interval[:end_date], "priceTierEffectiveDate" => current_interval[:begin_date], "grandfathered" => current_interval[:grandfathered], "country" => current_interval[:country] } } end raw_data.set(["pricingIntervals"], new_intervals) @raw_pricing_data["subscriptions"] = new_intervals if @raw_pricing_data end |
#save! ⇒ Object
Saves the current In-App-Purchase
162 163 164 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 211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 162 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 } } 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 intervals_array = [] pricing_intervals.each do |interval| intervals_array << { "value" => { "tierStem" => interval[:tier], "priceTierEffectiveDate" => interval[:begin_date], "priceTierEndDate" => interval[:end_date], "country" => interval[:country] || "WW", "grandfathered" => interval[:grandfathered] } } end if subscription_price_target intervals_array = [] pricing_calculator = client.iap_subscription_pricing_target(app_id: application.apple_id, purchase_id: purchase_id, currency: subscription_price_target[:currency], tier: subscription_price_target[:tier]) pricing_calculator.each do |language_code, value| intervals_array << { value: { tierStem: value["tierStem"], priceTierEffectiveDate: value["priceTierEffectiveDate"], priceTierEndDate: value["priceTierEndDate"], country: language_code, grandfathered: { value: "FUTURE_NONE" } } } end end raw_data.set(["pricingIntervals"], intervals_array) 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
55 56 57 58 59 60 61 62 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 55 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.
151 152 153 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 151 def status Tunes::IAPStatus.get_from_string(raw_data["versions"].first["status"]) end |
#type ⇒ String
Returns Human Readable type of the purchase.
146 147 148 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 146 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"
}
}
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 72 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"] } end return parsed_versions end |
#versions=(value = {}) ⇒ Object
transforms user-set versions to iTC ones
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'spaceship/lib/spaceship/tunes/iap_detail.rb', line 86 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 } } 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 |