Class: Supermarket::Session
- Inherits:
-
Object
- Object
- Supermarket::Session
- Defined in:
- lib/supermarket/session.rb
Instance Attribute Summary collapse
-
#_session ⇒ Object
readonly
Returns the value of attribute _session.
Instance Method Summary collapse
-
#all_comments(app_id, c = []) ⇒ Object
fetch all available comments.
- #comments(app_id, start = 0, count = 10) ⇒ Object
- #config ⇒ Object
- #config_file ⇒ Object
- #image(app_id, usage = Market::GetImageRequest::AppImageUsage::SCREENSHOT, image_id = '1') ⇒ Object
- #image_data(app_id, usage = Market::GetImageRequest::AppImageUsage::SCREENSHOT, image_id = '1') ⇒ Object
-
#initialize ⇒ Session
constructor
A new instance of Session.
-
#pkg_to_app_id(package) ⇒ Object
Resolves a package name to a package id.
- #search(query, extended = true, start = 0, count = 10) ⇒ Object
Constructor Details
#initialize ⇒ Session
Returns a new instance of Session.
22 23 24 25 |
# File 'lib/supermarket/session.rb', line 22 def initialize @_session = MarketSession.new @_session.login(config['login'], config['password']) end |
Instance Attribute Details
#_session ⇒ Object (readonly)
Returns the value of attribute _session.
20 21 22 |
# File 'lib/supermarket/session.rb', line 20 def _session @_session end |
Instance Method Details
#all_comments(app_id, c = []) ⇒ Object
fetch all available comments
68 69 70 71 72 73 74 75 76 |
# File 'lib/supermarket/session.rb', line 68 def all_comments(app_id, c=[]) comments_resp = comments(app_id, c.size, 10) c += comments_resp.comments_list.to_a if comments_resp.entriesCount == c.size c else all_comments(app_id, c) end end |
#comments(app_id, start = 0, count = 10) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/supermarket/session.rb', line 52 def comments(app_id, start=0, count=10) raise ArgumentError, "need app id" unless app_id request = Market::CommentsRequest.newBuilder(). setAppId(app_id). setStartIndex(start). setEntriesCount(count).build() if resp = execute(request) resp else raise ArgumentError, "request returned nil" end end |
#config ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/supermarket/session.rb', line 31 def config @config ||= begin unless File.exists?(config_file) File.open(config_file, 'w') { |f| f << YAML.dump('login'=>'[email protected]', 'password'=>'secr3t') } raise "Android market config file not found. Please edit #{config_file}" end YAML.load_file(config_file) end end |
#config_file ⇒ Object
27 28 29 |
# File 'lib/supermarket/session.rb', line 27 def config_file File.join(ENV['HOME'], '.supermarket.yml') end |
#image(app_id, usage = Market::GetImageRequest::AppImageUsage::SCREENSHOT, image_id = '1') ⇒ Object
78 79 80 81 82 83 84 85 |
# File 'lib/supermarket/session.rb', line 78 def image(app_id, usage=Market::GetImageRequest::AppImageUsage::SCREENSHOT, image_id='1') request = Market::GetImageRequest.newBuilder(). setAppId(pkg_to_app_id(app_id)). setImageUsage(usage). setImageId(image_id).build() execute(request) end |
#image_data(app_id, usage = Market::GetImageRequest::AppImageUsage::SCREENSHOT, image_id = '1') ⇒ Object
87 88 89 90 91 92 93 |
# File 'lib/supermarket/session.rb', line 87 def image_data(app_id, usage=Market::GetImageRequest::AppImageUsage::SCREENSHOT, image_id='1') if resp = image(app_id, usage, image_id) String.from_java_bytes(resp.getImageData().toByteArray()) else [] end end |
#pkg_to_app_id(package) ⇒ Object
Resolves a package name to a package id
96 97 98 99 100 101 102 103 104 |
# File 'lib/supermarket/session.rb', line 96 def pkg_to_app_id(package) return package if package =~ /\A-?\d+\Z/ if app = search(package).getAppList().to_a.find { |app| app.packageName == package } app.getId() else raise ArgumentError, "could not resolve package #{package}" end end |
#search(query, extended = true, start = 0, count = 10) ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/supermarket/session.rb', line 42 def search(query, extended=true, start=0, count=10) request = Market::AppsRequest.newBuilder(). setQuery(query). setStartIndex(start). setEntriesCount(count). setWithExtendedInfo(extended).build() execute(request) end |