kekeewin 0.0.1 → 0.0.2

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 (5) hide show
  1. data/CHANGELOG +7 -0
  2. data/README.md +15 -2
  3. data/lib/kekeewin.rb +102 -18
  4. data/lib/kekeewin/version.rb +1 -1
  5. metadata +11 -10
data/CHANGELOG ADDED
@@ -0,0 +1,7 @@
1
+ ## v0.0.2
2
+
3
+ * Added Oauth2 API access
4
+
5
+ ## v0.0.1
6
+
7
+ * Initial release
data/README.md CHANGED
@@ -1,7 +1,20 @@
1
1
  # Kekeewin
2
2
 
3
- API wrapper for Kekeewin on Scouting.io.
4
-
3
+ API wrapper for Kekeewin on Scouting.io. Kekeewin is a central database for all things Scouting related. Currently it contains the following resources:
4
+
5
+ - Regions
6
+ - Areas
7
+ - Councils
8
+ - Districts
9
+ - Lodges
10
+ - Chapters
11
+ - Merit Badges
12
+ - Positions
13
+ - Training Courses
14
+
15
+ ```
16
+ Kekeewin - Such things as are generally understood by the tribe.
17
+ ```
5
18
 
6
19
  ## Installation
7
20
 
data/lib/kekeewin.rb CHANGED
@@ -8,32 +8,107 @@ require 'active_support/concern'
8
8
 
9
9
  module Kekeewin
10
10
 
11
- class Auth
12
- attr :access_token
13
- attr :oauth_client
11
+ module OauthAPI
14
12
 
15
- def initialize(oauth_id = "ccd5cf853a2b5ddbb523da179376ef65467b6affc7b68b7fab647211c002a337", oauth_secret = "ed2a8299d31fb35d3a4f07f46eb0f1e1460ee49e98621a5b9dccfa6b56157ce3", host = "http://kekeewin.dev")
16
- @oauth_client ||= OAuth2::Client.new(oauth_id, oauth_secret, site: host)
13
+ class << self
14
+ def configure(&block)
15
+ Kekeewin::OauthAPI::Base.configure(&block)
16
+ end
17
17
  end
18
18
 
19
- def self.access
20
- @access_token ||= OAuth2::AccessToken.new(@oauth_client, @access_token)
21
- end
19
+ class Auth
20
+ attr :access_token
21
+ attr :oauth_client
22
+
23
+ def self.client(oauth_id = Base.oauth_id, oauth_secret = Base.oauth_secret, host = Base.host)
24
+ @oauth_client ||= OAuth2::Client.new(oauth_id, oauth_secret, site: host)
25
+ end
26
+
27
+ def self.access
28
+ @access_token ||= OAuth2::AccessToken.new(self.client, Base.access_token)
29
+ end
22
30
 
23
- def self.hello
24
- return "Hello, World!"
31
+ def self.hello
32
+ return "Hello, World!"
33
+ end
34
+ end
35
+
36
+ class Lodge
37
+ def self.all
38
+ @lodges ||= Auth.access.get("/api/lodges").parsed
39
+ end
40
+
41
+ def self.test
42
+ return Auth.hello
43
+ end
44
+ end
45
+
46
+ class User
47
+ def self.profile
48
+ Auth.access.get("/api/me.json").parsed
49
+ end
25
50
  end
26
- end
27
51
 
28
- class Lodge
29
- def self.all
30
- @lodges ||= Auth.access.get("/api/lodges").parsed
52
+ module Configuration
53
+ extend ActiveSupport::Concern
54
+
55
+ included do
56
+ add_config :host
57
+ add_config :oauth_id
58
+ add_config :oauth_secret
59
+ add_config :access_token
60
+ # set default values
61
+ reset_config
62
+ end
63
+
64
+ module ClassMethods
65
+ def add_config(name)
66
+ class_eval <<-RUBY, __FILE__, __LINE__ + 1
67
+
68
+ def self.#{name}(value=nil)
69
+ @#{name} = value if value
70
+ return @#{name} if self.object_id == #{self.object_id} || defined?(@#{name})
71
+ name = superclass.#{name}
72
+ return nil if name.nil? && !instance_variable_defined?("@#{name}")
73
+ @#{name} = name && !name.is_a?(Module) && !name.is_a?(Symbol) && !name.is_a?(Numeric) && !name.is_a?(TrueClass) && !name.is_a?(FalseClass) ? name.dup : name
74
+ end
75
+
76
+ def self.#{name}=(value)
77
+ @#{name} = value
78
+ end
79
+
80
+ def #{name}=(value)
81
+ @#{name} = value
82
+ end
83
+
84
+ def #{name}
85
+ value = @#{name} if instance_variable_defined?(:@#{name})
86
+ value = self.class.#{name} unless instance_variable_defined?(:@#{name})
87
+ if value.instance_of?(Proc)
88
+ value.arity >= 1 ? value.call(self) : value.call
89
+ else
90
+ value
91
+ end
92
+ end
93
+ RUBY
94
+ end
95
+
96
+ def configure
97
+ yield self
98
+ end
99
+
100
+ def reset_config
101
+ configure do |config|
102
+ config.host = "http://kekeewin.dev"
103
+ end
104
+ end
105
+ end
31
106
  end
32
107
 
33
- def self.test
34
- return Auth.hello
108
+ class Base
109
+ include Kekeewin::OauthAPI::Configuration
35
110
  end
36
- end
111
+ end
37
112
 
38
113
  module RestAPI
39
114
 
@@ -47,11 +122,21 @@ module Kekeewin
47
122
  HTTParty.get(Base.host + "/rest_api/councils.json", options)
48
123
  end
49
124
 
125
+ def districts(options={})
126
+ options.merge!({:basic_auth => {:username => Base.username, :password => Base.password}})
127
+ HTTParty.get(Base.host + "/rest_api/districts.json", options)
128
+ end
129
+
50
130
  def lodges(options={})
51
131
  options.merge!({:basic_auth => {:username => Base.username, :password => Base.password}})
52
132
  HTTParty.get(Base.host + "/rest_api/lodges.json", options)
53
133
  end
54
134
 
135
+ def chapters(options={})
136
+ options.merge!({:basic_auth => {:username => Base.username, :password => Base.password}})
137
+ HTTParty.get(Base.host + "/rest_api/chapters.json", options)
138
+ end
139
+
55
140
  def positions(options={})
56
141
  options.merge!({:basic_auth => {:username => Base.username, :password => Base.password}})
57
142
  HTTParty.get(Base.host + "/rest_api/positions.json", options)
@@ -66,7 +151,6 @@ module Kekeewin
66
151
  add_config :host
67
152
  add_config :username
68
153
  add_config :password
69
-
70
154
  # set default values
71
155
  reset_config
72
156
  end
@@ -1,3 +1,3 @@
1
1
  module Kekeewin
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kekeewin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-07 00:00:00.000000000 Z
12
+ date: 2013-10-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70174486086940 !ruby/object:Gem::Requirement
16
+ requirement: &70156718726200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70174486086940
24
+ version_requirements: *70156718726200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: oauth2
27
- requirement: &70174486086280 !ruby/object:Gem::Requirement
27
+ requirement: &70156718725560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70174486086280
35
+ version_requirements: *70156718725560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: httparty
38
- requirement: &70174486085700 !ruby/object:Gem::Requirement
38
+ requirement: &70156718724980 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70174486085700
46
+ version_requirements: *70156718724980
47
47
  description: API wrapper for Kekeewin on Scouting.io.
48
48
  email:
49
49
  - crjones@gmail.com
@@ -53,6 +53,7 @@ extra_rdoc_files: []
53
53
  files:
54
54
  - .gitignore
55
55
  - .rspec
56
+ - CHANGELOG
56
57
  - Gemfile
57
58
  - LICENSE.txt
58
59
  - README.md
@@ -77,7 +78,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
78
  version: '0'
78
79
  segments:
79
80
  - 0
80
- hash: -792729284599569794
81
+ hash: -1436102944154449281
81
82
  required_rubygems_version: !ruby/object:Gem::Requirement
82
83
  none: false
83
84
  requirements:
@@ -86,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
87
  version: '0'
87
88
  segments:
88
89
  - 0
89
- hash: -792729284599569794
90
+ hash: -1436102944154449281
90
91
  requirements: []
91
92
  rubyforge_project:
92
93
  rubygems_version: 1.8.17