-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
363 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# frozen_string_literal: true | ||
|
||
module Yadisk | ||
class Client | ||
module Entities | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# frozen_string_literal: true | ||
|
||
module Yadisk | ||
class Client | ||
module Entities | ||
module V1 | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# frozen_string_literal: true | ||
|
||
require 'json' | ||
|
||
module Yadisk | ||
class Client | ||
module Entities | ||
module V1 | ||
class BaseEntity | ||
attr_reader :response, :payload | ||
|
||
def initialize(response, payload = nil) | ||
@response = response | ||
@payload = payload || response&.parsed_body | ||
end | ||
|
||
def to_s | ||
simple_format | ||
end | ||
|
||
def inspect | ||
to_s | ||
end | ||
|
||
def simple_format | ||
JSON.pretty_generate(payload) | ||
end | ||
end | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# frozen_string_literal: true | ||
|
||
require 'time' | ||
|
||
module Yadisk | ||
class Client | ||
module Entities | ||
module V1 | ||
class Disk < BaseEntity | ||
# https://yandex.ru/dev/disk-api/doc/ru/reference/response-objects#disk | ||
|
||
def paid_max_file_size = payload&.dig('paid_max_file_size') | ||
def max_file_size = payload&.dig('max_file_size') | ||
def total_space = payload&.dig('total_space') | ||
def trash_size = payload&.dig('trash_size') | ||
def used_space = payload&.dig('used_space') | ||
def is_paid = payload&.dig('is_paid') | ||
def reg_time = payload&.dig('reg_time').then { |v| v ? Time.parse(v) : nil } | ||
def system_folders = payload&.dig('system_folders').then { |p| p ? SystemFolders.new(nil, p) : nil } | ||
def user = payload&.dig('user').then { |p| p ? User.new(nil, p) : nil } | ||
def unlimited_autoupload_enabled = payload&.dig('unlimited_autoupload_enabled') | ||
def revision = payload&.dig('revision') | ||
|
||
class SystemFolders < BaseEntity | ||
def odnoklassniki = payload&.dig('odnoklassniki') | ||
def google = payload&.dig('google') | ||
def instagram = payload&.dig('instagram') | ||
def vkontakte = payload&.dig('vkontakte') | ||
def attach = payload&.dig('attach') | ||
def mailru = payload&.dig('mailru') | ||
def downloads = payload&.dig('downloads') | ||
def applications = payload&.dig('applications') | ||
def facebook = payload&.dig('facebook') | ||
def social = payload&.dig('social') | ||
def messenger = payload&.dig('messenger') | ||
def calendar = payload&.dig('calendar') | ||
def photostream = payload&.dig('photostream') | ||
def screenshots = payload&.dig('screenshots') | ||
def scans = payload&.dig('scans') | ||
end | ||
|
||
class User < BaseEntity | ||
def reg_time = payload&.dig('reg_time').then { |v| v ? Time.parse(v) : nil } | ||
def display_name = payload&.dig('display_name') | ||
def uid = payload&.dig('uid') | ||
def country = payload&.dig('country') | ||
def is_child = payload&.dig('is_child') | ||
def login = payload&.dig('login') | ||
end | ||
end | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# frozen_string_literal: true | ||
|
||
module Yadisk | ||
class Client | ||
module Entities | ||
module V1 | ||
class Error < BaseEntity | ||
# https://yandex.ru/dev/disk-api/doc/ru/reference/response-objects#error | ||
def message = payload&.dig('message') | ||
def description = payload&.dig('description') | ||
def error = payload&.dig('description') | ||
end | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# frozen_string_literal: true | ||
|
||
module Yadisk | ||
class Client | ||
module Entities | ||
module V1 | ||
class Link < BaseEntity | ||
# https://yandex.ru/dev/disk-api/doc/ru/reference/response-objects#link | ||
|
||
def href = payload&.dig('href') | ||
def method = payload&.dig('method') | ||
def templated = payload&.dig('templated') | ||
end | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# frozen_string_literal: true | ||
|
||
module Yadisk | ||
class Client | ||
module Entities | ||
module V1 | ||
class Operation < BaseEntity | ||
# https://yandex.ru/dev/disk-api/doc/ru/reference/response-objects#operation | ||
|
||
def status = payload&.dig('status') | ||
end | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
# frozen_string_literal: true | ||
|
||
module Yadisk | ||
class Client | ||
module Entities | ||
module V1 | ||
# @see https://yandex.ru/dev/disk-api/doc/ru/reference/response-objects#resource | ||
# @see https://yandex.ru/dev/disk/poligon/ | ||
class Resource < BaseEntity | ||
# Статус проверки антивирусом | ||
# @return [Hash, nil] | ||
def antivirus_status = payload&.dig('antivirus_status') | ||
|
||
# Идентификатор ресурса | ||
# @return [String, nil] | ||
def resource_id = payload&.dig('resource_id') | ||
|
||
# @return [ShareInfo, nil] | ||
def share = payload&.dig('share').then { |p| p ? ShareInfo.new(nil, p) : nil } | ||
|
||
# Ключ опубликованного ресурса | ||
# @return [String, nil] | ||
def public_key = payload&.dig('public_key') | ||
|
||
# @return [ResourceList, nil] | ||
def _embedded = payload&.dig('_embedded').then { |p| p ? ResourceList.new(nil, p) : nil } | ||
|
||
# @return [Exif, nil] | ||
def exif = payload&.dig('exif').then { |p| p ? Exif.new(nil, p) : nil } | ||
|
||
# Дата создания фото или видео файла | ||
# @return [Time, nil] | ||
def photoslice_time = payload&.dig('photoslice_time').then { |v| v ? Time.parse(v) : nil } | ||
|
||
# Имя | ||
# @return [String, nil] | ||
def name = payload&.dig('name') | ||
|
||
# Дата создания | ||
# @return [Time, nil] | ||
def created = payload&.dig('created').then { |v| v ? Time.parse(v) : nil } | ||
|
||
# Пользовательские атрибуты ресурса | ||
# @return [Hash, nil] | ||
def custom_properties = payload&.dig('custom_properties') | ||
|
||
# Публичный URL | ||
# @return [String, nil] | ||
def public_url = payload&.dig('public_url') | ||
|
||
# URL для скачивания файла | ||
# @return [String, nil] | ||
def file = payload&.dig('file') | ||
|
||
# Путь к ресурсу до перемещения в Корзину. | ||
# Включается в ответ только для запроса метаинформации о ресурсе в Корзине. | ||
# @return [String, nil] | ||
def origin_path = payload&.dig('origin_path') | ||
|
||
# Дата изменения> | ||
# @return [Time, nil] | ||
def modified = payload&.dig('modified').then { |v| v ? Time.parse(v) : nil } | ||
|
||
# Путь к ресурсу | ||
# @return [String, nil] | ||
def path = payload&.dig('path') | ||
|
||
# MD5-хэш | ||
# @return [String, nil] | ||
def md5 = payload&.dig('md5') | ||
|
||
# SHA256-хэш | ||
# @return [String, nil] | ||
def sha256 = payload&.dig('sha256') | ||
|
||
# Тип | ||
# @return [String] | ||
def type = payload&.dig('type') | ||
|
||
# MIME-тип файла | ||
# @return [String, nil] | ||
def mime_type = payload&.dig('mime_type') | ||
|
||
# Размер файла | ||
# @return [Integer, nil] | ||
def size = payload&.dig('size') | ||
|
||
# Определённый Диском тип файла | ||
# @return [String, nil] | ||
def media_type = payload&.dig('media_type') | ||
|
||
# URL превью файла | ||
# @return [String, nil] | ||
def preview = payload&.dig('preview') | ||
|
||
# Ревизия Диска в которой этот ресурс был изменён последний раз | ||
# @return [Integer, nil] | ||
def revision = payload&.dig('revision') | ||
|
||
# Все размеры превью с URL для скачивания | ||
# @return [Array<Preview>, nil] | ||
def sizes = payload&.dig('sizes')&.map { |p| Preview.new(nil, p) } | ||
|
||
# @return [CommentIds, nil] | ||
def comment_ids = payload&.dig('comment_ids').then { |p| p ? CommentIds.new(nil, p) : nil } | ||
|
||
class ShareInfo < BaseEntity | ||
# Признак того, что папка является корневой в группе | ||
# @return [Boolean, nil] | ||
def is_root = payload&.dig('is_root') | ||
|
||
# Признак, что текущий пользователь является владельцем общей папки | ||
# @return [Boolean, nil] | ||
def is_owned = payload&.dig('is_owned') | ||
|
||
# Права доступа | ||
# @return [String, nil] | ||
def rights = payload&.dig('rights') | ||
|
||
alias_method :root?, :is_root | ||
alias_method :owned?, :is_owned | ||
end | ||
|
||
class Exif < BaseEntity | ||
# Дата съёмки | ||
# @return [Time, nil] | ||
def date_time = payload&.dig('date_time').then { |v| v ? Time.parse(v) : nil } | ||
|
||
# Координата съемки (долгота) | ||
# @return [Hash, nil] | ||
def gps_longitude = payload&.dig('gps_longitude') | ||
|
||
# Координата съемки (широта) | ||
# @return [Hash, nil] | ||
def gps_latitude = payload&.dig('gps_latitude') | ||
end | ||
|
||
class Preview < BaseEntity | ||
# Ссылка на скачивание превью | ||
# @return [String, nil] | ||
def url = payload&.dig('url') | ||
|
||
# Название (размер) превью | ||
# @return [String, nil] | ||
def name = payload&.dig('name') | ||
end | ||
|
||
class CommentIds < BaseEntity | ||
# Идентификатор комментариев для приватных ресурсов | ||
# @return [String, nil] | ||
def private_resource = payload&.dig('private_resource') | ||
|
||
# Идентификатор комментариев для публичных ресурсов | ||
# @return [String, nil] | ||
def public_resource = payload&.dig('public_resource') | ||
end | ||
end | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
# frozen_string_literal: true | ||
|
||
module Yadisk | ||
class Client | ||
module Entities | ||
module V1 | ||
# @see https://yandex.ru/dev/disk-api/doc/ru/reference/response-objects#resourcelist | ||
# @see https://yandex.ru/dev/disk/poligon/ | ||
class ResourceList < BaseEntity | ||
# Поле, по которому отсортирован список | ||
# @return [String, nil] | ||
def sort = payload&.dig('sort') | ||
|
||
# Ключ опубликованной папки, в которой содержатся ресурсы из данного списка. | ||
# Включается только в ответ на запрос метаинформации о публичной папке. | ||
# @return [String, nil] | ||
def public_key = payload&.dig('public_key') | ||
|
||
# Элементы списка / Массив ресурсов (Resource), содержащихся в папке. | ||
# Вне зависимости от запрошенной сортировки, ресурсы в массиве упорядочены по их виду: | ||
# сначала перечисляются все вложенные папки, затем — вложенные файлы. | ||
# @return [Array<Resource>, nil] | ||
def items = payload&.dig('items')&.map { |p| Resource.new(nil, p) } | ||
|
||
# Количество элементов на странице | ||
# @return [Integer, nil] | ||
def limit = payload&.dig('limit') | ||
|
||
# Смещение от начала списка | ||
# @return [Integer, nil] | ||
def offset = payload&.dig('offset') | ||
|
||
# Путь к ресурсу, для которого построен список | ||
# @return [String] | ||
def path = payload&.dig('path') | ||
|
||
# Общее количество элементов в списке | ||
# @return [Integer, nil] | ||
def total = payload&.dig('total') | ||
end | ||
end | ||
end | ||
end | ||
end |