filmweb_api 0.1.1.1
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
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 985dfe043d8a07a2afe3e09fbe4de3eba74645859c31b23c4254734fd9bad13a
|
4
|
+
data.tar.gz: f816c8312caedfe67f52d1a59d02c1a7796f23a8b53daf011717336dfc107bee
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a4974cb74ff4e5868d5010910b260b442b83bf14a62f138a9fa6a8f65b398829325e2dab481ea3acebc507d0f71c403eedc758a28d7a80d250ad05ecdf87dfaa
|
7
|
+
data.tar.gz: 7b65f5c5d9c8741a2eecfd74a28eaf653e585fa5de587f02f7a1e01db695a6688bf5772aed3aa5e7d67c5ddb0a9903681d26099f9734710ca16d9afa79f5d083
|
data/lib/filmweb_api.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'csv'
|
2
|
+
require 'active_support/all'
|
3
|
+
require 'filmweb_api/method_handlers/get_film_info_full_handler'
|
4
|
+
|
5
|
+
class FilmwebApi
|
6
|
+
attr_reader :method, :attributes
|
7
|
+
|
8
|
+
def initialize(method:, **attributes)
|
9
|
+
@method = method
|
10
|
+
@attributes = attributes
|
11
|
+
end
|
12
|
+
|
13
|
+
def get
|
14
|
+
raise ArgumentError.new("Passed method not supported") unless method_defined?
|
15
|
+
raise ArgumentError.new("You need to pass all required attributes for that method") unless correct_attributes_for_method?
|
16
|
+
method_handler.new(attributes.slice(*method_handler::REQUEST_ATTRIBUTES)).call
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def method_defined?
|
22
|
+
defined?(method_handler) == "method"
|
23
|
+
end
|
24
|
+
|
25
|
+
def correct_attributes_for_method?
|
26
|
+
method_handler::REQUEST_ATTRIBUTES.all? { |sym| attributes.key?(sym) }
|
27
|
+
end
|
28
|
+
|
29
|
+
def method_handler
|
30
|
+
"#{method.slice(0,1).capitalize + method.slice(1..-1)}Handler".constantize
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'filmweb_api/services/make_filmweb_request'
|
2
|
+
|
3
|
+
class GetFilmInfoFullHandler
|
4
|
+
REQUEST_ATTRIBUTES = [
|
5
|
+
:movie_id
|
6
|
+
].freeze
|
7
|
+
|
8
|
+
RESPONSE_KEYS = [
|
9
|
+
:title,
|
10
|
+
:originalTitle,
|
11
|
+
:avgRate,
|
12
|
+
:votesCount,
|
13
|
+
:genres,
|
14
|
+
:year,
|
15
|
+
:duration,
|
16
|
+
:commentsCount,
|
17
|
+
:forumUrl,
|
18
|
+
:hasReview,
|
19
|
+
:hasDescription,
|
20
|
+
:imagePath,
|
21
|
+
:video,
|
22
|
+
:premiereWorld,
|
23
|
+
:premiereCountry,
|
24
|
+
:filmType,
|
25
|
+
:seasonsCount,
|
26
|
+
:episodesCount,
|
27
|
+
:countriesString,
|
28
|
+
:desciption
|
29
|
+
].freeze
|
30
|
+
|
31
|
+
private_constant :RESPONSE_KEYS
|
32
|
+
|
33
|
+
attr_reader :attributes, :movie_id
|
34
|
+
|
35
|
+
def initialize(**attributes)
|
36
|
+
@attributes = attributes
|
37
|
+
@movie_id = attributes[:movie_id]
|
38
|
+
end
|
39
|
+
|
40
|
+
def call
|
41
|
+
raise ArgumentError.new("You need to pass all required attributes for that method") unless all_required_attributes?
|
42
|
+
Hash[RESPONSE_KEYS.zip(filmweb_response)]
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def all_required_attributes?
|
48
|
+
REQUEST_ATTRIBUTES.all? { |sym| attributes.key?(sym) }
|
49
|
+
end
|
50
|
+
|
51
|
+
def filmweb_response
|
52
|
+
@filmweb_response ||= MakeFilmwebRequest.new(method: "getFilmInfoFull", movie_id: movie_id).call
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'digest/md5'
|
2
|
+
require 'json'
|
3
|
+
require 'rest-client'
|
4
|
+
|
5
|
+
class MakeFilmwebRequest
|
6
|
+
HEADERS = {
|
7
|
+
content_type: 'application/json',
|
8
|
+
accept: 'application/json',
|
9
|
+
user_agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
|
10
|
+
}.freeze
|
11
|
+
API_VERSION = "1.0".freeze
|
12
|
+
API_URL = "https://ssl.filmweb.pl/api?".freeze
|
13
|
+
API_KEY = "qjcGhW2JnvGT9dfCt3uT_jozR3s".freeze
|
14
|
+
APP_PLATFORM = "android".freeze
|
15
|
+
|
16
|
+
private_constant :HEADERS, :API_VERSION, :API_KEY, :API_URL, :APP_PLATFORM
|
17
|
+
|
18
|
+
attr_reader :method, :attribute_values
|
19
|
+
|
20
|
+
def initialize(method:, **attributes)
|
21
|
+
@method = method
|
22
|
+
@attribute_values = attributes.values.join(", ")
|
23
|
+
end
|
24
|
+
|
25
|
+
def call
|
26
|
+
cleaned_response_body
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def request_params
|
32
|
+
{
|
33
|
+
version: API_VERSION,
|
34
|
+
appId: APP_PLATFORM,
|
35
|
+
methods: "#{method} [#{attribute_values}]\\n",
|
36
|
+
signature: generate_signature
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
def cleaned_response_body
|
41
|
+
@cleaned_response_body = brackets_data_from_response.parse_csv
|
42
|
+
end
|
43
|
+
|
44
|
+
def brackets_data_from_response
|
45
|
+
raise ActionController::RoutingError, 'Not Found' unless api_response_body[/\[.*?\]/].present?
|
46
|
+
api_response_body[/\[.*?\]/].gsub!('[', '').gsub!(']', '').gsub!("null", "")
|
47
|
+
end
|
48
|
+
|
49
|
+
def generate_signature
|
50
|
+
action_request = method + " [#{attribute_values}]" + "\\n" + APP_PLATFORM + API_KEY
|
51
|
+
API_VERSION + "," + Digest::MD5.hexdigest(action_request)
|
52
|
+
end
|
53
|
+
|
54
|
+
def api_response_body
|
55
|
+
@api_response_body ||= RestClient.get(API_URL, params: request_params, headers: HEADERS).body
|
56
|
+
end
|
57
|
+
end
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: filmweb_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Damian Domzalski
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-06-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.9'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.9'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rest-client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.0.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activesupport
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.2'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.2'
|
55
|
+
description: Simple way to get data from filmweb
|
56
|
+
email: contact@damiandomzalski.com
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- lib/filmweb_api.rb
|
62
|
+
- lib/filmweb_api/method_handlers/get_film_info_full_handler.rb
|
63
|
+
- lib/filmweb_api/services/make_filmweb_request.rb
|
64
|
+
homepage: https://github.com/damiandomzalski/filmweb_api_rails
|
65
|
+
licenses:
|
66
|
+
- MIT
|
67
|
+
metadata: {}
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
requirements: []
|
83
|
+
rubygems_version: 3.0.2
|
84
|
+
signing_key:
|
85
|
+
specification_version: 4
|
86
|
+
summary: Unofficial Filmweb api client
|
87
|
+
test_files: []
|