cwsrb 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem](https://img.shields.io/gem/v/cwsrb.svg)](https://rubygems.org/gems/cwsrb)
|
2
|
+
[![Build Status](https://travis-ci.org/unleashy/cwsrb.svg?branch=master)](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:
|