rubyhexagon 1.6.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/rubyhexagon.rb +34 -18
- data/lib/rubyhexagon/api.rb +96 -0
- data/lib/rubyhexagon/{login.rb → api/artist.rb} +9 -19
- data/lib/rubyhexagon/api/note.rb +50 -0
- data/lib/rubyhexagon/api/pool.rb +51 -0
- data/lib/rubyhexagon/api/post.rb +92 -0
- data/lib/rubyhexagon/api/post/flag.rb +36 -0
- data/lib/rubyhexagon/api/post/tag_item.rb +36 -0
- data/lib/rubyhexagon/api/tag.rb +65 -0
- data/lib/rubyhexagon/api/tag/alias.rb +41 -0
- data/lib/rubyhexagon/api/tag/implication.rb +41 -0
- data/lib/rubyhexagon/api/user.rb +52 -0
- data/lib/rubyhexagon/artist.rb +44 -32
- data/lib/rubyhexagon/error.rb +4 -5
- data/lib/rubyhexagon/note.rb +112 -0
- data/lib/rubyhexagon/pool.rb +22 -50
- data/lib/rubyhexagon/post.rb +142 -161
- data/lib/rubyhexagon/post/flag.rb +78 -0
- data/lib/rubyhexagon/post/image.rb +114 -0
- data/lib/rubyhexagon/post/tag_item.rb +74 -0
- data/lib/rubyhexagon/search/posts.rb +3 -3
- data/lib/rubyhexagon/tag.rb +20 -47
- data/lib/rubyhexagon/tag/alias.rb +87 -0
- data/lib/rubyhexagon/tag/implication.rb +91 -0
- data/lib/rubyhexagon/tag/type.rb +79 -0
- data/lib/rubyhexagon/user.rb +24 -30
- data/lib/rubyhexagon/user/level.rb +92 -0
- metadata +22 -13
- data/lib/rubyhexagon/helper/api.rb +0 -99
- data/lib/rubyhexagon/image.rb +0 -122
- data/lib/rubyhexagon/level.rb +0 -58
- data/lib/rubyhexagon/search/flag_history.rb +0 -62
- data/lib/rubyhexagon/search/pools.rb +0 -62
- data/lib/rubyhexagon/search/tag_history.rb +0 -61
- data/lib/rubyhexagon/search/tags.rb +0 -139
- data/lib/rubyhexagon/tag_change.rb +0 -69
- data/lib/rubyhexagon/type.rb +0 -72
data/lib/rubyhexagon/image.rb
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2014-2018 Maxine Michalski <maxine@furfind.net>
|
4
|
-
#
|
5
|
-
# This file is part of rubyhexagon.
|
6
|
-
#
|
7
|
-
# rubyhexagon is free software: you can redistribute it and/or modify
|
8
|
-
# it under the terms of the GNU General Public License as published by
|
9
|
-
# the Free Software Foundation, either version 3 of the License, or
|
10
|
-
# (at your option) any later version.
|
11
|
-
#
|
12
|
-
# rubyhexagon is distributed in the hope that it will be useful,
|
13
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
-
# GNU General Public License for more details.
|
16
|
-
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with rubyhexagon. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
|
19
|
-
module Rubyhexagon
|
20
|
-
# Class for post file data. This is mostly an abstraction to have data
|
21
|
-
# structures in a more Ruby like nature.
|
22
|
-
#
|
23
|
-
# @api private
|
24
|
-
# @author Maxine Michalski
|
25
|
-
# @since 1.0.0
|
26
|
-
class Image
|
27
|
-
# @return [URI] url of file
|
28
|
-
attr_reader :url
|
29
|
-
|
30
|
-
# @return [String] extension of file
|
31
|
-
attr_reader :ext
|
32
|
-
|
33
|
-
# @return [Integer] image/video width
|
34
|
-
attr_reader :width
|
35
|
-
|
36
|
-
# @return [Integer] image/video height
|
37
|
-
attr_reader :height
|
38
|
-
|
39
|
-
# @return [String] MD5 hash sum
|
40
|
-
attr_reader :md5
|
41
|
-
|
42
|
-
# @return [Integer] file size in bytes
|
43
|
-
attr_reader :size
|
44
|
-
|
45
|
-
# @author Maxine Michalski
|
46
|
-
#
|
47
|
-
# Initializer for a File. This is not a Ruby file class, but an abstraction
|
48
|
-
# of e621 file information.
|
49
|
-
#
|
50
|
-
# @param file [Hash] file information
|
51
|
-
#
|
52
|
-
# @return the object
|
53
|
-
def initialize(file)
|
54
|
-
@url = URI.parse(file[:url])
|
55
|
-
@md5 = File.basename(file[:url]).sub(/\.\w{3,4}$/, '')
|
56
|
-
@ext = file[:ext]
|
57
|
-
@width = file[:width].to_i
|
58
|
-
@height = file[:height].to_i
|
59
|
-
@size = file[:size].to_i
|
60
|
-
@user_agent = { 'User-Agent' =>
|
61
|
-
"#{Rubyhexagon::NAME}/#{Rubyhexagon::VERSION} "\
|
62
|
-
'(by maxine_red on e621' }
|
63
|
-
end
|
64
|
-
|
65
|
-
# @author Maxine Michalski
|
66
|
-
#
|
67
|
-
# Comparison method to comapre two Image objects (and sub class objects)
|
68
|
-
#
|
69
|
-
# @return [TrueClass, FalseClass]
|
70
|
-
def ==(other)
|
71
|
-
other.is_a?(Image) && @md5 == other.md5
|
72
|
-
end
|
73
|
-
|
74
|
-
# @author Maxine Michalski
|
75
|
-
#
|
76
|
-
# Retrieve data from e621 and save it to file.
|
77
|
-
#
|
78
|
-
# @param dirname [String] path where to save. This needs be an existing
|
79
|
-
# directory. This overwrites existing files.
|
80
|
-
# @param filename [String] name of file, without extension
|
81
|
-
#
|
82
|
-
# @raise [ArgumentError] Argument given is not an existing directory
|
83
|
-
def save!(dirname = './', filename = nil)
|
84
|
-
raise ArgumentError, 'Not a directory!' unless File.directory?(dirname)
|
85
|
-
filename ||= @md5
|
86
|
-
loop do
|
87
|
-
stream = @url.open(@user_agent).read
|
88
|
-
File.open("#{dirname}/#{filename}.#{@ext}", 'w') do |f|
|
89
|
-
f.print stream
|
90
|
-
end
|
91
|
-
break if Digest::MD5.hexdigest(stream) == @md5
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
class Sample < Image; end
|
96
|
-
|
97
|
-
# Class for post file data. This is mostly an abstraction to have data
|
98
|
-
# structures in a more Ruby like nature.
|
99
|
-
# This class just holds an adapted version of #save!, to handle the case of
|
100
|
-
# preview images having a different MD5 hash sum attribute than they actually
|
101
|
-
# should have.
|
102
|
-
# That is an e621 issue though.
|
103
|
-
#
|
104
|
-
# @api private
|
105
|
-
# @author Maxine Michalski
|
106
|
-
# @since 1.0.0
|
107
|
-
class Preview < Image
|
108
|
-
# @author Maxine Michalski
|
109
|
-
#
|
110
|
-
# Retrieve data from e621 and save it to file.
|
111
|
-
#
|
112
|
-
# @param dirname [String] path where to save. This needs be an existing
|
113
|
-
# directory. This overwrites existing files.
|
114
|
-
# @raise [ArgumentError] Argument given is not an existing directory
|
115
|
-
def save!(dirname = './')
|
116
|
-
raise ArgumentError, 'Not a directory!' unless File.directory?(dirname)
|
117
|
-
File.open("#{dirname}/#{File.basename(@url.path)}", 'w') do |f|
|
118
|
-
f.print @url.open(@user_agent).read
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
data/lib/rubyhexagon/level.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2014-2018 Maxine Michalski <maxine@furfind.net>
|
4
|
-
#
|
5
|
-
# This file is part of rubyhexagon.
|
6
|
-
#
|
7
|
-
# rubyhexagon is free software: you can redistribute it and/or modify
|
8
|
-
# it under the terms of the GNU General Public License as published by
|
9
|
-
# the Free Software Foundation, either version 3 of the License, or
|
10
|
-
# (at your option) any later version.
|
11
|
-
#
|
12
|
-
# rubyhexagon is distributed in the hope that it will be useful,
|
13
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
-
# GNU General Public License for more details.
|
16
|
-
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with rubyhexagon. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
|
19
|
-
module Rubyhexagon
|
20
|
-
# Class to hold level information.
|
21
|
-
#
|
22
|
-
# @api private
|
23
|
-
# @author Maxine Michalski
|
24
|
-
# @since 1.0.0
|
25
|
-
class Level
|
26
|
-
# @return [Integer] id of level
|
27
|
-
attr_reader :id
|
28
|
-
|
29
|
-
# @return [String] name of level
|
30
|
-
attr_reader :name
|
31
|
-
|
32
|
-
# @author Maxine Michalski
|
33
|
-
#
|
34
|
-
# Initializer for Level a user can have. This is just to have a more Ruby
|
35
|
-
# like interface to it.
|
36
|
-
#
|
37
|
-
# @param level [Hash] level a user can have.
|
38
|
-
#
|
39
|
-
# @return the object
|
40
|
-
def initialize(level)
|
41
|
-
@id = level
|
42
|
-
@name = if @id.between?(31, 39)
|
43
|
-
[nil, nil, :contributor, :'former staff', :janotor][@id - 30]
|
44
|
-
else
|
45
|
-
%i[unactivated blocked member privileged mod admin][@id / 10]
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
# @author Maxine Michalski
|
50
|
-
#
|
51
|
-
# Comparison method for Level objects
|
52
|
-
#
|
53
|
-
# @return [TrueClass, FalseClass]
|
54
|
-
def ==(other)
|
55
|
-
other.is_a?(Level) && @id == other.id && @name == other.name
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2014-2018 Maxine Michalski <maxine@furfind.net>
|
4
|
-
#
|
5
|
-
# This file is part of rubyhexagon.
|
6
|
-
#
|
7
|
-
# rubyhexagon is free software: you can redistribute it and/or modify
|
8
|
-
# it under the terms of the GNU General Public License as published by
|
9
|
-
# the Free Software Foundation, either version 3 of the License, or
|
10
|
-
# (at your option) any later version.
|
11
|
-
#
|
12
|
-
# rubyhexagon is distributed in the hope that it will be useful,
|
13
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
-
# GNU General Public License for more details.
|
16
|
-
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with rubyhexagon. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
|
19
|
-
module Rubyhexagon
|
20
|
-
# Module to hold search classes
|
21
|
-
#
|
22
|
-
# @author Maxine Michalski
|
23
|
-
# @since 1.0.0
|
24
|
-
module Search
|
25
|
-
# Class to hold methods for fetching a list of flagged posts.
|
26
|
-
#
|
27
|
-
# @author Maxine Michalski
|
28
|
-
# @since 1.4.0
|
29
|
-
class FlagHistory
|
30
|
-
# @author Maxine Michalski
|
31
|
-
#
|
32
|
-
# Retrieve a list of flagged posts, with flag reason. Only id and
|
33
|
-
# del_reason is present.
|
34
|
-
# This method accepts blocks and only returns one page without blocks
|
35
|
-
#
|
36
|
-
# @param page [Integer] page of deleted posts to return
|
37
|
-
#
|
38
|
-
# @return [Array<DeletedPost>] an array of deleted posts
|
39
|
-
def self.list(page = 1)
|
40
|
-
d = fetch_list(page)
|
41
|
-
while block_given? && d != []
|
42
|
-
d.each { |del| yield del }
|
43
|
-
page += 1
|
44
|
-
d = fetch_list(page)
|
45
|
-
end
|
46
|
-
d
|
47
|
-
end
|
48
|
-
|
49
|
-
# @author Maxine Michalski
|
50
|
-
#
|
51
|
-
# Helper function for flagged posts
|
52
|
-
#
|
53
|
-
# @return [Array<DeletedPost>] array of deleted posts
|
54
|
-
def self.fetch_list(page)
|
55
|
-
API.new.fetch('post_flag_history', 'index', page: page).map do |post|
|
56
|
-
DeletedPost.new(post[:id], post[:reason])
|
57
|
-
end
|
58
|
-
end
|
59
|
-
private_class_method :fetch_list
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2014-2018 Maxine Michalski <maxine@furfind.net>
|
4
|
-
#
|
5
|
-
# This file is part of rubyhexagon.
|
6
|
-
#
|
7
|
-
# rubyhexagon is free software: you can redistribute it and/or modify
|
8
|
-
# it under the terms of the GNU General Public License as published by
|
9
|
-
# the Free Software Foundation, either version 3 of the License, or
|
10
|
-
# (at your option) any later version.
|
11
|
-
#
|
12
|
-
# rubyhexagon is distributed in the hope that it will be useful,
|
13
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
-
# GNU General Public License for more details.
|
16
|
-
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with rubyhexagon. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
|
19
|
-
module Rubyhexagon
|
20
|
-
# Module to hold search classes
|
21
|
-
#
|
22
|
-
# @author Maxine Michalski
|
23
|
-
# @since 1.0.0
|
24
|
-
module Search
|
25
|
-
# Class to hold methods for Pool searches.
|
26
|
-
#
|
27
|
-
# @author Maxine Michalski
|
28
|
-
# @since 1.4.0
|
29
|
-
class Pools
|
30
|
-
# @author Maxine Michalski
|
31
|
-
#
|
32
|
-
# Retrieve a list of pools.
|
33
|
-
# This method accepts blocks and only returns one page without blocks
|
34
|
-
#
|
35
|
-
# @param page [Integer] page of deleted pools to return
|
36
|
-
#
|
37
|
-
# @return [Array<Pool>] an array of deleted pools
|
38
|
-
def self.list(query, page = 1)
|
39
|
-
parameters = { query: query, page: page }
|
40
|
-
pools = fetch_pools(parameters)
|
41
|
-
while block_given? && pools != []
|
42
|
-
pools.each { |pool| yield pool }
|
43
|
-
parameters[:page] += 1
|
44
|
-
pools = fetch_pools(parameters)
|
45
|
-
end
|
46
|
-
pools
|
47
|
-
end
|
48
|
-
|
49
|
-
# @author Maxine Michalski
|
50
|
-
#
|
51
|
-
# Helper function for pools
|
52
|
-
#
|
53
|
-
# @return [Array<Pool>] array of pools
|
54
|
-
def self.fetch_pools(parameters)
|
55
|
-
API.new.fetch('pool', 'index', parameters).map do |data|
|
56
|
-
Pool.new(data[:id]).show(data)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
private_class_method :fetch_pools
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2014-2018 Maxine Michalski <maxine@furfind.net>
|
4
|
-
#
|
5
|
-
# This file is part of rubyhexagon.
|
6
|
-
#
|
7
|
-
# rubyhexagon is free software: you can redistribute it and/or modify
|
8
|
-
# it under the terms of the GNU General Public License as published by
|
9
|
-
# the Free Software Foundation, either version 3 of the License, or
|
10
|
-
# (at your option) any later version.
|
11
|
-
#
|
12
|
-
# rubyhexagon is distributed in the hope that it will be useful,
|
13
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
-
# GNU General Public License for more details.
|
16
|
-
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with rubyhexagon. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
|
19
|
-
module Rubyhexagon
|
20
|
-
# Module to hold search classes
|
21
|
-
#
|
22
|
-
# @author Maxine Michalski
|
23
|
-
# @since 1.0.0
|
24
|
-
module Search
|
25
|
-
# Class to hold methods for fetching tag changes.
|
26
|
-
#
|
27
|
-
# @author Maxine Michalski
|
28
|
-
# @since 1.4.0
|
29
|
-
class TagHistory
|
30
|
-
# @author Maxine Michalski
|
31
|
-
#
|
32
|
-
# Retrieve a list of posts with changed tags
|
33
|
-
# This method accepts blocks and only returns one page without blocks
|
34
|
-
#
|
35
|
-
# @param page [Integer] page of deleted posts to return
|
36
|
-
#
|
37
|
-
# @return [Array<Post>] an array of deleted posts
|
38
|
-
def self.list(page = 1)
|
39
|
-
d = fetch_list(page)
|
40
|
-
while block_given? && d != []
|
41
|
-
d.each { |del| yield del }
|
42
|
-
page += 1
|
43
|
-
d = fetch_list(page)
|
44
|
-
end
|
45
|
-
d
|
46
|
-
end
|
47
|
-
|
48
|
-
# @author Maxine Michalski
|
49
|
-
#
|
50
|
-
# Helper function for flagged posts
|
51
|
-
#
|
52
|
-
# @return [Array<DeletedPost>] array of deleted posts
|
53
|
-
def self.fetch_list(page)
|
54
|
-
API.new.fetch('post_tag_history', 'index', page: page).map do |post|
|
55
|
-
TagChange.new(post)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
private_class_method :fetch_list
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,139 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2014-2018 Maxine Michalski <maxine@furfind.net>
|
4
|
-
#
|
5
|
-
# This file is part of rubyhexagon.
|
6
|
-
#
|
7
|
-
# rubyhexagon is free software: you can redistribute it and/or modify
|
8
|
-
# it under the terms of the GNU General Public License as published by
|
9
|
-
# the Free Software Foundation, either version 3 of the License, or
|
10
|
-
# (at your option) any later version.
|
11
|
-
#
|
12
|
-
# rubyhexagon is distributed in the hope that it will be useful,
|
13
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
-
# GNU General Public License for more details.
|
16
|
-
# You should have received a copy of the GNU General Public License
|
17
|
-
# along with rubyhexagon. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
|
19
|
-
module Rubyhexagon
|
20
|
-
# Module to hold search classes
|
21
|
-
#
|
22
|
-
# @author Maxine Michalski
|
23
|
-
# @since 1.0.0
|
24
|
-
module Search
|
25
|
-
# Class to hold methods for Tag searches.
|
26
|
-
#
|
27
|
-
# @author Maxine Michalski
|
28
|
-
# @since 1.0.0
|
29
|
-
class Tags
|
30
|
-
# @author Maxine Michalski
|
31
|
-
#
|
32
|
-
# Retrieve a list of post data, which is filtered by arguments.
|
33
|
-
# This method accepts a block and returns only one page without one.
|
34
|
-
#
|
35
|
-
# @param name [String] name pattern to search tags with
|
36
|
-
# @param limit [Integer] number of tags to return. This has a hard limit
|
37
|
-
# of 500
|
38
|
-
# @param page [Integer] page to retieve
|
39
|
-
#
|
40
|
-
# @return [Array<Tag>] array of tags
|
41
|
-
def self.list(name, limit = 500, page = 1)
|
42
|
-
params = { name_pattern: name, order: :date, limit: limit,
|
43
|
-
page: page }
|
44
|
-
t = fetch_tags(params)
|
45
|
-
while block_given? && t != []
|
46
|
-
t.each { |tag| yield tag }
|
47
|
-
params[:page] += 1
|
48
|
-
t = fetch_tags(params)
|
49
|
-
end
|
50
|
-
t
|
51
|
-
end
|
52
|
-
|
53
|
-
# @author Maxine Michalski
|
54
|
-
#
|
55
|
-
# Retrieve information about implicated tags.
|
56
|
-
# @param name [String] name pattern to search tags with
|
57
|
-
# @param page [Integer] page to retrieve
|
58
|
-
#
|
59
|
-
# @raise ObjectNotFilledError if no name is present
|
60
|
-
#
|
61
|
-
# @return [Array<Tag>] array of implicated tags for this tag
|
62
|
-
def self.implications(name, page = 1)
|
63
|
-
params = { implied_to: name, page: page }
|
64
|
-
tags = fetch_implications(params)
|
65
|
-
while block_given? && tags != []
|
66
|
-
tags.each { |tag| yield tag unless tag.nil? }
|
67
|
-
tags = fetch_implications(params)
|
68
|
-
params[:page] += 1
|
69
|
-
end
|
70
|
-
tags.compact
|
71
|
-
end
|
72
|
-
|
73
|
-
# @author Maxine Michalski
|
74
|
-
#
|
75
|
-
# Retrieve information about aliased tags.
|
76
|
-
# @param name [String] name pattern to search tags with
|
77
|
-
# @param page [Integer] page to retrieve
|
78
|
-
#
|
79
|
-
# @raise ObjectNotFilledError if no name is present
|
80
|
-
#
|
81
|
-
# @return [Array<Tag>] array of implicated tags for this tag
|
82
|
-
def self.aliases(name, page = 1)
|
83
|
-
params = { aliased_to: name, approved: true, page: page }
|
84
|
-
tags = fetch_aliases(params)
|
85
|
-
while block_given? && tags != []
|
86
|
-
tags.each { |tag| yield tag unless tag.nil? }
|
87
|
-
tags = fetch_aliases(params)
|
88
|
-
params[:page] += 1
|
89
|
-
end
|
90
|
-
tags.compact
|
91
|
-
end
|
92
|
-
|
93
|
-
# @author Maxine Michalski
|
94
|
-
#
|
95
|
-
# Helper function to get Tag data
|
96
|
-
#
|
97
|
-
# @return [Array<Tag>] array of tags
|
98
|
-
def self.fetch_tags(params)
|
99
|
-
API.new.fetch('tag', 'index', params).map do |data|
|
100
|
-
Tag.new(data[:id]).show(data)
|
101
|
-
end
|
102
|
-
end
|
103
|
-
private_class_method :fetch_tags
|
104
|
-
|
105
|
-
# @author Maxine Michalski
|
106
|
-
#
|
107
|
-
# Helper function to fetch implicated tags
|
108
|
-
#
|
109
|
-
# @param params [Hash] parameter for API call
|
110
|
-
#
|
111
|
-
# @return [Array<Tag>] array of implicated tags
|
112
|
-
def self.fetch_implications(params)
|
113
|
-
tag_params = { name: params[:implied_to], order: :date, limit: 1,
|
114
|
-
page: 1 }
|
115
|
-
implied_tag = fetch_tags(tag_params).first
|
116
|
-
API.new.fetch('tag_implication', 'index', params).map do |tag|
|
117
|
-
if tag[:consequent_id] == implied_tag.id && !tag[:pending]
|
118
|
-
Tag.new(tag[:predicate_id])
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
private_class_method :fetch_implications
|
123
|
-
|
124
|
-
# @author Maxine Michalski
|
125
|
-
#
|
126
|
-
# Helper function to fetch aliased tags
|
127
|
-
#
|
128
|
-
# @param params [Hash] parameter for API call
|
129
|
-
#
|
130
|
-
# @return [Array<Tag>] array of implicated tags
|
131
|
-
def self.fetch_aliases(params)
|
132
|
-
API.new.fetch('tag_alias', 'index', params).map do |tag|
|
133
|
-
Tag.new(tag[:alias_id])
|
134
|
-
end
|
135
|
-
end
|
136
|
-
private_class_method :fetch_aliases
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|