batch_request_client 0.1.4

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
+ SHA1:
3
+ metadata.gz: 19fe7a9695314062b22f325baa19e383b32de62b
4
+ data.tar.gz: d606c4cfc1b3d6379678293049eacc1dc8083c6d
5
+ SHA512:
6
+ metadata.gz: 4d04f103fafc4f8ef14f7308189ea9d3d849af8e3763bb0bcf7160ad99984d4e1aa77a9042debe1b311ff0a82a0c366816e5f130eb73ccddac761c3ddab3e6c2
7
+ data.tar.gz: 7c929ee924b4d78f5566d6421238562a181730cb29e1c0623e39678f76182bec051591aa16a778dff9bad23af24f7f6ca254d24180b07ceee4a39894a0e7b14b
@@ -0,0 +1,26 @@
1
+ require 'batch_request_client/version'
2
+ require 'batch_request_client/batch_util'
3
+
4
+ require 'uri'
5
+ require 'rest-client'
6
+ require 'json'
7
+
8
+ module BatchRequestClient
9
+ extend BatchUtil
10
+
11
+ def self.create(array_objects, url, mode = nil)
12
+ uri = URI.parse(url)
13
+ batch_url = get_batch_url(uri, mode)
14
+ payload = create_payload(array_objects, 'POST', uri.path)
15
+ response = RestClient.post(batch_url, payload, headers)
16
+ JSON.parse(response)['responses']['response']
17
+ end
18
+
19
+ def update
20
+ raise NotImplementedError
21
+ end
22
+
23
+ def delete
24
+ raise NotImplementedError
25
+ end
26
+ end
@@ -0,0 +1,38 @@
1
+ module BatchRequestClient
2
+ module BatchUtil
3
+
4
+ def get_batch_url(uri, mode)
5
+ base_url = "#{uri.scheme}://#{uri.host}:#{uri.port}"
6
+ base_url = "#{uri.scheme}://#{uri.host}" if uri.scheme == 'https'
7
+ batch_url = "#{base_url}/api/v1/batch_sequential"
8
+ batch_url = "#{base_url}/api/v1/batch_parallel" if mode == :parallel
9
+ batch_url
10
+ end
11
+
12
+ def create_payload(array_objects, method, url)
13
+ requests = []
14
+ array_objects.each do |item|
15
+ requests << request_signature(item, method, url)
16
+ end
17
+ padded_response(requests).to_json
18
+ end
19
+
20
+ def request_signature(item, method, url)
21
+ {
22
+ "method": method,
23
+ "url": "#{url}",
24
+ "body": item
25
+ }
26
+ end
27
+
28
+ def padded_response(requests)
29
+ {
30
+ "requests": requests
31
+ }
32
+ end
33
+
34
+ def headers
35
+ { 'Content-Type' => 'application/json' }
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,3 @@
1
+ module BatchRequestClient
2
+ VERSION = '0.1.4'
3
+ end
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: batch_request_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
+ platform: ruby
6
+ authors:
7
+ - Srinivas Raghunathan
8
+ - Shishir Kakaraddi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-05-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rest-client
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '2.0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '2.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: bundler
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.14'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.14'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '10.0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '10.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '5.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '5.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rdoc
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '5.1'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '5.1'
84
+ description: Batch Request Client.
85
+ email:
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - lib/batch_request_client.rb
91
+ - lib/batch_request_client/batch_util.rb
92
+ - lib/batch_request_client/version.rb
93
+ homepage: https://github.com/Netflix/batch_request_client
94
+ licenses:
95
+ - Apache-2.0
96
+ metadata: {}
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '2.1'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ requirements: []
112
+ rubyforge_project:
113
+ rubygems_version: 2.6.11
114
+ signing_key:
115
+ specification_version: 4
116
+ summary: Ruby Client to make Batch Requests
117
+ test_files: []