KerbalStuff 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +9 -0
- data/CONTRIBUTING.md +17 -0
- data/KerbalStuff.gemspec +1 -1
- data/README.md +1 -2
- data/lib/KerbalStuff.rb +2 -0
- data/lib/kerbalstuff/auth.rb +136 -0
- data/lib/kerbalstuff/mod.rb +2 -2
- data/lib/kerbalstuff/user.rb +1 -1
- data/lib/kerbalstuff/version.rb +1 -1
- metadata +6 -3
data/CHANGELOG.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
0.2.1 (November 20, 2014)
|
2
|
+
* Added support for **POST** methods (Login, CreateMod, UpdateMod)
|
3
|
+
* All methods now return an array containing the info you need. Example: `["name=test", "id=1337"]`
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
0.2.0 (October 25, 2014)
|
8
|
+
* Added support for KerbalStuff **browse** methods
|
9
|
+
* Added links to Mod.background and ModVersion.download_path
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
If you want to help, here's what you need to do:
|
4
|
+
|
5
|
+
* Fork the repository
|
6
|
+
* Change/Add what you want
|
7
|
+
* Submit a pull request
|
8
|
+
|
9
|
+
I'll personally review the request you've made and, if it is good enough, I'll merge it with the master branch.
|
10
|
+
|
11
|
+
|
12
|
+
### Warning
|
13
|
+
|
14
|
+
Please don't add more dependencies than what this gem already has. If you are going to add a dependency, please create an issue, with the title as:
|
15
|
+
`[DEPENDENCY] rubygems`
|
16
|
+
|
17
|
+
And then you'll state why you want to add a dependency.
|
data/KerbalStuff.gemspec
CHANGED
@@ -5,7 +5,7 @@ require "kerbalstuff/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'KerbalStuff'
|
7
7
|
s.version = KerbalStuff::VERSION
|
8
|
-
s.summary = "KerbalStuff"
|
8
|
+
s.summary = "KerbalStuff's Ruby API Wrapper"
|
9
9
|
s.description = "A simple API wrapper for KerbalStuff"
|
10
10
|
s.authors = ["Alexandre Oliveira"]
|
11
11
|
s.email = 'rockytvbr@gmail.com'
|
data/README.md
CHANGED
@@ -59,5 +59,4 @@ licensed under MIT License Copyright (c) 2014 Alexandre Oliveira. See LICENSE fo
|
|
59
59
|
|
60
60
|
## Contributing
|
61
61
|
|
62
|
-
|
63
|
-
Just fork the repo, make your changes, and then submit the pull-request.
|
62
|
+
See [CONTRIBUTING.MD](http://github.com/RockyTV/KerbalStuffGem/CONTRIBUTING.MD)
|
data/lib/KerbalStuff.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'net/http'
|
2
|
+
require 'net/http/post/multipart'
|
2
3
|
require 'json'
|
3
4
|
require 'uri'
|
4
5
|
|
@@ -8,6 +9,7 @@ module KerbalStuff
|
|
8
9
|
autoload :Mod, 'kerbalstuff/mod'
|
9
10
|
autoload :ModVerison, 'kerbalstuff/mod'
|
10
11
|
autoload :User, 'kerbalstuff/user'
|
12
|
+
autoload :Auth, 'kerbalstuff/auth'
|
11
13
|
|
12
14
|
def self.get_https_response(url)
|
13
15
|
@url = URI.parse(URI.escape(url))
|
@@ -0,0 +1,136 @@
|
|
1
|
+
module KerbalStuff
|
2
|
+
|
3
|
+
class NotLoggedInException < Exception
|
4
|
+
end
|
5
|
+
|
6
|
+
class LoginException < Exception
|
7
|
+
end
|
8
|
+
|
9
|
+
class ErrorException < Exception
|
10
|
+
end
|
11
|
+
|
12
|
+
class Auth
|
13
|
+
|
14
|
+
attr_accessor :cookie
|
15
|
+
|
16
|
+
# Logs into Kerbal Stuff.
|
17
|
+
#
|
18
|
+
# @param username [String]
|
19
|
+
# @param password [String]
|
20
|
+
# @return [Array] An array with the status of the login.
|
21
|
+
def self.login(params = {})
|
22
|
+
@username = params['username']
|
23
|
+
@password = params['password']
|
24
|
+
|
25
|
+
url = URI.parse("https://kerbalstuff.com/api/login")
|
26
|
+
|
27
|
+
http = Net::HTTP.new(url.host, url.port)
|
28
|
+
http.use_ssl = true
|
29
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
30
|
+
|
31
|
+
req = Net::HTTP::Post::Multipart.new url.path, "username" => @username, "password" => @password
|
32
|
+
|
33
|
+
res = http.start do |http2|
|
34
|
+
http2.request(req)
|
35
|
+
end
|
36
|
+
|
37
|
+
resp = JSON.parse(res.body)
|
38
|
+
if resp['error'] == false
|
39
|
+
@cookie = res.header['set-cookie']
|
40
|
+
return ["error=false", "info=Logged in successfully."]
|
41
|
+
else
|
42
|
+
return ["error=true", "info=#{resp['reason']}"]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Creates a new mod. Requires authentication.
|
47
|
+
#
|
48
|
+
# @param name [String] Your new mod's name
|
49
|
+
# @param desc [String] Short description of your mod
|
50
|
+
# @param version [String] The latest friendly version of your mod
|
51
|
+
# @param ksp_ver [String] The KSP version this is compatible with
|
52
|
+
# @param license [String] Your mod's license
|
53
|
+
# @param zipball [File] The actual mod's zip file
|
54
|
+
# @return [Array] An array containing the published mod info.
|
55
|
+
def self.create_mod(params = {})
|
56
|
+
@name = params['name']
|
57
|
+
@desc = params['desc']
|
58
|
+
@version = params['version']
|
59
|
+
@ksp_ver = params['ksp_ver']
|
60
|
+
@license = params['license']
|
61
|
+
@zipball = params['zipball']
|
62
|
+
|
63
|
+
url = URI.parse("https://kerbalstuff.com/api/mod/create")
|
64
|
+
|
65
|
+
http = Net::HTTP.new(url.host, url.port)
|
66
|
+
http.use_ssl = true
|
67
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
68
|
+
|
69
|
+
File.open(@zipball, "r") do |file|
|
70
|
+
|
71
|
+
req = Net::HTTP::Post::Multipart.new url.path, "name" => @name, "short-description" => @desc, "version" => @version, "ksp-version" => @ksp_ver, "license" => @license,
|
72
|
+
"zipball" => UploadIO.new(file, "application/zip", File.basename(file))
|
73
|
+
req.add_field("Cookie", @cookie)
|
74
|
+
|
75
|
+
res = http.start do |http2|
|
76
|
+
http2.request(req)
|
77
|
+
end
|
78
|
+
|
79
|
+
resp = JSON.parse(res.body)
|
80
|
+
|
81
|
+
if resp['error'] == true
|
82
|
+
return ["error=true", "msg=#{resp['reason']}"]
|
83
|
+
else
|
84
|
+
return ["id=#{resp['id']}", "name=#{resp['name']}", "url=http:""/""/""kerbalstuff.com#{resp['url']}"]
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
# Publishes an update to an existing mod. Requires authentication. All parameters are required. Parameters are passed by via Hash.
|
91
|
+
#
|
92
|
+
# @param modid [Fixnum] The ID of the mod you want to update
|
93
|
+
# @param version [String] The friendly version number about to be created
|
94
|
+
# @param changelog [String] Markdown changelog
|
95
|
+
# @param ksp_ver [String] The version of KSP this is compatible with
|
96
|
+
# @param notify_followers [String] If "yes", email followers about this update
|
97
|
+
# @param zipball [File] The actual mod's zip file
|
98
|
+
# @return [Array] A string containing the updated version info.
|
99
|
+
def self.update_mod(params = {})
|
100
|
+
raise ArgumentError, "Params cannot be empty" if params.empty?
|
101
|
+
raise ArgumentError, "Missing one or more parameters" unless (params.has_key?("modid") && params.has_key?("version") && params.has_key?("changelog") && params.has_key?("ksp_ver") && params.has_key?("notify_followers") && params.has_key?("zipball"))
|
102
|
+
|
103
|
+
modid = params['modid']
|
104
|
+
@version = params['version']
|
105
|
+
@changelog = params['changelog']
|
106
|
+
@ksp_ver = params['ksp_ver']
|
107
|
+
@notify_followers = params['notify_followers']
|
108
|
+
@zipball = params['zipball']
|
109
|
+
|
110
|
+
url = URI.parse("https://kerbalstuff.com/api/mod/#{modid}/update")
|
111
|
+
|
112
|
+
http = Net::HTTP.new(url.host, url.port)
|
113
|
+
http.use_ssl = true
|
114
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
115
|
+
|
116
|
+
File.open(@zipball, "r") do |file|
|
117
|
+
|
118
|
+
req = Net::HTTP::Post::Multipart.new url.path, "version" => @version, "changelog" => @changelog, "ksp-version" => @ksp_ver, "notify-followers" => @notify_followers,
|
119
|
+
"zipball" => UploadIO.new(file, "application/zip", File.basename(file))
|
120
|
+
req.add_field("Cookie", @cookie)
|
121
|
+
|
122
|
+
res = http.start do |http2|
|
123
|
+
http2.request(req)
|
124
|
+
end
|
125
|
+
|
126
|
+
resp = JSON.parse(res.body)
|
127
|
+
|
128
|
+
if resp['error'] == true
|
129
|
+
return ["error=true", "msg=#{resp['reason']}"]
|
130
|
+
else
|
131
|
+
return ["id=#{resp['id']}", "url=http:""/""/#{resp['url']}"]
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
data/lib/kerbalstuff/mod.rb
CHANGED
@@ -33,7 +33,7 @@ module KerbalStuff
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def to_s
|
36
|
-
"
|
36
|
+
return ["name=#{@name}", "background=https:""/""/""cdn.mediacru.sh#{@background}", "license=#{@license}", "website=#{@website}", "donations=#{@donations}", "source_code=#{@source_code}", "author=#{@author}", "downloads=#{@downloads}", "id=#{@id}", "short_description=\"#{@short_description}\"", "versions=#{@versions}", "description_html=\"#{@description_html}\"", "followers=#{@followers}", "default_version_id=#{@default_version_id}", "description=\"#{@description}\""]
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -52,7 +52,7 @@ module KerbalStuff
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def to_s
|
55
|
-
"
|
55
|
+
["version=#{@version}", "download=https:""/""/""kerbalstuff.com#{@download_path}", "id=#{@id}", "ksp_version=#{@ksp_version}", "changelog=\"#{@changelog}\""]
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
data/lib/kerbalstuff/user.rb
CHANGED
@@ -22,7 +22,7 @@ module KerbalStuff
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def to_s
|
25
|
-
"
|
25
|
+
return ["ircNick=#{@ircNick}", "mods=#{@mods}", "twitterUsername=#{@twitterUsername}", "username=#{@username}", "redditUsername=#{@redditUsername}", "forumUsername=#{@forumUsername}", "description=\"#{@description}\""]
|
26
26
|
end
|
27
27
|
|
28
28
|
end
|
data/lib/kerbalstuff/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: KerbalStuff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A simple API wrapper for KerbalStuff
|
15
15
|
email: rockytvbr@gmail.com
|
@@ -20,10 +20,13 @@ extra_rdoc_files:
|
|
20
20
|
files:
|
21
21
|
- .gitattributes
|
22
22
|
- .gitignore
|
23
|
+
- CHANGELOG.md
|
24
|
+
- CONTRIBUTING.md
|
23
25
|
- KerbalStuff.gemspec
|
24
26
|
- LICENSE.txt
|
25
27
|
- README.md
|
26
28
|
- lib/KerbalStuff.rb
|
29
|
+
- lib/kerbalstuff/auth.rb
|
27
30
|
- lib/kerbalstuff/mod.rb
|
28
31
|
- lib/kerbalstuff/user.rb
|
29
32
|
- lib/kerbalstuff/version.rb
|
@@ -51,5 +54,5 @@ rubyforge_project:
|
|
51
54
|
rubygems_version: 1.8.28
|
52
55
|
signing_key:
|
53
56
|
specification_version: 3
|
54
|
-
summary: KerbalStuff
|
57
|
+
summary: KerbalStuff's Ruby API Wrapper
|
55
58
|
test_files: []
|