devrant 0.9.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ac9fa760f49b06fed3e7b66392b4d534f198ca3
4
- data.tar.gz: 0f470c1484c7667ab01130a5e19d387acee4a530
3
+ metadata.gz: db6e50b28a0c9a1e0095331d0ac7946a8b33ca89
4
+ data.tar.gz: d48685c3ec0d15969d7112560f6d3f96de5e0cbb
5
5
  SHA512:
6
- metadata.gz: aee605184737fe636fb77f0f7b05a99149dc4474cfd0b322d8825079233fc2487e05593ef00594600a336a21d23c6e930503bd0a0ef882bbbe8b4b877c544963
7
- data.tar.gz: 75b098d6dcaf114b60c1b5371d712223a4f088626330d1a187f400f79734e3b2ce80abe6b61afd4bb50f42b78409983b6225a33620d3ab57618c2be00b75ff00
6
+ metadata.gz: a71d432d35379be2f9a334909a793483ba5bbb0a7305117ead8930706dcd66a0f45734e80c09cfd0c330e14e185671744bafe54053f94d3373ab64e2b8904294
7
+ data.tar.gz: 379fc583fb6d133f267fd155d52a8f47cb1c6ef7e758d185943ebf640410743e966527d99f31749512e443aeaa7b8dfb829bd9e6b49dab1a7063a76445ff569a
data/README.md CHANGED
@@ -145,6 +145,25 @@ devRant = Devrant::Api.new
145
145
  devRant.rants.random
146
146
  ```
147
147
 
148
+ **Commenting on a Rant**
149
+
150
+ Post a comment. You must authenticate before trying to post a comment.
151
+
152
+
153
+ | Method | Parameters |
154
+ |:--------|:-----------------------------------------------------------------------------------------|
155
+ |comment |rant_id (int), comment_content (string), token_id (int), token_key (string), user_id (int)|
156
+
157
+ ```ruby
158
+ require 'devrant'
159
+
160
+ devRant = Devrant::Api.new
161
+
162
+ auth = devRant.users.authenticate('username', 'password')
163
+
164
+ devRant.rants.comment(12345, 'This is my comment', auth.id, auth.key, auth.user_id)
165
+ ```
166
+
148
167
  ### Users
149
168
 
150
169
  **Getting User by ID:**
@@ -167,6 +186,18 @@ devRant = Devrant::Api.new
167
186
  devRant.users.get_user_id('RuntimeError')
168
187
  ```
169
188
 
189
+ **Authenticating a User**
190
+
191
+ Returns an auth object with a token id, token key, and user id.
192
+
193
+ ```ruby
194
+ require 'devrant'
195
+
196
+ devRant = Devrant::Api.new
197
+
198
+ devRant.users.authenticate('username', 'password')
199
+ ```
200
+
170
201
  ## Development
171
202
 
172
203
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -12,8 +12,8 @@ module Devrant
12
12
  JSON.parse(json.body, object_class: OpenStruct)
13
13
  end
14
14
 
15
- def extend_request_query(options)
16
- { query: self.class.default_options[:query].merge(options) }
15
+ def extend_request(var, options)
16
+ { "#{var}": self.class.default_options[:query].merge(options) }
17
17
  end
18
18
 
19
19
  end
@@ -22,6 +22,7 @@ module Devrant
22
22
  classes.each do |variable, classname|
23
23
  self.instance_variable_set("@#{variable}", classname.new)
24
24
  self.instance_variable_get("@#{variable}").class.default_options = HTTP_OPTIONS
25
+ self.instance_variable_get("@#{variable}").parent = self
25
26
  self.singleton_class.class_eval do
26
27
  attr_reader variable.to_sym
27
28
  end
@@ -3,6 +3,8 @@ module Devrant
3
3
  include HTTParty
4
4
  include Devrant
5
5
 
6
+ attr_accessor :parent
7
+
6
8
  def all
7
9
  structuralize(self.class.get('/devrant/rants')).rants
8
10
  end
@@ -32,11 +34,15 @@ module Devrant
32
34
  end
33
35
 
34
36
  def get_rants(params={})
35
- structuralize(self.class.get('/devrant/rants', extend_request_query(params))).rants
37
+ structuralize(self.class.get('/devrant/rants', extend_request(:query, params))).rants
36
38
  end
37
39
 
38
40
  def search(term)
39
- structuralize(self.class.get('/devrant/search', extend_request_query({term: term}))).results
41
+ structuralize(self.class.get('/devrant/search', extend_request(:query, {term: term}))).results
42
+ end
43
+
44
+ def comment(rant, content, token_id, token_key, user_id)
45
+ structuralize(self.class.post("/devrant/rants/#{rant}/comments", extend_request(:body, {token_id: token_id, token_key: token_key, user_id: user_id, comment: content})))
40
46
  end
41
47
 
42
48
  end
@@ -3,6 +3,8 @@ module Devrant
3
3
  include HTTParty
4
4
  include Devrant
5
5
 
6
+ attr_accessor :parent
7
+
6
8
  def get_user_by_id(id)
7
9
  user = structuralize(self.class.get("/users/#{id}")).profile
8
10
 
@@ -12,11 +14,19 @@ module Devrant
12
14
  end
13
15
 
14
16
  def get_user_id(username)
15
- id = structuralize(self.class.get('/get-user-id', extend_request_query({username: username}))).user_id
17
+ id = structuralize(self.class.get('/get-user-id', extend_request(:query, {username: username}))).user_id
16
18
 
17
19
  return id unless id.nil?
18
20
 
19
21
  raise ArgumentError.new("No user called #{username} found.")
20
22
  end
23
+
24
+ def authenticate(username, password)
25
+ auth_token = structuralize(self.class.post("/users/auth-token", extend_request(:body, {username: username, password: password}))).auth_token
26
+
27
+ return auth_token unless auth_token.nil?
28
+
29
+ raise ArgumentError.new("Could not authenticate user #{username}")
30
+ end
21
31
  end
22
32
  end
@@ -1,3 +1,3 @@
1
1
  module Devrant
2
- VERSION = "0.9.0"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devrant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dovzhanyn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-09 00:00:00.000000000 Z
11
+ date: 2017-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler