cwsrb 0.2.0 → 0.3.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 +30 -6
- data/.yardopts +1 -0
- data/CHANGELOG.md +15 -0
- data/README.md +20 -4
- data/bin/console +4 -0
- data/lib/cwsrb.rb +2 -0
- data/lib/cwsrb/api.rb +29 -9
- data/lib/cwsrb/errors.rb +8 -0
- data/lib/cwsrb/helpers.rb +12 -3
- data/lib/cwsrb/user.rb +51 -0
- data/lib/cwsrb/version.rb +2 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f5f7a7480e1233b3cc3043f175298be9e970bfd
|
4
|
+
data.tar.gz: d04fc19a79bd91e0b54883eff1407998ea592b11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f74e5d1623a70bde7e8f200bd333a34fe2d079a3ced37542f80312621c1cda33f4c4ddc03640cabcbd5c2aa9005c29f690fdbe25e2eb2d2834aa45fdeb2fc012
|
7
|
+
data.tar.gz: 73a7540d911305e901dc865d4e77ac43c2d09a6475368347c3dfd66c8fe0b4d94be30c5fdc6bd4c2b39f0b212fc138d5dfe914da80d6898eb68ab19f7b678bf9
|
data/.rubocop.yml
CHANGED
@@ -1,11 +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
|
+
|
1
17
|
Metrics/LineLength:
|
2
|
-
|
18
|
+
Enabled: false
|
19
|
+
|
20
|
+
Metrics/MethodLength:
|
21
|
+
Enabled: false
|
22
|
+
|
23
|
+
Metrics/ParameterLists:
|
24
|
+
Enabled: false
|
25
|
+
|
26
|
+
Metrics/PerceivedComplexity:
|
27
|
+
Enabled: false
|
3
28
|
|
4
|
-
# TODO: documentation (I SWEAR I'LL DO IT SOMEDAY)
|
5
29
|
Style/Documentation:
|
6
30
|
Exclude:
|
7
31
|
- 'spec/**/*'
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
- '
|
32
|
+
|
33
|
+
AllCops:
|
34
|
+
Exclude:
|
35
|
+
- 'bin/**/*'
|
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--markup markdown
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 0.3.0
|
4
|
+
* Documented everything I could with YARD. yay! ([#2](https://github.com/unleashy/cwsrb/issues/2))
|
5
|
+
* Added `User` class that is returned for calls to `API#get_user`. ([#3](https://github.com/unleashy/cwsrb/issues/3))
|
6
|
+
* `Helpers#resolve` would return an @-prefixed string if you gave it an `Integer`. Well, no more! ([#1](https://github.com/unleashy/cwsrb/issues/1))
|
7
|
+
* Merged `API#get_karma` into `API#get_user`
|
8
|
+
* Made it so the testing console already initialized an API object for you
|
9
|
+
* Disabled metrics for rubocop
|
10
|
+
|
11
|
+
## 0.2.0
|
12
|
+
* First release on GitHub
|
13
|
+
|
14
|
+
## 0.1.0
|
15
|
+
* First actual release
|
data/README.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
-
|
1
|
+
[](https://rubygems.org/gems/cwsrb)
|
2
|
+
[](https://travis-ci.org/unleashy/cwsrb)
|
2
3
|
|
3
|
-
|
4
|
+
# CWSrb
|
5
|
+
|
6
|
+
CWSrb is a simple API wrapper for [ConWorkShop](http://conworkshop.com).
|
4
7
|
|
5
8
|
## Dependencies
|
6
9
|
|
@@ -8,11 +11,24 @@ Cwsrb is a simple API wrapper for [ConWorkShop](http://conworkshop.com).
|
|
8
11
|
|
9
12
|
## Installation
|
10
13
|
|
11
|
-
|
14
|
+
Add this line to your application's Gemfile:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
gem 'cwsrb'
|
18
|
+
```
|
19
|
+
|
20
|
+
And then execute:
|
21
|
+
|
22
|
+
$ bundle
|
23
|
+
|
24
|
+
Or install it yourself as:
|
25
|
+
|
26
|
+
$ gem install cwsrb
|
12
27
|
|
13
28
|
## Usage
|
14
29
|
|
15
|
-
|
30
|
+
TODO
|
31
|
+
(I swear I'll fill this out)
|
16
32
|
|
17
33
|
## Development
|
18
34
|
|
data/bin/console
CHANGED
data/lib/cwsrb.rb
CHANGED
data/lib/cwsrb/api.rb
CHANGED
@@ -1,36 +1,56 @@
|
|
1
1
|
require 'httparty'
|
2
2
|
require 'cwsrb/errors'
|
3
3
|
require 'cwsrb/helpers'
|
4
|
+
require 'cwsrb/user'
|
4
5
|
|
5
6
|
module Cwsrb
|
7
|
+
# This is the main class from which you use CWSrb.
|
8
|
+
# It includes `HTTParty` with a `base_uri` of "http://conworkshop.com".
|
6
9
|
class API
|
7
10
|
include HTTParty
|
8
11
|
base_uri 'http://conworkshop.com'
|
9
12
|
|
13
|
+
# Initialize a new instance of the API object, with a mandatory custom User-Agent for HTTP requests.
|
14
|
+
# This sets the User-Agent header for all subsequent requests, with your custom User-Agent and CWSrb's User-Agent.
|
15
|
+
# @param user_agent [String] The User-Agent to use with HTTP requests. Please use a descriptive one.
|
16
|
+
# @return [void] _dust_
|
10
17
|
def initialize(user_agent)
|
11
18
|
self.class.headers 'User-Agent' =>
|
12
19
|
"#{user_agent} CWSrb/#{Cwsrb::VERSION} (#{RUBY_ENGINE}/#{RUBY_VERSION}p#{RUBY_PATCHLEVEL})"
|
13
20
|
end
|
14
21
|
|
15
|
-
|
16
|
-
|
22
|
+
# Gets a ConWorkShop's user's info plus karma counts.
|
23
|
+
# @param val [String, Integer] The user's name or ID.
|
24
|
+
# @return [User] The user queried for
|
25
|
+
# @raise [APIError] If any error ocurred while querying for that user
|
26
|
+
def get_user(val)
|
17
27
|
usr = Cwsrb::Helpers.resolve(val)
|
18
|
-
|
28
|
+
|
29
|
+
# First general info
|
30
|
+
response = self.class.get("/api?f=USER&USER=#{usr}")
|
19
31
|
|
20
32
|
# Check if any errors occurred
|
21
33
|
Cwsrb::Helpers.check_for_errors(response)
|
22
34
|
|
23
|
-
response['out']
|
24
|
-
|
35
|
+
response = response['out']
|
36
|
+
attribs = {
|
37
|
+
id: response['USER_ID'],
|
38
|
+
name: response['USER_NAME'],
|
39
|
+
gender: response['USER_GENDER'],
|
40
|
+
bio: response['USER_BIO'],
|
41
|
+
country: response['USER_COUNTRY']
|
42
|
+
}
|
25
43
|
|
26
|
-
|
27
|
-
|
28
|
-
response = self.class.get("/api?f=USER&USER=#{usr}")
|
44
|
+
# Now karma
|
45
|
+
response = self.class.get("/api?f=USER_KARMA&USER=#{usr}")
|
29
46
|
|
30
47
|
# Check if any errors occurred
|
31
48
|
Cwsrb::Helpers.check_for_errors(response)
|
32
49
|
|
33
|
-
response['out']
|
50
|
+
response = response['out']
|
51
|
+
attribs[:karma] = [response['KARMA_UP'], response['KARMA_DOWN']]
|
52
|
+
|
53
|
+
Cwsrb::User.new(attribs)
|
34
54
|
end
|
35
55
|
end
|
36
56
|
end
|
data/lib/cwsrb/errors.rb
CHANGED
@@ -1,4 +1,12 @@
|
|
1
1
|
module Cwsrb
|
2
|
+
# @!group Errors
|
3
|
+
|
4
|
+
# @abstract This class subclasses `RuntimeError` and serves as a base
|
5
|
+
# for all other CWSrb's error classes.
|
2
6
|
Error = Class.new(RuntimeError)
|
7
|
+
|
8
|
+
# Raised when a general APIError occurs.
|
3
9
|
APIError = Class.new(Error)
|
10
|
+
|
11
|
+
# @!endgroup
|
4
12
|
end
|
data/lib/cwsrb/helpers.rb
CHANGED
@@ -1,14 +1,23 @@
|
|
1
1
|
module Cwsrb
|
2
|
+
# This module has a bunch of utility functions for use in other files.
|
3
|
+
# All methods are marked as `module_function` so you can do things like `Helpers.resolve`.
|
2
4
|
module Helpers
|
3
5
|
module_function
|
4
6
|
|
7
|
+
# Determine if val is an ID or username.
|
8
|
+
# ID is a bunch of numbers that can or cannot be followed by an 'S'.
|
9
|
+
# Username... is not an ID.
|
10
|
+
# @param val [String, Integer] The value to discriminate
|
11
|
+
# @return [String, Integer] Either an '@'-prefixed `val` if it's an username or val itself if it isn't
|
5
12
|
def resolve(val)
|
6
|
-
|
7
|
-
# ID is a bunch of numbers that can or cannot be followed by an 'S'.
|
8
|
-
# Username... is not an ID.
|
13
|
+
return val if val.is_a?(Integer)
|
9
14
|
(val =~ /\A(S?\d+)\z/) ? val : "@#{val}"
|
10
15
|
end
|
11
16
|
|
17
|
+
# Verifies if the response has any errors, and if so, raises a `APIError`.
|
18
|
+
# @param response [Hash<String, String>] the response hash to check for errors
|
19
|
+
# @raise [APIError] if any errors are detected in the response
|
20
|
+
# @return [void] _dust_
|
12
21
|
def check_for_errors(response)
|
13
22
|
raise Cwsrb::APIError, response['err_msg'] if response['err_idx'] > 0
|
14
23
|
end
|
data/lib/cwsrb/user.rb
ADDED
@@ -0,0 +1,51 @@
|
|
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
|
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.3.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-06-
|
11
|
+
date: 2016-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -91,6 +91,8 @@ files:
|
|
91
91
|
- ".rspec"
|
92
92
|
- ".rubocop.yml"
|
93
93
|
- ".travis.yml"
|
94
|
+
- ".yardopts"
|
95
|
+
- CHANGELOG.md
|
94
96
|
- Gemfile
|
95
97
|
- LICENSE.txt
|
96
98
|
- README.md
|
@@ -103,6 +105,7 @@ files:
|
|
103
105
|
- lib/cwsrb/api.rb
|
104
106
|
- lib/cwsrb/errors.rb
|
105
107
|
- lib/cwsrb/helpers.rb
|
108
|
+
- lib/cwsrb/user.rb
|
106
109
|
- lib/cwsrb/version.rb
|
107
110
|
homepage: https://github.com/unleashy/cwsrb
|
108
111
|
licenses:
|