chute 0.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data/Gemfile +16 -2
  2. data/Gemfile.lock +52 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.md +46 -0
  5. data/Rakefile +48 -6
  6. data/VERSION +1 -0
  7. data/chute.gemspec +120 -16
  8. data/lib/chute.rb +7 -20
  9. data/lib/chute/client.rb +42 -0
  10. data/lib/chute/configuration.rb +40 -0
  11. data/lib/chute/connection.rb +64 -0
  12. data/lib/chute/response.rb +22 -0
  13. data/lib/chute/v2/albums.rb +60 -0
  14. data/lib/chute/v2/assets.rb +55 -0
  15. data/lib/chute/v2/comments.rb +29 -0
  16. data/lib/chute/v2/flags.rb +21 -0
  17. data/lib/chute/v2/hearts.rb +21 -0
  18. data/lib/chute/v2/parcels.rb +21 -0
  19. data/lib/chute/v2/tags.rb +36 -0
  20. data/lib/chute/v2/triggers.rb +26 -0
  21. data/lib/chute/v2/users.rb +18 -0
  22. data/lib/chute/v2/votes.rb +21 -0
  23. data/lib/chute/version.rb +7 -1
  24. data/spec/chute/chute_spec.rb +64 -0
  25. data/spec/chute/client_spec.rb +82 -0
  26. data/spec/chute/connection_spec.rb +47 -0
  27. data/spec/chute/response_spec.rb +16 -0
  28. data/spec/chute/v2/albums_spec.rb +197 -0
  29. data/spec/chute/v2/assets_spec.rb +171 -0
  30. data/spec/chute/v2/comments_spec.rb +88 -0
  31. data/spec/chute/v2/flags_spec.rb +56 -0
  32. data/spec/chute/v2/hearts_spec.rb +57 -0
  33. data/spec/chute/v2/parcels_spec.rb +24 -0
  34. data/spec/chute/v2/tags_spec.rb +79 -0
  35. data/spec/chute/v2/trigger_spec.rb +127 -0
  36. data/spec/chute/v2/users_spec.rb +53 -0
  37. data/spec/chute/v2/votes_spec.rb +56 -0
  38. data/spec/fixtures/chute_cassettes/albums/album_create_with_permission_view.yml +69 -0
  39. data/spec/fixtures/chute_cassettes/albums/albums_add_remove_assets.yml +187 -0
  40. data/spec/fixtures/chute_cassettes/albums/albums_create.yml +69 -0
  41. data/spec/fixtures/chute_cassettes/albums/albums_delete.yml +128 -0
  42. data/spec/fixtures/chute_cassettes/albums/albums_get.yml +135 -0
  43. data/spec/fixtures/chute_cassettes/albums/albums_list.yml +89 -0
  44. data/spec/fixtures/chute_cassettes/albums/albums_stats.yml +128 -0
  45. data/spec/fixtures/chute_cassettes/albums/albums_update.yml +135 -0
  46. data/spec/fixtures/chute_cassettes/assets/assets_delete.yml +131 -0
  47. data/spec/fixtures/chute_cassettes/assets/assets_geo.yml +197 -0
  48. data/spec/fixtures/chute_cassettes/assets/assets_get.yml +138 -0
  49. data/spec/fixtures/chute_cassettes/assets/assets_import.yml +76 -0
  50. data/spec/fixtures/chute_cassettes/assets/assets_list.yml +77 -0
  51. data/spec/fixtures/chute_cassettes/assets/assets_update.yml +138 -0
  52. data/spec/fixtures/chute_cassettes/comments/comments_create.yml +196 -0
  53. data/spec/fixtures/chute_cassettes/comments/comments_list.yml +259 -0
  54. data/spec/fixtures/chute_cassettes/flags/flags_methods.yml +313 -0
  55. data/spec/fixtures/chute_cassettes/hearts/hearts_methods.yml +254 -0
  56. data/spec/fixtures/chute_cassettes/tags/tags_assets.yml +311 -0
  57. data/spec/fixtures/chute_cassettes/triggers/trigger_errors.yml +62 -0
  58. data/spec/fixtures/chute_cassettes/triggers/triggers_cleanup.yml +184 -0
  59. data/spec/fixtures/chute_cassettes/triggers/triggers_create.yml +65 -0
  60. data/spec/fixtures/chute_cassettes/triggers/triggers_delete.yml +124 -0
  61. data/spec/fixtures/chute_cassettes/triggers/triggers_list.yml +66 -0
  62. data/spec/fixtures/chute_cassettes/triggers/triggers_update.yml +127 -0
  63. data/spec/fixtures/chute_cassettes/users/users_get.yml +128 -0
  64. data/spec/fixtures/chute_cassettes/users/users_me.yml +66 -0
  65. data/spec/fixtures/chute_cassettes/votes/votes_methods.yml +313 -0
  66. data/spec/spec_helper.rb +27 -0
  67. metadata +210 -33
  68. data/.gitignore +0 -5
  69. data/README +0 -125
  70. data/config/chute.rb +0 -0
  71. data/lib/chute/account.rb +0 -58
  72. data/lib/chute/app.rb +0 -32
  73. data/lib/chute/asset.rb +0 -124
  74. data/lib/chute/bundle.rb +0 -72
  75. data/lib/chute/chute.rb +0 -203
  76. data/lib/chute/collection.rb +0 -47
  77. data/lib/chute/comment.rb +0 -32
  78. data/lib/chute/exception.rb +0 -7
  79. data/lib/chute/http_service.rb +0 -114
  80. data/lib/chute/inbox.rb +0 -41
  81. data/lib/chute/parcel.rb +0 -45
  82. data/lib/chute/resource.rb +0 -354
  83. data/lib/chute/user.rb +0 -113
  84. data/lib/chute/util.rb +0 -14
  85. data/test/test_sudoku.rb +0 -7
data/Gemfile CHANGED
@@ -1,4 +1,18 @@
1
1
  source "http://rubygems.org"
2
+ gem 'httparty'
3
+ gem 'hashie'
2
4
 
3
- # Specify your gem's dependencies in get_chute.gemspec
4
- gemspec
5
+ # Add dependencies to develop your gem here.
6
+ # Include everything needed to run rake, tests, features, etc.
7
+ group :development do
8
+ gem "rspec", "~> 2.8.0"
9
+ gem "rdoc", "~> 3.12"
10
+ gem "bundler"
11
+ gem "jeweler", "~> 1.8.4"
12
+ gem "simplecov"
13
+ end
14
+
15
+ group :test do
16
+ gem 'webmock'
17
+ gem 'vcr'
18
+ end
@@ -0,0 +1,52 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ addressable (2.3.2)
5
+ crack (0.3.1)
6
+ diff-lcs (1.1.3)
7
+ git (1.2.5)
8
+ hashie (1.2.0)
9
+ httparty (0.9.0)
10
+ multi_json (~> 1.0)
11
+ multi_xml
12
+ jeweler (1.8.4)
13
+ bundler (~> 1.0)
14
+ git (>= 1.2.5)
15
+ rake
16
+ rdoc
17
+ json (1.7.6)
18
+ multi_json (1.5.0)
19
+ multi_xml (0.5.1)
20
+ rake (10.0.3)
21
+ rdoc (3.12)
22
+ json (~> 1.4)
23
+ rspec (2.8.0)
24
+ rspec-core (~> 2.8.0)
25
+ rspec-expectations (~> 2.8.0)
26
+ rspec-mocks (~> 2.8.0)
27
+ rspec-core (2.8.0)
28
+ rspec-expectations (2.8.0)
29
+ diff-lcs (~> 1.1.2)
30
+ rspec-mocks (2.8.0)
31
+ simplecov (0.7.1)
32
+ multi_json (~> 1.0)
33
+ simplecov-html (~> 0.7.1)
34
+ simplecov-html (0.7.1)
35
+ vcr (2.2.5)
36
+ webmock (1.8.11)
37
+ addressable (>= 2.2.7)
38
+ crack (>= 0.1.7)
39
+
40
+ PLATFORMS
41
+ ruby
42
+
43
+ DEPENDENCIES
44
+ bundler
45
+ hashie
46
+ httparty
47
+ jeweler (~> 1.8.4)
48
+ rdoc (~> 3.12)
49
+ rspec (~> 2.8.0)
50
+ simplecov
51
+ vcr
52
+ webmock
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Darko Grozdanovski
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,46 @@
1
+ CHUTE WRAPPER GEM
2
+ ==
3
+
4
+ Development
5
+ --
6
+
7
+ to build and install the gem locally on your system use:
8
+
9
+ rake install
10
+
11
+ you can afterwards include it inside your rails app
12
+
13
+
14
+ Running tests
15
+ --
16
+
17
+ to run the tests write
18
+
19
+
20
+ bundle exec rspec
21
+
22
+
23
+ Configuration of the Gem Inside your config/ folder
24
+ --
25
+
26
+ ```
27
+ Chute.configure do |config|
28
+ config.app_id = YOUR_APP_ID
29
+ config.app_secret = YOUR_APP_SECRET
30
+ config.access_token = YOUR_ACCESS_TOKEN
31
+ end
32
+ ```
33
+
34
+
35
+ The parameters in the response are accessed as standard fields inside a class. Assuming `response` is the basic
36
+ object containing the complete response you can access the id of the element by
37
+
38
+ ```
39
+ response.data.id # if data is a single object
40
+ response.data[0].id # if data is an array
41
+ ```
42
+
43
+
44
+ Responses are being recorded for reuse by using VCR
45
+
46
+ if you need to re-run some of them remove the specific one from `fixtures/`
data/Rakefile CHANGED
@@ -1,11 +1,53 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
1
4
  require 'bundler'
2
- require 'rake/testtask'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
3
13
 
4
- Bundler::GemHelper.install_tasks
14
+ require 'jeweler'
15
+ require './lib/chute/version.rb'
5
16
 
6
- Rake::TestTask.new do |t|
7
- t.libs << 'test'
17
+ Jeweler::Tasks.new do |gem|
18
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
19
+ gem.name = "chute"
20
+ gem.homepage = "https://github.com/chute/chute-sdk-2"
21
+ gem.license = "MIT"
22
+ gem.summary = %Q{getchute API wrapper}
23
+ gem.description = %Q{wrapper for the API for getchute.com}
24
+ gem.email = "support@gmail.com"
25
+ gem.authors = ["Darko Grozdanovski","Chris Burkhart","Petr Bela"]
26
+ gem.version = Chute::Version::STRING
27
+ # dependencies defined in Gemfile
28
+ gem.add_dependency 'httparty'
8
29
  end
30
+ Jeweler::RubygemsDotOrgTasks.new
9
31
 
10
- desc "Run tests"
11
- task :default => :test
32
+ require 'rspec/core'
33
+ require 'rspec/core/rake_task'
34
+ RSpec::Core::RakeTask.new(:spec) do |spec|
35
+ spec.pattern = FileList['spec/**/*_spec.rb']
36
+ end
37
+
38
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
39
+ spec.pattern = 'spec/**/*_spec.rb'
40
+ spec.rcov = true
41
+ end
42
+
43
+ task :default => :spec
44
+
45
+ require 'rdoc/task'
46
+ Rake::RDocTask.new do |rdoc|
47
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
+
49
+ rdoc.rdoc_dir = 'rdoc'
50
+ rdoc.title = "chute #{version}"
51
+ rdoc.rdoc_files.include('README*')
52
+ rdoc.rdoc_files.include('lib/**/*.rb')
53
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 2.0.1
@@ -1,22 +1,126 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
1
4
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "chute/version"
4
- require "httparty"
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "chute"
8
- s.version = Chute::VERSION
9
- s.authors = ["Payal Gupta"]
10
- s.email = ["payal@getchute.com"]
11
- s.homepage = ""
12
- s.summary = %q{Chute API Integration}
13
- s.description = %q{This gem allows to map your models with a chute.}
7
+ s.name = "chute"
8
+ s.version = "2.0.0"
14
9
 
15
- s.rubyforge_project = "chute"
16
-
17
- s.files = `git ls-files`.split("\n")
18
- #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
- s.test_files = Dir.glob("test/**/*.rb")
20
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Darko Grozdanovski", "Chris Burkhart", "Petr Bela"]
12
+ s.date = "2013-04-11"
13
+ s.description = "wrapper for the API for getchute.com"
14
+ s.email = "support@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "Gemfile.lock",
22
+ "LICENSE.txt",
23
+ "README.md",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "chute.gemspec",
27
+ "lib/chute.rb",
28
+ "lib/chute/client.rb",
29
+ "lib/chute/configuration.rb",
30
+ "lib/chute/connection.rb",
31
+ "lib/chute/response.rb",
32
+ "lib/chute/v2/albums.rb",
33
+ "lib/chute/v2/assets.rb",
34
+ "lib/chute/v2/comments.rb",
35
+ "lib/chute/v2/flags.rb",
36
+ "lib/chute/v2/hearts.rb",
37
+ "lib/chute/v2/parcels.rb",
38
+ "lib/chute/v2/tags.rb",
39
+ "lib/chute/v2/triggers.rb",
40
+ "lib/chute/v2/users.rb",
41
+ "lib/chute/v2/votes.rb",
42
+ "lib/chute/version.rb",
43
+ "spec/chute/chute_spec.rb",
44
+ "spec/chute/client_spec.rb",
45
+ "spec/chute/connection_spec.rb",
46
+ "spec/chute/response_spec.rb",
47
+ "spec/chute/v2/albums_spec.rb",
48
+ "spec/chute/v2/assets_spec.rb",
49
+ "spec/chute/v2/comments_spec.rb",
50
+ "spec/chute/v2/flags_spec.rb",
51
+ "spec/chute/v2/hearts_spec.rb",
52
+ "spec/chute/v2/parcels_spec.rb",
53
+ "spec/chute/v2/tags_spec.rb",
54
+ "spec/chute/v2/trigger_spec.rb",
55
+ "spec/chute/v2/users_spec.rb",
56
+ "spec/chute/v2/votes_spec.rb",
57
+ "spec/fixtures/chute_cassettes/albums/album_create_with_permission_view.yml",
58
+ "spec/fixtures/chute_cassettes/albums/albums_add_remove_assets.yml",
59
+ "spec/fixtures/chute_cassettes/albums/albums_create.yml",
60
+ "spec/fixtures/chute_cassettes/albums/albums_delete.yml",
61
+ "spec/fixtures/chute_cassettes/albums/albums_get.yml",
62
+ "spec/fixtures/chute_cassettes/albums/albums_list.yml",
63
+ "spec/fixtures/chute_cassettes/albums/albums_stats.yml",
64
+ "spec/fixtures/chute_cassettes/albums/albums_update.yml",
65
+ "spec/fixtures/chute_cassettes/assets/assets_delete.yml",
66
+ "spec/fixtures/chute_cassettes/assets/assets_geo.yml",
67
+ "spec/fixtures/chute_cassettes/assets/assets_get.yml",
68
+ "spec/fixtures/chute_cassettes/assets/assets_import.yml",
69
+ "spec/fixtures/chute_cassettes/assets/assets_list.yml",
70
+ "spec/fixtures/chute_cassettes/assets/assets_update.yml",
71
+ "spec/fixtures/chute_cassettes/comments/comments_create.yml",
72
+ "spec/fixtures/chute_cassettes/comments/comments_list.yml",
73
+ "spec/fixtures/chute_cassettes/flags/flags_methods.yml",
74
+ "spec/fixtures/chute_cassettes/hearts/hearts_methods.yml",
75
+ "spec/fixtures/chute_cassettes/tags/tags_assets.yml",
76
+ "spec/fixtures/chute_cassettes/triggers/trigger_errors.yml",
77
+ "spec/fixtures/chute_cassettes/triggers/triggers_cleanup.yml",
78
+ "spec/fixtures/chute_cassettes/triggers/triggers_create.yml",
79
+ "spec/fixtures/chute_cassettes/triggers/triggers_delete.yml",
80
+ "spec/fixtures/chute_cassettes/triggers/triggers_list.yml",
81
+ "spec/fixtures/chute_cassettes/triggers/triggers_update.yml",
82
+ "spec/fixtures/chute_cassettes/users/users_get.yml",
83
+ "spec/fixtures/chute_cassettes/users/users_me.yml",
84
+ "spec/fixtures/chute_cassettes/votes/votes_methods.yml",
85
+ "spec/spec_helper.rb"
86
+ ]
87
+ s.homepage = "https://github.com/chute/chute-sdk-2"
88
+ s.licenses = ["MIT"]
21
89
  s.require_paths = ["lib"]
90
+ s.rubygems_version = "1.8.25"
91
+ s.summary = "getchute API wrapper"
92
+
93
+ if s.respond_to? :specification_version then
94
+ s.specification_version = 3
95
+
96
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
97
+ s.add_runtime_dependency(%q<httparty>, [">= 0"])
98
+ s.add_runtime_dependency(%q<hashie>, [">= 0"])
99
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
100
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
101
+ s.add_development_dependency(%q<bundler>, [">= 0"])
102
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
103
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
104
+ s.add_runtime_dependency(%q<httparty>, [">= 0"])
105
+ else
106
+ s.add_dependency(%q<httparty>, [">= 0"])
107
+ s.add_dependency(%q<hashie>, [">= 0"])
108
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
109
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
110
+ s.add_dependency(%q<bundler>, [">= 0"])
111
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
112
+ s.add_dependency(%q<simplecov>, [">= 0"])
113
+ s.add_dependency(%q<httparty>, [">= 0"])
114
+ end
115
+ else
116
+ s.add_dependency(%q<httparty>, [">= 0"])
117
+ s.add_dependency(%q<hashie>, [">= 0"])
118
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
119
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
120
+ s.add_dependency(%q<bundler>, [">= 0"])
121
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
122
+ s.add_dependency(%q<simplecov>, [">= 0"])
123
+ s.add_dependency(%q<httparty>, [">= 0"])
124
+ end
22
125
  end
126
+
@@ -1,22 +1,9 @@
1
- #require "chute/version"
2
- #require "httparty"
1
+ require "httparty"
3
2
 
4
- # include utility modules
5
- require 'chute/util'
6
- require 'chute/http_service'
7
- require 'chute/collection'
8
- require 'chute/exception'
3
+ Dir[File.dirname(__FILE__) + '/chute/**/*.rb'].each do |file|
4
+ require file
5
+ end
9
6
 
10
- # include chute modules
11
-
12
- # base class
13
- require 'chute/resource'
14
- require 'chute/chute'
15
- require 'chute/asset'
16
- require 'chute/account'
17
- require 'chute/bundle'
18
- require 'chute/comment'
19
- require 'chute/parcel'
20
- require 'chute/user'
21
- require 'chute/app'
22
- require 'chute/inbox'
7
+ module Chute
8
+ extend Configuration
9
+ end
@@ -0,0 +1,42 @@
1
+ require 'chute/configuration'
2
+
3
+ module Chute
4
+ def self.as(token, &block)
5
+ temp_token = Chute.access_token
6
+ Chute.configure do |config|
7
+ config.access_token = token
8
+ end
9
+ yield block
10
+ Chute.configure do |config|
11
+ config.access_token = temp_token
12
+ end
13
+ end
14
+
15
+ class Client
16
+
17
+ class << self
18
+ ['get', 'post', 'put', 'delete'].each do |req_type|
19
+ define_method(req_type) do |url, data={}|
20
+ Chute::Connection.request(req_type, url, data)
21
+ end
22
+ end
23
+ end
24
+
25
+ # Define the same set of accessors as the Chute module
26
+ attr_accessor *Configuration::VALID_CONFIG_KEYS
27
+
28
+ def initialize(options={})
29
+ # Merge the config values from the module and those passed
30
+ # to the client.
31
+ merged_options = Chute.options.merge(options)
32
+
33
+ # Copy the merged values to this client and ignore those
34
+ # not part of our configuration
35
+ Configuration::VALID_CONFIG_KEYS.each do |key|
36
+ send("#{key}=", merged_options[key])
37
+ end
38
+ end
39
+
40
+
41
+ end
42
+ end
@@ -0,0 +1,40 @@
1
+ module Chute
2
+ module Configuration
3
+
4
+ VALID_CONNECTION_KEYS = [:api_endpoint, :auth_endpoint].freeze
5
+ VALID_OPTIONS_KEYS = [:app_id, :app_secret, :access_token].freeze
6
+ VALID_CONFIG_KEYS = VALID_CONNECTION_KEYS + VALID_OPTIONS_KEYS
7
+
8
+
9
+ DEFAULT_API_ENDPOINT = 'https://api.getchute.com'
10
+ DEFAULT_AUTH_ENDPOINT = 'https://getchute.com/auth'
11
+
12
+ DEFAULT_APP_ID = 'app_id'
13
+ DEFAULT_APP_SECRET = 'app_secret'
14
+ DEFAULT_ACCESS_TOKEN = 'access_token'
15
+
16
+ attr_accessor *VALID_CONFIG_KEYS
17
+
18
+ def options
19
+ Hash[ * VALID_CONFIG_KEYS.map { |key| [key, send(key)] }.flatten ]
20
+ end
21
+
22
+ def configure
23
+ yield(self)
24
+ end
25
+
26
+ def self.extended(base)
27
+ base.reset
28
+ end
29
+
30
+ def reset
31
+ self.api_endpoint = DEFAULT_API_ENDPOINT
32
+ self.auth_endpoint = DEFAULT_AUTH_ENDPOINT
33
+
34
+ self.app_id = DEFAULT_APP_ID
35
+ self.app_secret = DEFAULT_APP_SECRET
36
+ self.access_token = DEFAULT_ACCESS_TOKEN
37
+ end
38
+
39
+ end
40
+ end