classleaks_oauth 0.1.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/Manifest ADDED
@@ -0,0 +1,5 @@
1
+ Manifest
2
+ Rakefile
3
+ lib/classleaks_oauth.rb
4
+ lib/classleaks_oauth/client.rb
5
+ lib/classleaks_oauth/methods.rb
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('classleaks_oauth', '0.1.1') do |p|
6
+ p.description = 'Classleaks OAuth API client library for ruby'
7
+ p.url = 'http://github.com/thefron/classleaks'
8
+ p.author = 'Hoseong Hwang'
9
+ p.email = 'thefron@wafflestudio.com'
10
+ p.ignore_pattern = ["tmp/*", "script/*"]
11
+ p.development_dependencies = []
12
+ end
13
+
14
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{classleaks_oauth}
5
+ s.version = "0.1.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Hoseong Hwang"]
9
+ s.date = %q{2011-04-27}
10
+ s.description = %q{Classleaks OAuth API client library for ruby}
11
+ s.email = %q{thefron@wafflestudio.com}
12
+ s.extra_rdoc_files = ["lib/classleaks_oauth.rb", "lib/classleaks_oauth/client.rb", "lib/classleaks_oauth/methods.rb"]
13
+ s.files = ["Manifest", "Rakefile", "lib/classleaks_oauth.rb", "lib/classleaks_oauth/client.rb", "lib/classleaks_oauth/methods.rb", "classleaks_oauth.gemspec"]
14
+ s.homepage = %q{http://github.com/thefron/classleaks}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Classleaks_oauth"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{classleaks_oauth}
18
+ s.rubygems_version = %q{1.6.2}
19
+ s.summary = %q{Classleaks OAuth API client library for ruby}
20
+
21
+ if s.respond_to? :specification_version then
22
+ s.specification_version = 3
23
+
24
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
25
+ else
26
+ end
27
+ else
28
+ end
29
+ end
@@ -0,0 +1,8 @@
1
+ require 'oauth'
2
+ require 'json'
3
+
4
+ require 'classleaks_oauth/client'
5
+
6
+ module ClassleaksOAuth
7
+ VERSION = '0.1.1'
8
+ end
@@ -0,0 +1,85 @@
1
+ =begin
2
+ require 'daum_oauth/yozm'
3
+ require 'daum_oauth/cafe'
4
+ require 'daum_oauth/blog'
5
+ =end
6
+ require 'classleaks_oauth/methods'
7
+ require 'uri'
8
+
9
+ module ClassleaksOAuth
10
+ class Client
11
+ def initialize(options = {})
12
+ @consumer_key = options[:consumer_key]
13
+ @consumer_secret = options[:consumer_secret]
14
+ @token = options[:token]
15
+ @secret = options[:secret]
16
+ #@callback_url = options[:callback_url]
17
+ end
18
+
19
+ def authorize(token, secret, options = {})
20
+ request_token = OAuth::RequestToken.new(
21
+ consumer, token, secret
22
+ )
23
+ @access_token = request_token.get_access_token(options)
24
+ @token = @access_token.token
25
+ @secret = @access_token.secret
26
+ @access_token
27
+ end
28
+
29
+ def request_token(options={})
30
+ consumer.get_request_token(options)
31
+ end
32
+
33
+ def authentication_request_token(options = {})
34
+ request_token(options)
35
+ end
36
+
37
+ #get, post, put, delete will be private methods.. now public just for test
38
+
39
+ def get(path, headers={})
40
+ headers.merge!("User-Agent" => "classleaks_oauth gem v#{ClassleaksOAuth::VERSION}")
41
+ oauth_response = access_token.get(path, headers)
42
+ # JSON.parse oauth_response.body
43
+ oauth_response.body
44
+ end
45
+
46
+ def post(path, body='', headers={})
47
+ headers.merge!("User-Agent" => "classleaks_oauth gem v#{ClassleaksOAuth::VERSION}")
48
+ oauth_response = access_token.post(path, body, headers)
49
+ # JSON.parse oauth_response.body
50
+ oauth_response.body
51
+ end
52
+
53
+ def put(path, body='', headers={})
54
+ headers.merge!("User-Agent" => "classleaks_oauth gem v#{ClassleaksOAuth::VERSION}")
55
+ oauth_response = access_token.put(path, body, headers)
56
+ JSON.parse oauth_response.body
57
+ end
58
+
59
+ def delete(path, body='', headers={})
60
+ headers.merge!("User-Agent" => "classleaks_oauth gem v#{ClassleaksOAuth::VERSION}")
61
+ oauth_response = access_token.delete(path, headers)
62
+ JSON.parse oauth_response.body
63
+ end
64
+
65
+ private
66
+
67
+ def consumer
68
+ @consumer ||= OAuth::Consumer.new(
69
+ @consumer_key,
70
+ @consumer_secret,
71
+ {
72
+ :site => 'http://api.classmating.net',
73
+ :request_token_path => '/oauth/request_token',
74
+ :access_token_path => '/oauth/access_token',
75
+ :authorize_path => '/oauth/authorize'
76
+ }
77
+ )
78
+ end
79
+
80
+ def access_token
81
+ @access_token ||= OAuth::AccessToken.new(consumer, @token, @secret)
82
+ end
83
+
84
+ end
85
+ end
@@ -0,0 +1,72 @@
1
+ module ClassleaksOAuth
2
+ class Client
3
+
4
+ #oauth
5
+ def authorized?
6
+ begin
7
+ oauth_response = access_token.get("/oauth/test_request")
8
+ oauth_response.code.to_i == 200
9
+ rescue Exception => e
10
+ false
11
+ end
12
+ end
13
+
14
+ #user
15
+
16
+ def join(username, fullname, password, options={})
17
+ post("/v1/users/join.json", options.merge(:username => username, :fullname => fullname, :password => password))
18
+ end
19
+
20
+ #university, lecture traversing
21
+ def search_lecture(university_id, keyword)
22
+ get("/search/lecture?university_id=#{university_id}&keyword=#{keyword}")
23
+ end
24
+
25
+ def search_university(keyword)
26
+ get("/search/university?keyword=#{keyword}")
27
+ end
28
+
29
+ def my_lectures
30
+ get("/v1/lectures/my.json")
31
+ end
32
+
33
+ def lecture_add(lecture_id, options={})
34
+ post("/v1/lectures/add/#{lecture_id}.json", options)
35
+ end
36
+
37
+ def lecture_delete(lecture_id, options={})
38
+ post("/v1/lectures/delete/#{lecture_id}.json", options)
39
+ end
40
+
41
+ #talk
42
+ def talks(lecture_id, options={})
43
+ get("/v1/talks.json?#{options.merge(:lecture_id => lecture_id).collect{|k,v| "#{k}=#{v}"}.join('&')}")
44
+ end
45
+
46
+ def add_talk(lecture_id, content, options={})
47
+ post("/v1/talks/add.json", options.merge(:lecture_id => lecture_id, :content => content))
48
+ end
49
+
50
+ def destroy_talk(talk_id)
51
+ post("/v1/talks/destroy/#{talk_id}.json")
52
+ end
53
+
54
+ #assessment
55
+ def assessments(lecture_id, options={})
56
+ get("/v1/assessments.json?#{options.merge(:lecture_id => lecture_id).collect{|k,v| "#{k}=#{v}"}.join('&')}")
57
+ end
58
+
59
+ def add_assessment(lecture_id, content, overall, fairness, easiness, options={})
60
+ post("/v1/assessments/add.json", options.merge(:lecture_id => lecture_id, :content => content, :overall => overall, :fairness => fairness, :easiness => easiness))
61
+ end
62
+
63
+ def update_assessment(assessment_id, content, overall, fairness, easiness, options={})
64
+ post("/v1/assessments/update/#{assessment_id}.json", options.merge(:content => content, :overall => overall, :fairness => fairness, :easiness => easiness))
65
+ end
66
+
67
+ def destroy_assessment(assessment_id)
68
+ post("/v1/assessments/destroy/#{assessment_id}.json")
69
+ end
70
+
71
+ end
72
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: classleaks_oauth
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
11
+ platform: ruby
12
+ authors:
13
+ - Hoseong Hwang
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-27 00:00:00 +09:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: Classleaks OAuth API client library for ruby
23
+ email: thefron@wafflestudio.com
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files:
29
+ - lib/classleaks_oauth.rb
30
+ - lib/classleaks_oauth/client.rb
31
+ - lib/classleaks_oauth/methods.rb
32
+ files:
33
+ - Manifest
34
+ - Rakefile
35
+ - lib/classleaks_oauth.rb
36
+ - lib/classleaks_oauth/client.rb
37
+ - lib/classleaks_oauth/methods.rb
38
+ - classleaks_oauth.gemspec
39
+ has_rdoc: true
40
+ homepage: http://github.com/thefron/classleaks
41
+ licenses: []
42
+
43
+ post_install_message:
44
+ rdoc_options:
45
+ - --line-numbers
46
+ - --inline-source
47
+ - --title
48
+ - Classleaks_oauth
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ hash: 11
66
+ segments:
67
+ - 1
68
+ - 2
69
+ version: "1.2"
70
+ requirements: []
71
+
72
+ rubyforge_project: classleaks_oauth
73
+ rubygems_version: 1.6.2
74
+ signing_key:
75
+ specification_version: 3
76
+ summary: Classleaks OAuth API client library for ruby
77
+ test_files: []
78
+