prtscr 0.2.1 → 0.3.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 +5 -5
- data/.gitignore +3 -1
- data/.rspec +1 -0
- data/.rubocop.yml +3 -0
- data/.travis.yml +4 -3
- data/CODE_OF_CONDUCT.md +3 -3
- data/Gemfile +9 -0
- data/Gemfile.lock +55 -0
- data/LICENSE.txt +1 -1
- data/README.md +10 -4
- data/bin/console +1 -1
- data/lib/prtscr.rb +24 -24
- data/lib/prtscr/v1.rb +31 -0
- data/lib/prtscr/v2.rb +32 -0
- data/lib/prtscr/v3.rb +32 -0
- data/lib/prtscr/version.rb +3 -1
- data/prtscr-0.3.0.gem +0 -0
- data/prtscr.gemspec +22 -27
- metadata +15 -50
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 38e1e992030cb5b08f70170cc02ec52f5fc404dd13a0ce3de2c4e0b65033eb71
|
|
4
|
+
data.tar.gz: b50419ea8c87e2abc46381724edd04bef14c4647d98ba334195a0fb09d112b64
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cd2476f735ff5f3c6acdcaa56dab6ad382db2c9efe37a8003657f45b7a0be53ff1342a368ba069e9e65e18a5376e7b2a45adae6e6202e71567f5becf49935e31
|
|
7
|
+
data.tar.gz: 559443436ff9a093762226ab6825e053e1ca920ef846530e3aa1bcf62fde1c066b29570dfeb304516cd15cf09d3be4d6413c7cab74eeabca2d59ccef195e352b
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/.rubocop.yml
ADDED
data/.travis.yml
CHANGED
data/CODE_OF_CONDUCT.md
CHANGED
|
@@ -68,7 +68,7 @@ members of the project's leadership.
|
|
|
68
68
|
## Attribution
|
|
69
69
|
|
|
70
70
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
|
71
|
-
available at [
|
|
71
|
+
available at [https://contributor-covenant.org/version/1/4][version]
|
|
72
72
|
|
|
73
|
-
[homepage]:
|
|
74
|
-
[version]:
|
|
73
|
+
[homepage]: https://contributor-covenant.org
|
|
74
|
+
[version]: https://contributor-covenant.org/version/1/4/
|
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
prtscr (0.3.0)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
ast (2.4.1)
|
|
10
|
+
diff-lcs (1.4.4)
|
|
11
|
+
parallel (1.20.1)
|
|
12
|
+
parser (3.0.0.0)
|
|
13
|
+
ast (~> 2.4.1)
|
|
14
|
+
rainbow (3.0.0)
|
|
15
|
+
rake (12.3.3)
|
|
16
|
+
regexp_parser (2.0.3)
|
|
17
|
+
rexml (3.2.4)
|
|
18
|
+
rspec (3.10.0)
|
|
19
|
+
rspec-core (~> 3.10.0)
|
|
20
|
+
rspec-expectations (~> 3.10.0)
|
|
21
|
+
rspec-mocks (~> 3.10.0)
|
|
22
|
+
rspec-core (3.10.1)
|
|
23
|
+
rspec-support (~> 3.10.0)
|
|
24
|
+
rspec-expectations (3.10.1)
|
|
25
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
26
|
+
rspec-support (~> 3.10.0)
|
|
27
|
+
rspec-mocks (3.10.1)
|
|
28
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
29
|
+
rspec-support (~> 3.10.0)
|
|
30
|
+
rspec-support (3.10.1)
|
|
31
|
+
rubocop (1.8.0)
|
|
32
|
+
parallel (~> 1.10)
|
|
33
|
+
parser (>= 3.0.0.0)
|
|
34
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
35
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
36
|
+
rexml
|
|
37
|
+
rubocop-ast (>= 1.2.0, < 2.0)
|
|
38
|
+
ruby-progressbar (~> 1.7)
|
|
39
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
40
|
+
rubocop-ast (1.4.0)
|
|
41
|
+
parser (>= 2.7.1.5)
|
|
42
|
+
ruby-progressbar (1.11.0)
|
|
43
|
+
unicode-display_width (2.0.0)
|
|
44
|
+
|
|
45
|
+
PLATFORMS
|
|
46
|
+
ruby
|
|
47
|
+
|
|
48
|
+
DEPENDENCIES
|
|
49
|
+
prtscr!
|
|
50
|
+
rake (~> 12.0)
|
|
51
|
+
rspec (~> 3.0)
|
|
52
|
+
rubocop
|
|
53
|
+
|
|
54
|
+
BUNDLED WITH
|
|
55
|
+
2.1.4
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
|
@@ -23,27 +23,33 @@ Or install it yourself as:
|
|
|
23
23
|
run the next line of code:
|
|
24
24
|
|
|
25
25
|
```ruby
|
|
26
|
-
Prtscr.get(url: 'https://
|
|
26
|
+
Prtscr.get(url: 'https://duckduckgo.com', width: 1280, height: 1024, scale: 350, key: 'YOUR_KEY_HERE', secret: 'YOUR_SECRET_HERE', format: 'jpg')
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
And get something like:
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
https://prtscr.ru/
|
|
32
|
+
https://prtscr.ru/v3/screenshot.jpg?url=https%3A%2F%2Fduckduckgo.com%2F&key=2gi_io4l&sign=f162b32357ece5f1489352cbb40c9b4d&width=1280&height=1024&scale=350
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
Having previous line, you can use html img tag:
|
|
36
36
|
|
|
37
|
-

|
|
38
38
|
|
|
39
39
|
### Available options
|
|
40
40
|
|
|
41
|
-
**url**: URL Address
|
|
41
|
+
**url**: URL encoded Address
|
|
42
|
+
|
|
42
43
|
**width**: Browser width, px
|
|
44
|
+
|
|
43
45
|
**height**: Browser height, px
|
|
46
|
+
|
|
44
47
|
**scale**: Screenshot scale for width, px
|
|
48
|
+
|
|
45
49
|
**key**: Your Key
|
|
50
|
+
|
|
46
51
|
**secret**: Your Secret
|
|
52
|
+
|
|
47
53
|
**format**: Screenshot extension
|
|
48
54
|
|
|
49
55
|
**key** and **secret** options you can obtain at [PrtScr.ru](https://prtscr.ru/)
|
data/bin/console
CHANGED
data/lib/prtscr.rb
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
require "base64"
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
3
|
+
require 'prtscr/version'
|
|
4
|
+
require 'digest'
|
|
5
|
+
require 'base64'
|
|
6
|
+
|
|
7
|
+
require 'prtscr/v1'
|
|
8
|
+
require 'prtscr/v2'
|
|
9
|
+
require 'prtscr/v3'
|
|
10
|
+
|
|
11
|
+
# Main module
|
|
4
12
|
module Prtscr
|
|
13
|
+
extend Prtscr::V1
|
|
14
|
+
extend Prtscr::V2
|
|
15
|
+
extend Prtscr::V3
|
|
5
16
|
|
|
6
|
-
|
|
7
|
-
d = {
|
|
8
|
-
version: 'v2',
|
|
9
|
-
width: '1280',
|
|
10
|
-
height: '1024',
|
|
11
|
-
scale: '500',
|
|
12
|
-
format: 'jpg',
|
|
13
|
-
timestamp: Time.now.to_i,
|
|
14
|
-
scheme: 'https:/',
|
|
15
|
-
host: 'prtscr.ru'
|
|
16
|
-
}.merge(data)
|
|
17
|
+
class Error < StandardError; end
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
d[:url] = Base64.urlsafe_encode64(d[:url])
|
|
25
|
-
d[:sign] = Digest::MD5.hexdigest([d[:width], d[:height], d[:scale], d[:timestamp], d[:key], d[:url], d[:format], d[:secret]].join(''))
|
|
26
|
-
d[:size] = [d[:width], d[:height]].join('x')
|
|
19
|
+
def self.get(params)
|
|
20
|
+
# TODO: Move default values to initializer
|
|
21
|
+
data = {
|
|
22
|
+
version: 'v3', width: '1280', height: '1024', scale: '500',
|
|
23
|
+
format: 'jpg', timestamp: Time.now.to_i, scheme: 'https:/', host: 'prtscr.ru'
|
|
24
|
+
}.merge(params)
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
case data[:version]
|
|
27
|
+
when 'v1' then v1(data)
|
|
28
|
+
when 'v2' then v2(data)
|
|
29
|
+
when 'v3' then v3(data)
|
|
29
30
|
end
|
|
30
31
|
end
|
|
31
|
-
|
|
32
32
|
end
|
data/lib/prtscr/v1.rb
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Prtscr
|
|
4
|
+
# Version 1:
|
|
5
|
+
module V1
|
|
6
|
+
def v1(data)
|
|
7
|
+
[
|
|
8
|
+
data[:scheme], data[:host],
|
|
9
|
+
data[:version], v1_size(data), data[:scale], data[:format], data[:timestamp], data[:key],
|
|
10
|
+
v1_sign(data), v1_url(data[:url])
|
|
11
|
+
].join('/')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def v1_sign(data)
|
|
15
|
+
::Digest::MD5.hexdigest(
|
|
16
|
+
[
|
|
17
|
+
data[:width], data[:height], data[:scale], data[:format], data[:timestamp],
|
|
18
|
+
data[:key], v1_url(data[:url]), data[:secret]
|
|
19
|
+
].join('')
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def v1_size(data)
|
|
24
|
+
[data[:width], data[:height]].join('x')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def v1_url(url)
|
|
28
|
+
::URI.encode_www_form_component(url)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
data/lib/prtscr/v2.rb
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Prtscr
|
|
4
|
+
# Version 2:
|
|
5
|
+
module V2
|
|
6
|
+
def v2(data)
|
|
7
|
+
[
|
|
8
|
+
[
|
|
9
|
+
data[:scheme], data[:host], data[:version], v2_size(data), data[:scale],
|
|
10
|
+
data[:timestamp], data[:key], v2_sign(data), v2_url(data[:url])
|
|
11
|
+
].join('/'), data[:format]
|
|
12
|
+
].join('.')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def v2_sign(data)
|
|
16
|
+
::Digest::MD5.hexdigest(
|
|
17
|
+
[
|
|
18
|
+
data[:width], data[:height], data[:scale], data[:timestamp], data[:key],
|
|
19
|
+
v2_url(data[:url]), data[:format], data[:secret]
|
|
20
|
+
].join('')
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def v2_size(data)
|
|
25
|
+
[data[:width], data[:height]].join('x')
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def v2_url(url)
|
|
29
|
+
Base64.urlsafe_encode64(url)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
data/lib/prtscr/v3.rb
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Prtscr
|
|
4
|
+
# Version 2:
|
|
5
|
+
module V3
|
|
6
|
+
def v3(data)
|
|
7
|
+
"https://prtscr.ru/v3/screenshot.#{data[:format]}?#{v3_query(data)}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def v3_sign(data)
|
|
11
|
+
::Digest::MD5.hexdigest(
|
|
12
|
+
[
|
|
13
|
+
data[:url], data[:format], data[:key], data[:width],
|
|
14
|
+
data[:height], data[:scale], data[:secret]
|
|
15
|
+
].map(&:to_s).join
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def v3_query(data)
|
|
20
|
+
::URI.encode_www_form(
|
|
21
|
+
{
|
|
22
|
+
url: data[:url],
|
|
23
|
+
key: data[:key],
|
|
24
|
+
sign: v3_sign(data),
|
|
25
|
+
width: data[:width],
|
|
26
|
+
height: data[:height],
|
|
27
|
+
scale: data[:scale]
|
|
28
|
+
}.compact
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
data/lib/prtscr/version.rb
CHANGED
data/prtscr-0.3.0.gem
ADDED
|
Binary file
|
data/prtscr.gemspec
CHANGED
|
@@ -1,36 +1,31 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
require 'prtscr/version'
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/prtscr/version'
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name =
|
|
6
|
+
spec.name = 'prtscr'
|
|
8
7
|
spec.version = Prtscr::VERSION
|
|
9
|
-
spec.authors = [
|
|
10
|
-
spec.email = [
|
|
8
|
+
spec.authors = ['vickodin']
|
|
9
|
+
spec.email = ['vick.orel@gmail.com']
|
|
10
|
+
|
|
11
|
+
spec.summary = 'PrtScr.ru API gem'
|
|
12
|
+
spec.description = 'Website screenshot API gem for https://prtscr.ru'
|
|
13
|
+
spec.homepage = 'https://github.com/vickodin/prtscr'
|
|
14
|
+
spec.license = 'MIT'
|
|
15
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
|
|
11
16
|
|
|
12
|
-
spec.
|
|
13
|
-
spec.description = "Website screenshot API gem for http://prtscr.ru"
|
|
14
|
-
spec.homepage = "https://github.com/vickodin/prtscr"
|
|
15
|
-
spec.license = "MIT"
|
|
17
|
+
# spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
#
|
|
20
|
-
# spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
|
21
|
-
#else
|
|
22
|
-
# raise "RubyGems 2.0 or newer is required to protect against " \
|
|
23
|
-
# "public gem pushes."
|
|
24
|
-
#end
|
|
19
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
|
20
|
+
spec.metadata['source_code_uri'] = 'https://github.com/vickodin/prtscr'
|
|
21
|
+
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
# Specify which files should be added to the gem when it is released.
|
|
24
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
25
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
|
26
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
28
27
|
end
|
|
29
|
-
spec.bindir =
|
|
28
|
+
spec.bindir = 'exe'
|
|
30
29
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
31
|
-
spec.require_paths = [
|
|
32
|
-
|
|
33
|
-
spec.add_development_dependency "bundler", "~> 1.13"
|
|
34
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
|
35
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
|
30
|
+
spec.require_paths = ['lib']
|
|
36
31
|
end
|
metadata
CHANGED
|
@@ -1,58 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: prtscr
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- vickodin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
-
dependencies:
|
|
13
|
-
|
|
14
|
-
name: bundler
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.13'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1.13'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rake
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '10.0'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '10.0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rspec
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '3.0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '3.0'
|
|
55
|
-
description: Website screenshot API gem for http://prtscr.ru
|
|
11
|
+
date: 2021-01-11 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: Website screenshot API gem for https://prtscr.ru
|
|
56
14
|
email:
|
|
57
15
|
- vick.orel@gmail.com
|
|
58
16
|
executables: []
|
|
@@ -61,21 +19,29 @@ extra_rdoc_files: []
|
|
|
61
19
|
files:
|
|
62
20
|
- ".gitignore"
|
|
63
21
|
- ".rspec"
|
|
22
|
+
- ".rubocop.yml"
|
|
64
23
|
- ".travis.yml"
|
|
65
24
|
- CODE_OF_CONDUCT.md
|
|
66
25
|
- Gemfile
|
|
26
|
+
- Gemfile.lock
|
|
67
27
|
- LICENSE.txt
|
|
68
28
|
- README.md
|
|
69
29
|
- Rakefile
|
|
70
30
|
- bin/console
|
|
71
31
|
- bin/setup
|
|
72
32
|
- lib/prtscr.rb
|
|
33
|
+
- lib/prtscr/v1.rb
|
|
34
|
+
- lib/prtscr/v2.rb
|
|
35
|
+
- lib/prtscr/v3.rb
|
|
73
36
|
- lib/prtscr/version.rb
|
|
37
|
+
- prtscr-0.3.0.gem
|
|
74
38
|
- prtscr.gemspec
|
|
75
39
|
homepage: https://github.com/vickodin/prtscr
|
|
76
40
|
licenses:
|
|
77
41
|
- MIT
|
|
78
|
-
metadata:
|
|
42
|
+
metadata:
|
|
43
|
+
homepage_uri: https://github.com/vickodin/prtscr
|
|
44
|
+
source_code_uri: https://github.com/vickodin/prtscr
|
|
79
45
|
post_install_message:
|
|
80
46
|
rdoc_options: []
|
|
81
47
|
require_paths:
|
|
@@ -84,15 +50,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
84
50
|
requirements:
|
|
85
51
|
- - ">="
|
|
86
52
|
- !ruby/object:Gem::Version
|
|
87
|
-
version:
|
|
53
|
+
version: 2.3.0
|
|
88
54
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
55
|
requirements:
|
|
90
56
|
- - ">="
|
|
91
57
|
- !ruby/object:Gem::Version
|
|
92
58
|
version: '0'
|
|
93
59
|
requirements: []
|
|
94
|
-
|
|
95
|
-
rubygems_version: 2.6.8
|
|
60
|
+
rubygems_version: 3.1.4
|
|
96
61
|
signing_key:
|
|
97
62
|
specification_version: 4
|
|
98
63
|
summary: PrtScr.ru API gem
|