ved_decoder 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []