deviantart-oauth2 0.1.2.4
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/lib/deviantart.rb +110 -0
- metadata +94 -0
data/lib/deviantart.rb
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'json'
|
4
|
+
require 'yaml'
|
5
|
+
require 'rest-client'
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
class DeviantClient
|
10
|
+
attr_accessor :key
|
11
|
+
attr_accessor :secret
|
12
|
+
attr_accessor :access_token
|
13
|
+
attr_accessor :refresh_token
|
14
|
+
OAUTH_PATH = 'https://www.deviantart.com/oauth2/draft15/'
|
15
|
+
API_PATH = 'https://www.deviantart.com/api/draft15/'
|
16
|
+
|
17
|
+
def initialize key=nil, secret=nil
|
18
|
+
@key = key
|
19
|
+
@secret = secret
|
20
|
+
end
|
21
|
+
|
22
|
+
def authorization_url params = {}
|
23
|
+
redirect_uri = (params.has_key? :redirect_uri) ? params[:redirect_uri] : ''
|
24
|
+
url = OAUTH_PATH + 'authorize?client_id=' + @key + '&redirect_uri=' + redirect_uri + '&display=page&response_type=code'
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_token params
|
28
|
+
code = params[:code] ? params[:code] : ''
|
29
|
+
url = OAUTH_PATH + 'token?client_id=' + @key + '&client_secret=' + @secret + '&code=' + code + '&grant_type=authorization_code'
|
30
|
+
begin
|
31
|
+
page = open(url)
|
32
|
+
data = JSON.parse(page.read)
|
33
|
+
@access_token = data['access_token']
|
34
|
+
@refresh_token = data['refresh_token']
|
35
|
+
rescue Exception=>e
|
36
|
+
refresh
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def refresh
|
41
|
+
url = OAUTH_PATH + 'token?client_id=' + @key + '&client_secret=' + @secret + '&refresh_token=' + @refresh_token + '&grant_type=refresh_token'
|
42
|
+
begin
|
43
|
+
page = open(url)
|
44
|
+
data = JSON.parse(page.read)
|
45
|
+
@access_token = data['access_token']
|
46
|
+
@refresh_token = data['refresh_token']
|
47
|
+
rescue Exception=>e
|
48
|
+
raise 'Trying refresh token but fail. Is refresh_token expired?'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def fetch resource
|
53
|
+
url = API_PATH + resource + '?access_token=' + @access_token
|
54
|
+
#require 'pp'; pp url;
|
55
|
+
begin
|
56
|
+
page = open(url)
|
57
|
+
data = JSON.parse(page.read)
|
58
|
+
return data
|
59
|
+
rescue
|
60
|
+
raise 'Trying fetch resource "'+resource+'" but fail.'
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def post resource, options={}, filepath=nil
|
65
|
+
url = API_PATH + resource + '?access_token=' + @access_token
|
66
|
+
url = url + '&' + options.map{ |k,v| "#{k}="+URI::encode(v) }.join('&') if options
|
67
|
+
begin
|
68
|
+
response = RestClient.post url, filepath ? { :file => File.new(filepath, 'rb') } : nil
|
69
|
+
return JSON.parse(response.to_str)
|
70
|
+
rescue Exception=>e
|
71
|
+
pp e
|
72
|
+
raise 'Trying post data but fail'
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
def placebo
|
78
|
+
begin
|
79
|
+
fetch 'placebo'
|
80
|
+
rescue
|
81
|
+
refresh
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def whoami
|
86
|
+
fetch 'user/whoami'
|
87
|
+
end
|
88
|
+
|
89
|
+
def damntoken
|
90
|
+
data = fetch 'user/damntoken'
|
91
|
+
return data['damntoken']
|
92
|
+
end
|
93
|
+
|
94
|
+
def stash_space
|
95
|
+
data = post 'stash/space'
|
96
|
+
return data['available_space']
|
97
|
+
end
|
98
|
+
|
99
|
+
def submit params
|
100
|
+
option_keys = [:title, :artist_comments, :keywords, :stashid, :folder, :folderid]
|
101
|
+
options = { }
|
102
|
+
option_keys.each do |key|
|
103
|
+
options[key] = params[key] if params[key]
|
104
|
+
end
|
105
|
+
data = post 'stash/submit', options, params[:file]
|
106
|
+
data['link'] = 'http://sta.sh/0'+data['stashid'].to_i.to_s(36)
|
107
|
+
return data
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: deviantart-oauth2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 71
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 2
|
10
|
+
- 4
|
11
|
+
version: 0.1.2.4
|
12
|
+
platform: ruby
|
13
|
+
authors:
|
14
|
+
- Tauraloke
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2012-06-29 00:00:00 Z
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: json
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rest-client
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id002
|
49
|
+
description: This gem contains class DeviantClient which helps use some Deviantart OAuth 2.0 API (load file to sta.sh, take user whois etc)
|
50
|
+
email:
|
51
|
+
- tauraloke@gmail.com
|
52
|
+
executables: []
|
53
|
+
|
54
|
+
extensions: []
|
55
|
+
|
56
|
+
extra_rdoc_files: []
|
57
|
+
|
58
|
+
files:
|
59
|
+
- lib/deviantart.rb
|
60
|
+
homepage: http://github.com/tauraloke/deviantart
|
61
|
+
licenses: []
|
62
|
+
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 3
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
requirements: []
|
87
|
+
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 1.8.15
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: Unofficial wrapper for Deviantart OAuth 2.0 API
|
93
|
+
test_files: []
|
94
|
+
|