prtscr 0.2.4 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 27e3cdbbb0a6be6010d11ce5e672132992ded8a6
4
- data.tar.gz: 65d2a06c2bce814764adfb5844341217f059825e
2
+ SHA256:
3
+ metadata.gz: fd71d32117b01be234eeefb0c6b9b431cbcc27d9fd018653d53e29f32a2b24cb
4
+ data.tar.gz: e5562258a66c4b6b3f306acb98f6c1d24da45654965436b867aae80511686a99
5
5
  SHA512:
6
- metadata.gz: 3104a2cb6cc30fe9e7347c06b660791eb939c685578875115efe1d092ca18e8eba045fade68949bf57e4400a1ff9ed27dd9e4745ae12c787510e4ab151d7c7b4
7
- data.tar.gz: ec53bdae56992836b67e2c08c322e3718fc802e50e6fd8b3a05fe269f3aa7954c6b948d2dee679853a7ede65ca7d69d2320b52e2725114e93957b451c4d76175
6
+ metadata.gz: 0b963b49b70cd584acb469af715f5b084a4d4b04a2d03b3c10d3385a1be112a3076533d2767b5e881c6a6d5e458b465bf6e77a564b199cb97005a256ed5c2425
7
+ data.tar.gz: abd3af24c81ed508b58a9a3830d9e9121c7dbefeb9e7daa6ae4188a34a0c6242f0f61d69b9b629c1177678a6449d970012247db1b7394c8e06bdbe9ec1808385
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.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
@@ -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
@@ -1,6 +1,8 @@
1
- # Prtscr.ru API gem
1
+ # Prtscr
2
2
 
3
- This gem is a lib for [PrtScr.ru](https://prtscr.ru/) API (website screenshot).
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/prtscr`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
4
6
 
5
7
  ## Installation
6
8
 
@@ -12,7 +14,7 @@ gem 'prtscr'
12
14
 
13
15
  And then execute:
14
16
 
15
- $ bundle
17
+ $ bundle install
16
18
 
17
19
  Or install it yourself as:
18
20
 
@@ -20,49 +22,23 @@ Or install it yourself as:
20
22
 
21
23
  ## Usage
22
24
 
23
- run the next line of code:
24
-
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')
27
- ```
28
-
29
- And get something like:
30
-
31
- ```
32
- https://prtscr.ru/v2/1280x1024/250/1484317141/AIQACodQ/be8d94e167d4e0e9c6d8e106582f0894/aHR0cHM6Ly9nb29nbGUuY29t.jpg
33
- ```
34
-
35
- Having previous line, you can use html img tag:
36
-
37
- ![Google website screenshot](https://prtscr.ru/v2/1280x1024/250/1484317141/AIQACodQ/be8d94e167d4e0e9c6d8e106582f0894/aHR0cHM6Ly9nb29nbGUuY29t.jpg)
38
-
39
- ### Available options
40
-
41
- **url**: URL Address
42
-
43
- **width**: Browser width, px
44
-
45
- **height**: Browser height, px
46
-
47
- **scale**: Screenshot scale for width, px
48
-
49
- **key**: Your Key
50
-
51
- **secret**: Your Secret
52
-
53
- **format**: Screenshot extension
54
-
55
- **key** and **secret** options you can obtain at [PrtScr.ru](https://prtscr.ru/)
25
+ TODO: Write usage instructions here
56
26
 
57
27
  ## Development
58
28
 
59
29
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
60
30
 
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
61
33
  ## Contributing
62
34
 
63
- Bug reports and pull requests are welcome on GitHub at https://github.com/vickodin/prtscr.
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/prtscr. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/prtscr/blob/master/CODE_OF_CONDUCT.md).
64
36
 
65
37
 
66
38
  ## License
67
39
 
68
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
40
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
41
+
42
+ ## Code of Conduct
43
+
44
+ Everyone interacting in the Prtscr project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/prtscr/blob/master/CODE_OF_CONDUCT.md).
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task default: :spec
6
+ task :default => :spec
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'bundler/setup'
4
- require 'prtscr'
3
+ require "bundler/setup"
4
+ require "prtscr"
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require 'prtscr'
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require 'irb'
14
- IRB.start
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -1,31 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'prtscr/version'
4
+ require 'digest'
2
5
  require 'base64'
3
6
 
4
- # Main Module
7
+ require 'prtscr/v1'
8
+ require 'prtscr/v2'
9
+ require 'prtscr/v3'
10
+
11
+ # Main module
5
12
  module Prtscr
6
- def self.get(data)
13
+ extend Prtscr::V1
14
+ extend Prtscr::V2
15
+ extend Prtscr::V3
16
+
17
+ class Error < StandardError; end
18
+
19
+ def self.get(params)
7
20
  # TODO: Move default values to initializer
8
- d = {
9
- version: 'v2',
10
- width: '1280',
11
- height: '1024',
12
- scale: '500',
13
- format: 'jpg',
14
- timestamp: Time.now.to_i,
15
- scheme: 'https:/',
16
- host: 'prtscr.ru'
17
- }.merge(data)
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)
18
25
 
19
- if d[:version] == 'v1'
20
- d[:url] = URI.encode_www_form_component(d[:url])
21
- d[:sign] = Digest::MD5.hexdigest([d[:width], d[:height], d[:scale], d[:format], d[:timestamp], d[:key], d[:url], d[:secret]].join(''))
22
- d[:size] = [d[:width], d[:height]].join('x')
23
- return [d[:scheme], d[:host], d[:version], d[:size], d[:scale], d[:format], d[:timestamp], d[:key], d[:sign], d[:url]].join('/')
24
- elsif d[:version] == 'v2'
25
- d[:url] = Base64.urlsafe_encode64(d[:url])
26
- d[:sign] = Digest::MD5.hexdigest([d[:width], d[:height], d[:scale], d[:timestamp], d[:key], d[:url], d[:format], d[:secret]].join(''))
27
- d[:size] = [d[:width], d[:height]].join('x')
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
  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.4'.freeze
4
+ VERSION = '0.3.0'
3
5
  end
@@ -1,7 +1,6 @@
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
6
  spec.name = 'prtscr'
@@ -10,28 +9,23 @@ Gem::Specification.new do |spec|
10
9
  spec.email = ['vick.orel@gmail.com']
11
10
 
12
11
  spec.summary = 'PrtScr.ru API gem'
13
- spec.description = 'Website screenshot API gem for http://prtscr.ru'
12
+ spec.description = 'Website screenshot API gem for https://prtscr.ru'
14
13
  spec.homepage = 'https://github.com/vickodin/prtscr'
15
14
  spec.license = 'MIT'
15
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
16
+
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
28
  spec.bindir = 'exe'
30
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
30
  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'
36
- spec.add_development_dependency 'rubocop', '~> 0.46.0'
37
31
  end
metadata CHANGED
@@ -1,72 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prtscr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
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-17 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
- - !ruby/object:Gem::Dependency
56
- name: rubocop
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 0.46.0
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 0.46.0
69
- 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
70
14
  email:
71
15
  - vick.orel@gmail.com
72
16
  executables: []
@@ -75,21 +19,28 @@ extra_rdoc_files: []
75
19
  files:
76
20
  - ".gitignore"
77
21
  - ".rspec"
22
+ - ".rubocop.yml"
78
23
  - ".travis.yml"
79
24
  - CODE_OF_CONDUCT.md
80
25
  - Gemfile
26
+ - Gemfile.lock
81
27
  - LICENSE.txt
82
28
  - README.md
83
29
  - Rakefile
84
30
  - bin/console
85
31
  - bin/setup
86
32
  - lib/prtscr.rb
33
+ - lib/prtscr/v1.rb
34
+ - lib/prtscr/v2.rb
35
+ - lib/prtscr/v3.rb
87
36
  - lib/prtscr/version.rb
88
37
  - prtscr.gemspec
89
38
  homepage: https://github.com/vickodin/prtscr
90
39
  licenses:
91
40
  - MIT
92
- metadata: {}
41
+ metadata:
42
+ homepage_uri: https://github.com/vickodin/prtscr
43
+ source_code_uri: https://github.com/vickodin/prtscr
93
44
  post_install_message:
94
45
  rdoc_options: []
95
46
  require_paths:
@@ -98,15 +49,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
49
  requirements:
99
50
  - - ">="
100
51
  - !ruby/object:Gem::Version
101
- version: '0'
52
+ version: 2.3.0
102
53
  required_rubygems_version: !ruby/object:Gem::Requirement
103
54
  requirements:
104
55
  - - ">="
105
56
  - !ruby/object:Gem::Version
106
57
  version: '0'
107
58
  requirements: []
108
- rubyforge_project:
109
- rubygems_version: 2.6.8
59
+ rubygems_version: 3.1.4
110
60
  signing_key:
111
61
  specification_version: 4
112
62
  summary: PrtScr.ru API gem