ved_decoder 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1f5dc9914d0d84fc54f535a3d5a6b2c8e414902b7ac811787b4936dbe2915c40
4
+ data.tar.gz: 691c429b1c081ab73b976bba5ad3f81fe6d0bd7196f60bf0341632b95ebc43c5
5
+ SHA512:
6
+ metadata.gz: d487a8d077a6f5f20cbbc50d1657d56577aebafd60af4db46bc258a50b6a5c80cbabb04e800311b31ab9fa4b18de44f42584d6da5996e27f11e3f1761cf141ea
7
+ data.tar.gz: 453b13efa334ab82905903b84c10b6feebe3267ed7beeb9c5a52f4f63dc6928f45d2f76d5345b1ed89fb8663db2ca57ed411cffa1eda69e3044a7d82bcef250b
@@ -0,0 +1,20 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: lib/ved_decoder/ved.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ Google::Protobuf::DescriptorPool.generated_pool.build do
7
+ add_file("lib/ved_decoder/ved.proto", :syntax => :proto2) do
8
+ add_message "ved_decoder.Ved" do
9
+ optional :index, :uint64, 1
10
+ optional :type, :uint64, 2
11
+ optional :sub_result_position, :uint64, 5
12
+ optional :result_position, :uint64, 6
13
+ optional :start_page, :uint64, 7
14
+ end
15
+ end
16
+ end
17
+
18
+ module VedDecoder
19
+ Ved = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ved_decoder.Ved").msgclass
20
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VedDecoder
4
+ VERSION = "1.0.0"
5
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'base64'
4
+ require_relative "ved_decoder/version"
5
+ require_relative 'ved_decoder/ved_pb'
6
+
7
+ module VedDecoder
8
+ KEY_MAPPER = {'i' => 'index', 't' => 'type', 'r' => 'result_position', 's' => 'start_page'}
9
+
10
+ def self.decode(str)
11
+ return nil unless str.is_a?(String)
12
+
13
+ if str[0] == '1'
14
+ params = {}
15
+ str[1..].split(',').each do |param|
16
+ kv = param.strip.split(':')
17
+ next unless kv.size == 2
18
+
19
+ if key = KEY_MAPPER[kv[0]]
20
+ params[key] = kv[1].to_i
21
+ end
22
+ end
23
+ Ved.new(params)
24
+ else
25
+ Ved.decode(Base64.urlsafe_decode64(str[1..]))
26
+ end
27
+ rescue
28
+ nil
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ved_decoder
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Yicheng Zhou
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-02-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: google-protobuf
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: VedDecoder is a decoder for the Google ved parameter
28
+ email:
29
+ - zyc9012@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/ved_decoder.rb
35
+ - lib/ved_decoder/ved_pb.rb
36
+ - lib/ved_decoder/version.rb
37
+ homepage: https://github.com/serpapi/ved_decoder
38
+ licenses:
39
+ - MIT
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 2.4.0
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubygems_version: 3.0.3.1
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: VedDecoder is a decoder for the Google ved parameter
60
+ test_files: []