spaceship/lib/spaceship/tunes/app_ratings.rb in fastlane-2.29.0.beta.20170502010055 vs spaceship/lib/spaceship/tunes/app_ratings.rb in fastlane-2.29.0.beta.20170503010035
- old
+ new
@@ -45,12 +45,84 @@
end
instance_variable_set(:@store_fronts, unfolded_store_fronts)
end
- # @return (Array) of raw hashes representing user reviews for the given store front (and optional versionId)
+ # @return (Array) of Review Objects
def reviews(store_front, versionId = '')
- client.get_reviews(application.apple_id, application.platform, store_front, versionId)
+ raw_reviews = client.get_reviews(application.apple_id, application.platform, store_front, versionId)
+ raw_reviews.map do |review|
+ review["value"]["application"] = self.application
+ AppReview.factory(review["value"])
+ end
+ end
+ end
+
+ class DeveloperResponse < TunesBase
+ attr_reader :id
+ attr_reader :response
+ attr_reader :last_modified
+ attr_reader :hidden
+ attr_reader :state
+ attr_accessor :application
+ attr_accessor :review_id
+
+ attr_mapping({
+ 'responseId' => :id,
+ 'response' => :response,
+ 'lastModified' => :last_modified,
+ 'isHidden' => :hidden,
+ 'pendingState' => :state
+ })
+ end
+
+ class AppReview < TunesBase
+ attr_accessor :application
+ attr_reader :rating
+ attr_reader :id
+ attr_reader :title
+ attr_reader :review
+ attr_reader :nickname
+ attr_reader :store_front
+ attr_reader :app_version
+ attr_reader :last_modified
+ attr_reader :helpful_views
+ attr_reader :total_views
+ attr_reader :edited
+ attr_reader :raw_developer_response
+ attr_accessor :developer_response
+
+ attr_mapping({
+ 'id' => :id,
+ 'rating' => :rating,
+ 'title' => :title,
+ 'review' => :review,
+ 'nickname' => :nickname,
+ 'storeFront' => :store_front,
+ 'appVersionString' => :app_version,
+ 'lastModified' => :last_modified,
+ 'helpfulViews' => :helpful_views,
+ 'totalViews' => :total_views,
+ 'developerResponse' => :raw_developer_response,
+ 'edited' => :edited
+ })
+ class << self
+ # Create a new object based on a hash.
+ # This is used to create a new object based on the server response.
+ def factory(attrs)
+ obj = self.new(attrs)
+ response_attrs = {}
+ response_attrs = obj.raw_developer_response if obj.raw_developer_response
+ response_attrs[:application] = obj.application
+ response_attrs[:review_id] = obj.id
+ obj.developer_response = DeveloperResponse.factory(response_attrs)
+ return obj
+ end
+ end
+
+ def responded?
+ return true if raw_developer_response
+ false
end
end
class AppRatingSummary < TunesBase
# @return (Integer) total number of reviews recevied