fluidinfo 0.5.0 → 0.5.1

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/README.rdoc CHANGED
@@ -1,35 +1,41 @@
1
- = fluidinfo
1
+ = fluidinfo.rb
2
2
 
3
- Fluidinfo.rb provides a simple interface to fluidinfo.
3
+ +fluidinfo.rb+ provides a simple interface to {Fluidinfo}[http://www.fluidinfo.com].
4
4
 
5
5
  == Simple Example
6
6
 
7
- >> require 'fluidinfo'
8
- >> fluid = Fluidinfo::Client.new
9
- >> fluid.get '/objects', :query => 'has gridaphobe/met'
7
+ >> require "fluidinfo"
8
+ >> fi = Fluidinfo::Client.new
9
+ >> fi.get "/objects", :query => "has gridaphobe/met"
10
10
  => {"ids"=>["fa0bb30b-d1c2-4438-b65c-d86bbb1a44cd"]}
11
11
 
12
- For now, check out Fluidinfo's extensive
13
- {documentation}[http://api.fluidinfo.com/] for explanations of each API call.
12
+ == Authentication
14
13
 
14
+ >> fi = Fluidinfo::Client.new :user => "user", :password => "password"
15
+ >> fi.post "/objects", :body => {:about => "Pulp Fiction"}
16
+ >> fi.put "/about/Pulp Fiction/user/rating", :body => 5
15
17
 
16
- == Contributing to fluidinfo
18
+ +fluidinfo.rb+ is a wrapper around the
19
+ {RestClient}[http://github.com/archiloque/rest-client] gem, and provides a
20
+ similar API. For more details read the {official documentation}[http://rdoc.info/github/gridaphobe/fluidinfo.rb/frames].
17
21
 
18
- * Check out the latest master to make sure the feature hasn't been implemented
22
+ == Contributing to fluidinfo.rb
23
+
24
+ * Check out the latest master to make sure the feature hasn't been implemented
19
25
  or the bug hasn't been fixed yet
20
- * Check out the issue tracker to make sure someone already hasn't requested it
26
+ * Check out the issue tracker to make sure someone already hasn't requested it
21
27
  and/or contributed it
22
28
  * Fork the project
23
29
  * Start a feature/bugfix branch
24
30
  * Commit and push until you are happy with your contribution
25
- * Make sure to add tests for it. This is important so I don't break it in a
31
+ * Make sure to add tests for it. This is important so I don't break it in a
26
32
  future version unintentionally.
27
- * Please try not to mess with the Rakefile, version, or history. If you want
28
- to have your own version, or is otherwise necessary, that is fine, but please
33
+ * Please try not to mess with the Rakefile, version, or history. If you want
34
+ to have your own version, or is otherwise necessary, that is fine, but please
29
35
  isolate to its own commit so I can cherry-pick around it.
30
36
 
31
37
  == Copyright
32
38
 
33
- Copyright (c) 2011 Eric Seidel. See LICENSE.txt for
39
+ Copyright (c) 2011 Eric Seidel. See {file:LICENSE.txt} for
34
40
  further details.
35
41
 
data/Rakefile CHANGED
@@ -29,10 +29,9 @@ Jeweler::RubygemsDotOrgTasks.new
29
29
  require 'rspec/core/rake_task'
30
30
  RSpec::Core::RakeTask.new(:spec)
31
31
 
32
- require 'yard/rake/yardoc_task'
32
+ require 'yard'
33
33
  YARD::Rake::YardocTask.new do |t|
34
34
  t.files = ['lib/**/*.rb']
35
- t.options = ['--any', '--extra', '--opts']
36
35
  end
37
36
 
38
37
  task :default => :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.5.1
data/fluidinfo.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "fluidinfo"
8
- s.version = "0.5.0"
8
+ s.version = "0.5.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Eric Seidel"]
@@ -1,103 +1,133 @@
1
1
  require "rest-client"
2
2
  require "cgi"
3
+ require "uri"
3
4
  require "yajl"
4
5
  require "base64"
5
- require "set"
6
6
 
7
7
  module Fluidinfo
8
- ITERABLE_TYPES = Set.new [Array]
9
- SERIALIZEABLE_TYPES = Set.new [NilClass, String, Fixnum, Float, Symbol,
10
- TrueClass, FalseClass, Array]
11
- JSON_TYPES = Set.new ["application/json",
12
- "application/vnd.fluiddb.value+json"]
13
8
 
9
+ ##
10
+ # {Fluidinfo::Client} handles all of the communication between your
11
+ # application and Fluidinfo. You should create a new
12
+ # {Fluidinfo::Client} anytime you want to begin making calls as a
13
+ # different user. All {Fluidinfo::Client} methods return an instance
14
+ # of {Fluidinfo::Response}.
15
+ #
16
+ # Example Usage:
17
+ # # start with anonymous calls
18
+ # fi = Fluidinfo::Client.new
19
+ # fi.get "/values", :query => "has terry/rating > 4 and eric/seen",
20
+ # :tags => ["imdb.com/title", "amazon.com/price"]
21
+ # # now log in
22
+ # fi = Fluidinfo::Client.new :user => "user", :password => "password"
23
+ # fi.put "/about/Inception/user/comment", :body => "Awesome!"
14
24
  class Client
15
- # The main fluidinfo instance.
16
- MAIN = 'https://fluiddb.fluidinfo.com'
17
- # The sandbox instance, test your code here.
18
- SANDBOX = 'https://sandbox.fluidinfo.com'
19
25
 
20
- def initialize(instance=:main)
21
- if instance == :sandbox
22
- @instance = SANDBOX
23
- else
24
- @instance = MAIN
25
- end
26
- @headers = {
26
+ ##
27
+ # Create a new instance of {Fluidinfo::Client}.
28
+ #
29
+ # @param [Hash] options Initialization options.
30
+ #
31
+ # @option options [String] :user The username to use for
32
+ # authentication.
33
+ # @option options [String] :password The password to use for
34
+ # authentication.
35
+ # @option options [Hash] :headers Additional headers to send with
36
+ # every API call made via this client.
37
+ def initialize(options={})
38
+ base_url = options[:instance] || Fluidinfo::MAIN
39
+ headers = {
27
40
  :accept => "*/*",
28
41
  :user_agent => "fluidinfo.rb/#{Fluidinfo.version}"
29
- }
30
- end
31
-
32
- def login(user, pass)
33
- @headers[:authorization] = "Basic " +
34
- (Base64.encode64 "#{user}:#{pass}").strip
35
- end
36
-
37
- def logout
38
- @headers.delete :authorization
42
+ }.merge(options[:headers] || {})
43
+ @client = RestClient::Resource.new base_url, :user => options[:user],
44
+ :password => options[:password],
45
+ :headers => headers
39
46
  end
40
47
 
41
48
  ##
42
- # Call GET on one of the APIs
49
+ # Call GET on one of the APIs.
43
50
  #
44
- # +options+ contains URI arguments that will be appended to +path+
45
- # consult the {Fluidinfo API documentation}[api.fluidinfo.com] for a list of
46
- # appropriate options
51
+ # @param [String] path The path segment of the API call.
52
+ # @param [Hash] options Additional arguments for the GET call.
53
+ #
54
+ # @option options [Hash] :headers Additional headers to send.
55
+ # @option options [String] :query A Fluidinfo query for objects, only used in
56
+ # +/objects+ and +/values+.
57
+ # @option options [Array] :tags Tags to be deleted, only used in +/values+.
47
58
  def get(path, options={})
48
59
  url = build_url path, options
49
- Response.new(RestClient.get url, @headers)
60
+ headers = options[:headers] || {}
61
+ Response.new(@client[url].get headers)
50
62
  end
51
63
 
52
64
  ##
53
- # Call HEAD on the /about or /object API to test for the existence
54
- # of a tag
55
- def head(path)
56
- path = @instance + path
57
- Response.new(RestClient.head path, @headers)
65
+ # Call HEAD on one of the APIs. Only used to check for the
66
+ # existence of a tag using +/about+ or +/objects+.
67
+ #
68
+ # @param [String] path The path segment of the API call.
69
+ # @param [Hash] options Additional arguments for the GET call.
70
+ #
71
+ # @option options [Hash] :headers Additional headers to send.
72
+ def head(path, options={})
73
+ url = build_url path, options
74
+ headers = options[:headers] || {}
75
+ Response.new(@client[url].head headers)
58
76
  end
59
77
 
60
78
  ##
61
- # Call POST on one of the APIs
79
+ # Call POST on one of the APIs.
80
+ #
81
+ # @param [String] path The path segment of the API call.
82
+ # @param [Hash] options Additional arguments for the POST call.
62
83
  #
63
- # +options[:body]+ contains the request payload. For some API
64
- # calls this may be empty.
84
+ # @option options [Hash] :headers Additional headers to send.
85
+ # @option options [Hash] :body The payload to send.
65
86
  def post(path, options={})
66
- path = @instance + path
67
- if options[:body]
68
- payload = build_payload options
69
- headers = @headers.merge :content_type => payload[:mime]
70
- Response.new(RestClient.post path, payload[:body], headers)
71
- else
72
- Response.new(RestClient.post path, nil, @headers)
87
+ url = build_url path, options
88
+ body = options[:body]
89
+ headers = options[:headers] || {}
90
+ if body
91
+ # the body for a POST will always be app/json, so no need
92
+ # to waste cycles in build_payload
93
+ body = Yajl.dump body
94
+ headers.merge! :content_type => "application/json"
73
95
  end
96
+ Response.new(@client[url].post body, headers)
74
97
  end
75
98
 
76
99
  ##
77
- # Call PUT on one of the APIs
100
+ # Call PUT on one of the APIs.
78
101
  #
79
- # +options[:body]+ contains the request payload.
102
+ # @param [String] path The path segment of the API call.
103
+ # @param [Hash] options Additional arguments for the PUT call.
80
104
  #
81
- # +options[:mime]+ contains the MIME-type unless the payload is
82
- # JSON-encodable
105
+ # @option options [Hash] :headers Additional headers to send.
106
+ # @option options [Hash, other] :body The payload to send. Type
107
+ # should be +Hash+ unless sending a tag-value.
108
+ # @option options [String] :mime The mime-type of an opaque tag-value.
83
109
  def put(path, options={})
84
110
  url = build_url path, options
85
- payload = build_payload options
86
- headers = @headers.merge(:content_type => payload[:mime],
87
- :content_length => payload[:size])
88
- Response.new(RestClient.put url, payload[:body], headers)
111
+ body, mime = build_payload options
112
+ headers = (options[:headers] || {}).merge :content_type => mime
113
+ Response.new(@client[url].put body, headers)
89
114
  end
90
115
 
91
116
  ##
92
- # Call DELETE on one of the APIs
117
+ # Call DELETE on one of the APIs.
93
118
  #
94
- # +options+ contains URI arguments that will be appended to +path+
95
- # consult the {Fluidinfo API documentation}[api.fluidinfo.com] for a list
96
- # of appropriate options
119
+ # @param [String] path The path segment of the API call.
120
+ # @param [Hash] options Additional arguments for the DELETE call.
121
+ #
122
+ # @option options [Hash] :headers Additional headers to send.
123
+ # @option options [String] :query A Fluidinfo query for objects, only used in
124
+ # +/values+.
125
+ # @option options [Array] :tags Tags to be deleted, only used in +/values+.
97
126
  def delete(path, options={})
98
127
  url = build_url path, options
128
+ headers = options[:headers] || {}
99
129
  # nothing returned in response body for DELETE
100
- Response.new(RestClient.delete url, @headers)
130
+ Response.new(@client[url].delete headers)
101
131
  end
102
132
 
103
133
  private
@@ -120,50 +150,53 @@ module Fluidinfo
120
150
  end.join('&')
121
151
  # fix for /about API
122
152
  if path.start_with? '/about/'
123
- path = path.split("/").map{|x| CGI.escape x}.join("/")
153
+ # path components need to be escaped with URI.escape instead
154
+ # of CGI.escape so " " is translated properly to "%20"
155
+ path = path.split("/").map{|x| URI.escape x}.join("/")
124
156
  end
125
157
  if args != ''
126
- "#{@instance}#{path}?#{args}"
158
+ "#{path}?#{args}"
127
159
  else
128
- "#{@instance}#{path}"
160
+ "#{path}"
129
161
  end
130
162
  end
131
163
 
132
164
  ##
133
165
  # Build the payload from the options hash
134
166
  def build_payload(options)
135
- payload = options.reject {|k,v| !([:body, :mime].include? k)}
136
- if payload[:mime]
167
+ body = options[:body]
168
+ mime = options[:mime]
169
+ if mime
137
170
  # user set mime-type, let them deal with it :)
138
171
  # fix for ruby 1.8
139
- if payload[:body].is_a? File
140
- payload[:size] = payload[:body].path.size
172
+ if body.is_a? File
173
+ size = body.path.size
141
174
  else
142
- payload[:size] = payload[:body].size
175
+ size = body.size
143
176
  end
144
- elsif payload[:body].is_a? Hash
145
- payload[:body] = Yajl.dump payload[:body]
146
- payload[:mime] = "application/json"
147
- elsif SERIALIZEABLE_TYPES.include? payload[:body].class
148
- if ITERABLE_TYPES.include? payload[:body].class
149
- if is_set_of_strings? payload[:body]
177
+ elsif body.is_a? Hash
178
+ body = Yajl.dump body
179
+ mime = "application/json"
180
+ elsif SERIALIZEABLE_TYPES.include? body.class
181
+ if ITERABLE_TYPES.include? body.class
182
+ if is_set_of_strings? body
150
183
  # set of strings is primitive
151
- payload[:mime] = "application/vnd.fluiddb.value+json"
184
+ mime = "application/vnd.fluiddb.value+json"
152
185
  else
153
186
  # we have an Array with some non-String items
154
- payload[:mime] = "application/json"
187
+ mime = "application/json"
155
188
  end
156
189
  else
157
190
  # primitive type
158
- payload[:mime] = "application/vnd.fluiddb.value+json"
191
+ mime = "application/vnd.fluiddb.value+json"
159
192
  end
160
- payload[:body] = Yajl.dump payload[:body]
193
+ body = Yajl.dump body
161
194
  else
162
195
  raise TypeError, "You must supply the mime-type"
163
196
  end
164
- payload
197
+ [body, mime]
165
198
  end
166
-
199
+
167
200
  ##
168
201
  # Check if payload is a "set of strings"
169
202
  def is_set_of_strings?(list)
@@ -1,11 +1,22 @@
1
1
  require "yajl"
2
2
 
3
3
  module Fluidinfo
4
+
5
+ ##
6
+ # An instance of {Fluidinfo::Response} is returned by all of the
7
+ # {Fluidinfo::Client} calls. There's no reason to instantiate one
8
+ # yourself.
4
9
  class Response
5
- attr_reader :status, :headers, :content, :value, :response
10
+ # [Integer] The return code of the API call.
11
+ attr_reader :status
12
+ # [Hash] The returned headers.
13
+ attr_reader :headers
14
+ # [String, nil] The raw response
15
+ attr_reader :content
16
+ # [Hash, String] The parsed response if the +Content-Type+ was one of {Fluidinfo::JSON_TYPES}, otherwise equivalent to {#content}.
17
+ attr_reader :value
6
18
 
7
19
  def initialize(response)
8
- @response = response
9
20
  @status = response.code
10
21
  @headers = response.headers
11
22
  @content = response.body
@@ -16,9 +27,11 @@ module Fluidinfo
16
27
  end
17
28
  end
18
29
 
30
+ ##
31
+ # A shortcut for +Response.value#[]+.
19
32
  def [](key)
20
33
  @value[key]
21
34
  end
22
-
35
+
23
36
  end
24
37
  end
data/lib/fluidinfo.rb CHANGED
@@ -1,2 +1,14 @@
1
1
  require File.join(File.dirname(__FILE__), "/fluidinfo/client")
2
2
  require File.join(File.dirname(__FILE__), "/fluidinfo/response")
3
+
4
+ ##
5
+ # +fludiinfo.rb+ is a library for interacting with
6
+ # {http://www.fluidinfo.com Fluidinfo}. Take a look at
7
+ # {Fluidinfo::Client} to get started.
8
+ module Fluidinfo
9
+ ITERABLE_TYPES = [Array]
10
+ SERIALIZEABLE_TYPES = [NilClass, String, Fixnum, Float, Symbol, TrueClass, FalseClass, Array]
11
+ JSON_TYPES = ["application/json", "application/vnd.fluiddb.value+json"]
12
+ # The main instance of Fluidinfo.
13
+ MAIN = 'https://fluiddb.fluidinfo.com'
14
+ end
@@ -10,7 +10,7 @@ describe Fluidinfo do
10
10
  it "should return a Fluidinfo::Response" do
11
11
  r = @fluid.get("/about/fluidinfo")
12
12
  r.should be_a(Fluidinfo::Response)
13
- r.should respond_to(:status, :content, :headers, :value, :response)
13
+ r.should respond_to(:status, :content, :headers, :value)
14
14
  end
15
15
 
16
16
  describe "/objects" do
@@ -101,14 +101,13 @@ describe Fluidinfo do
101
101
 
102
102
  describe "POST" do
103
103
  before(:each) do
104
- @fluid = Fluidinfo::Client.new
105
- @fluid.login 'test', 'test'
104
+ @fluid = Fluidinfo::Client.new :user => "test", :password => "test"
106
105
  end
107
106
 
108
107
  it "should return a Fluidinfo::Response" do
109
108
  r = @fluid.post("/objects")
110
109
  r.should be_a(Fluidinfo::Response)
111
- r.should respond_to(:status, :content, :headers, :value, :response)
110
+ r.should respond_to(:status, :content, :headers, :value)
112
111
  end
113
112
 
114
113
  describe "/namespaces" do
@@ -130,14 +129,13 @@ describe Fluidinfo do
130
129
 
131
130
  describe "PUT" do
132
131
  before(:each) do
133
- @fluid = Fluidinfo::Client.new
134
- @fluid.login 'test', 'test'
132
+ @fluid = Fluidinfo::Client.new :user => "test", :password => "test"
135
133
  end
136
134
 
137
135
  it "should return a Fluidinfo::Response" do
138
136
  r = @fluid.put("/about/fluidinfo/test/tag", :body => nil)
139
137
  r.should be_a(Fluidinfo::Response)
140
- r.should respond_to(:status, :content, :headers, :value, :response)
138
+ r.should respond_to(:status, :content, :headers, :value)
141
139
  @fluid.delete("/about/fluidinfo/test/tag")
142
140
  end
143
141
 
@@ -226,12 +224,12 @@ describe Fluidinfo do
226
224
  describe "build_url" do
227
225
  it "escapes &'s in query tag-values" do
228
226
  query = "test/tag=\"1&2\""
229
- expected = "https://fluiddb.fluidinfo.com/objects?query=test%2Ftag%3D%221%262%22"
227
+ expected = "/objects?query=test%2Ftag%3D%221%262%22"
230
228
  @fluid.test_build_url("/objects", :query => query).should eq(expected)
231
229
 
232
230
  query = "oreilly.com/title=\"HTML & CSS: The Good Parts\""
233
231
  tags = ["oreilly.com/isbn"]
234
- expected = "https://fluiddb.fluidinfo.com/values?query=oreilly.com%2Ftitle%3D%22HTML+%26+CSS%3A+The+Good+Parts%22&tag=oreilly.com/isbn"
232
+ expected = "/values?query=oreilly.com%2Ftitle%3D%22HTML+%26+CSS%3A+The+Good+Parts%22&tag=oreilly.com/isbn"
235
233
  @fluid.test_build_url("/values",
236
234
  :query => query,
237
235
  :tags => tags).should eq(expected)
@@ -239,7 +237,7 @@ describe Fluidinfo do
239
237
 
240
238
  it "escapes &'s in about-values" do
241
239
  about = "tom & jerry"
242
- expected = "https://fluiddb.fluidinfo.com/about/tom+%26+jerry"
240
+ expected = "/about/tom%20&%20jerry"
243
241
  @fluid.test_build_url('/about/tom & jerry').should eq(expected)
244
242
  end
245
243
  end
@@ -248,14 +246,14 @@ describe Fluidinfo do
248
246
  it "sets proper mime-types" do
249
247
  primitives = [1, 1.1, true, false, nil, ["1", "2", "hi"]]
250
248
  primitives.each do |p|
251
- h = @fluid.test_build_payload :body => p
252
- h[:mime].should eq("application/vnd.fluiddb.value+json")
249
+ body, mime = @fluid.test_build_payload :body => p
250
+ mime.should eq("application/vnd.fluiddb.value+json")
253
251
  end
254
252
 
255
253
  non_primitives = [[1, 2, 3], {"hi" => "there"}]
256
254
  non_primitives.each do |n|
257
- h = @fluid.test_build_payload :body => n
258
- h[:mime].should eq("application/json")
255
+ body, mime = @fluid.test_build_payload :body => n
256
+ mime.should eq("application/json")
259
257
  end
260
258
  end
261
259
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluidinfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-09-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
- requirement: &70220778276580 !ruby/object:Gem::Requirement
16
+ requirement: &70240390467800 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.6.7
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70220778276580
24
+ version_requirements: *70240390467800
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yajl-ruby
27
- requirement: &70220778275920 !ruby/object:Gem::Requirement
27
+ requirement: &70240390467260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70220778275920
35
+ version_requirements: *70240390467260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70220778275320 !ruby/object:Gem::Requirement
38
+ requirement: &70240390466660 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.9.2
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70220778275320
46
+ version_requirements: *70240390466660
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70220778274720 !ruby/object:Gem::Requirement
49
+ requirement: &70240390466120 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.6.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70220778274720
57
+ version_requirements: *70240390466120
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &70220778274120 !ruby/object:Gem::Requirement
60
+ requirement: &70240390465540 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70220778274120
68
+ version_requirements: *70240390465540
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &70220778273520 !ruby/object:Gem::Requirement
71
+ requirement: &70240390464960 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.6.4
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70220778273520
79
+ version_requirements: *70240390464960
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: uuidtools
82
- requirement: &70220778272920 !ruby/object:Gem::Requirement
82
+ requirement: &70240390464380 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 2.1.2
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70220778272920
90
+ version_requirements: *70240390464380
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: yard
93
- requirement: &70220778272320 !ruby/object:Gem::Requirement
93
+ requirement: &70240390463800 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: 0.7.2
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70220778272320
101
+ version_requirements: *70240390463800
102
102
  description: This gem provides a simple interface to fluidinfo, built on top of the
103
103
  rest-client gem.
104
104
  email: gridaphobe@gmail.com
@@ -137,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
137
  version: '0'
138
138
  segments:
139
139
  - 0
140
- hash: 3187277794314220845
140
+ hash: -1150775427864763998
141
141
  required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  none: false
143
143
  requirements: