utopian_ruby_api 0.0.1

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/utopian_ruby_api.rb +108 -0
  3. metadata +87 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e343c5854a173aa24acb8c012e989911ec128d64e763e4b9a6a538873c59e1db
4
+ data.tar.gz: b16f508c7f92873987535d080e9bbd031a1de3f4ffd7d7162ca9cb26631d137c
5
+ SHA512:
6
+ metadata.gz: c9b370acd00f8b7847fbe31baed3b2b6f38df311f822be8a735d9bde4b95b7bf1158c3a0887cc2470531d62fee653684655f131d89b2a5667601093d399b60b7
7
+ data.tar.gz: efa0ca7bb237cb8003a0bfb90f310014c1565116e9274d3a030b36e16ee1fbcbd6df2d7d2ed5b2e0f1bb3bad417e17fcf1bc900b33b117c44d5af691f6065fa2
@@ -0,0 +1,108 @@
1
+ require 'faraday'
2
+ require 'addressable'
3
+ require 'json'
4
+
5
+ module UtopianRuby
6
+ class UtopianRubyAPI
7
+ @@host = 'https://api.utopian.io'
8
+
9
+ def self.get_connection()
10
+ conn = Faraday.new(:url => @@host) do |c|
11
+ c.use Faraday::Request::UrlEncoded
12
+ #c.use Faraday::Response::Logger
13
+ c.use Faraday::Adapter::NetHttp
14
+ end
15
+ end
16
+
17
+ def self.get_request(endpoint)
18
+ get_connection().get endpoint
19
+ end
20
+
21
+ def self.get_url_parameters(params)
22
+ uri = Addressable::URI.new
23
+ uri.query_values = params
24
+ uri.query
25
+ end
26
+
27
+ # list all Utopian moderators
28
+ def self.get_moderators()
29
+ JSON.parse(get_request('/api/moderators').body)
30
+ end
31
+
32
+ # check if a user is a moderator
33
+ def self.is_moderator(user)
34
+ get_moderators()["results"].each do |moderator|
35
+ if moderator['account']==user
36
+ return true
37
+ end
38
+ end
39
+ false
40
+ end
41
+
42
+ # check if a user is an utopian supervisor
43
+ def self.is_supervisor(user)
44
+ get_moderators()["results"].each do |moderator|
45
+ if moderator['account']==user and moderator['supermoderator']
46
+ return true
47
+ end
48
+ end
49
+ false
50
+ end
51
+
52
+ # get a particular moderator's metadata
53
+ def self.get_moderator(user)
54
+ get_moderators()["results"].each do |moderator|
55
+ if moderator['account']==user
56
+ return moderator
57
+ end
58
+ end
59
+ nil
60
+ end
61
+
62
+ # return sponsor list
63
+ def self.get_sponsors()
64
+ JSON.parse(get_request('/api/sponsors').body)
65
+ end
66
+
67
+ # check if a user is an utopian sponsor
68
+ def self.is_sponsor(user)
69
+ get_sponsors()["results"].each do |sponsor|
70
+ if sponsor['account']==user
71
+ return true
72
+ end
73
+ end
74
+ false
75
+ end
76
+
77
+ # return Utopian current stats
78
+ def self.stats()
79
+ JSON.parse(get_request('/api/stats').body)
80
+ end
81
+
82
+ # return if Utopian is currently voting
83
+ def self.is_voting()
84
+ self.stats()["stats"]["bot_is_voting"]
85
+ end
86
+
87
+ # return JSON containing all post information that satisfies params
88
+ def self.get_posts(params=nil)
89
+ if params.nil?
90
+ params = {}
91
+ end
92
+ JSON.parse(get_request('/api/posts?'+get_url_parameters(params)).body)
93
+ end
94
+
95
+ # return a particular post information
96
+ def self.get_post(author,permlink)
97
+ JSON.parse(get_request('/api/posts/'+author+'/'+permlink).body)
98
+ end
99
+
100
+ # return total number of Utopian posts that satisfy params
101
+ def self.post_count(params)
102
+ if params.nil?
103
+ params = {"limit":1}
104
+ end
105
+ get_posts(params)["total"]
106
+ end
107
+ end
108
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: utopian_ruby_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Yuxi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-01-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.13'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: addressable
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.5'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.7'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.7'
55
+ description: Utopian API ruby client, providing information about Utopian.io moderators,
56
+ sponsors, posts, stats etc
57
+ email:
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/utopian_ruby_api.rb
63
+ homepage: http://rubygems.org/gems/utopian_ruby_api
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 2.7.3
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: Utopian API ruby client
87
+ test_files: []