Class: Opera::MobileStore::Compatibility
- Inherits:
-
Object
- Object
- Opera::MobileStore::Compatibility
- Includes:
- ActiveModel::Model, ActiveModel::Serialization, InspectableAttributes, Opera::MobileStoreSDK::APIAccessible
- Defined in:
- lib/opera/mobile_store/compatibility.rb
Instance Attribute Summary collapse
-
#build_id ⇒ Object
All attributes are Read-Only…
-
#max_sdk_version ⇒ Object
All attributes are Read-Only…
-
#min_sdk_version ⇒ Object
All attributes are Read-Only…
-
#model_ids ⇒ Object
All attributes are Read-Only…
-
#platform_family_ids ⇒ Object
All attributes are Read-Only…
-
#platform_ids ⇒ Object
All attributes are Read-Only…
-
#product_id ⇒ Object
All attributes are Read-Only…
-
#target_sdk_version ⇒ Object
All attributes are Read-Only…
Class Method Summary collapse
-
.build_from_nokogiri_node(node) ⇒ Object
TODO: Move this implementation to the SDK namespace.
Instance Method Summary collapse
- #attributes ⇒ Object
- #build ⇒ Object
- #models ⇒ Object
- #platform_families ⇒ Object
- #platforms ⇒ Object
Methods included from InspectableAttributes
Instance Attribute Details
#build_id ⇒ Object
All attributes are Read-Only…
14 15 16 |
# File 'lib/opera/mobile_store/compatibility.rb', line 14 def build_id @build_id end |
#max_sdk_version ⇒ Object
All attributes are Read-Only…
14 15 16 |
# File 'lib/opera/mobile_store/compatibility.rb', line 14 def max_sdk_version @max_sdk_version end |
#min_sdk_version ⇒ Object
All attributes are Read-Only…
14 15 16 |
# File 'lib/opera/mobile_store/compatibility.rb', line 14 def min_sdk_version @min_sdk_version end |
#model_ids ⇒ Object
All attributes are Read-Only…
14 15 16 |
# File 'lib/opera/mobile_store/compatibility.rb', line 14 def model_ids @model_ids end |
#platform_family_ids ⇒ Object
All attributes are Read-Only…
14 15 16 |
# File 'lib/opera/mobile_store/compatibility.rb', line 14 def platform_family_ids @platform_family_ids end |
#platform_ids ⇒ Object
All attributes are Read-Only…
14 15 16 |
# File 'lib/opera/mobile_store/compatibility.rb', line 14 def platform_ids @platform_ids end |
#product_id ⇒ Object
All attributes are Read-Only…
14 15 16 |
# File 'lib/opera/mobile_store/compatibility.rb', line 14 def product_id @product_id end |
#target_sdk_version ⇒ Object
All attributes are Read-Only…
14 15 16 |
# File 'lib/opera/mobile_store/compatibility.rb', line 14 def target_sdk_version @target_sdk_version end |
Class Method Details
.build_from_nokogiri_node(node) ⇒ Object
TODO: Move this implementation to the SDK namespace
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/opera/mobile_store/compatibility.rb', line 54 def self.build_from_nokogiri_node(node) t_node = node.xpath("build").first || node.xpath("product").first ref_key = case t_node.node_name when 'build' then :build_id when 'product' then :product_id else raise "No recognizable compatibility parent" end # parse the rest of the data: data = { ref_key => t_node.xpath("number(@id)").to_i, model_ids: t_node.xpath("models/model").map do |model_node| device_model_id = model_node.xpath("number(@id)").to_i DeviceModel.new( id: device_model_id, code: model_node.xpath("string(@code)").strip, name: model_node.text.strip ) unless DeviceModel.identity_mapped? device_model_id device_model_id end, platform_ids: t_node.xpath("platforms/platform").map do |platform_node| device_platform_id = platform_node.xpath("number(@id)").to_i DevicePlatform.new( id: device_platform_id, code: platform_node.xpath("string(@code)").strip, name: platform_node.text.strip ) unless DevicePlatform.identity_mapped? device_platform_id device_platform_id end, platform_family_ids: t_node.xpath("platform_families/platform_family").map do |platform_family_node| platform_family_id = platform_family_node.xpath("number(@id)").to_i DevicePlatformFamily.new( id: platform_family_id, code: platform_family_node.xpath("string(@code)").strip, name: platform_family_node.text.strip ) unless DevicePlatformFamily.identity_mapped? platform_family_id platform_family_id end } self.new data end |
Instance Method Details
#attributes ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/opera/mobile_store/compatibility.rb', line 18 def attributes [ :model_ids, :platform_ids, :platform_family_ids, :product_id, :build_id, :min_sdk_version, :target_sdk_version, :max_sdk_version ].inject({}) do |hash, field_name| field_value = self.public_send field_name hash[field_name.to_s] = field_value unless field_value.nil? hash end end |
#build ⇒ Object
47 48 49 |
# File 'lib/opera/mobile_store/compatibility.rb', line 47 def build Build.find build_id if build_id.present? end |
#models ⇒ Object
33 34 35 |
# File 'lib/opera/mobile_store/compatibility.rb', line 33 def models model_ids.map { |model_id| DeviceModel.find model_id } end |
#platform_families ⇒ Object
41 42 43 44 45 |
# File 'lib/opera/mobile_store/compatibility.rb', line 41 def platform_families platform_family_ids.map do |platform_family_id| DevicePlatform.find platform_family_id end end |
#platforms ⇒ Object
37 38 39 |
# File 'lib/opera/mobile_store/compatibility.rb', line 37 def platforms platform_ids.map { |platform_id| DevicePlatform.find platform_id } end |