prtscr 0.2.2 → 0.3.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c2176842c5b719637b262789f7ba47ff021f20ce
4
- data.tar.gz: 1308996e113ffd70fe6bba65ad10dd30eb9a8430
2
+ SHA256:
3
+ metadata.gz: '08ca6ef38547095c619116e09690fe37d5a05717b38847ce3b2874356954f73a'
4
+ data.tar.gz: 29558b1fe5122a2999c8f4a3dbf077a309319b27262e2dbb4d5f886f9af2d42e
5
5
  SHA512:
6
- metadata.gz: 0ad1b067b44cc483f22e69ad4596b1146a99d5ab62594b9d8b0d456a6b3bad6bfcea31e887464b1fbb0311f72977c811edc01cd79b88f6c86b06c7d2b51b7dd4
7
- data.tar.gz: 3733d106a38f3c82738ff1ec99afa2e24aa0db33d1c6ae3e1781ba9fcef60cee4a531a3ecfb84616ce51bd0885b79a7ac02ee7321d3288054d10b05d33271e0a
6
+ metadata.gz: 1f9403301c3b6910c10a03a62f3232e460f68211fec739698e1e1b798e54d84420bd3e5bafa0bdf3a0a9c12974c61f9fec28c7994a19710a9bcb4be16d8c652b
7
+ data.tar.gz: 2ef439530b5eb2e6a16674bdea9a0f35d42c4e4753be1f31e04a34aa3eb00bbe9f132812a35bf8b5ac40a52dfe5d3529794ad972d672246e133a1ebb6e216ad9
data/.gitignore CHANGED
@@ -1,9 +1,11 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
7
6
  /pkg/
8
7
  /spec/reports/
9
8
  /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --format documentation
2
2
  --color
3
+ --require spec_helper
@@ -0,0 +1,3 @@
1
+ require: rubocop-rspec
2
+ Metrics/BlockLength:
3
+ IgnoredMethods: ['describe', 'context']
@@ -1,5 +1,6 @@
1
- sudo: false
1
+ ---
2
2
  language: ruby
3
+ cache: bundler
3
4
  rvm:
4
- - 2.4.0
5
- before_install: gem install bundler -v 1.13.7
5
+ - 2.7.2
6
+ before_install: gem install bundler -v 2.1.4
@@ -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 [http://contributor-covenant.org/version/1/4][version]
71
+ available at [https://contributor-covenant.org/version/1/4][version]
72
72
 
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/
73
+ [homepage]: https://contributor-covenant.org
74
+ [version]: https://contributor-covenant.org/version/1/4/
data/Gemfile CHANGED
@@ -1,4 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in prtscr.gemspec
4
6
  gemspec
7
+
8
+ gem 'rake', '~> 12.0', require: false
9
+
10
+ group :development, :test do
11
+ gem 'rspec', '~> 3.0'
12
+ gem 'rubocop'
13
+ end
@@ -0,0 +1,55 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ prtscr (0.3.2)
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
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017 vickodin
3
+ Copyright (c) 2021 vickodin
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -23,22 +23,22 @@ Or install it yourself as:
23
23
  run the next line of code:
24
24
 
25
25
  ```ruby
26
- Prtscr.get(url: 'https://google.com', width: 1280, height: 1024, scale: 250, key: 'YOUR_KEY_HERE', secret: 'YOUR_SECRET_HERE', format: 'jpg')
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/v2/1280x1024/250/1484317141/AIQACodQ/be8d94e167d4e0e9c6d8e106582f0894/aHR0cHM6Ly9nb29nbGUuY29t.jpg
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
- ![Google website screenshot](https://prtscr.ru/v2/1280x1024/250/1484317141/AIQACodQ/be8d94e167d4e0e9c6d8e106582f0894/aHR0cHM6Ly9nb29nbGUuY29t.jpg)
37
+ ![Google website screenshot](https://prtscr.ru/v3/screenshot.jpg?url=https%3A%2F%2Fduckduckgo.com%2F&key=2gi_io4l&sign=f162b32357ece5f1489352cbb40c9b4d&width=1280&height=1024&scale=350)
38
38
 
39
39
  ### Available options
40
40
 
41
- **url**: URL Address
41
+ **url**: URL encoded Address
42
42
 
43
43
  **width**: Browser width, px
44
44
 
@@ -11,4 +11,4 @@ require "prtscr"
11
11
  # Pry.start
12
12
 
13
13
  require "irb"
14
- IRB.start
14
+ IRB.start(__FILE__)
@@ -1,32 +1,32 @@
1
- require "prtscr/version"
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
- def self.get(data)
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
- if d[:version] == 'v1'
19
- d[:url] = URI.encode_www_form_component(d[:url])
20
- d[:sign] = Digest::MD5.hexdigest([d[:width], d[:height], d[:scale], d[:format], d[:timestamp], d[:key], d[:url], d[:secret]].join(''))
21
- d[:size] = [d[:width], d[:height]].join('x')
22
- return [d[:scheme], d[:host], d[:version], d[:size], d[:scale], d[:format], d[:timestamp], d[:key], d[:sign], d[:url]].join('/')
23
- elsif d[:version] == 'v2'
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
- return [[d[:scheme], d[:host], d[:version], d[:size], d[:scale], d[:timestamp], d[:key], d[:sign], d[:url]].join('/'), d[:format]].join('.')
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
@@ -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
@@ -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
@@ -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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Prtscr
2
- VERSION = "0.2.2"
4
+ VERSION = '0.3.2'
3
5
  end
@@ -1,36 +1,31 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
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 = "prtscr"
6
+ spec.name = 'prtscr'
8
7
  spec.version = Prtscr::VERSION
9
- spec.authors = ["vickodin"]
10
- spec.email = ["vick.orel@gmail.com"]
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.summary = "PrtScr.ru API gem"
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
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
- # to allow pushing to a single host or delete this section to allow pushing to any host.
19
- #if spec.respond_to?(:metadata)
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
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
- f.match(%r{^(test|spec|features)/})
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 = "exe"
28
+ spec.bindir = 'exe'
30
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
- spec.require_paths = ["lib"]
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.2.2
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - vickodin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-13 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
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,28 @@ 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
74
37
  - prtscr.gemspec
75
38
  homepage: https://github.com/vickodin/prtscr
76
39
  licenses:
77
40
  - MIT
78
- metadata: {}
41
+ metadata:
42
+ homepage_uri: https://github.com/vickodin/prtscr
43
+ source_code_uri: https://github.com/vickodin/prtscr
79
44
  post_install_message:
80
45
  rdoc_options: []
81
46
  require_paths:
@@ -84,15 +49,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
84
49
  requirements:
85
50
  - - ">="
86
51
  - !ruby/object:Gem::Version
87
- version: '0'
52
+ version: 2.3.0
88
53
  required_rubygems_version: !ruby/object:Gem::Requirement
89
54
  requirements:
90
55
  - - ">="
91
56
  - !ruby/object:Gem::Version
92
57
  version: '0'
93
58
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 2.6.8
59
+ rubygems_version: 3.1.4
96
60
  signing_key:
97
61
  specification_version: 4
98
62
  summary: PrtScr.ru API gem