Class: Vendor::Info
- Inherits:
-
Object
- Object
- Vendor::Info
- Defined in:
- lib/project/info.rb
Instance Attribute Summary collapse
-
#block ⇒ Object
Returns the value of attribute block.
-
#params ⇒ Object
Returns the value of attribute params.
Instance Method Summary collapse
- #bought? ⇒ Boolean
- #description ⇒ Object
-
#initialize(params, &block) ⇒ Info
constructor
A new instance of Info.
-
#price ⇒ Object
INFO METHODS.
- #price_locale ⇒ Object
-
#productsRequest(request, didReceiveResponse: response) ⇒ Object
DELEGATE METHODS.
- #request(request, didFailWithError: error) ⇒ Object
- #subscribed? ⇒ Boolean
- #subscription? ⇒ Boolean
- #title ⇒ Object
Constructor Details
#initialize(params, &block) ⇒ Info
Returns a new instance of Info.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/project/info.rb', line 5 def initialize(params, &block) @params = params @block = block # Start product request productsRequest = SKProductsRequest.alloc.initWithProductIdentifiers(NSSet.setWithObject(@params.id)) productsRequest.delegate = self productsRequest.start # Update receipt if bought and subscription if bought? && subscription? receipt = NSUserDefaults["#{@params.id}.receipt"] decoder = CocoaSecurityDecoder.new latest_receipt_data = decoder.base64(receipt[:latest_receipt]) Vendor::Receipt.new(latest_receipt_data, @params) end end |
Instance Attribute Details
#block ⇒ Object
Returns the value of attribute block.
3 4 5 |
# File 'lib/project/info.rb', line 3 def block @block end |
#params ⇒ Object
Returns the value of attribute params.
3 4 5 |
# File 'lib/project/info.rb', line 3 def params @params end |
Instance Method Details
#bought? ⇒ Boolean
53 54 55 |
# File 'lib/project/info.rb', line 53 def bought? NSUserDefaults["#{@params.id}.receipt"] != nil end |
#description ⇒ Object
49 50 51 |
# File 'lib/project/info.rb', line 49 def description NSUserDefaults["#{@params.id}.localizedDescription"] || @params.desc end |
#price ⇒ Object
INFO METHODS
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/project/info.rb', line 26 def price local_price = NSUserDefaults["#{@params.id}.price"] || @params.price number_formatter = NSNumberFormatter.alloc.init number_formatter.setFormatterBehavior(NSNumberFormatterBehavior10_4) number_formatter.setNumberStyle(NSNumberFormatterCurrencyStyle) number_formatter.setLocale(price_locale) currency_string = number_formatter.internationalCurrencySymbol format = number_formatter.positiveFormat format.gsub("ยค", currency_string) number_formatter.setPositiveFormat(format) return number_formatter.stringFromNumber(local_price) end |
#price_locale ⇒ Object
41 42 43 |
# File 'lib/project/info.rb', line 41 def price_locale @params[:price_locale]==nil ? NSLocale.alloc.initWithLocaleIdentifier("en_US") : @params[:price_locale] end |
#productsRequest(request, didReceiveResponse: response) ⇒ Object
DELEGATE METHODS
88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/project/info.rb', line 88 def productsRequest(request, didReceiveResponse:response) exists = response.invalidProductIdentifiers.count==0 # Save needed product info if exists product = response.products.first NSUserDefaults["#{@params.id}.price"] = product.price @params[:price_locale] = product.priceLocale NSUserDefaults["#{@params.id}.localizedTitle"] = product.localizedTitle NSUserDefaults["#{@params.id}.localizedDescription"] = product.localizedDescription end @block.call({success: exists, response: response, error: nil}.to_object) end |
#request(request, didFailWithError: error) ⇒ Object
103 104 105 |
# File 'lib/project/info.rb', line 103 def request(request, didFailWithError:error) @block.call({success: false, response: nil, error: error}.to_object) end |
#subscribed? ⇒ Boolean
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/project/info.rb', line 61 def subscribed? # Return false if product is not a subscription or not bought return false if !subscription? || !bought? receipt = NSUserDefaults["#{@params.id}.receipt"] return false if receipt[:status].to_i!=0 # Get the latest receipt receipt = NSUserDefaults["#{@params.id}.receipt"] decoder = CocoaSecurityDecoder.new latest_receipt_data = decoder.base64(receipt[:latest_receipt]) latest_receipt_plist = NSPropertyListSerialization.propertyListWithData(latest_receipt_data, options:NSPropertyListImmutable, format:nil, error:nil) # Get the time for the latest receipt purchase_info_data = decoder.base64(latest_receipt_plist.objectForKey("purchase-info")) purchase_info_plist = NSPropertyListSerialization.propertyListWithData(purchase_info_data, options:NSPropertyListImmutable, format:nil, error:nil) # Manipulate the time for the latest receipt expires_date = purchase_info_plist.objectForKey("expires-date") expires_calc = expires_date.to_i/1000 # Check if the latest receipt is too old return expires_calc > NSDate.date.timeIntervalSince1970 end |
#subscription? ⇒ Boolean
57 58 59 |
# File 'lib/project/info.rb', line 57 def subscription? @params.subscription end |
#title ⇒ Object
45 46 47 |
# File 'lib/project/info.rb', line 45 def title NSUserDefaults["#{@params.id}.localizedTitle"] || @params.title end |