class Odnoklassniki::REST::Mediatopic::Photoalbum
Constants
- ALBUM_CREATION_OPTIONS
- ALBUM_NAME
- COMMIT_PHOTO_METHOD
- CREATE_ALBUM_METHOD
- CreationError
- Error
- FindingError
- GET_ALBUMS_METHOD
- GET_ALBUM_UPLOAD_URL_METHOD
- UploadingError
Attributes
params[RW]
Public Class Methods
new(options)
click to toggle source
Options: account: { id: Identifier for account in OK,
type: :group/:personal }
client: Client
for specified account
# File lib/odnoklassniki/rest/mediatopic/photoalbum.rb, line 30 def initialize(options) @options = Odnoklassniki::Utils._symbolize_keys(options) @account = @options[:account] @api = @options[:client] end
Public Instance Methods
upload(photo)
click to toggle source
# File lib/odnoklassniki/rest/mediatopic/photoalbum.rb, line 36 def upload(photo) upload_photoalbum_photo(photo) end
Private Instance Methods
commit_uploaded_photo(photo_id, photo_token)
click to toggle source
# File lib/odnoklassniki/rest/mediatopic/photoalbum.rb, line 106 def commit_uploaded_photo(photo_id, photo_token) params = {method: COMMIT_PHOTO_METHOD, photo_id: photo_id, token: photo_token} @api.get(params) do |commit_response| commit_response['photos'][0]['assigned_photo_id'] end end
create_photoalbum()
click to toggle source
# File lib/odnoklassniki/rest/mediatopic/photoalbum.rb, line 83 def create_photoalbum return photoalbum['aid'] if photoalbum.present? params = {method: CREATE_ALBUM_METHOD}.merge!(ALBUM_CREATION_OPTIONS) params.merge!(gid: @account[:id]) if @account[:type] == :group @api.get(params) rescue API::Error raise CreationError end
photoalbum()
click to toggle source
# File lib/odnoklassniki/rest/mediatopic/photoalbum.rb, line 71 def photoalbum @photoalbum ||= begin params = {method: GET_ALBUMS_METHOD} params.merge!(gid: @account[:id]) if @account[:type] == :group @api.get(params).try(:[], 'albums').to_a .find { |album| album['title'] == ALBUM_NAME } rescue API::Error raise FindingError end end
photoalbum_upload_url()
click to toggle source
# File lib/odnoklassniki/rest/mediatopic/photoalbum.rb, line 94 def photoalbum_upload_url params = {method: GET_ALBUM_UPLOAD_URL_METHOD} if @account[:type] == :group params.merge!(gid: @account[:id]) else params.merge!(aid: create_photoalbum) end @api.get(params) { |json| URI.parse json['upload_url'] } end
upload_photoalbum_photo(photo)
click to toggle source
# File lib/odnoklassniki/rest/mediatopic/photoalbum.rb, line 47 def upload_photoalbum_photo(photo) upload_response = ::HttpUploader.new(photoalbum_upload_url) .upload(photo.to_io, photo.basename, query_param: :pic1, content_type: photo.content_type) unless Net::HTTPSuccess === upload_response raise UploadingError, "Failed to upload file. Reason: #{upload_response.body}" end photo_id, photo_attributes = JSON.parse(upload_response.body) .try(:[], 'photos').try(:flatten) if photo_id.blank? || photo_attributes.blank? raise UploadingError, "Broken upload response. Response: #{upload_response.body}" end if @account[:type] == :personal commit_uploaded_photo(photo_id, photo_attributes['token']) else photo_attributes['token'] end end