cwsrb 0.3.0 → 0.4.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +35 -35
- data/CHANGELOG.md +7 -0
- data/README.md +1 -0
- data/lib/cwsrb.rb +1 -1
- data/lib/cwsrb/api.rb +57 -10
- data/lib/cwsrb/data.rb +110 -0
- data/lib/cwsrb/errors.rb +1 -5
- data/lib/cwsrb/helpers.rb +1 -1
- data/lib/cwsrb/version.rb +1 -1
- metadata +3 -3
- data/lib/cwsrb/user.rb +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4246d4926b2154bc2831dcd3ba29358522c1e91c
|
4
|
+
data.tar.gz: db76f712ee09ee8efd4351c86a8873dff4f1fb44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dfd4cd995f8729ea36f3378617379a6deb35a6a9d1f694641e98869e7814b08c5fe5f82b32ebc2685339d2b748a2e3bb5792a637c01d251c0a935d58ff320b5
|
7
|
+
data.tar.gz: fb66323f08d65b0deab1a1b056ef9e0a5078f3348103828aedb96c02ed4de7a1ebe22dbfae3e71ab3b8a1b9844fad402b46f309e7e9770474ee79eb5a89b365b
|
data/.rubocop.yml
CHANGED
@@ -1,35 +1,35 @@
|
|
1
|
-
# no metrics
|
2
|
-
Metrics/AbcSize:
|
3
|
-
Enabled: false
|
4
|
-
|
5
|
-
Metrics/BlockNesting:
|
6
|
-
Enabled: false
|
7
|
-
|
8
|
-
Metrics/ClassLength:
|
9
|
-
Enabled: false
|
10
|
-
|
11
|
-
Metrics/ModuleLength:
|
12
|
-
Enabled: false
|
13
|
-
|
14
|
-
Metrics/CyclomaticComplexity:
|
15
|
-
Enabled: false
|
16
|
-
|
17
|
-
Metrics/LineLength:
|
18
|
-
Enabled: false
|
19
|
-
|
20
|
-
Metrics/MethodLength:
|
21
|
-
Enabled: false
|
22
|
-
|
23
|
-
Metrics/ParameterLists:
|
24
|
-
Enabled: false
|
25
|
-
|
26
|
-
Metrics/PerceivedComplexity:
|
27
|
-
Enabled: false
|
28
|
-
|
29
|
-
Style/Documentation:
|
30
|
-
Exclude:
|
31
|
-
- 'spec/**/*'
|
32
|
-
|
33
|
-
AllCops:
|
34
|
-
Exclude:
|
35
|
-
- 'bin/**/*'
|
1
|
+
# no metrics
|
2
|
+
Metrics/AbcSize:
|
3
|
+
Enabled: false
|
4
|
+
|
5
|
+
Metrics/BlockNesting:
|
6
|
+
Enabled: false
|
7
|
+
|
8
|
+
Metrics/ClassLength:
|
9
|
+
Enabled: false
|
10
|
+
|
11
|
+
Metrics/ModuleLength:
|
12
|
+
Enabled: false
|
13
|
+
|
14
|
+
Metrics/CyclomaticComplexity:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
Metrics/LineLength:
|
18
|
+
Enabled: false
|
19
|
+
|
20
|
+
Metrics/MethodLength:
|
21
|
+
Enabled: false
|
22
|
+
|
23
|
+
Metrics/ParameterLists:
|
24
|
+
Enabled: false
|
25
|
+
|
26
|
+
Metrics/PerceivedComplexity:
|
27
|
+
Enabled: false
|
28
|
+
|
29
|
+
Style/Documentation:
|
30
|
+
Exclude:
|
31
|
+
- 'spec/**/*'
|
32
|
+
|
33
|
+
AllCops:
|
34
|
+
Exclude:
|
35
|
+
- 'bin/**/*'
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.4.0
|
4
|
+
* Add new `Language` class and related subclasses `Type` and `Status` that are returned for calls to `API#get_lang`,
|
5
|
+
`API#get_lang_type` and `API#get_lang_status`, respectively
|
6
|
+
* Add new `API#api_version` to get the API version returned by CWS
|
7
|
+
* Since the API now merged the functions `USER` and `USER_KARMA`, it is reflected in CWSrb correctly now
|
8
|
+
* **TODO**: documentation for the classes above
|
9
|
+
|
3
10
|
## 0.3.0
|
4
11
|
* Documented everything I could with YARD. yay! ([#2](https://github.com/unleashy/cwsrb/issues/2))
|
5
12
|
* Added `User` class that is returned for calls to `API#get_user`. ([#3](https://github.com/unleashy/cwsrb/issues/3))
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
[](https://rubygems.org/gems/cwsrb)
|
2
2
|
[](https://travis-ci.org/unleashy/cwsrb)
|
3
|
+
[](http://inch-ci.org/github/unleashy/cwsrb)
|
3
4
|
|
4
5
|
# CWSrb
|
5
6
|
|
data/lib/cwsrb.rb
CHANGED
data/lib/cwsrb/api.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
require 'httparty'
|
2
2
|
require 'cwsrb/errors'
|
3
3
|
require 'cwsrb/helpers'
|
4
|
-
require 'cwsrb/
|
4
|
+
require 'cwsrb/data'
|
5
5
|
|
6
6
|
module Cwsrb
|
7
7
|
# This is the main class from which you use CWSrb.
|
8
8
|
# It includes `HTTParty` with a `base_uri` of "http://conworkshop.com".
|
9
9
|
class API
|
10
10
|
include HTTParty
|
11
|
-
base_uri '
|
11
|
+
base_uri 'conworkshop.com'
|
12
12
|
|
13
13
|
# Initialize a new instance of the API object, with a mandatory custom User-Agent for HTTP requests.
|
14
14
|
# This sets the User-Agent header for all subsequent requests, with your custom User-Agent and CWSrb's User-Agent.
|
15
15
|
# @param user_agent [String] The User-Agent to use with HTTP requests. Please use a descriptive one.
|
16
|
-
# @return [
|
16
|
+
# @return [API] a new instance of `API`
|
17
17
|
def initialize(user_agent)
|
18
18
|
self.class.headers 'User-Agent' =>
|
19
19
|
"#{user_agent} CWSrb/#{Cwsrb::VERSION} (#{RUBY_ENGINE}/#{RUBY_VERSION}p#{RUBY_PATCHLEVEL})"
|
@@ -27,7 +27,7 @@ module Cwsrb
|
|
27
27
|
usr = Cwsrb::Helpers.resolve(val)
|
28
28
|
|
29
29
|
# First general info
|
30
|
-
response = self.class.get("/api
|
30
|
+
response = self.class.get("/api/USER/#{usr}")
|
31
31
|
|
32
32
|
# Check if any errors occurred
|
33
33
|
Cwsrb::Helpers.check_for_errors(response)
|
@@ -38,19 +38,66 @@ module Cwsrb
|
|
38
38
|
name: response['USER_NAME'],
|
39
39
|
gender: response['USER_GENDER'],
|
40
40
|
bio: response['USER_BIO'],
|
41
|
-
country: response['USER_COUNTRY']
|
41
|
+
country: response['USER_COUNTRY'],
|
42
|
+
karma: response['KARMA']
|
42
43
|
}
|
43
44
|
|
44
|
-
|
45
|
-
|
45
|
+
Cwsrb::User.new(attribs)
|
46
|
+
end
|
47
|
+
|
48
|
+
def get_lang(val)
|
49
|
+
response = self.class.get("/api/LANG/#{val}")
|
46
50
|
|
47
|
-
# Check if any errors occurred
|
48
51
|
Cwsrb::Helpers.check_for_errors(response)
|
49
52
|
|
50
53
|
response = response['out']
|
51
|
-
attribs
|
54
|
+
attribs = {
|
55
|
+
code: response['CODE'],
|
56
|
+
name: response['NAME'],
|
57
|
+
native_name: response['NATIVE_NAME'],
|
58
|
+
ipa: response['IPA'],
|
59
|
+
type: get_lang_type(response['TYPE']),
|
60
|
+
owners: response['OWNERS'],
|
61
|
+
overview: response['OVERVIEW'],
|
62
|
+
public: response['PUBLIC'],
|
63
|
+
status: get_lang_status(response['STATUS']),
|
64
|
+
registered: Time.at(response['REGISTERED']),
|
65
|
+
word_count: response['WORD_COUNT']
|
66
|
+
}
|
52
67
|
|
53
|
-
Cwsrb::
|
68
|
+
Cwsrb::Language.new(attribs)
|
69
|
+
end
|
70
|
+
|
71
|
+
def get_lang_type(val)
|
72
|
+
response = self.class.get("/api/LANG/TYPE/#{val}")
|
73
|
+
|
74
|
+
Cwsrb::Helpers.check_for_errors(response)
|
75
|
+
|
76
|
+
response = response['out']
|
77
|
+
attribs = {
|
78
|
+
code: response['TYPE'].upcase,
|
79
|
+
desc: response['DESC']
|
80
|
+
}
|
81
|
+
|
82
|
+
Cwsrb::Language::Type.new(attribs)
|
83
|
+
end
|
84
|
+
|
85
|
+
def get_lang_status(val)
|
86
|
+
response = self.class.get("/api/LANG/STATUS/#{val}")
|
87
|
+
|
88
|
+
Cwsrb::Helpers.check_for_errors(response)
|
89
|
+
|
90
|
+
response = response['out']
|
91
|
+
attribs = {
|
92
|
+
code: response['STATUS'].upcase,
|
93
|
+
desc: response['DESC']
|
94
|
+
}
|
95
|
+
|
96
|
+
Cwsrb::Language::Status.new(attribs)
|
97
|
+
end
|
98
|
+
|
99
|
+
def api_version
|
100
|
+
self.class.get('/api')['api_ver']
|
54
101
|
end
|
55
102
|
end
|
56
103
|
end
|
data/lib/cwsrb/data.rb
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
module Cwsrb
|
2
|
+
# The User class represents a member of ConWorkShop.
|
3
|
+
class User
|
4
|
+
# @return [String, Integer] The User's ID
|
5
|
+
attr_reader :id
|
6
|
+
|
7
|
+
# @return [String] The User's name
|
8
|
+
attr_reader :name
|
9
|
+
|
10
|
+
# @return [String] The User's gender, one of "Male", "Female", "Cyborg" or "Other"
|
11
|
+
attr_reader :gender
|
12
|
+
|
13
|
+
# @return [String] The User's bio, max 1000 characters
|
14
|
+
attr_reader :bio
|
15
|
+
|
16
|
+
# @return [String] The User's country
|
17
|
+
attr_reader :country
|
18
|
+
|
19
|
+
# @return [Array<(Integer, Integer)>] The User's karma counts; first one is upvotes and second one is downvotes
|
20
|
+
attr_reader :karma
|
21
|
+
|
22
|
+
# Initializes a new User instance with an options hash.
|
23
|
+
# @param id [String, Integer] The user's ID: a bunch of numbers that may or may not be prefixed with 'S'.
|
24
|
+
# @param name [String] The user's name. Defaults to `nil`.
|
25
|
+
# @param gender [String] The user's gender, one of "Male", "Female", "Cyborg" or "Other". Defaults to "Other".
|
26
|
+
# @param bio [String] The user's bio or about section. Defaults to an empty string.
|
27
|
+
# @param country [String] The user's country. Defaults to "Unknown".
|
28
|
+
# @param karma [Array<(Integer, Integer)>] The user's karma counts (first is upvotes, second is downvotes). Defaults to zero for both.
|
29
|
+
# @return [User] a new instance of `User`
|
30
|
+
def initialize(id: nil, name: nil, gender: 'Other', bio: '', country: 'Unknown', karma: [0, 0])
|
31
|
+
@id = id
|
32
|
+
@name = name
|
33
|
+
@gender = gender
|
34
|
+
@bio = bio
|
35
|
+
@country = country
|
36
|
+
@karma = karma
|
37
|
+
end
|
38
|
+
|
39
|
+
# @overload inspect
|
40
|
+
# @return [String] A more meaningful output than that of the default inspect method, with all of User's attributes.
|
41
|
+
def inspect
|
42
|
+
"<User id=#{@id} name=#{@name} gender=#{gender} bio=#{bio} country=#{country} karma=#{karma}>"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
class Language
|
47
|
+
class Type
|
48
|
+
attr_reader :code
|
49
|
+
attr_reader :desc
|
50
|
+
|
51
|
+
def initialize(code: nil, desc: '')
|
52
|
+
@code = code
|
53
|
+
@desc = desc
|
54
|
+
end
|
55
|
+
|
56
|
+
def inspect
|
57
|
+
"<Language::Type code=#{@code} desc=#{@desc}>"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class Status
|
62
|
+
attr_reader :code
|
63
|
+
attr_reader :desc
|
64
|
+
|
65
|
+
def initialize(code: nil, desc: '')
|
66
|
+
@code = code
|
67
|
+
@desc = desc
|
68
|
+
end
|
69
|
+
|
70
|
+
def inspect
|
71
|
+
"<Language::Status code=#{@code} desc=#{@desc}>"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
attr_reader :code
|
76
|
+
attr_reader :name
|
77
|
+
attr_reader :native_name
|
78
|
+
attr_reader :ipa
|
79
|
+
attr_reader :type
|
80
|
+
attr_reader :owners
|
81
|
+
attr_reader :overview
|
82
|
+
attr_reader :public
|
83
|
+
attr_reader :status
|
84
|
+
attr_reader :registered
|
85
|
+
attr_reader :word_count
|
86
|
+
|
87
|
+
def initialize(code: nil, name: nil, native_name: nil, ipa: nil, type: nil,
|
88
|
+
owners: [], overview: '', public: true, status: '',
|
89
|
+
registered: Time.now, word_count: 0)
|
90
|
+
@code = code
|
91
|
+
@name = name
|
92
|
+
@native_name = native_name
|
93
|
+
@ipa = ipa
|
94
|
+
@type = type
|
95
|
+
@owners = owners
|
96
|
+
@overview = overview
|
97
|
+
@public = public
|
98
|
+
@status = status
|
99
|
+
@registered = registered
|
100
|
+
@word_count = word_count
|
101
|
+
end
|
102
|
+
|
103
|
+
def inspect
|
104
|
+
"<Language code=#{@code} name=#{@name} native_name=#{@native_name} " \
|
105
|
+
"ipa=#{@ipa} type=#{@type} owners=#{@owners} overview=#{@overview} " \
|
106
|
+
"public=#{@public} status=#{@status} registered=#{@registered} " \
|
107
|
+
"word_count=#{@word_count}>"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
data/lib/cwsrb/errors.rb
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
module Cwsrb
|
2
|
-
# @!group Errors
|
3
|
-
|
4
2
|
# @abstract This class subclasses `RuntimeError` and serves as a base
|
5
3
|
# for all other CWSrb's error classes.
|
6
4
|
Error = Class.new(RuntimeError)
|
7
5
|
|
8
|
-
# Raised when a general
|
6
|
+
# Raised when a general API error occurs.
|
9
7
|
APIError = Class.new(Error)
|
10
|
-
|
11
|
-
# @!endgroup
|
12
8
|
end
|
data/lib/cwsrb/helpers.rb
CHANGED
@@ -17,7 +17,7 @@ module Cwsrb
|
|
17
17
|
# Verifies if the response has any errors, and if so, raises a `APIError`.
|
18
18
|
# @param response [Hash<String, String>] the response hash to check for errors
|
19
19
|
# @raise [APIError] if any errors are detected in the response
|
20
|
-
# @return [void]
|
20
|
+
# @return [void]
|
21
21
|
def check_for_errors(response)
|
22
22
|
raise Cwsrb::APIError, response['err_msg'] if response['err_idx'] > 0
|
23
23
|
end
|
data/lib/cwsrb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cwsrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Unleashy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -103,9 +103,9 @@ files:
|
|
103
103
|
- cwsrb.gemspec
|
104
104
|
- lib/cwsrb.rb
|
105
105
|
- lib/cwsrb/api.rb
|
106
|
+
- lib/cwsrb/data.rb
|
106
107
|
- lib/cwsrb/errors.rb
|
107
108
|
- lib/cwsrb/helpers.rb
|
108
|
-
- lib/cwsrb/user.rb
|
109
109
|
- lib/cwsrb/version.rb
|
110
110
|
homepage: https://github.com/unleashy/cwsrb
|
111
111
|
licenses:
|
data/lib/cwsrb/user.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
module Cwsrb
|
2
|
-
# The User class represents an member of ConWorkShop.
|
3
|
-
class User
|
4
|
-
# @!attribute [r] id
|
5
|
-
# @return [String, Integer] The User's ID
|
6
|
-
attr_reader :id
|
7
|
-
|
8
|
-
# @!attribute [r] name
|
9
|
-
# @return [String] The User's name
|
10
|
-
attr_reader :name
|
11
|
-
|
12
|
-
# @!attribute [r] gender
|
13
|
-
# @return [String] The User's gender, one of "Male", "Female", "Cyborg" or "Other"
|
14
|
-
attr_reader :gender
|
15
|
-
|
16
|
-
# @!attribute [r] bio
|
17
|
-
# @return [String] The User's bio, max 1000 characters
|
18
|
-
attr_reader :bio
|
19
|
-
|
20
|
-
# @!attribute [r] country
|
21
|
-
# @return [String] The User's country
|
22
|
-
attr_reader :country
|
23
|
-
|
24
|
-
# @!attribute [r] karma
|
25
|
-
# @return [Array<(Integer, Integer)>] The User's karma counts. First one is upvotes and second one is downvotes.
|
26
|
-
attr_reader :karma
|
27
|
-
|
28
|
-
# Initializes a new User instance with an options hash.
|
29
|
-
# @param id [String, Integer] The user's ID: a bunch of numbers that may or may not be prefixed with 'S'.
|
30
|
-
# @param name [String] The user's name. Defaults to `nil`.
|
31
|
-
# @param gender [String] The user's gender, one of "Male", "Female", "Cyborg" or "Other". Defaults to "Other".
|
32
|
-
# @param bio [String] The user's bio or about section. Defaults to an empty string.
|
33
|
-
# @param country [String] The user's country. Defaults to "Unknown".
|
34
|
-
# @param karma [Array<(Integer, Integer)>] The user's karma counts (first is upvotes, second is downvotes). Defaults to zero for both.
|
35
|
-
# @return [void] _dust_
|
36
|
-
def initialize(id: nil, name: nil, gender: 'Other', bio: '', country: 'Unknown', karma: [0, 0])
|
37
|
-
@id = id
|
38
|
-
@name = name
|
39
|
-
@gender = gender
|
40
|
-
@bio = bio
|
41
|
-
@country = country
|
42
|
-
@karma = karma
|
43
|
-
end
|
44
|
-
|
45
|
-
# @overload inspect
|
46
|
-
# @return [String] A more meaningful output than that of the default inspect method, with all of User's attributes.
|
47
|
-
def inspect
|
48
|
-
"<User id=#{@id} name=#{@name} gender=#{gender} bio=#{bio} country=#{country} karma=#{karma}>"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|