fluidinfo 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
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: