kinopoisk_dev_api 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.env.example +1 -0
- data/.rspec +3 -0
- data/.rubocop.yml +23 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +118 -0
- data/Rakefile +17 -0
- data/data/type_attributes.json +1624 -0
- data/lib/kinopoisk_dev_api/client.rb +98 -0
- data/lib/kinopoisk_dev_api/configuration.rb +13 -0
- data/lib/kinopoisk_dev_api/endpoints.rb +75 -0
- data/lib/kinopoisk_dev_api/exceptions/base.rb +7 -0
- data/lib/kinopoisk_dev_api/exceptions/response_error.rb +35 -0
- data/lib/kinopoisk_dev_api/inflector.rb +16 -0
- data/lib/kinopoisk_dev_api/types/audience.rb +10 -0
- data/lib/kinopoisk_dev_api/types/base.rb +12 -0
- data/lib/kinopoisk_dev_api/types/birth_place.rb +9 -0
- data/lib/kinopoisk_dev_api/types/compactable.rb +19 -0
- data/lib/kinopoisk_dev_api/types/currency_value.rb +10 -0
- data/lib/kinopoisk_dev_api/types/death_place.rb +9 -0
- data/lib/kinopoisk_dev_api/types/episode_v1_4.rb +22 -0
- data/lib/kinopoisk_dev_api/types/external_id.rb +12 -0
- data/lib/kinopoisk_dev_api/types/fact_in_movie.rb +11 -0
- data/lib/kinopoisk_dev_api/types/fact_in_person.rb +9 -0
- data/lib/kinopoisk_dev_api/types/fees.rb +11 -0
- data/lib/kinopoisk_dev_api/types/image.rb +21 -0
- data/lib/kinopoisk_dev_api/types/image_docs_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/item_name.rb +9 -0
- data/lib/kinopoisk_dev_api/types/keyword.rb +15 -0
- data/lib/kinopoisk_dev_api/types/keyword_docs_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/linked_movie_v1_4.rb +21 -0
- data/lib/kinopoisk_dev_api/types/list.rb +18 -0
- data/lib/kinopoisk_dev_api/types/list_docs_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/logo.rb +9 -0
- data/lib/kinopoisk_dev_api/types/meili_person_entity_v1_4.rb +26 -0
- data/lib/kinopoisk_dev_api/types/movie.rb +11 -0
- data/lib/kinopoisk_dev_api/types/movie_award.rb +16 -0
- data/lib/kinopoisk_dev_api/types/movie_award_docs_response_dto.rb +13 -0
- data/lib/kinopoisk_dev_api/types/movie_docs_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/movie_dto_v1_4.rb +76 -0
- data/lib/kinopoisk_dev_api/types/movie_from_keyword.rb +9 -0
- data/lib/kinopoisk_dev_api/types/movie_from_studio.rb +9 -0
- data/lib/kinopoisk_dev_api/types/movie_in_person.rb +17 -0
- data/lib/kinopoisk_dev_api/types/name.rb +11 -0
- data/lib/kinopoisk_dev_api/types/network_item_v1_4.rb +13 -0
- data/lib/kinopoisk_dev_api/types/networks_v1_4.rb +12 -0
- data/lib/kinopoisk_dev_api/types/nomination.rb +10 -0
- data/lib/kinopoisk_dev_api/types/nomination_award.rb +10 -0
- data/lib/kinopoisk_dev_api/types/pattern_matching.rb +11 -0
- data/lib/kinopoisk_dev_api/types/person.rb +32 -0
- data/lib/kinopoisk_dev_api/types/person_award.rb +17 -0
- data/lib/kinopoisk_dev_api/types/person_award_docs_response_dto.rb +13 -0
- data/lib/kinopoisk_dev_api/types/person_docs_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/person_in_movie.rb +17 -0
- data/lib/kinopoisk_dev_api/types/possible_value_dto.rb +10 -0
- data/lib/kinopoisk_dev_api/types/premiere.rb +15 -0
- data/lib/kinopoisk_dev_api/types/profession.rb +9 -0
- data/lib/kinopoisk_dev_api/types/rating.rb +16 -0
- data/lib/kinopoisk_dev_api/types/review.rb +28 -0
- data/lib/kinopoisk_dev_api/types/review_docs_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/review_info.rb +12 -0
- data/lib/kinopoisk_dev_api/types/search_movie_dto_v1_4.rb +53 -0
- data/lib/kinopoisk_dev_api/types/search_movie_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/search_person_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/season_docs_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/season_info.rb +11 -0
- data/lib/kinopoisk_dev_api/types/season_v1_4.rb +31 -0
- data/lib/kinopoisk_dev_api/types/short_image.rb +11 -0
- data/lib/kinopoisk_dev_api/types/spouses.rb +16 -0
- data/lib/kinopoisk_dev_api/types/studio.rb +18 -0
- data/lib/kinopoisk_dev_api/types/studio_docs_response_dto_v1_4.rb +16 -0
- data/lib/kinopoisk_dev_api/types/video.rb +13 -0
- data/lib/kinopoisk_dev_api/types/video_types.rb +9 -0
- data/lib/kinopoisk_dev_api/types/votes.rb +16 -0
- data/lib/kinopoisk_dev_api/types/watchability.rb +9 -0
- data/lib/kinopoisk_dev_api/types/watchability_item.rb +11 -0
- data/lib/kinopoisk_dev_api/types/year_range.rb +10 -0
- data/lib/kinopoisk_dev_api/types.rb +7 -0
- data/lib/kinopoisk_dev_api/version.rb +5 -0
- data/lib/kinopoisk_dev_api.rb +25 -0
- data/rakelib/parse_schema.rake +90 -0
- data/rakelib/rebuild_types.rake +95 -0
- data/rakelib/templates/empty_type.erb +9 -0
- data/rakelib/templates/type.erb +24 -0
- metadata +169 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KinopoiskDevApi
|
4
|
+
module Types
|
5
|
+
class Votes < Base
|
6
|
+
attribute? :kp, Types::Coercible::String.optional
|
7
|
+
attribute? :imdb, Types::Float | Types::Integer.optional
|
8
|
+
attribute? :tmdb, Types::Float | Types::Integer.optional
|
9
|
+
attribute? :filmCritics, Types::Float | Types::Integer.optional
|
10
|
+
attribute? :russianFilmCritics, Types::Float | Types::Integer.optional
|
11
|
+
attribute? :await, Types::Float | Types::Integer.optional
|
12
|
+
alias film_critics filmCritics
|
13
|
+
alias russian_film_critics russianFilmCritics
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "json"
|
4
|
+
require "faraday"
|
5
|
+
require "zeitwerk"
|
6
|
+
require "dry-struct"
|
7
|
+
require "kinopoisk_dev_api/inflector"
|
8
|
+
|
9
|
+
loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
|
10
|
+
loader.inflector = KinopoiskDevApi::Inflector.new(__FILE__)
|
11
|
+
loader.setup
|
12
|
+
|
13
|
+
module KinopoiskDevApi
|
14
|
+
class << self
|
15
|
+
attr_writer :configuration
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.configuration
|
19
|
+
@configuration ||= Configuration.new
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.configure
|
23
|
+
yield(configuration)
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "openapi3_parser"
|
4
|
+
|
5
|
+
INCONSISTENT_TYPES = %w[Keyword Studio].freeze
|
6
|
+
|
7
|
+
# rubocop:disable Metrics/BlockLength
|
8
|
+
desc "Parse types from public json, should be up to date https://api.kinopoisk.dev/documentation-json"
|
9
|
+
task :parse_schema do
|
10
|
+
document = Openapi3Parser.load_url("https://api.kinopoisk.dev/documentation-json")
|
11
|
+
|
12
|
+
result = document.components.schemas.to_h do |type_name, schema|
|
13
|
+
type_schema = schema.properties.to_h do |property_name, property_schema|
|
14
|
+
attribute = { type: parse_initial_type(property_schema, property_name) }
|
15
|
+
|
16
|
+
unless property_schema.any_of.nil?
|
17
|
+
attribute[:type] = property_schema.any_of.map { |item| property_schema.name || item.name || item.type }.uniq
|
18
|
+
end
|
19
|
+
|
20
|
+
attribute[:type] = attribute[:type].join if attribute[:type]&.length == 1
|
21
|
+
|
22
|
+
attribute[:nullable] = property_schema.nullable?
|
23
|
+
|
24
|
+
attribute[:required] = true if required_keys(schema).include?(property_name)
|
25
|
+
|
26
|
+
# getting required values from the description, no values in json 😔
|
27
|
+
required_value = property_schema.description&.match(/always “(.+)”|must be \*(.+)\*/)
|
28
|
+
attribute[:required_value] = (required_value[1] || required_value[2]).delete("\\") if required_value
|
29
|
+
|
30
|
+
# for some reason every property's minLength is 0 by default, probably parser bug, had to ignore that
|
31
|
+
attribute[:min_size] = property_schema[:minLength] if property_schema[:minLength] != 0
|
32
|
+
attribute[:max_size] = property_schema[:maxLength] if property_schema[:maxLength]
|
33
|
+
|
34
|
+
attribute[:items] = property_schema.items.type if property_schema&.items
|
35
|
+
if property_schema&.type == "array" && property_schema&.items&.type.nil?
|
36
|
+
attribute[:items] = property_schema&.items&.name
|
37
|
+
end
|
38
|
+
|
39
|
+
attribute[:items] = property_schema.items.name if property_schema&.items&.type == "object"
|
40
|
+
|
41
|
+
# array of arrays
|
42
|
+
if property_schema&.items&.type == "array"
|
43
|
+
attribute[:items] = { type: "array", items: property_schema.items.items.name }
|
44
|
+
end
|
45
|
+
|
46
|
+
# FIXME: dirty hack in case of https://github.com/mdwitr0/kinopoiskdev/issues/173
|
47
|
+
attribute[:nullable] = true if type_name == "Person" && property_name == "countAwards"
|
48
|
+
if INCONSISTENT_TYPES.include?(type_name) && property_name == "movies"
|
49
|
+
attribute[:items] = attribute[:type]
|
50
|
+
attribute[:type] = "array"
|
51
|
+
end
|
52
|
+
|
53
|
+
attribute = apply_default_schema(attribute, property_schema)
|
54
|
+
[property_name, attribute]
|
55
|
+
end
|
56
|
+
|
57
|
+
# find empty classes
|
58
|
+
type_schema[:type] = schema.any_of.map(&:name) if schema.properties.empty? && schema.any_of
|
59
|
+
[type_name, type_schema]
|
60
|
+
end
|
61
|
+
|
62
|
+
# Drop Error Response Schemas
|
63
|
+
result.reject! { |type| type.end_with?("ErrorResponseDto") }
|
64
|
+
File.write "#{__dir__}/../data/type_attributes.json", JSON.pretty_generate(result)
|
65
|
+
end
|
66
|
+
# rubocop:enable Metrics/BlockLength
|
67
|
+
|
68
|
+
def required_keys(schema)
|
69
|
+
schema.required.to_a || []
|
70
|
+
end
|
71
|
+
|
72
|
+
def apply_default_schema(attribute, property_schema)
|
73
|
+
attribute[:default] = property_schema.default unless property_schema.default.nil?
|
74
|
+
# previous line would have been enough, but had to check the description due to issue: https://github.com/kevindew/openapi3_parser/issues/28
|
75
|
+
attribute[:default] = false if property_schema.description&.include?("Defaults to *false*")
|
76
|
+
attribute
|
77
|
+
end
|
78
|
+
|
79
|
+
def parse_initial_type(property_schema, property_name)
|
80
|
+
case property_schema.type
|
81
|
+
when nil
|
82
|
+
if property_schema.all_of.nil?
|
83
|
+
property_name.capitalize.gsub(/_(\w)/) { Regexp.last_match(1).upcase }
|
84
|
+
else
|
85
|
+
parse_initial_type(property_schema.all_of.first, property_schema.all_of.first.name)
|
86
|
+
end
|
87
|
+
when "object" then property_schema.name
|
88
|
+
else property_schema.type
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "json"
|
4
|
+
require "erb"
|
5
|
+
DRY_TYPES = %w[string integer float decimal array hash symbol boolean date date_time time range].freeze
|
6
|
+
|
7
|
+
# rubocop:disable Metrics/BlockLength
|
8
|
+
desc "Rebuild types"
|
9
|
+
task :rebuild_types do
|
10
|
+
types = JSON.parse(File.read("#{__dir__}/../data/type_attributes.json"), symbolize_names: true)
|
11
|
+
|
12
|
+
types.each_pair do |name, attributes|
|
13
|
+
# currently there is no empty types
|
14
|
+
next build_empty_type(name, attributes) if attributes[:type].instance_of?(Array)
|
15
|
+
|
16
|
+
attributes.each_pair do |attr_name, properties|
|
17
|
+
attributes[attr_name][:type] = add_module_types(properties[:type]) unless properties[:type].is_a?(Array)
|
18
|
+
if properties[:type].is_a?(Array)
|
19
|
+
attributes[attr_name][:type] = properties[:type].map do |type|
|
20
|
+
add_module_types(type)
|
21
|
+
end.join(" | ")
|
22
|
+
end
|
23
|
+
|
24
|
+
if properties[:items].instance_of?(String)
|
25
|
+
attributes[attr_name][:type] += ".of(#{add_module_types(properties[:items])})"
|
26
|
+
elsif properties[:items] && properties[:items][:type] == "array"
|
27
|
+
attributes[attr_name][:type] += ".of(Types::Array.of(#{properties[:items][:items]}))"
|
28
|
+
end
|
29
|
+
original_type = properties[:type]
|
30
|
+
|
31
|
+
attributes = apply_required(attributes, attr_name, properties, original_type)
|
32
|
+
attributes = apply_min_max(attributes, attr_name, properties)
|
33
|
+
attributes = apply_default(attributes, attr_name, properties, original_type)
|
34
|
+
|
35
|
+
attributes[attr_name][:type] = "Types::True" if attributes[attr_name][:type] == "Types::Boolean.default(true)"
|
36
|
+
attributes[attr_name][:type] = attributes[attr_name][:type].gsub("Types::Boolean", "Types::Bool")
|
37
|
+
attributes[attr_name][:type] += ".optional" if properties[:nullable]
|
38
|
+
end
|
39
|
+
|
40
|
+
File.write "#{__dir__}/../lib/kinopoisk_dev_api/types/#{underscore(name)}.rb",
|
41
|
+
ERB.new(File.read("#{__dir__}/templates/type.erb")).result(binding).gsub(/^\s+\n/, "")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
# rubocop:enable Metrics/BlockLength
|
45
|
+
|
46
|
+
def build_empty_type(name, attributes)
|
47
|
+
attributes = attributes[:type].join(" |\n ")
|
48
|
+
File.write "#{__dir__}/../lib/kinopoisk_dev_api/types/#{underscore(name)}.rb",
|
49
|
+
ERB.new(File.read("#{__dir__}/templates/empty_type.erb")).result(binding).gsub(/^\s+\n/, "")
|
50
|
+
end
|
51
|
+
|
52
|
+
def apply_default(attributes, attr_name, properties, original_type)
|
53
|
+
return attributes if properties[:default].nil?
|
54
|
+
|
55
|
+
attributes[attr_name][:type] += ".default(#{typecast(original_type,
|
56
|
+
properties[:default])})"
|
57
|
+
attributes
|
58
|
+
end
|
59
|
+
|
60
|
+
def apply_required(attributes, attr_name, properties, original_type)
|
61
|
+
return attributes unless properties[:required_value]
|
62
|
+
|
63
|
+
attributes[attr_name][:type] += ".constrained(eql: #{typecast(original_type,
|
64
|
+
properties[:required_value])})"
|
65
|
+
attributes
|
66
|
+
end
|
67
|
+
|
68
|
+
def apply_min_max(attributes, attr_name, properties)
|
69
|
+
return attributes unless properties[:min_size] || properties[:max_size]
|
70
|
+
|
71
|
+
constrain = ".constrained(minmax)"
|
72
|
+
constrain = properties[:min_size] ? constrain.gsub("min", "min_size: #{properties[:min_size]}, ") : ""
|
73
|
+
constrain = constrain.gsub("max", "max_size: #{properties[:max_size]}") if properties[:max_size]
|
74
|
+
attributes[attr_name][:type] += constrain
|
75
|
+
attributes
|
76
|
+
end
|
77
|
+
|
78
|
+
def add_module_types(type)
|
79
|
+
return %w[Types::Float Types::Integer] if type == "number"
|
80
|
+
return "Types::Coercible::String" if type == "string"
|
81
|
+
|
82
|
+
DRY_TYPES.include?(type) ? "Types::#{type.capitalize}" : type
|
83
|
+
end
|
84
|
+
|
85
|
+
def underscore(camel_cased_word)
|
86
|
+
camel_cased_word.to_s.gsub("::", "/")
|
87
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
88
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
89
|
+
.tr("-", "_")
|
90
|
+
.downcase
|
91
|
+
end
|
92
|
+
|
93
|
+
def typecast(type, obj)
|
94
|
+
type == "Types::Coercible::String" ? "'#{obj}'" : obj
|
95
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KinopoiskDevApi
|
4
|
+
module Types
|
5
|
+
<% if name.to_s.include?('_') %>
|
6
|
+
## Just for classes consistency
|
7
|
+
# rubocop:disable Naming/ClassAndModuleCamelCase
|
8
|
+
<% end %>
|
9
|
+
class <%= name %> < Base
|
10
|
+
<% attributes.each_pair do |name, properties| %>
|
11
|
+
<%= "attribute? :#{name}, #{properties[:type]}" %>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<% attributes.each_key do |name| %>
|
15
|
+
<% underscore_name = name.to_s.gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase %>
|
16
|
+
<% next if name.to_s == underscore_name %>
|
17
|
+
<%= "alias_method :#{underscore_name}, :#{name}" %>
|
18
|
+
<% end %>
|
19
|
+
end
|
20
|
+
<% if name.to_s.include?('_') %>
|
21
|
+
# rubocop:enable Naming/ClassAndModuleCamelCase
|
22
|
+
<% end %>
|
23
|
+
end
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kinopoisk_dev_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Aleksandr Klimenkov
|
8
|
+
bindir: exe
|
9
|
+
cert_chain: []
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
|
+
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: dry-struct
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '1.6'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '1.6'
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: faraday
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2.0'
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: zeitwerk
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2.6'
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.6'
|
54
|
+
email:
|
55
|
+
- prisioner@mail.ru
|
56
|
+
executables: []
|
57
|
+
extensions: []
|
58
|
+
extra_rdoc_files: []
|
59
|
+
files:
|
60
|
+
- ".env.example"
|
61
|
+
- ".rspec"
|
62
|
+
- ".rubocop.yml"
|
63
|
+
- CHANGELOG.md
|
64
|
+
- LICENSE.txt
|
65
|
+
- README.md
|
66
|
+
- Rakefile
|
67
|
+
- data/type_attributes.json
|
68
|
+
- lib/kinopoisk_dev_api.rb
|
69
|
+
- lib/kinopoisk_dev_api/client.rb
|
70
|
+
- lib/kinopoisk_dev_api/configuration.rb
|
71
|
+
- lib/kinopoisk_dev_api/endpoints.rb
|
72
|
+
- lib/kinopoisk_dev_api/exceptions/base.rb
|
73
|
+
- lib/kinopoisk_dev_api/exceptions/response_error.rb
|
74
|
+
- lib/kinopoisk_dev_api/inflector.rb
|
75
|
+
- lib/kinopoisk_dev_api/types.rb
|
76
|
+
- lib/kinopoisk_dev_api/types/audience.rb
|
77
|
+
- lib/kinopoisk_dev_api/types/base.rb
|
78
|
+
- lib/kinopoisk_dev_api/types/birth_place.rb
|
79
|
+
- lib/kinopoisk_dev_api/types/compactable.rb
|
80
|
+
- lib/kinopoisk_dev_api/types/currency_value.rb
|
81
|
+
- lib/kinopoisk_dev_api/types/death_place.rb
|
82
|
+
- lib/kinopoisk_dev_api/types/episode_v1_4.rb
|
83
|
+
- lib/kinopoisk_dev_api/types/external_id.rb
|
84
|
+
- lib/kinopoisk_dev_api/types/fact_in_movie.rb
|
85
|
+
- lib/kinopoisk_dev_api/types/fact_in_person.rb
|
86
|
+
- lib/kinopoisk_dev_api/types/fees.rb
|
87
|
+
- lib/kinopoisk_dev_api/types/image.rb
|
88
|
+
- lib/kinopoisk_dev_api/types/image_docs_response_dto_v1_4.rb
|
89
|
+
- lib/kinopoisk_dev_api/types/item_name.rb
|
90
|
+
- lib/kinopoisk_dev_api/types/keyword.rb
|
91
|
+
- lib/kinopoisk_dev_api/types/keyword_docs_response_dto_v1_4.rb
|
92
|
+
- lib/kinopoisk_dev_api/types/linked_movie_v1_4.rb
|
93
|
+
- lib/kinopoisk_dev_api/types/list.rb
|
94
|
+
- lib/kinopoisk_dev_api/types/list_docs_response_dto_v1_4.rb
|
95
|
+
- lib/kinopoisk_dev_api/types/logo.rb
|
96
|
+
- lib/kinopoisk_dev_api/types/meili_person_entity_v1_4.rb
|
97
|
+
- lib/kinopoisk_dev_api/types/movie.rb
|
98
|
+
- lib/kinopoisk_dev_api/types/movie_award.rb
|
99
|
+
- lib/kinopoisk_dev_api/types/movie_award_docs_response_dto.rb
|
100
|
+
- lib/kinopoisk_dev_api/types/movie_docs_response_dto_v1_4.rb
|
101
|
+
- lib/kinopoisk_dev_api/types/movie_dto_v1_4.rb
|
102
|
+
- lib/kinopoisk_dev_api/types/movie_from_keyword.rb
|
103
|
+
- lib/kinopoisk_dev_api/types/movie_from_studio.rb
|
104
|
+
- lib/kinopoisk_dev_api/types/movie_in_person.rb
|
105
|
+
- lib/kinopoisk_dev_api/types/name.rb
|
106
|
+
- lib/kinopoisk_dev_api/types/network_item_v1_4.rb
|
107
|
+
- lib/kinopoisk_dev_api/types/networks_v1_4.rb
|
108
|
+
- lib/kinopoisk_dev_api/types/nomination.rb
|
109
|
+
- lib/kinopoisk_dev_api/types/nomination_award.rb
|
110
|
+
- lib/kinopoisk_dev_api/types/pattern_matching.rb
|
111
|
+
- lib/kinopoisk_dev_api/types/person.rb
|
112
|
+
- lib/kinopoisk_dev_api/types/person_award.rb
|
113
|
+
- lib/kinopoisk_dev_api/types/person_award_docs_response_dto.rb
|
114
|
+
- lib/kinopoisk_dev_api/types/person_docs_response_dto_v1_4.rb
|
115
|
+
- lib/kinopoisk_dev_api/types/person_in_movie.rb
|
116
|
+
- lib/kinopoisk_dev_api/types/possible_value_dto.rb
|
117
|
+
- lib/kinopoisk_dev_api/types/premiere.rb
|
118
|
+
- lib/kinopoisk_dev_api/types/profession.rb
|
119
|
+
- lib/kinopoisk_dev_api/types/rating.rb
|
120
|
+
- lib/kinopoisk_dev_api/types/review.rb
|
121
|
+
- lib/kinopoisk_dev_api/types/review_docs_response_dto_v1_4.rb
|
122
|
+
- lib/kinopoisk_dev_api/types/review_info.rb
|
123
|
+
- lib/kinopoisk_dev_api/types/search_movie_dto_v1_4.rb
|
124
|
+
- lib/kinopoisk_dev_api/types/search_movie_response_dto_v1_4.rb
|
125
|
+
- lib/kinopoisk_dev_api/types/search_person_response_dto_v1_4.rb
|
126
|
+
- lib/kinopoisk_dev_api/types/season_docs_response_dto_v1_4.rb
|
127
|
+
- lib/kinopoisk_dev_api/types/season_info.rb
|
128
|
+
- lib/kinopoisk_dev_api/types/season_v1_4.rb
|
129
|
+
- lib/kinopoisk_dev_api/types/short_image.rb
|
130
|
+
- lib/kinopoisk_dev_api/types/spouses.rb
|
131
|
+
- lib/kinopoisk_dev_api/types/studio.rb
|
132
|
+
- lib/kinopoisk_dev_api/types/studio_docs_response_dto_v1_4.rb
|
133
|
+
- lib/kinopoisk_dev_api/types/video.rb
|
134
|
+
- lib/kinopoisk_dev_api/types/video_types.rb
|
135
|
+
- lib/kinopoisk_dev_api/types/votes.rb
|
136
|
+
- lib/kinopoisk_dev_api/types/watchability.rb
|
137
|
+
- lib/kinopoisk_dev_api/types/watchability_item.rb
|
138
|
+
- lib/kinopoisk_dev_api/types/year_range.rb
|
139
|
+
- lib/kinopoisk_dev_api/version.rb
|
140
|
+
- rakelib/parse_schema.rake
|
141
|
+
- rakelib/rebuild_types.rake
|
142
|
+
- rakelib/templates/empty_type.erb
|
143
|
+
- rakelib/templates/type.erb
|
144
|
+
homepage: https://github.com/prisioner/kinopoisk_dev_api
|
145
|
+
licenses:
|
146
|
+
- MIT
|
147
|
+
metadata:
|
148
|
+
rubygems_mfa_required: 'true'
|
149
|
+
homepage_uri: https://github.com/prisioner/kinopoisk_dev_api
|
150
|
+
source_code_uri: https://github.com/prisioner/kinopoisk_dev_api
|
151
|
+
changelog_uri: https://github.com/prisioner/kinopoisk_dev_api/blob/master/CHANGELOG.md
|
152
|
+
rdoc_options: []
|
153
|
+
require_paths:
|
154
|
+
- lib
|
155
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '2.7'
|
160
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - ">="
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '0'
|
165
|
+
requirements: []
|
166
|
+
rubygems_version: 3.6.7
|
167
|
+
specification_version: 4
|
168
|
+
summary: Ruby wrapper for unofficial Kinopoisk API
|
169
|
+
test_files: []
|