resto 0.0.3 → 0.0.4

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.
Files changed (47) hide show
  1. data/lib/blankslate.rb +110 -0
  2. data/lib/resto.rb +264 -0
  3. data/lib/resto/attributes.rb +56 -0
  4. data/lib/resto/extra/copy.rb +34 -0
  5. data/lib/resto/extra/delegation.rb +26 -0
  6. data/lib/resto/extra/hash_args.rb +56 -0
  7. data/lib/resto/format.rb +20 -0
  8. data/lib/resto/format/default.rb +11 -0
  9. data/lib/resto/format/json.rb +30 -0
  10. data/lib/resto/format/plain.rb +14 -0
  11. data/lib/resto/format/xml.rb +66 -0
  12. data/lib/resto/property.rb +50 -0
  13. data/lib/resto/property/handler.rb +57 -0
  14. data/lib/resto/property/integer.rb +29 -0
  15. data/lib/resto/property/string.rb +19 -0
  16. data/lib/resto/property/time.rb +43 -0
  17. data/lib/resto/request/base.rb +88 -0
  18. data/lib/resto/request/factory.rb +66 -0
  19. data/lib/resto/request/header.rb +58 -0
  20. data/lib/resto/request/option.rb +126 -0
  21. data/lib/resto/request/uri.rb +50 -0
  22. data/lib/resto/response/base.rb +85 -0
  23. data/lib/resto/translator/request_factory.rb +44 -0
  24. data/lib/resto/translator/response_factory.rb +28 -0
  25. data/lib/resto/validate.rb +37 -0
  26. data/lib/resto/validate/inclusion.rb +39 -0
  27. data/lib/resto/validate/length.rb +36 -0
  28. data/lib/resto/validate/presence.rb +24 -0
  29. data/lib/resto/version.rb +5 -0
  30. data/resto.gemspec +43 -0
  31. data/spec/resto/extra/copy_spec.rb +58 -0
  32. data/spec/resto/extra/hash_args_spec.rb +71 -0
  33. data/spec/resto/format/default_spec.rb +24 -0
  34. data/spec/resto/format/json_spec.rb +29 -0
  35. data/spec/resto/format/plain_spec.rb +21 -0
  36. data/spec/resto/format/xml_spec.rb +105 -0
  37. data/spec/resto/property/handler_spec.rb +57 -0
  38. data/spec/resto/property/integer_spec.rb +67 -0
  39. data/spec/resto/property/time_spec.rb +124 -0
  40. data/spec/resto/property_spec.rb +60 -0
  41. data/spec/resto/request/base_spec.rb +253 -0
  42. data/spec/resto/request/factory_spec.rb +114 -0
  43. data/spec/resto/translator/response_factory_spec.rb +93 -0
  44. data/spec/resto/validate/presence_spec.rb +102 -0
  45. data/spec/resto_spec.rb +531 -0
  46. data/spec/spec_helper.rb +119 -0
  47. metadata +48 -3
@@ -0,0 +1,119 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+ require "rubygems"
5
+ require "bundler/setup"
6
+ require "rspec"
7
+ require 'resto'
8
+ require 'webmock/rspec'
9
+ require 'yajl'
10
+ require 'time'
11
+
12
+ Bundler.require :default
13
+
14
+ RSpec.configure do |c|
15
+ c.mock_with :rspec
16
+ c.include WebMock::API
17
+ c.fail_fast = true
18
+ end
19
+
20
+ # Helper methods
21
+ def basic_encode(account, password)
22
+ 'Basic ' + ["#{account}:#{password}"].pack('m').delete("\r\n")
23
+ end
24
+
25
+ def headers(options = {})
26
+ {'accept' => '*/*', 'user-agent' => 'Ruby'}.merge(options)
27
+ end
28
+
29
+ def eval_context(string, &block)
30
+ eval(string)
31
+ context(string, &block)
32
+ end
33
+
34
+ def class_context(klass, &block)
35
+ eval_context(klass, &block)
36
+ end
37
+
38
+ def to_json(hash)
39
+ Yajl::Encoder.encode(hash)
40
+ end
41
+
42
+ class Hash
43
+ def to_json
44
+ Yajl::Encoder.encode(self)
45
+ end
46
+ end
47
+
48
+ class Array
49
+ def to_json
50
+ Yajl::Encoder.encode(self)
51
+ end
52
+ end
53
+
54
+ # Copied from https://github.com/notahat/time_travel
55
+ module TimeTravel
56
+ module TimeExtensions
57
+
58
+ def self.included(base)
59
+ base.extend(ClassMethods)
60
+ base.class_eval do
61
+ class << self
62
+ alias_method :immutable_now, :now
63
+ alias_method :now, :mutable_now
64
+ end
65
+ end
66
+ base.now = nil
67
+ end
68
+
69
+ module ClassMethods
70
+
71
+ @@now = nil
72
+ @@simulated_offset = nil
73
+
74
+ def now=(value)
75
+ @@now = value.is_a?(String) ? parse(value) : value
76
+ end
77
+
78
+ def mutable_now
79
+ @@now || immutable_now
80
+ end
81
+
82
+ def simulated_offset=(offset)
83
+ @@simulated_offset = offset
84
+ end
85
+
86
+ def simulated_offset
87
+ @@simulated_offset
88
+ end
89
+
90
+ end
91
+ end
92
+ end
93
+
94
+ class Time
95
+ include TimeTravel::TimeExtensions
96
+
97
+ def new_local_time
98
+ if self.class.simulated_offset
99
+ old_localtime(self.class.simulated_offset)
100
+ else
101
+ old_localtime
102
+ end
103
+ end
104
+
105
+ alias_method :old_localtime, :localtime
106
+ alias_method :localtime, :new_local_time
107
+
108
+ end
109
+
110
+ def at_time(time, offset=nil)
111
+ Time.simulated_offset = offset
112
+ Time.now = time
113
+ begin
114
+ yield Time.now
115
+ ensure
116
+ Time.now = nil
117
+ Time.simulated_offset = nil
118
+ end
119
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: resto
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.3
5
+ version: 0.0.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - "Anders T\xC3\xB6rnqvist"
@@ -142,8 +142,53 @@ extensions: []
142
142
 
143
143
  extra_rdoc_files: []
144
144
 
145
- files: []
146
-
145
+ files:
146
+ - lib/blankslate.rb
147
+ - lib/resto/attributes.rb
148
+ - lib/resto/extra/copy.rb
149
+ - lib/resto/extra/delegation.rb
150
+ - lib/resto/extra/hash_args.rb
151
+ - lib/resto/format/default.rb
152
+ - lib/resto/format/json.rb
153
+ - lib/resto/format/plain.rb
154
+ - lib/resto/format/xml.rb
155
+ - lib/resto/format.rb
156
+ - lib/resto/property/handler.rb
157
+ - lib/resto/property/integer.rb
158
+ - lib/resto/property/string.rb
159
+ - lib/resto/property/time.rb
160
+ - lib/resto/property.rb
161
+ - lib/resto/request/base.rb
162
+ - lib/resto/request/factory.rb
163
+ - lib/resto/request/header.rb
164
+ - lib/resto/request/option.rb
165
+ - lib/resto/request/uri.rb
166
+ - lib/resto/response/base.rb
167
+ - lib/resto/translator/request_factory.rb
168
+ - lib/resto/translator/response_factory.rb
169
+ - lib/resto/validate/inclusion.rb
170
+ - lib/resto/validate/length.rb
171
+ - lib/resto/validate/presence.rb
172
+ - lib/resto/validate.rb
173
+ - lib/resto/version.rb
174
+ - lib/resto.rb
175
+ - spec/resto/extra/copy_spec.rb
176
+ - spec/resto/extra/hash_args_spec.rb
177
+ - spec/resto/format/default_spec.rb
178
+ - spec/resto/format/json_spec.rb
179
+ - spec/resto/format/plain_spec.rb
180
+ - spec/resto/format/xml_spec.rb
181
+ - spec/resto/property/handler_spec.rb
182
+ - spec/resto/property/integer_spec.rb
183
+ - spec/resto/property/time_spec.rb
184
+ - spec/resto/property_spec.rb
185
+ - spec/resto/request/base_spec.rb
186
+ - spec/resto/request/factory_spec.rb
187
+ - spec/resto/translator/response_factory_spec.rb
188
+ - spec/resto/validate/presence_spec.rb
189
+ - spec/resto_spec.rb
190
+ - spec/spec_helper.rb
191
+ - resto.gemspec
147
192
  homepage: http://rubygems.org/gems/resto
148
193
  licenses: []
149
194