simplewoo 0.0.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.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +1 -0
  7. data/lib/simplewoo/authentication.rb +35 -0
  8. data/lib/simplewoo/client/entity.rb +32 -0
  9. data/lib/simplewoo/client/match.rb +20 -0
  10. data/lib/simplewoo/client/personality.rb +31 -0
  11. data/lib/simplewoo/client/root.rb +10 -0
  12. data/lib/simplewoo/client/slider.rb +32 -0
  13. data/lib/simplewoo/client/tag.rb +32 -0
  14. data/lib/simplewoo/client/user.rb +87 -0
  15. data/lib/simplewoo/client.rb +33 -0
  16. data/lib/simplewoo/configuration.rb +34 -0
  17. data/lib/simplewoo/connection.rb +69 -0
  18. data/lib/simplewoo/error.rb +47 -0
  19. data/lib/simplewoo/request.rb +54 -0
  20. data/lib/simplewoo/version.rb +3 -0
  21. data/lib/simplewoo.rb +14 -0
  22. data/simplewoo.gemspec +37 -0
  23. data/spec/simplewoo/client/entity_spec.rb +34 -0
  24. data/spec/simplewoo/client/match_spec.rb +29 -0
  25. data/spec/simplewoo/client/personality_spec.rb +40 -0
  26. data/spec/simplewoo/client/root_spec.rb +53 -0
  27. data/spec/simplewoo/client/slider_spec.rb +37 -0
  28. data/spec/simplewoo/client/tag_spec.rb +35 -0
  29. data/spec/simplewoo/client/user_spec.rb +111 -0
  30. data/spec/simplewoo/error_spec.rb +61 -0
  31. data/spec/spec_helper.rb +36 -0
  32. data/spec/support/mocks/bad_app_secret.json +1 -0
  33. data/spec/support/mocks/empty.json +3 -0
  34. data/spec/support/mocks/entities.json +1554 -0
  35. data/spec/support/mocks/entity.json +77 -0
  36. data/spec/support/mocks/match_results.json +96 -0
  37. data/spec/support/mocks/me.json +20 -0
  38. data/spec/support/mocks/root.json +10 -0
  39. data/spec/support/mocks/slider.json +44 -0
  40. data/spec/support/mocks/sliders.json +23 -0
  41. data/spec/support/mocks/tag.json +20 -0
  42. data/spec/support/mocks/updated_user.json +19 -0
  43. data/spec/support/mocks/user.json +19 -0
  44. metadata +312 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9ce5ee64a12d9b4dba315dfb6befedb743d7d956
4
+ data.tar.gz: 561cd207dea0eea08a393a7b0d6faa3f16e1d677
5
+ SHA512:
6
+ metadata.gz: b294c8dce8d1d0106f9ca4b97c6585d1fb8e22134ddea2c6e9d8757258bc237450613d4c92b0e683ffb4a40014e09cbbd654d1e0c7e3c7a8e8aa201d1183f1e9
7
+ data.tar.gz: 2fdbbdc9fa747de48bb6e08366d5bc13930ff4df48c03586979b895b775b6f78dbcb5c5c107e44413f9fe1341a4feeb2ddc7f73aa31ee4ec5bce617ed8734811
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in simplewoo.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Jason Truluck
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Simplewoo
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'simplewoo'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install simplewoo
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,35 @@
1
+ # lib/simplewoo/authentication.rb
2
+ module Simplewoo
3
+ module Authentication
4
+ def basic_authenticated?
5
+ !!(self.email && self.password)
6
+ end
7
+
8
+ def token_authenticated?
9
+ !!(self.api_token)
10
+ end
11
+
12
+ def authenticated?
13
+ !!(basic_authenticated? || token_authenticated?)
14
+ end
15
+
16
+ def api_token
17
+ self.api_token ||= authenticate if authenticated?
18
+ end
19
+
20
+ # Authenticates the user with their email and password returning an api token
21
+ #
22
+ # @option args [String] email - the email of the user
23
+ # @option args [String] password - the password of the user
24
+ def authenticate(args = {})
25
+ self.email ||= args.delete(:email)
26
+ self.password ||= args.delete(:password)
27
+
28
+ unless token_authenticated?
29
+ self.api_token = me.access_token
30
+ end
31
+
32
+ self.api_token
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,32 @@
1
+ module Simplewoo
2
+ class Client
3
+ module Entity
4
+ # Returns the matched entities for the slider
5
+ #
6
+ # @param [Integer] slider_id - The slider id that the entities are for
7
+ # @param [Integer] page_id - The page id that the entities are for
8
+ #
9
+ # @return [Hashie::Mash] Entities - list of entities by page
10
+ #
11
+ # @author Tom Prats
12
+ # Simplewoo::Client.entities(1)
13
+ def entities(slider_id, page_id=1, options = {})
14
+ get("/sliders/#{slider_id}/entities/page/#{page_id}", options)
15
+ end
16
+
17
+ # Returns matched the entity
18
+ #
19
+ # @param [Integer] slider_id - The slider id that the entity is for
20
+ # @param [Integer] entity_id - The entity id that the entity is for
21
+ #
22
+ # @return [Hashie::Mash] Entity - the entity requested
23
+ #
24
+ # @author Tom Prats
25
+ # Simplewoo::Client.entity(1, 1)
26
+ def entity(slider_id, entity_id, options = {})
27
+ get("/sliders/#{slider_id}/entities/#{entity_id}", options)
28
+ end
29
+ end
30
+ end
31
+ end
32
+
@@ -0,0 +1,20 @@
1
+ module Simplewoo
2
+ class Client
3
+ module Match
4
+ # Returns the matched entities and matched personalities for the slider
5
+ #
6
+ # @param [Integer] id - The slider id that the matches are for
7
+ #
8
+ # @return [Hashie::Mash] matches - the matches for the slider
9
+ #
10
+ # @example Return the entity matches for a slider
11
+ # Simplewoo::Client.match_for_slider(1).entities
12
+ # @example Return the personality matches for a slider
13
+ # Simplewoo::Client.match_for_slider(1).personalities
14
+ def match_for_slider(id, options = {})
15
+ get("/sliders/#{id}/results", options)._embedded
16
+ end
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,31 @@
1
+
2
+ module Simplewoo
3
+ class Client
4
+ module Personality
5
+ # Returns the personalities for the slider
6
+ #
7
+ # @param [Integer] id - The slider id that the matches are for
8
+ #
9
+ # @return [Hashie::Mash] personalities - the personalities for the slider
10
+ #
11
+ # @example Return the personalities for a slider
12
+ # Simplewoo::Client.personality_for_slider(1)
13
+ def personality_for_slider(id, options = {})
14
+ get("/sliders/#{id}/results", options)._embedded.personalities
15
+ end
16
+
17
+ # Resets the slider
18
+ #
19
+ # @param [Integer] id - The slider id that is reset
20
+ #
21
+ # @return status only
22
+ #
23
+ # @example Return the personalities for a slider
24
+ # Simplewoo::Client.personality_for_slider(1)
25
+ def reset(id, options = {})
26
+ delete("/sliders/#{id}/reset", options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+
@@ -0,0 +1,10 @@
1
+ module Simplewoo
2
+ class Client
3
+ module Root
4
+ def root(options = {})
5
+ get("/", options)
6
+ end
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,32 @@
1
+ module Simplewoo
2
+ class Client
3
+ module Slider
4
+ # Return the sliders for the app you are on
5
+ #
6
+ # @note requires an authenticated Client instance (app_secret) _not_ an authenticated user
7
+ #
8
+ # @return [Hashie::Mash] sliders - the sliders available for the app
9
+ #
10
+ # @example Return the sliders for an app
11
+ # Simplewoo::Client.sliders
12
+ def sliders(options = {})
13
+ get("/sliders", options)
14
+ end
15
+
16
+ # Return the requested slider and its associated tags
17
+ #
18
+ # @note requires an authenticated Client instance (app_secret) _not_ an authenticated user
19
+ #
20
+ # @param [Integer] id - the id of the slider that you want to have returned
21
+ #
22
+ # @return [Hashie::Mash] slider - the slider that was requested
23
+ #
24
+ # @example Return a slider
25
+ # Simplewoo::Client.slider(1)
26
+ def slider(id, options = {})
27
+ get("/sliders/#{id}", options)
28
+ end
29
+ end
30
+ end
31
+ end
32
+
@@ -0,0 +1,32 @@
1
+ module Simplewoo
2
+ class Client
3
+ module Tag
4
+ # Returns the matched entities and matched personalities for the slider
5
+ #
6
+ # @param [Integer] slider_id - The slider id that the matches are for
7
+ # @param [Integer] tag_id - The tag id that the matches are for
8
+ # @param [Boolean] value - The tag id that the matches are for
9
+ #
10
+ # @author Carson Wright
11
+ # @author Chris Preisinger
12
+ # Simplewoo::Client.add_tag(1, 1, true)
13
+ def add_tag(slider_id, tag_id, value, options = {})
14
+ options.merge!(me: value)
15
+ post("/sliders/#{slider_id}/tags/#{tag_id}/add", options)
16
+ end
17
+
18
+ # Returns a tag
19
+ #
20
+ # @param [Integer] tag_id - The tag id you want returned
21
+ #
22
+ # @return [Hashie::Mash] Tag - the requested tag
23
+ #
24
+ # @author Carson Wright
25
+ # Simplewoo::Client.tag(1, 1, true)
26
+ def tag(tag_id, options = {})
27
+ get("/tags/#{tag_id}", options)
28
+ end
29
+ end
30
+ end
31
+ end
32
+
@@ -0,0 +1,87 @@
1
+ module Simplewoo
2
+ class Client
3
+ module User
4
+ # Create a user on the core api
5
+ #
6
+ # @param [String] email - the email of the user
7
+ # @param [String] password - the password of the user
8
+ # @param [String] password_confirmation - the password_confirmation of the user
9
+ # @param [String] birthday - the birthday of the user
10
+ # @param [String] first_name - the first name of the user
11
+ # @param [String] last_name - the first name of the user
12
+ #
13
+ # @option options [String] bio - The users bio
14
+ # @option options [String] image - The users image
15
+ #
16
+ # @return [Hashie::Mash] user the user created by the request
17
+ #
18
+ # @example Create a user
19
+ # Simplewoo.create_user({
20
+ # :email => "some@example.com",
21
+ # :password => "password",
22
+ # :password_confirmation => "password",
23
+ # :birthday => "1988-01-01",
24
+ # :first_name => "Johnny",
25
+ # :last_name => "Test"
26
+ # })
27
+ def create_user(email, password, password_confirmation, birthday, first_name, last_name, options = {})
28
+ options.merge!({
29
+ :email => email,
30
+ :password => password,
31
+ :password_confirmation => password_confirmation,
32
+ :birthday => birthday,
33
+ :first_name => first_name,
34
+ :last_name => last_name
35
+ })
36
+
37
+ result = post("/users", { :user => options })
38
+ # TODO we should really make this core method return an api_token as well and use that instead
39
+ authenticate({:email => email, :password => password })
40
+ result
41
+ end
42
+
43
+ # Update a user on the core api
44
+ #
45
+ # @note This method requires an authenticated user via email + password or api_token
46
+ #
47
+ # @option options [String] email - the email of the user
48
+ # @option options [String] password - the password of the user
49
+ # @option options [String] password_confirmation - the password_confirmation of the user
50
+ # @option options [String] birthday - the birthday of the user
51
+ # @option options [String] first_name - the first name of the user
52
+ # @option options [String] last_name - the first name of the user
53
+ # @option options [String] bio - The users bio
54
+ # @option options [String] image - The users image
55
+ #
56
+ # @return [Hashie::Mash] user the user updated by the request
57
+ #
58
+ # @example Update a user
59
+ # Simplewoo.update_user({
60
+ # :email => "some_new_email@example.com"
61
+ # })
62
+ def update_user(options = {})
63
+ if authenticated?
64
+ put("/users/me", { :user => options })
65
+ else
66
+ raise "No authorized user."
67
+ end
68
+ end
69
+ alias :reset_password :update_user
70
+
71
+ # Returns the currently authenticated user
72
+ #
73
+ # @note This method requires an authenticated user via email + password or api_token
74
+ #
75
+ # @example Return the user
76
+ # Simplewoo.me
77
+ def me
78
+ if authenticated?
79
+ get("/users/me")
80
+ else
81
+ raise "No authorized user."
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+
@@ -0,0 +1,33 @@
1
+ # lib/simplewoo/client.rb
2
+ # require base modules
3
+ require "simplewoo/authentication"
4
+ require "simplewoo/connection"
5
+ require "simplewoo/request"
6
+ # require client modules in lib/simplewoo/client
7
+ Dir[File.expand_path("../client/*.rb", __FILE__)].each {|f| require f }
8
+
9
+ module Simplewoo
10
+ class Client
11
+ attr_accessor(*Configuration::VALID_OPTIONS_KEYS)
12
+
13
+ def initialize(options = {})
14
+ options = Simplewoo.options.merge(options)
15
+
16
+ Configuration::VALID_OPTIONS_KEYS.each do |key|
17
+ send("#{key}=", options[key])
18
+ end
19
+ end
20
+
21
+ include Simplewoo::Authentication
22
+ include Simplewoo::Connection
23
+ include Simplewoo::Request
24
+
25
+ include Simplewoo::Client::Root
26
+ include Simplewoo::Client::User
27
+ include Simplewoo::Client::Slider
28
+ include Simplewoo::Client::Match
29
+ include Simplewoo::Client::Personality
30
+ include Simplewoo::Client::Tag
31
+ include Simplewoo::Client::Entity
32
+ end
33
+ end
@@ -0,0 +1,34 @@
1
+ # lib/simplewoo/configuration.rb#
2
+ module Simplewoo
3
+ module Configuration
4
+ # TODO try to remove redis
5
+ VALID_OPTIONS_KEYS = [
6
+ :app_secret,
7
+ :api_server_host,
8
+ :api_endpoint,
9
+ :trusted,
10
+ :ssl,
11
+ :email,
12
+ :password,
13
+ :api_token,
14
+ :debug
15
+ ]
16
+
17
+ attr_accessor(*VALID_OPTIONS_KEYS)
18
+
19
+ def configure
20
+ yield self
21
+ end
22
+
23
+ def options
24
+ VALID_OPTIONS_KEYS.inject({}){|o,k| o.merge!(k => send(k)) }
25
+ end
26
+
27
+ def reset!
28
+ VALID_OPTIONS_KEYS.each {|key| class_eval(%Q{key = nil}) }
29
+ self.trusted = "false"
30
+ self.ssl = true
31
+ self.debug = false
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,69 @@
1
+ # lib/simplewoo/connection.rb
2
+ require "json"
3
+ require "faraday_middleware"
4
+ require "simplewoo/error"
5
+ require "pry"
6
+
7
+ module Simplewoo
8
+ module Connection
9
+ def connection(options = {})
10
+ connection ||= Faraday.new(options) do |faraday|
11
+ faraday.request :url_encoded
12
+ if basic_authenticated?
13
+ faraday.request :basic_auth, self.email, self.password
14
+ elsif token_authenticated?
15
+ faraday.request :basic_auth, "", self.api_token
16
+ end
17
+ faraday.use AppSecretMiddleware, app_secret: self.app_secret
18
+ faraday.use TrustedAppMiddleware, trusted: self.trusted
19
+ faraday.response :logger if self.debug
20
+ faraday.use ErrorMiddleware
21
+ faraday.response :mashify
22
+ faraday.response :json, :content_type => /\bjson$/
23
+ faraday.adapter Faraday.default_adapter
24
+ end
25
+
26
+ connection
27
+ end
28
+
29
+ private
30
+ # Middleware for inserting the app secret header into requests
31
+ class AppSecretMiddleware < Faraday::Middleware
32
+ def initialize(app, options = {})
33
+ @app = app
34
+ @options = options
35
+ end
36
+
37
+ def call(env)
38
+ env[:request_headers]["Woofound-App-Secret"] = @options[:app_secret]
39
+ @app.call(env)
40
+ end
41
+ end
42
+ # Middleware for inserting the trusted header into requests
43
+ class TrustedAppMiddleware < Faraday::Middleware
44
+ def initialize(app, options = {})
45
+ @app = app
46
+ @options = options
47
+ end
48
+
49
+ def call(env)
50
+ env[:request_headers]["Woofound-Use-Trusted"] = @options[:trusted].to_s
51
+ @app.call(env)
52
+ end
53
+ end
54
+ # Middleware for responding to Errors returned from the api
55
+ class ErrorMiddleware < Faraday::Middleware
56
+ def initialize(app)
57
+ @app = app
58
+ end
59
+
60
+ def call(env)
61
+ @app.call(env).on_complete do |env|
62
+ if error = Simplewoo::Error.from(env[:response])
63
+ raise error
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,47 @@
1
+ # lib/simplewoo/error.rb
2
+ module Simplewoo
3
+ class Error < StandardError
4
+ attr_accessor :response
5
+
6
+ def self.from(response)
7
+ status = response.status
8
+
9
+ if klass = case status
10
+ when 400 then Simplewoo::BadRequest
11
+ when 401 then Simplewoo::Unauthorized
12
+ when 404 then Simplewoo::NotFound
13
+ when 422 then Simplewoo::UnprocessableEntity
14
+ end
15
+
16
+ klass.new(response)
17
+ end
18
+ end
19
+
20
+ def initialize(response)
21
+ @response = response
22
+ super(error_message)
23
+ end
24
+
25
+ def errors
26
+ response.body
27
+ end
28
+
29
+ private
30
+ def error_message
31
+ message = "#{response.env[:method].upcase} "
32
+ message << "#{response.env[:url].to_s} | "
33
+ message << "#{response.status}: "
34
+ message << "#{response.body.map{|k,v| "#{k}: #{v.first}"}.join(", ")}"
35
+ message
36
+ end
37
+ end
38
+
39
+ # Raised when Woofound Core Api returns a 400 HTTP status code
40
+ class BadRequest < Error; end
41
+ # Raised when Woofound Core Api returns a 401 HTTP status code
42
+ class Unauthorized < Error; end
43
+ # Raised when Woofound Core Api returns a 404 HTTP status code
44
+ class NotFound < Error; end
45
+ # Raised when Woofound Core Api returns a 422 HTTP status code
46
+ class UnprocessableEntity < Error; end
47
+ end
@@ -0,0 +1,54 @@
1
+ # lib/simplewoo/request.rb
2
+ module Simplewoo
3
+ module Request
4
+ def get(path, options = {})
5
+ request(:get, path, options)
6
+ end
7
+
8
+ def post(path, options = {})
9
+ request(:post, path, options)
10
+ end
11
+
12
+ def put(path, options={})
13
+ request(:put, path, options)
14
+ end
15
+
16
+ def delete(path, options={})
17
+ request(:delete, path, options)
18
+ end
19
+
20
+ def last_response
21
+ @last_response
22
+ end
23
+
24
+ private
25
+ def build_endpoint
26
+ endpoint = ssl ? "https://" : "http://"
27
+ endpoint << self.api_server_host
28
+ self.api_endpoint = endpoint
29
+ end
30
+
31
+ def request(method, path, options = {})
32
+ url = options.delete(:endpoint) || build_endpoint
33
+
34
+ connection_options = {}.merge!(:url => url)
35
+
36
+ response = connection(connection_options).send(method) do |request|
37
+ case method
38
+ when :get
39
+ request.url(path, options)
40
+ when :post
41
+ request.url(path, options)
42
+ when :put
43
+ request.url(path, options)
44
+ when :delete
45
+ request.url(path, options)
46
+ end
47
+ end
48
+
49
+ @last_response = response
50
+ response.body
51
+ end
52
+ end
53
+ end
54
+
@@ -0,0 +1,3 @@
1
+ module Simplewoo
2
+ VERSION = "0.0.1"
3
+ end
data/lib/simplewoo.rb ADDED
@@ -0,0 +1,14 @@
1
+ require "simplewoo/version"
2
+ require "simplewoo/configuration"
3
+ require "simplewoo/client"
4
+
5
+ module Simplewoo
6
+ extend Configuration
7
+
8
+ class << self
9
+ # Alias method for Simplewoo::Client.new
10
+ def new(options = {})
11
+ Simplewoo::Client.new(options)
12
+ end
13
+ end
14
+ end
data/simplewoo.gemspec ADDED
@@ -0,0 +1,37 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'simplewoo/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "simplewoo"
8
+ spec.version = Simplewoo::VERSION
9
+ spec.authors = ["Jason Truluck", "Carson Wright", "Tom Prats", "Sam Boyd", "Chris Preisinger"]
10
+ spec.email = ["jason.truluck@gmail.com", "carsonnwright@gmail.com", "tom@tomprats.com", "sam@woofound.com", "chris@woofound.com"]
11
+ spec.description = %q{Woofound Client Gem}
12
+ spec.summary = spec.description
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "faraday", "~> 0.8.0"
22
+ spec.add_dependency "faraday_middleware", "~> 0.9.0"
23
+ spec.add_dependency "hashie", "~> 2.0.0"
24
+ spec.add_dependency "multi_json", "~> 1.8.0"
25
+
26
+ spec.add_development_dependency "bundler", "~> 1.3"
27
+ spec.add_development_dependency "rake", "~> 10.1.0"
28
+ spec.add_development_dependency "rspec", "~> 2.14.0"
29
+ spec.add_development_dependency "pry"
30
+ spec.add_development_dependency "binding_of_caller"
31
+ spec.add_development_dependency "webmock", "~> 1.13.0"
32
+ spec.add_development_dependency "simplecov", "~> 0.7.0"
33
+ spec.add_development_dependency "coveralls", "~> 0.7.0"
34
+ spec.add_development_dependency "yard", "~> 0.8.0.0"
35
+ spec.add_development_dependency "redcarpet", "~> 3.0.0"
36
+ end
37
+