sapoci-connect 0.1.10 → 0.1.11
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.
- data/bin/sapoci-search +1 -1
- data/lib/sapoci/connect/middleware/follow_redirects.rb +18 -22
- metadata +128 -112
data/bin/sapoci-search
CHANGED
@@ -56,7 +56,7 @@ begin
|
|
56
56
|
|
57
57
|
# Setup
|
58
58
|
conn = Faraday.new(uri.to_s, :ssl => {:verify => true}) do |builder|
|
59
|
-
builder.response :follow_redirects, :cookies => :all, :limit =>
|
59
|
+
builder.response :follow_redirects, :cookies => :all, :limit => 10
|
60
60
|
builder.response :background_search
|
61
61
|
builder.use Faraday::Response::Logger if options.debug
|
62
62
|
builder.adapter Faraday.default_adapter
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'faraday'
|
2
2
|
require 'set'
|
3
|
+
require 'webrick'
|
3
4
|
|
4
5
|
module SAPOCI
|
5
6
|
module Connect
|
@@ -62,13 +63,13 @@ module SAPOCI
|
|
62
63
|
# standards_compliant - A Boolean indicating whether to respect
|
63
64
|
# the HTTP spec when following 302
|
64
65
|
# (default: false)
|
65
|
-
# cookie - Use either an array of strings
|
66
|
-
# (e.g. ['cookie1', 'cookie2']) to choose kept cookies
|
67
|
-
# or :all to keep all cookies.
|
68
66
|
def initialize(app, options = {})
|
69
67
|
super(app)
|
70
68
|
@options = options
|
71
69
|
|
70
|
+
@options[:cookies] = :all
|
71
|
+
@cookies = []
|
72
|
+
|
72
73
|
@replay_request_codes = Set.new [307]
|
73
74
|
@replay_request_codes << 302 if standards_compliant?
|
74
75
|
end
|
@@ -99,10 +100,11 @@ module SAPOCI
|
|
99
100
|
|
100
101
|
def update_env(env, request_body, response)
|
101
102
|
location = response['location']
|
102
|
-
raise RedirectWithoutLocation, response if location.
|
103
|
+
raise RedirectWithoutLocation, response if location.to_s.size == 0
|
103
104
|
env[:url] += location
|
104
|
-
|
105
|
-
|
105
|
+
|
106
|
+
if @options[:cookies] && cookie_string = collect_cookies(env)
|
107
|
+
env[:request_headers]['Cookie'] = cookie_string
|
106
108
|
end
|
107
109
|
|
108
110
|
if transform_into_get?(response)
|
@@ -126,22 +128,16 @@ module SAPOCI
|
|
126
128
|
@options.fetch(:limit, FOLLOW_LIMIT)
|
127
129
|
end
|
128
130
|
|
129
|
-
def
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
def selected_cookies(cookies)
|
140
|
-
"".tap do |cookie_string|
|
141
|
-
@options[:cookies].each do |cookie|
|
142
|
-
string = /#{cookie}=?[^;]*/.match(cookies)[0] + ';'
|
143
|
-
cookie_string << string
|
144
|
-
end
|
131
|
+
def collect_cookies(env)
|
132
|
+
if response_cookies = env[:response_headers]['Set-Cookie']
|
133
|
+
@cookies = WEBrick::Cookie.parse_set_cookies(response_cookies)
|
134
|
+
@cookies.inject([]) do |result, cookie|
|
135
|
+
# TODO only send back cookies where path is nil or
|
136
|
+
# path matches according to env[:url]
|
137
|
+
result << cookie.name + "=" + cookie.value
|
138
|
+
end.uniq.join(";")
|
139
|
+
else
|
140
|
+
nil
|
145
141
|
end
|
146
142
|
end
|
147
143
|
|
metadata
CHANGED
@@ -1,145 +1,150 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sapoci-connect
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 11
|
10
|
+
version: 0.1.11
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Oliver Eilhard
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2012-10-03 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: faraday
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 0.8.4
|
22
|
-
type: :runtime
|
23
22
|
prerelease: false
|
24
|
-
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 55
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 8
|
32
|
+
- 4
|
29
33
|
version: 0.8.4
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: rack
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 1.1.0
|
38
|
-
- - <
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '2'
|
41
34
|
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rack
|
42
38
|
prerelease: false
|
43
|
-
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
44
40
|
none: false
|
45
|
-
requirements:
|
46
|
-
- -
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 5
|
45
|
+
segments:
|
46
|
+
- 1
|
47
|
+
- 4
|
48
|
+
- 1
|
49
|
+
version: 1.4.1
|
49
50
|
- - <
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
none: false
|
56
|
-
requirements:
|
57
|
-
- - ! '>='
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: 0.1.8
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
hash: 7
|
53
|
+
segments:
|
54
|
+
- 2
|
55
|
+
version: "2"
|
60
56
|
type: :runtime
|
57
|
+
version_requirements: *id002
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: sapoci
|
61
60
|
prerelease: false
|
62
|
-
|
61
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
63
62
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
hash: 11
|
67
|
+
segments:
|
68
|
+
- 0
|
69
|
+
- 1
|
70
|
+
- 8
|
67
71
|
version: 0.1.8
|
68
|
-
|
72
|
+
type: :runtime
|
73
|
+
version_requirements: *id003
|
74
|
+
- !ruby/object:Gem::Dependency
|
69
75
|
name: bundler
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
|
-
requirements:
|
73
|
-
- - ~>
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.0'
|
76
|
-
type: :development
|
77
76
|
prerelease: false
|
78
|
-
|
79
|
-
none: false
|
80
|
-
requirements:
|
81
|
-
- - ~>
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '1.0'
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: rdoc
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
77
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
87
78
|
none: false
|
88
|
-
requirements:
|
79
|
+
requirements:
|
89
80
|
- - ~>
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 11
|
83
|
+
segments:
|
84
|
+
- 1
|
85
|
+
- 2
|
86
|
+
version: "1.2"
|
92
87
|
type: :development
|
88
|
+
version_requirements: *id004
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rdoc
|
93
91
|
prerelease: false
|
94
|
-
|
92
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
95
93
|
none: false
|
96
|
-
requirements:
|
94
|
+
requirements:
|
97
95
|
- - ~>
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
requirements:
|
105
|
-
- - ! '>='
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: 0.9.2
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
hash: 9
|
98
|
+
segments:
|
99
|
+
- 2
|
100
|
+
- 5
|
101
|
+
version: "2.5"
|
108
102
|
type: :development
|
103
|
+
version_requirements: *id005
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: rake
|
109
106
|
prerelease: false
|
110
|
-
|
107
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
111
108
|
none: false
|
112
|
-
requirements:
|
113
|
-
- -
|
114
|
-
- !ruby/object:Gem::Version
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
hash: 63
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
- 9
|
116
|
+
- 2
|
115
117
|
version: 0.9.2
|
116
|
-
- !ruby/object:Gem::Dependency
|
117
|
-
name: sinatra
|
118
|
-
requirement: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
|
-
requirements:
|
121
|
-
- - ~>
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: '1.2'
|
124
118
|
type: :development
|
119
|
+
version_requirements: *id006
|
120
|
+
- !ruby/object:Gem::Dependency
|
121
|
+
name: sinatra
|
125
122
|
prerelease: false
|
126
|
-
|
123
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
127
124
|
none: false
|
128
|
-
requirements:
|
125
|
+
requirements:
|
129
126
|
- - ~>
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
hash: 25
|
129
|
+
segments:
|
130
|
+
- 1
|
131
|
+
- 3
|
132
|
+
- 1
|
133
|
+
version: 1.3.1
|
134
|
+
type: :development
|
135
|
+
version_requirements: *id007
|
132
136
|
description: HTTP client library for working with SAP OCI compliant servers.
|
133
|
-
email:
|
137
|
+
email:
|
134
138
|
- oliver.eilhard@gmail.com
|
135
|
-
executables:
|
139
|
+
executables:
|
136
140
|
- sapoci-search
|
137
141
|
extensions: []
|
138
|
-
|
142
|
+
|
143
|
+
extra_rdoc_files:
|
139
144
|
- CHANGELOG.md
|
140
145
|
- LICENSE
|
141
146
|
- README.md
|
142
|
-
files:
|
147
|
+
files:
|
143
148
|
- bin/sapoci-search
|
144
149
|
- lib/sapoci/connect.rb
|
145
150
|
- lib/sapoci/connect/middleware/background_search.rb
|
@@ -149,27 +154,38 @@ files:
|
|
149
154
|
- README.md
|
150
155
|
homepage: http://github.com/meplato/sapoci-connect
|
151
156
|
licenses: []
|
157
|
+
|
152
158
|
post_install_message:
|
153
|
-
rdoc_options:
|
159
|
+
rdoc_options:
|
154
160
|
- --charset=UTF-8
|
155
|
-
require_paths:
|
161
|
+
require_paths:
|
156
162
|
- lib
|
157
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
163
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
158
164
|
none: false
|
159
|
-
requirements:
|
160
|
-
- -
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
|
163
|
-
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
hash: 3
|
169
|
+
segments:
|
170
|
+
- 0
|
171
|
+
version: "0"
|
172
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
173
|
none: false
|
165
|
-
requirements:
|
166
|
-
- -
|
167
|
-
- !ruby/object:Gem::Version
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
hash: 23
|
178
|
+
segments:
|
179
|
+
- 1
|
180
|
+
- 3
|
181
|
+
- 6
|
168
182
|
version: 1.3.6
|
169
183
|
requirements: []
|
184
|
+
|
170
185
|
rubyforge_project:
|
171
|
-
rubygems_version: 1.8.
|
186
|
+
rubygems_version: 1.8.24
|
172
187
|
signing_key:
|
173
188
|
specification_version: 3
|
174
189
|
summary: HTTP client library for working with SAP OCI compliant servers.
|
175
190
|
test_files: []
|
191
|
+
|