KerbalStuff 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitattributes +22 -0
- data/.gitignore +74 -0
- data/KerbalStuff.gemspec +21 -0
- data/LICENSE.txt +21 -0
- data/lib/KerbalStuff.rb +40 -86
- data/lib/kerbalstuff/mod.rb +54 -0
- data/lib/kerbalstuff/user.rb +29 -0
- data/lib/kerbalstuff/version.rb +3 -0
- metadata +10 -3
data/.gitattributes
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Auto detect text files and perform LF normalization
|
2
|
+
* text=auto
|
3
|
+
|
4
|
+
# Custom for Visual Studio
|
5
|
+
*.cs diff=csharp
|
6
|
+
*.sln merge=union
|
7
|
+
*.csproj merge=union
|
8
|
+
*.vbproj merge=union
|
9
|
+
*.fsproj merge=union
|
10
|
+
*.dbproj merge=union
|
11
|
+
|
12
|
+
# Standard to msysgit
|
13
|
+
*.doc diff=astextplain
|
14
|
+
*.DOC diff=astextplain
|
15
|
+
*.docx diff=astextplain
|
16
|
+
*.DOCX diff=astextplain
|
17
|
+
*.dot diff=astextplain
|
18
|
+
*.DOT diff=astextplain
|
19
|
+
*.pdf diff=astextplain
|
20
|
+
*.PDF diff=astextplain
|
21
|
+
*.rtf diff=astextplain
|
22
|
+
*.RTF diff=astextplain
|
data/.gitignore
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
/.config
|
4
|
+
/coverage/
|
5
|
+
/InstalledFiles
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/test/tmp/
|
9
|
+
/test/version_tmp/
|
10
|
+
/tmp/
|
11
|
+
|
12
|
+
## Specific to RubyMotion:
|
13
|
+
.dat*
|
14
|
+
.repl_history
|
15
|
+
build/
|
16
|
+
|
17
|
+
## Documentation cache and generated files:
|
18
|
+
/.yardoc/
|
19
|
+
/_yardoc/
|
20
|
+
/doc/
|
21
|
+
/rdoc/
|
22
|
+
|
23
|
+
## Environment normalisation:
|
24
|
+
/.bundle/
|
25
|
+
/lib/bundler/man/
|
26
|
+
|
27
|
+
# for a library or gem, you might want to ignore these files since the code is
|
28
|
+
# intended to run in multiple environments; otherwise, check them in:
|
29
|
+
# Gemfile.lock
|
30
|
+
# .ruby-version
|
31
|
+
# .ruby-gemset
|
32
|
+
|
33
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
34
|
+
.rvmrc
|
35
|
+
|
36
|
+
# =========================
|
37
|
+
# Operating System Files
|
38
|
+
# =========================
|
39
|
+
|
40
|
+
# OSX
|
41
|
+
# =========================
|
42
|
+
|
43
|
+
.DS_Store
|
44
|
+
.AppleDouble
|
45
|
+
.LSOverride
|
46
|
+
|
47
|
+
# Icon must ends with two \r.
|
48
|
+
Icon
|
49
|
+
|
50
|
+
# Thumbnails
|
51
|
+
._*
|
52
|
+
|
53
|
+
# Files that might appear on external disk
|
54
|
+
.Spotlight-V100
|
55
|
+
.Trashes
|
56
|
+
|
57
|
+
# Windows
|
58
|
+
# =========================
|
59
|
+
|
60
|
+
# Windows image file caches
|
61
|
+
Thumbs.db
|
62
|
+
ehthumbs.db
|
63
|
+
|
64
|
+
# Folder config file
|
65
|
+
Desktop.ini
|
66
|
+
|
67
|
+
# Recycle Bin used on file shares
|
68
|
+
$RECYCLE.BIN/
|
69
|
+
|
70
|
+
# Windows Installer files
|
71
|
+
*.cab
|
72
|
+
*.msi
|
73
|
+
*.msm
|
74
|
+
*.msp
|
data/KerbalStuff.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "kerbalstuff/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'KerbalStuff'
|
7
|
+
s.version = KerbalStuff::VERSION
|
8
|
+
s.summary = "KerbalStuff"
|
9
|
+
s.description = "A simple API wrapper for KerbalStuff"
|
10
|
+
s.authors = ["Alexandre Oliveira"]
|
11
|
+
s.email = 'rockytvbr@gmail.com'
|
12
|
+
|
13
|
+
s.files = `git ls-files`.split("\n")
|
14
|
+
s.require_paths = ["lib"]
|
15
|
+
|
16
|
+
s.homepage =
|
17
|
+
'https://github.com/RockyTV/KerbalStuffGem'
|
18
|
+
s.license = 'MIT'
|
19
|
+
s.extra_rdoc_files = ['README.md']
|
20
|
+
s.required_ruby_version = '>= 1.9.3'
|
21
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) {{{year}}} {{{fullname}}}
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/lib/KerbalStuff.rb
CHANGED
@@ -4,10 +4,11 @@ require 'uri'
|
|
4
4
|
|
5
5
|
module KerbalStuff
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
autoload :VERSION, 'kerbalstuff/version'
|
8
|
+
autoload :Mod, 'kerbalstuff/mod'
|
9
|
+
autoload :ModVerison, 'kerbalstuff/mod'
|
10
|
+
autoload :User, 'kerbalstuff/user'
|
11
|
+
|
11
12
|
def self.get_https_response(url)
|
12
13
|
@url = URI.parse(URI.escape(url))
|
13
14
|
http = Net::HTTP.new(@url.host, @url.port)
|
@@ -30,125 +31,78 @@ module KerbalStuff
|
|
30
31
|
else
|
31
32
|
return json
|
32
33
|
end
|
34
|
+
else
|
35
|
+
return json
|
33
36
|
end
|
34
37
|
end
|
35
38
|
|
36
39
|
# Searches for mods with the specified keyword/phrase.
|
37
40
|
#
|
38
41
|
# @param query [String] the keyword/phrase to search for.
|
39
|
-
# @return [
|
42
|
+
# @return [Array] An array containing the results found. If no result was found, will return a String.
|
40
43
|
def self.search_mod(query)
|
41
44
|
res = get_json("https://kerbalstuff.com/api/search/mod?query=#{query}")
|
42
45
|
|
46
|
+
resArr = []
|
47
|
+
|
43
48
|
if res.length == 0
|
44
49
|
return "No results were found for '#{query}'."
|
45
50
|
else
|
46
|
-
|
51
|
+
res.each do |mod|
|
52
|
+
resArr.push(Mod.new(mod))
|
53
|
+
end
|
54
|
+
return resArr
|
47
55
|
end
|
48
56
|
end
|
49
57
|
|
50
58
|
# Searches for users with the specified keyword/phrase.
|
51
59
|
#
|
52
60
|
# @param query [String] the keyword/phrase to search for.
|
53
|
-
# @return [
|
61
|
+
# @return [Array] An array containing the results found. If no result was found, will return a String.
|
54
62
|
def self.search_user(query)
|
55
63
|
res = get_json("https://kerbalstuff.com/api/search/user?query=#{query}")
|
56
64
|
|
65
|
+
resArr = []
|
66
|
+
|
57
67
|
if res.length == 0
|
58
68
|
return "No results were found for '#{query}'."
|
59
69
|
else
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
# Retrieves information about the specified user.
|
65
|
-
#
|
66
|
-
# @param username [String] the username to retrieve its information.
|
67
|
-
# @return [Hash] A parsed JSON output containing the information about the user. Will return a [String] if no users were found.
|
68
|
-
def self.user(username)
|
69
|
-
raise "username cannot be nil" unless username.length > 0
|
70
|
-
|
71
|
-
res = get_json("https://kerbalstuff.com/api/user/#{username}")
|
72
|
-
|
73
|
-
if res.include? 'error'
|
74
|
-
return res[1]
|
75
|
-
else
|
76
|
-
return res
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
# Retrieves the information about the specified mod.
|
81
|
-
#
|
82
|
-
# @param id [Fixnum] the id to retrieve its information.
|
83
|
-
# @return [Hash] A parsed JSON output containing the information about the mod. Will return a [String] if no mods were found.
|
84
|
-
def self.mod(id)
|
85
|
-
raise "id cannot be nil" unless id.is_a?(Integer)
|
86
|
-
|
87
|
-
res = get_json("https://kerbalstuff.com/api/mod/#{id}")
|
88
|
-
|
89
|
-
if res.include? 'error'
|
90
|
-
return res[1]
|
91
|
-
else
|
92
|
-
return res
|
70
|
+
res.each do |user|
|
71
|
+
resArr.push(User.new(user))
|
72
|
+
end
|
73
|
+
return resArr
|
93
74
|
end
|
94
75
|
end
|
95
76
|
|
96
|
-
# Retrieves the
|
77
|
+
# Retrieves the specified mod information.
|
97
78
|
#
|
98
|
-
# @param
|
99
|
-
# @return [
|
100
|
-
def self.
|
101
|
-
raise "id
|
102
|
-
|
103
|
-
res = get_json("https://kerbalstuff.com/api/mod/#{id}/latest")
|
79
|
+
# @param id [Integer] the id of the mod to retrieve information for.
|
80
|
+
# @return [Mod] A Mod object containing the information about the mod.
|
81
|
+
def self.get_mod(id)
|
82
|
+
raise "id must be an Integer" unless id.is_a?(Integer)
|
104
83
|
|
105
|
-
|
106
|
-
return res[1]
|
107
|
-
else
|
108
|
-
return res
|
109
|
-
end
|
84
|
+
return Mod.new(get_json("https://kerbalstuff.com/api/mod/#{id}"))
|
110
85
|
end
|
111
86
|
|
112
|
-
# Retrieves
|
87
|
+
# Retrieves the specified user information.
|
113
88
|
#
|
114
|
-
# @param
|
115
|
-
# @return [
|
116
|
-
def self.
|
117
|
-
|
89
|
+
# @param username [String] the username of the user to retrieve information for.
|
90
|
+
# @return [User] A User object containing the information about the user.
|
91
|
+
def self.get_user(username)
|
92
|
+
raise "username must be a String" unless username.is_a?(String)
|
93
|
+
raise "username cannot be an empty string" unless username.length > 0
|
118
94
|
|
119
|
-
|
120
|
-
return oldHash
|
121
|
-
else
|
122
|
-
modHash = Hash.new()
|
123
|
-
modHash["name"] = oldHash["name"]
|
124
|
-
modHash["author"] = oldHash["author"]
|
125
|
-
modHash["description"] = oldHash["short_description"]
|
126
|
-
modHash["downloads"] = oldHash["downloads"]
|
127
|
-
modHash["url"] = "https://kerbalstuff.com/mod/#{id}/}"
|
128
|
-
modHash["latest_version"] = oldHash["versions"][0]["friendly_version"]
|
129
|
-
|
130
|
-
return modHash
|
131
|
-
end
|
95
|
+
return User.new(get_json("https://kerbalstuff.com/api/user/#{username}"))
|
132
96
|
end
|
133
97
|
|
134
|
-
# Retrieves
|
98
|
+
# Retrieves the latest version of the specified mod.
|
135
99
|
#
|
136
|
-
# @param
|
137
|
-
# @return [
|
138
|
-
def self.
|
139
|
-
|
100
|
+
# @param id [Integer] the id of the mod to retrieve the latest version released.
|
101
|
+
# @return [ModVersion] A ModVersion object containing information about the version.
|
102
|
+
def self.get_latest_mod_version(id)
|
103
|
+
raise "id must be an Integer" unless id.is_a?(Integer)
|
140
104
|
|
141
|
-
|
142
|
-
return oldHash
|
143
|
-
else
|
144
|
-
userHash = Hash.new()
|
145
|
-
userHash["username"] = oldHash["username"]
|
146
|
-
userHash["mods"] = oldHash["mods"]
|
147
|
-
userHash["ircNick"] = oldHash["ircNick"]
|
148
|
-
userHash["forumusername"] = oldHash["forumusername"]
|
149
|
-
|
150
|
-
return userHash
|
151
|
-
end
|
105
|
+
return ModVersion.new(get_json("https://kerbalstuff.com/api/mod/#{id}/latest"))
|
152
106
|
end
|
153
107
|
|
154
108
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module KerbalStuff
|
2
|
+
class Mod
|
3
|
+
|
4
|
+
attr_reader :json
|
5
|
+
|
6
|
+
def initialize json
|
7
|
+
@json = json
|
8
|
+
|
9
|
+
@name = @json['name']
|
10
|
+
@background = @json['background']
|
11
|
+
@author = @json['author']
|
12
|
+
@downloads = @json['downloads']
|
13
|
+
@id = @json['id']
|
14
|
+
@short_description = @json['short_description']
|
15
|
+
@description_html = @json['description_html']
|
16
|
+
@followers = @json['followers']
|
17
|
+
@default_version_id = @json['default_version_id']
|
18
|
+
@description = @json['description']
|
19
|
+
|
20
|
+
if @json.has_key?('versions')
|
21
|
+
@versions = []
|
22
|
+
if @json['versions'].length > 0
|
23
|
+
@json['versions'].each do |v|
|
24
|
+
@versions.push(ModVersion.new(v))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_s
|
32
|
+
"Mod:\nname=#{@name}\nbackground=#{@background}\nauthor=#{@author}\ndownloads=#{@downloads}\nid=#{@id}\nshort_description=\"#{@short_description}\"\nversions=#{@versions}\ndescription_html=\"#{@description_html}\"\nfollowers=#{@followers}\ndefault_version_id=#{@default_version_id}\ndescription=\"#{@description}\"\n"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class ModVersion
|
37
|
+
|
38
|
+
attr_reader :json
|
39
|
+
|
40
|
+
def initialize json
|
41
|
+
@json = json
|
42
|
+
|
43
|
+
@version = @json['friendly_version']
|
44
|
+
@download_path = @json['download_path']
|
45
|
+
@id = @json['id']
|
46
|
+
@ksp_version = @json['ksp_version']
|
47
|
+
@changelog = @json['changelog']
|
48
|
+
end
|
49
|
+
|
50
|
+
def to_s
|
51
|
+
"ModVersion:\nversion=#{@version}, download=#{@download_path}, id=#{@id}, ksp_version=#{@ksp_version}, changelog=\"#{@changelog}\"\n"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module KerbalStuff
|
2
|
+
class User
|
3
|
+
|
4
|
+
attr_reader :json
|
5
|
+
|
6
|
+
def initialize json
|
7
|
+
@json = json
|
8
|
+
|
9
|
+
@ircNick = @json['ircNick']
|
10
|
+
@mods = []
|
11
|
+
@twitterUsername = @json['twitterUsername']
|
12
|
+
@username = @json['username']
|
13
|
+
@redditUsername = @json['redditUsername']
|
14
|
+
@forumUsername = @json['forumUsername']
|
15
|
+
@description = @json['description']
|
16
|
+
|
17
|
+
if @json['mods'].length > 0
|
18
|
+
@json['mods'].each do |mod|
|
19
|
+
@mods.push(Mod.new(mod))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s
|
25
|
+
"User:\nircNick=#{@ircNick}\nmods=#{@mods}\ntwitterUsername=#{@twitterUsername}\nusername=#{@username}\nredditUsername=#{@redditUsername}\nforumUsername=#{@forumUsername}\ndescription=\"#{@description}\"\n"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
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.1.
|
4
|
+
version: 0.1.6
|
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-09-
|
12
|
+
date: 2014-09-29 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A simple API wrapper for KerbalStuff
|
15
15
|
email: rockytvbr@gmail.com
|
@@ -18,8 +18,15 @@ extensions: []
|
|
18
18
|
extra_rdoc_files:
|
19
19
|
- README.md
|
20
20
|
files:
|
21
|
-
-
|
21
|
+
- .gitattributes
|
22
|
+
- .gitignore
|
23
|
+
- KerbalStuff.gemspec
|
24
|
+
- LICENSE.txt
|
22
25
|
- README.md
|
26
|
+
- lib/KerbalStuff.rb
|
27
|
+
- lib/kerbalstuff/mod.rb
|
28
|
+
- lib/kerbalstuff/user.rb
|
29
|
+
- lib/kerbalstuff/version.rb
|
23
30
|
homepage: https://github.com/RockyTV/KerbalStuffGem
|
24
31
|
licenses:
|
25
32
|
- MIT
|