class PlayTime::Client

Constants

API
API_VERSION
SCOPE
TOKEN_URI

Attributes

edit_id[R]

Public Instance Methods

authorize!() click to toggle source
# File lib/play_time/client.rb, line 15
def authorize!
  client.authorization = oauth2_client
  client.authorization.fetch_access_token!
end
commit(track) click to toggle source
# File lib/play_time/client.rb, line 20
def commit(track)
  create_insert
  version_code = upload_apk
  update_track(track, version_code)
  save
end
update(track, version_code) click to toggle source
# File lib/play_time/client.rb, line 27
def update(track, version_code)
  create_insert
  old_track = get_old_track! version_code
  update_track(old_track.track, *old_track.versionCodes - [version_code])
  update_track(track, version_code)
  save
end

Private Instance Methods

client() click to toggle source
# File lib/play_time/client.rb, line 76
def client
  @client ||= Google::APIClient.new(
    application_name: PlayTime.configuration.client_name,
    application_version: PlayTime.configuration.client_version
  )
end
create_insert() click to toggle source
# File lib/play_time/client.rb, line 39
def create_insert
  @edit_id = run!(api_method: service.edits.insert, parameters: parameters).data.id
end
get_old_track!(version_code) click to toggle source
# File lib/play_time/client.rb, line 43
def get_old_track!(version_code)
  old_track = get_tracks.find { |track| track.versionCodes.include? version_code }

  old_track || raise(VersionCodeNotFound, version_code)
end
get_tracks() click to toggle source
# File lib/play_time/client.rb, line 49
def get_tracks
  run!(api_method: service.edits.tracks.list, parameters: parameters.merge(editId: edit_id)).data.tracks
end
oauth2_client() click to toggle source
# File lib/play_time/client.rb, line 87
def oauth2_client
  @oauth2_client ||= Signet::OAuth2::Client.new(
    token_credential_uri: TOKEN_URI,
    audience: TOKEN_URI,
    scope: SCOPE,
    issuer: PlayTime.configuration.issuer,
    signing_key: openssl_key
  )
end
openssl_key() click to toggle source
# File lib/play_time/client.rb, line 97
def openssl_key
  @openssl_key ||= Google::APIClient::KeyUtils.load_from_pkcs12(PlayTime.configuration.secret_path, PlayTime.configuration.secret_passphrase)
end
parameters() click to toggle source
# File lib/play_time/client.rb, line 72
def parameters
  {packageName: PlayTime.configuration.package_name}
end
run!(options = {}) click to toggle source
# File lib/play_time/client.rb, line 68
def run!(options = {})
  Runner.run! client, options
end
save() click to toggle source
# File lib/play_time/client.rb, line 63
def save
  commit_params = parameters.merge(editId: edit_id)
  run! api_method: service.edits.commit, parameters: commit_params
end
service() click to toggle source
# File lib/play_time/client.rb, line 83
def service
  @service ||= client.discovered_api(API, API_VERSION)
end
update_track(track, *version_codes) click to toggle source
# File lib/play_time/client.rb, line 58
def update_track(track, *version_codes)
  update_params = parameters.merge(editId: edit_id, track: track)
  run! api_method: service.edits.tracks.update, parameters: update_params, body_object: { versionCodes: version_codes }
end
upload_apk() click to toggle source
# File lib/play_time/client.rb, line 53
def upload_apk
  upload_params = parameters.merge(editId: edit_id, uploadType: 'media')
  run!(api_method: service.edits.apks.upload, parameters: upload_params, media: Apk.load).data.versionCode
end