class Writeas::Client

Attributes

base_url[RW]
conn[RW]

Public Class Methods

new() click to toggle source
# File lib/writeas/client.rb, line 11
def initialize
  @base_url = "https://write.as/"

  @conn ||= Faraday.new(@base_url) do |conf|
    conf.response :json
    conf.request :json
    conf.adapter Faraday.default_adapter
  end
end

Public Instance Methods

delete_post(post_id:, token:) click to toggle source
# File lib/writeas/client.rb, line 89
def delete_post(post_id:, token:)
  response = @conn.delete("/api/posts/#{post_id}", {token: token})

  if error_response?(response)
    raise ClientError.new(response.reason_phrase, response.status)
  else
    return true
  end
end
publish_post(body:, title: nil, font: nil, lang: nil, rtl: nil, created: nil, crosspost: nil) click to toggle source
# File lib/writeas/client.rb, line 37
def publish_post(body:, title: nil, font: nil, lang: nil, rtl: nil, created: nil, crosspost: nil)
  request_body = {
    body: body,
    title: title,
    font: font,
    lang: lang,
    rtl: rtl,
    created: created,
    crosspost: crosspost
  }

  response = @conn.post('/api/posts', request_body.to_json)

  if error_response?(response)
    raise ClientError.new(response.reason_phrase, response.status)
  else
    post = Writeas::Post.new(response.body)
    return post
  end
end
render_markdown(raw_body) click to toggle source
# File lib/writeas/client.rb, line 21
def render_markdown(raw_body)
  body = {
    raw_body: raw_body
  }

  response = @conn.post('/api/markdown', body.to_json)

  if error_response?(response)
    raise ClientError.new(response.reason_phrase, response.status)
  else
    client_response = Writeas::MarkdownResponse.new(response.body)
  end

  return client_response
end
retrieve_post(post_id:) click to toggle source
# File lib/writeas/client.rb, line 58
def retrieve_post(post_id:)
  response = @conn.get("/api/posts/#{post_id}")

  if error_response?(response)
    raise ClientError.new(response.reason_phrase, response.status)
  else
    post = Writeas::Post.new(response.body)
    return post
  end
end
update_post(post_id:, body:, token:, title: nil, font: nil, lang: nil, rtl: nil) click to toggle source
# File lib/writeas/client.rb, line 69
def update_post(post_id:, body:, token:, title: nil, font: nil, lang: nil, rtl: nil)
  request_body = {
    body: body,
    token: token,
    title: title,
    font: font,
    lang: lang,
    rtl: rtl
  }

  response = @conn.post("/api/posts/#{post_id}", request_body.to_json)

  if error_response?(response)
    raise ClientError.new(response.reason_phrase, response.status)
  else
    post = Writeas::Post.new(response.body)
    return post
  end
end

Private Instance Methods

error_response?(response) click to toggle source
# File lib/writeas/client.rb, line 101
def error_response?(response)
  [400, 401, 403, 404, 405, 410, 429, 500, 502, 503].include? response.status
end