ruqqus 1.0.0 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,61 +0,0 @@
1
- require_relative 'submission'
2
-
3
- module Ruqqus
4
-
5
- ##
6
- # Describes a comment in a post.
7
- class Comment < Submission
8
-
9
- ##
10
- # Captures the ID of a comment from a Ruqqus URL
11
- COMMENT_REGEX = /ruqqus.com\/post\/.+\/.+\/([A-Za-z0-9]+)\/?/.freeze
12
-
13
- ##
14
- # @return [Integer] the level of "nesting" in the comment tree, starting at `1` when in direct reply to the post.
15
- def level
16
- @data[:level]
17
- end
18
-
19
- ##
20
- # @return [String] the unique ID of the parent for this comment.
21
- def parent_id
22
- @data[:parent]
23
- end
24
-
25
- ##
26
- # @return [Post,Comment] the parent for this content.
27
- def parent
28
- #noinspection RubyYardReturnMatch
29
- @parent ||= level > 1 ? Ruqqus.comment(parent_id) : Ruqqus.post(parent_id)
30
- end
31
-
32
- ##
33
- # @return [String] the ID of the post this comment belongs to.
34
- def post_id
35
- @data[:post]
36
- end
37
-
38
- ##
39
- # @return [Post] the post this comment belongs to.
40
- def post
41
- #noinspection RubyYardReturnMatch
42
- Ruqqus.post(post_id)
43
- end
44
-
45
- ##
46
- # Creates a new {Comment} instance from the specified URL.
47
- #
48
- # @param url [String] a URL link to a comment.
49
- #
50
- # @return [Comment] the {Comment} instance the URL links to.
51
- #
52
- # @raise [ArgumentError] then `url` is `nil`.
53
- # @raise [Ruqqus::Error] when the link is not for a Ruqqus comment.
54
- def self.from_url(url)
55
- raise(ArgumentError, 'url cannot be nil') unless url
56
- match = COMMENT_REGEX.match(url)
57
- raise(ArgumentError, 'invalid URL for a comment') unless match
58
- Ruqqus.comment($1)
59
- end
60
- end
61
- end
@@ -1,85 +0,0 @@
1
- require_relative 'submission'
2
-
3
- module Ruqqus
4
-
5
- ##
6
- # Represents a post on Ruqqus.
7
- class Post < Submission
8
-
9
- ##
10
- # Captures the ID of a post from a Ruqqus URL
11
- POST_REGEX = /ruqqus.com\/post\/([A-Za-z0-9]+)\/?.*/.freeze
12
-
13
- ##
14
- # @return [Title?] the title assigned to the author, or `nil` if none is defined.
15
- def author_title
16
- #noinspection RubyYardReturnMatch
17
- @author_title ||= @data[:author_title] ? Title.new(@data[:author_title]) : nil
18
- end
19
-
20
- ##
21
- # @return [Integer] the number of comments made on the post.
22
- def comment_count
23
- @data[:comment_count]
24
- end
25
-
26
- ##
27
- # @return [String] the domain name for link posts, otherwise a short descriptor of the post type.
28
- def domain
29
- @data[:domain]
30
- end
31
-
32
- ##
33
- # @return [String] the embed URL for the post.
34
- def embed_url
35
- @data[:embed_url]
36
- end
37
-
38
- ##
39
- # @return [String] the name of the guild this post was originally posted in.
40
- def original_guild_name
41
- @data[:original_guild_name]
42
- end
43
-
44
- ##
45
- # @return [Guild] the guild this post was originally posted in.
46
- def original_guild
47
- @original_guild ||= Ruqqus.guild(original_guild_name)
48
- end
49
-
50
- ##
51
- # @return [String?] the URL of the post's thumbnail image, or `nil` if none exists.
52
- def thumb_url
53
- @data[:thumb_url]
54
- end
55
-
56
- ##
57
- # @return [String?] the URL the post links to, or `nil` if none is specified.
58
- def url
59
- #noinspection RubyYardReturnMatch
60
- @data[:url]&.empty? ? nil : @data[:url]
61
- end
62
-
63
- ##
64
- # @return [String] the string representation of the object.
65
- def to_s
66
- @data[:title] || inspect
67
- end
68
-
69
- ##
70
- # Creates a new {Post} instance from the specified URL.
71
- #
72
- # @param url [String] a URL link to a post.
73
- #
74
- # @return [Post] the {Post} instance the URL links to.
75
- #
76
- # @raise [ArgumentError] then `url` is `nil`.
77
- # @raise [Ruqqus::Error] when the link is not for a Ruqqus post.
78
- def self.from_url(url)
79
- raise(ArgumentError, 'url cannot be nil') unless url
80
- match = POST_REGEX.match(url)
81
- raise(ArgumentError, 'invalid URL for a post') unless match
82
- Ruqqus.post($1)
83
- end
84
- end
85
- end
@@ -1,96 +0,0 @@
1
- require_relative 'badge'
2
- require_relative 'title'
3
- require_relative 'item_base'
4
-
5
- module Ruqqus
6
-
7
- ##
8
- # Represents a Ruqqus user account.
9
- class User < ItemBase
10
-
11
- ##
12
- # @return [Integer] the number of comments the user has created.
13
- def comment_count
14
- @data[:comment_count] || 0
15
- end
16
-
17
- ##
18
- # @return [Integer] the number of posts the user has created.
19
- def post_count
20
- @data[:post_count] || 0
21
- end
22
-
23
- ##
24
- # @return [Integer] the amount of rep the user has earned from comments.
25
- def comment_rep
26
- @data[:comment_rep] || 0
27
- end
28
-
29
- ##
30
- # @return [Integer] the amount of rep the user has earned from posts.
31
- def post_rep
32
- @data[:post_rep] || 0
33
- end
34
-
35
- ##
36
- # @return [Integer] the total amount of rep the user has earned from comments and posts.
37
- def total_rep
38
- comment_rep + post_rep
39
- end
40
-
41
- ##
42
- # @return [String] the username of the account.
43
- def username
44
- @data[:username]
45
- end
46
-
47
- ##
48
- # @return [Array<Badge>] an array of badges associated with this account.
49
- def badges
50
- @badges ||= @data[:badges].map { |b| Badge.new(b) }
51
- end
52
-
53
- ##
54
- # @return [Title?] the title the user has associated with their account, or `nil` if none is assigned.
55
- def title
56
- #noinspection RubyYardReturnMatch
57
- @title ||= @data[:title] ? Title.new(@data[title]) : nil
58
- end
59
-
60
- ##
61
- # @return [String] the URL for the banner image associated with the account.
62
- def banner_url
63
- @data[:banner_url]
64
- end
65
-
66
- ##
67
- # @return [String] the URL for the profile image associated with the account.
68
- def profile_url
69
- @data[:profile_url]
70
- end
71
-
72
- ##
73
- # @return [String] A brief statement/biography the user has associated with their account.
74
- def bio
75
- @data[:bio]
76
- end
77
-
78
- ##
79
- # @return [String] a brief statement/biography the user has associated with their account in HTML format.
80
- def bio_html
81
- @data[:bio_html]
82
- end
83
-
84
- ##
85
- # @return [String?] the reason the user was banned if they were, otherwise `nil`.
86
- def ban_reason
87
- @data[:ban_reason]
88
- end
89
-
90
- ##
91
- # @return [String] the string representation of the object.
92
- def to_s
93
- @data[:username] || inspect
94
- end
95
- end
96
- end