Class: Pastee
- Inherits:
-
Object
- Object
- Pastee
- Defined in:
- lib/pastee.rb,
lib/pastee/paste.rb,
lib/pastee/errors.rb,
lib/pastee/syntax.rb
Defined Under Namespace
Classes: Errors, Paste, Syntax
Constant Summary collapse
- BASE_URL =
'https://api.paste.ee/v1'.freeze
Instance Method Summary collapse
-
#delete(id) ⇒ Boolean
Delete a paste.
-
#get_paste(id) ⇒ Pastee::Paste
Gets paste information from its string ID.
-
#get_syntax(id) ⇒ Pastee::Syntax
Obtains information for a Pastee syntax from its integer ID.
-
#get_user_type ⇒ String
Get the user type for the currently authenticated user.
-
#initialize(api_key) ⇒ Pastee
constructor
Creates a new instance of Pastee.
-
#list_syntaxes ⇒ Array<Pastee::Syntax>
Obtains a list of valid Pastee syntaxes.
-
#submit(paste) ⇒ String
Submits a new paste to Pastee.
-
#submit_simple(name, text, encrypted = false) ⇒ String
Simple submission method.
-
#throw_error(response) ⇒ Object
private
Determines and raises the right error according to the error code provided by the pastee API.
Constructor Details
#initialize(api_key) ⇒ Pastee
Creates a new instance of Pastee.
11 12 13 14 15 16 17 18 |
# File 'lib/pastee.rb', line 11 def initialize(api_key) @client = HTTPClient.new( default_header: { 'X-Auth-Token' => api_key, 'Content-Type' => 'application/json' } ) end |
Instance Method Details
#delete(id) ⇒ Boolean
Delete a paste.
111 112 113 114 115 116 117 |
# File 'lib/pastee.rb', line 111 def delete(id) uri = URI.parse("#{BASE_URL}/pastes/#{id}") response = JSON.parse(@client.delete(uri).body) return true if response['success'] throw_error(response) end |
#get_paste(id) ⇒ Pastee::Paste
Gets paste information from its string ID.
47 48 49 50 51 52 53 |
# File 'lib/pastee.rb', line 47 def get_paste(id) uri = URI.parse("#{BASE_URL}/pastes/#{id}") response = JSON.parse(@client.get(uri).body) return Pastee::Paste.new(response['paste']) if response['success'] throw_error(response) end |
#get_syntax(id) ⇒ Pastee::Syntax
Obtains information for a Pastee syntax from its integer ID.
24 25 26 27 28 29 30 |
# File 'lib/pastee.rb', line 24 def get_syntax(id) uri = URI.parse("#{BASE_URL}/syntaxes/#{id}") response = JSON.parse(@client.get(uri).body) return Pastee::Syntax.new(response['syntax']) if response['success'] throw_error(response) end |
#get_user_type ⇒ String
Get the user type for the currently authenticated user.
122 123 124 125 126 127 128 |
# File 'lib/pastee.rb', line 122 def get_user_type uri = URI.parse("#{BASE_URL}/users/info") response = JSON.parse(@client.get(uri).body) return response['type'] if response['success'] throw_error(response) end |
#list_syntaxes ⇒ Array<Pastee::Syntax>
Obtains a list of valid Pastee syntaxes.
35 36 37 38 39 40 41 |
# File 'lib/pastee.rb', line 35 def list_syntaxes uri = URI.parse("#{BASE_URL}/syntaxes") response = JSON.parse(@client.get(uri).body) return response['syntaxes'].map { |obj| Pastee::Syntax.new(obj) } if response['success'] throw_error(response) end |
#submit(paste) ⇒ String
Submits a new paste to Pastee. Build a paste using Pastee::Paste and Pastee::Section and submit it. This new way of creating and submitting pastes is a little more convoluted than with the legacy (non-sectional) API, so use the following example as a guideline. #submit_simple is simpler and should be used for simple single-section pastes.
87 88 89 90 91 92 93 |
# File 'lib/pastee.rb', line 87 def submit(paste) uri = URI.parse("#{BASE_URL}/pastes") response = JSON.parse(@client.request(:post, uri, body: JSON.dump(paste.to_h)).body) return response['id'] if response['success'] throw_error(response) end |
#submit_simple(name, text, encrypted = false) ⇒ String
Simple submission method. Transforms a name and text into a proper single-Section Paste object and submits it.
101 102 103 104 105 |
# File 'lib/pastee.rb', line 101 def submit_simple(name, text, encrypted = false) section = Pastee::Paste::Section.new(name: name, contents: text) paste = Pastee::Paste.new(description: name, sections: [section], encrypted: encrypted) submit(paste) end |
#throw_error(response) ⇒ Object (private)
Determines and raises the right error according to the error code provided by the pastee API.
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/pastee.rb', line 141 def throw_error(response) error = response['errors'][0] error_code = error['code'] error_msg = error['message'] case error_code when 400 then raise Pastee::Errors::BadRequestError.new(error_code) when 401 then raise Pastee::Errors::InvalidKeyError when 403 then raise Pastee::Errors::RequiresUserApplicationError when 404 then raise Pastee::Errors::BadRequestError.new(error_code) when 405 then raise Pastee::Errors::BadRequestError.new(error_code) when 406 then raise Pastee::Errors::BadRequestError.new(error_code) when 429 then raise Pastee::Errors::TooManyRequestsError when 500 then raise Pastee::Errors::InternalServerError when 503 then raise Pastee::Errors::ServiceUnavailableError else raise Pastee::Errors::UnknownError.new(error_code, error_msg) end end |