writeas 0.1.0 → 0.2.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
  SHA256:
3
- metadata.gz: b060b6e896591c06ec4f5313bbbb9af966e057d9fa99746f74bf741df6652110
4
- data.tar.gz: 1269f83d7fda64e1abb5abd9134a57a47c41ff34843a40e625ab5ad39dc74fc3
3
+ metadata.gz: a4ed7eb398a6c8abbf99f9cf566ee21fb4d416e45727580b76d875d2868b7620
4
+ data.tar.gz: 5761bf82b6f4430ff9ce72088dc6c6a4d8c02c246ab8dcc801cdaf79db856716
5
5
  SHA512:
6
- metadata.gz: ac9a47a99366bb77e4521f0d94c36c1356c3ccaa6fb990128efd5ad8cf76cab09726e471240776d21a0ddbc3eab582fdd014679e9ffb69a6720bd4e7b9e62ffd
7
- data.tar.gz: 7969b697e71a8bfb4fbb8efab31d1c1a88c31c11311ed46299cabc1e36878784e24abca6179da5a33bff0549c2159ed81ab3a4d3e17b72cfd87fc17c8e7707a5
6
+ metadata.gz: da18f123d59604a7d4bf9539002a9568cd46d3b95cf566d13052bd304c749f4560e54af74a2d06c4aeb175c2cefd729f346275b4d5e281b149b1e0be0051797c
7
+ data.tar.gz: 3fd09fa0c9943e16aa8aa75dfa9bf5dcb5e77a355511558630c08eaf5a9093d410f6d106dacd76fdeb18a1b747cdd7e964b48a5ef043e44902c075db4bfba0d7
data/README.md CHANGED
@@ -19,7 +19,7 @@ Or install it yourself as:
19
19
 
20
20
  ## Usage
21
21
 
22
- TODO: Write usage instructions here
22
+ The full API Documentation is available [here](https://developers.write.as/docs/api/)
23
23
 
24
24
  ## Development
25
25
 
@@ -1,14 +1,17 @@
1
- # lib/client.rb
2
1
  require 'faraday'
3
2
  require 'faraday_middleware'
4
- require 'byebug'
3
+ require_relative './client_error'
4
+ require_relative './markdown_response'
5
+ require_relative './post'
5
6
 
6
7
  module Writeas
7
8
  class Client
9
+ attr_accessor :base_url, :conn
10
+
8
11
  def initialize
9
12
  @base_url = "https://write.as/"
10
13
 
11
- @client ||= Faraday.new(@base_url) do |conf|
14
+ @conn ||= Faraday.new(@base_url) do |conf|
12
15
  conf.response :json
13
16
  conf.request :json
14
17
  conf.adapter Faraday.default_adapter
@@ -19,7 +22,54 @@ module Writeas
19
22
  body = {
20
23
  raw_body: raw_body
21
24
  }
22
- response = @client.post('/api/markdown', body.to_json)
25
+
26
+ response = @conn.post('/api/markdown', body.to_json)
27
+
28
+ if error_response?(response)
29
+ raise ClientError.new(response.reason_phrase, response.status)
30
+ else
31
+ client_response = Writeas::MarkdownResponse.new(response.body)
32
+ end
33
+
34
+ return client_response
35
+ end
36
+
37
+ def publish_post(body:, title: nil, font: nil, lang: nil, rtl: nil, created: nil, crosspost: nil)
38
+ request_body = {
39
+ body: body,
40
+ title: title,
41
+ font: font,
42
+ lang: lang,
43
+ rtl: rtl,
44
+ created: created,
45
+ crosspost: crosspost
46
+ }
47
+
48
+ response = @conn.post('/api/posts', request_body.to_json)
49
+
50
+ if error_response?(response)
51
+ raise ClientError.new(response.reason_phrase, response.status)
52
+ else
53
+ post = Writeas::Post.new(response.body)
54
+ return post
55
+ end
56
+ end
57
+
58
+ def retrieve_post(post_id:)
59
+ response = @conn.get("/api/posts/#{post_id}")
60
+
61
+ if error_response?(response)
62
+ raise ClientError.new(response.reason_phrase, response.status)
63
+ else
64
+ post = Writeas::Post.new(response.body)
65
+ return post
66
+ end
67
+ end
68
+
69
+ private
70
+
71
+ def error_response?(response)
72
+ [400, 401, 403, 404, 405, 410, 429, 500, 502, 503].include? response.status
23
73
  end
24
74
  end
25
75
  end
@@ -0,0 +1,12 @@
1
+ # lib/client_error.rb
2
+
3
+ module Writeas
4
+ attr_reader :status
5
+
6
+ class ClientError < StandardError
7
+ def initialize(message, status)
8
+ super(message)
9
+ @status = status
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require_relative './response'
2
+
3
+ module Writeas
4
+ class MarkdownResponse < Response
5
+ attr_reader :body
6
+
7
+ def initialize(response_body)
8
+ super(response_body)
9
+ @body = @data["body"]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,20 @@
1
+ module Writeas
2
+ class Post < Response
3
+ attr_reader :id, :slug, :token, :appearance, :language, :rtl, :created,
4
+ :title, :body, :tags
5
+
6
+ def initialize(response_body)
7
+ super(response_body)
8
+ @id = @data["id"]
9
+ @slug = @data["slug"]
10
+ @token = @data["token"]
11
+ @appearance = @data["appearance"]
12
+ @language = @data["language"]
13
+ @rtl = @data["rtl"]
14
+ @created = @data["created"]
15
+ @title = @data["title"]
16
+ @body = @data["body"]
17
+ @tags = @data["tags"]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ # lib/response.rb
2
+
3
+ module Writeas
4
+ class Response
5
+ attr_reader :code
6
+
7
+ def initialize(response_body)
8
+ parsed_body = JSON.parse(response_body)
9
+ @code = parsed_body["code"]
10
+ @data = parsed_body["data"]
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module Writeas
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: writeas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Thomas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-08 00:00:00.000000000 Z
11
+ date: 2021-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -60,6 +60,10 @@ files:
60
60
  - bin/setup
61
61
  - lib/writeas.rb
62
62
  - lib/writeas/client.rb
63
+ - lib/writeas/client_error.rb
64
+ - lib/writeas/markdown_response.rb
65
+ - lib/writeas/post.rb
66
+ - lib/writeas/response.rb
63
67
  - lib/writeas/version.rb
64
68
  - writeas.gemspec
65
69
  homepage: https://github.com/thegeorgeous/writeas