utopian_ruby_api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []