oa_test 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/oa_test +66 -0
- data/lib/oa_test/oa_test.rb +83 -0
- data/lib/oa_test/version.rb +3 -0
- data/lib/oa_test.rb +2 -0
- metadata +104 -0
data/bin/oa_test
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#require File.expand_path(
|
3
|
+
# File.join(File.dirname(__FILE__),%w[.. lib oa_test]))
|
4
|
+
#wpath= File.dirname(__FILE__).gsub(/bin$/,'')
|
5
|
+
|
6
|
+
def howto_oa_test
|
7
|
+
puts <<END
|
8
|
+
|
9
|
+
How to oa_test:
|
10
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
11
|
+
syntax:
|
12
|
+
oa_test [--consumer:token/secret] --yauth:login/passwd [--return:body|boolean|object] [--host:host] [--api:path]
|
13
|
+
|
14
|
+
Enjoy...
|
15
|
+
|
16
|
+
END
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
arg = ARGV
|
21
|
+
if arg.size>0
|
22
|
+
consumer = arg.select{|x|/^--consumer/=~x}[0]
|
23
|
+
yauth = arg.select{|x|/^--yauth/=~x}[0]
|
24
|
+
retrn = arg.select{|x|/^--return/=~x}[0]
|
25
|
+
host = arg.select{|x|/^--host/=~x}[0]
|
26
|
+
api = arg.select{|x|/^--api/=~x}[0]
|
27
|
+
|
28
|
+
cons = consumer.split(':')[1].split('/')
|
29
|
+
yths = yauth.split(':')[1].split('/')
|
30
|
+
|
31
|
+
require 'rubygems'
|
32
|
+
require 'oa_test'
|
33
|
+
|
34
|
+
OA = oa = OAuthTest.new(
|
35
|
+
:key => cons[0].strip,
|
36
|
+
:secret => cons[1].strip,
|
37
|
+
:return => (retrn ? retrn.to_sym : :body)
|
38
|
+
).yauth(
|
39
|
+
:login => yths[0].strip,
|
40
|
+
:passwd => yths[1].strip
|
41
|
+
)
|
42
|
+
|
43
|
+
# add constanta and action...
|
44
|
+
class Object
|
45
|
+
def oa
|
46
|
+
OA
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# remove non irb arguments...
|
51
|
+
ARGV.clear
|
52
|
+
(arg - [consumer,yauth,retrn,host,api].compact).each do |v|
|
53
|
+
ARGV.push v
|
54
|
+
end
|
55
|
+
|
56
|
+
require 'irb'
|
57
|
+
puts ''
|
58
|
+
puts "PATH: #{oa.host}#{oa.api}<path>"
|
59
|
+
puts "Your instance object stored in OA|oa"
|
60
|
+
puts "Ex: oa.get '/me.json'"
|
61
|
+
puts ''
|
62
|
+
|
63
|
+
IRB.start
|
64
|
+
else
|
65
|
+
howto_oa_test
|
66
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'OAuth'
|
2
|
+
require 'HTTParty'
|
3
|
+
require 'active_support'
|
4
|
+
|
5
|
+
class OAuthTest
|
6
|
+
attr_accessor :host,:api
|
7
|
+
|
8
|
+
def initialize(ks)
|
9
|
+
@key = ks[:key]
|
10
|
+
@secret = ks[:secret]
|
11
|
+
@return = ks[:return]
|
12
|
+
@host = ks[:host] ? ks[:host] : 'http://www.koprol.com'
|
13
|
+
@api = ks[:api] ? ks[:api] : '/api/v2'
|
14
|
+
@typ = {
|
15
|
+
:json => {"Accept" => "application/json", "Content-Type" => "application/json"},
|
16
|
+
:xml => {"Accept" => "application/xml", "Content-Type" => "application/xml"},
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
def yauth(lp)
|
21
|
+
get_part(lp).get_token()
|
22
|
+
end
|
23
|
+
|
24
|
+
def get(path)
|
25
|
+
rtn @access_token.get(@host+@api+path,typ(path))
|
26
|
+
end
|
27
|
+
|
28
|
+
def post(path,params)
|
29
|
+
rtn @access_token.post(@host+@api+path,params.to_json,typ(path))
|
30
|
+
end
|
31
|
+
|
32
|
+
def put(path,params)
|
33
|
+
rtn @access_token.put(@host+@api+path,params.to_json,typ(path))
|
34
|
+
end
|
35
|
+
|
36
|
+
def delete(path)
|
37
|
+
rtn @access_token.delete(@host+@api+path,typ(path))
|
38
|
+
end
|
39
|
+
|
40
|
+
protected
|
41
|
+
|
42
|
+
def get_part(lp)
|
43
|
+
url = "https://login.yahoo.com/WSLogin/V1/get_auth_token"
|
44
|
+
content = {:query=>{:oauth_consumer_key=>@key, :passwd=>lp[:passwd], :login=>lp[:login]}}
|
45
|
+
@part = HTTParty.get(url, content).parsed_response.split('=')[1].gsub("\n","")
|
46
|
+
self
|
47
|
+
end
|
48
|
+
|
49
|
+
def get_token
|
50
|
+
consumer = OAuth::Consumer.new(@key,@secret, { :site => "https://api.login.yahoo.com", :access_token_path => "/oauth/v2/get_token" })
|
51
|
+
req_token = OAuth::RequestToken.new(consumer, @part)
|
52
|
+
token_hash = consumer.token_request(:post, "/oauth/v2/get_token", req_token)
|
53
|
+
@access_token= OAuth::AccessToken.new(consumer,token_hash["oauth_token"],token_hash["oauth_token_secret"])
|
54
|
+
self
|
55
|
+
end
|
56
|
+
|
57
|
+
def typ(path)
|
58
|
+
ext = path[/.(json|xml)($|\?)/,1]
|
59
|
+
ext = 'json' if !ext
|
60
|
+
@typ[ext.to_sym]
|
61
|
+
end
|
62
|
+
|
63
|
+
def rtn(resp)
|
64
|
+
if @return==nil || @return==:boolean
|
65
|
+
resp.class==Net::HTTPOK
|
66
|
+
elsif @return==:body
|
67
|
+
resp.body
|
68
|
+
elsif @return==:object
|
69
|
+
resp
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
# oa_test --consumer:dj0yJmk9dmhUeEk3ZzRRRVdtJmQ9WVdrOVdFd3pZV3hKTkhVbWNHbzlNVEF3T0Rrek56WXkmcz1jb25zdW1lcnNlY3JldCZ4PTU3/0efbd3fc95a5c0b77d54481b42e8dfb333ed80aa --yauth:ronald_winda/ronald_ganteng
|
75
|
+
oa = OAuthTest.new(
|
76
|
+
:key => 'dj0yJmk9dmhUeEk3ZzRRRVdtJmQ9WVdrOVdFd3pZV3hKTkhVbWNHbzlNVEF3T0Rrek56WXkmcz1jb25zdW1lcnNlY3JldCZ4PTU3',
|
77
|
+
:secret => '0efbd3fc95a5c0b77d54481b42e8dfb333ed80aa',
|
78
|
+
:return => :body
|
79
|
+
).yauth(
|
80
|
+
:login => "ronald_winda",
|
81
|
+
:passwd => "ronald_ganteng"
|
82
|
+
)
|
83
|
+
oa.post('/streams.json',:stream => {:text => "test"})
|
data/lib/oa_test.rb
ADDED
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: oa_test
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Watchmen
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-07-22 00:00:00 +07:00
|
19
|
+
default_executable: oa_test
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: oauth
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 13
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 4
|
33
|
+
- 1
|
34
|
+
version: 0.4.1
|
35
|
+
type: :development
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: httparty
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 5
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
- 6
|
49
|
+
- 1
|
50
|
+
version: 0.6.1
|
51
|
+
type: :development
|
52
|
+
version_requirements: *id002
|
53
|
+
description: OAuth mini test for yahoo property
|
54
|
+
email:
|
55
|
+
- watchmencore@yahoo.com
|
56
|
+
executables:
|
57
|
+
- oa_test
|
58
|
+
extensions: []
|
59
|
+
|
60
|
+
extra_rdoc_files: []
|
61
|
+
|
62
|
+
files:
|
63
|
+
- lib/oa_test/oa_test.rb
|
64
|
+
- lib/oa_test/version.rb
|
65
|
+
- lib/oa_test.rb
|
66
|
+
- bin/oa_test
|
67
|
+
has_rdoc: true
|
68
|
+
homepage: http://www.github.com/watchmen
|
69
|
+
licenses: []
|
70
|
+
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
hash: 3
|
82
|
+
segments:
|
83
|
+
- 0
|
84
|
+
version: "0"
|
85
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
hash: 21
|
91
|
+
segments:
|
92
|
+
- 1
|
93
|
+
- 3
|
94
|
+
- 7
|
95
|
+
version: 1.3.7
|
96
|
+
requirements: []
|
97
|
+
|
98
|
+
rubyforge_project: oa_test
|
99
|
+
rubygems_version: 1.4.2
|
100
|
+
signing_key:
|
101
|
+
specification_version: 3
|
102
|
+
summary: OAuth mini test
|
103
|
+
test_files: []
|
104
|
+
|