arrest 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,9 @@
1
1
  module Arrest
2
2
 
3
+ RequestLog = Struct.new(:method, :url, :body)
4
+ ResponseLog = Struct.new(:status, :body)
5
+ CallLog = Struct.new(:request, :response)
6
+
3
7
  # The classes in this module supply default behaviour
4
8
  # for certain processing steps in the consumttion ot the
5
9
  # rest api
@@ -39,6 +43,11 @@ module Arrest
39
43
  end
40
44
  end
41
45
 
46
+ class CallLogger
47
+ def self.log(requestLog, responseLog)
48
+ end
49
+ end
50
+
42
51
  end
43
52
 
44
53
  end
@@ -1,6 +1,8 @@
1
1
  require 'faraday'
2
+ require 'arrest/handler'
2
3
 
3
4
  module Arrest
5
+
4
6
  class HttpSource
5
7
 
6
8
  def initialize base
@@ -22,6 +24,9 @@ module Arrest
22
24
  req.url sub, filter
23
25
  add_headers req.headers
24
26
  end
27
+ rql = RequestLog.new(:get, "#{sub}#{hash_to_query filter}", nil)
28
+ rsl = ResponseLog.new(response.env[:status], response.body)
29
+ Arrest::Source.call_logger.log(rql, rsl)
25
30
  if response.env[:status] != 200
26
31
  raise Errors::DocumentNotFoundError
27
32
  end
@@ -33,6 +38,9 @@ module Arrest
33
38
  req.url sub, filter
34
39
  add_headers req.headers
35
40
  end
41
+ rql = RequestLog.new(:get, "#{sub}#{hash_to_query filter}", nil)
42
+ rsl = ResponseLog.new(response.env[:status], response.body)
43
+ Arrest::Source.call_logger.log(rql, rsl)
36
44
  response.body
37
45
  end
38
46
 
@@ -42,6 +50,9 @@ module Arrest
42
50
  req.url rest_resource.resource_location
43
51
  add_headers req.headers
44
52
  end
53
+ rql = RequestLog.new(:delete, rest_resource.resource_location, nil)
54
+ rsl = ResponseLog.new(response.env[:status], response.body)
55
+ Arrest::Source.call_logger.log(rql, rsl)
45
56
  response.env[:status] == 200
46
57
  end
47
58
 
@@ -50,11 +61,19 @@ module Arrest
50
61
  hash = rest_resource.to_jhash
51
62
  hash.delete(:id)
52
63
  hash.delete("id")
64
+ body = hash.to_json
53
65
 
54
66
  response = self.connection().put do |req|
55
67
  req.url rest_resource.resource_location
56
68
  add_headers req.headers
57
- req.body = hash.to_json
69
+ req.body = body
70
+ end
71
+ rql = RequestLog.new(:put, rest_resource.resource_location, body)
72
+ rsl = ResponseLog.new(response.env[:status], response.body)
73
+ Arrest::Source.call_logger.log(rql, rsl)
74
+ if response.env[:status] != 200
75
+ err = Arrest::Source.error_handler.convert(response.body, response.env[:status])
76
+ rest_resource.errors.add(:base, err)
58
77
  end
59
78
  response.env[:status] == 200
60
79
  end
@@ -74,17 +93,17 @@ module Arrest
74
93
  add_headers req.headers
75
94
  req.body = body
76
95
  end
96
+ rql = RequestLog.new(:post, rest_resource.resource_path, body)
97
+ rsl = ResponseLog.new(response.env[:status], response.body)
98
+ Arrest::Source.call_logger.log(rql, rsl)
77
99
  if (response.env[:status] == 201)
78
100
  location = response.env[:response_headers][:location]
79
101
  id = location.gsub(/^.*\//, '')
80
102
  rest_resource.id= id
81
103
  true
82
104
  else
83
- if response.env[:status] != 201
84
- err = Arrest::Source.error_handler.convert(response.body, response.env[:status])
85
- rest_resource.errors.add(:base, err)
86
- end
87
- puts "unable to create: #{response.env[:response_headers]} body: #{response.body} "
105
+ err = Arrest::Source.error_handler.convert(response.body, response.env[:status])
106
+ rest_resource.errors.add(:base, err)
88
107
  false
89
108
  end
90
109
 
@@ -100,5 +119,19 @@ module Arrest
100
119
  end
101
120
  end
102
121
 
122
+ def hash_to_query hash
123
+ return "" if hash.empty?
124
+ r = ""
125
+ c = '?'
126
+ hash.each_pair do |k,v|
127
+ r << c
128
+ r << k.to_s
129
+ r << '='
130
+ r << v.to_s
131
+ c = '&'
132
+ end
133
+ r
134
+ end
135
+
103
136
  end
104
137
  end
@@ -15,6 +15,7 @@ module Arrest
15
15
  attr_accessor :json_key_converter
16
16
  attr_accessor :skip_validations
17
17
  attr_accessor :error_handler
18
+ attr_accessor :call_logger
18
19
 
19
20
  def source=(host=nil)
20
21
  if [nil, ""].include?(host)
@@ -54,6 +55,7 @@ module Arrest
54
55
  Source.debug = false
55
56
  Source.json_key_converter = Handlers::KeyConverter
56
57
  Source.error_handler = Handlers::ErrorHandler
58
+ Source.call_logger = Handlers::CallLogger
57
59
  Source.skip_validations = false
58
60
 
59
61
  end
@@ -1,3 +1,3 @@
1
1
  module Arrest
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.14"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arrest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-11 00:00:00.000000000Z
12
+ date: 2012-01-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &13647940 !ruby/object:Gem::Requirement
16
+ requirement: &18819600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *13647940
24
+ version_requirements: *18819600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: faraday
27
- requirement: &13647020 !ruby/object:Gem::Requirement
27
+ requirement: &18818880 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.7.5
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *13647020
35
+ version_requirements: *18818880
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activemodel
38
- requirement: &13646240 !ruby/object:Gem::Requirement
38
+ requirement: &18818160 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *13646240
46
+ version_requirements: *18818160
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &13645500 !ruby/object:Gem::Requirement
49
+ requirement: &18817680 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *13645500
57
+ version_requirements: *18817680
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &13645080 !ruby/object:Gem::Requirement
60
+ requirement: &18817300 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *13645080
68
+ version_requirements: *18817300
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rdoc
71
- requirement: &13644600 !ruby/object:Gem::Requirement
71
+ requirement: &18816800 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *13644600
79
+ version_requirements: *18816800
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &13644080 !ruby/object:Gem::Requirement
82
+ requirement: &18816280 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '2'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *13644080
90
+ version_requirements: *18816280
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rr
93
- requirement: &13643640 !ruby/object:Gem::Requirement
93
+ requirement: &18815860 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *13643640
101
+ version_requirements: *18815860
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: simplecov
104
- requirement: &13643160 !ruby/object:Gem::Requirement
104
+ requirement: &18815400 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *13643160
112
+ version_requirements: *18815400
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rack
115
- requirement: &13642740 !ruby/object:Gem::Requirement
115
+ requirement: &18814980 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *13642740
123
+ version_requirements: *18814980
124
124
  description: Consume a rest API in a AR like fashion
125
125
  email:
126
126
  - axel.tetzlaff@fortytools.com