layer-api 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/MIGRATING.md +212 -0
 - data/README.md +166 -43
 - data/layer-api.gemspec +3 -3
 - data/lib/layer/api.rb +16 -10
 - data/lib/layer/errors.rb +43 -0
 - data/lib/layer/http_client.rb +70 -0
 - data/lib/layer/identity_token.rb +53 -0
 - data/lib/layer/middleware/api_errors.rb +13 -0
 - data/lib/layer/platform/client.rb +57 -0
 - data/lib/layer/resource.rb +80 -0
 - data/lib/layer/resource_proxy.rb +20 -0
 - data/lib/layer/resources/announcement.rb +6 -0
 - data/lib/layer/resources/block.rb +31 -0
 - data/lib/layer/resources/conversation.rb +9 -0
 - data/lib/layer/resources/message.rb +6 -0
 - data/lib/layer/resources/user.rb +21 -0
 - data/lib/layer/{api/version.rb → version.rb} +1 -1
 - metadata +19 -15
 - data/lib/layer/api/client.rb +0 -25
 - data/lib/layer/api/client/announcements.rb +0 -9
 - data/lib/layer/api/client/conversations.rb +0 -30
 - data/lib/layer/api/client/identity_token.rb +0 -61
 - data/lib/layer/api/client/users.rb +0 -18
 - data/lib/layer/api/configuration.rb +0 -30
 - data/lib/layer/api/connection.rb +0 -44
 - data/lib/layer/api/error.rb +0 -39
 - data/lib/layer/api/middleware/api_errors.rb +0 -15
 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Layer
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Resources
         
     | 
| 
      
 3 
     | 
    
         
            +
                class User < Layer::Resource
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def self.find(url, id)
         
     | 
| 
      
 5 
     | 
    
         
            +
                    new({"id" => id, "url" => "users/#{id}"})
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def blocks
         
     | 
| 
      
 9 
     | 
    
         
            +
                    Layer::ResourceProxy.new(self, Layer::Resources::Block)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  def conversations
         
     | 
| 
      
 13 
     | 
    
         
            +
                    Layer::ResourceProxy.new(self, Layer::Resources::Conversation)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  def messages
         
     | 
| 
      
 17 
     | 
    
         
            +
                    Layer::ResourceProxy.new(self, Layer::Resources::Message)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: layer-api
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.4.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Jake Kelly
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-02-03 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -140,7 +140,7 @@ dependencies: 
     | 
|
| 
       140 
140 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       141 
141 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       142 
142 
     | 
    
         
             
                    version: 1.5.1
         
     | 
| 
       143 
     | 
    
         
            -
            description: Simple wrapper for the Layer  
     | 
| 
      
 143 
     | 
    
         
            +
            description: Simple wrapper for the Layer's Web API's
         
     | 
| 
       144 
144 
     | 
    
         
             
            email:
         
     | 
| 
       145 
145 
     | 
    
         
             
            - jake.kelly10@gmail.com
         
     | 
| 
       146 
146 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -151,22 +151,26 @@ files: 
     | 
|
| 
       151 
151 
     | 
    
         
             
            - ".rspec"
         
     | 
| 
       152 
152 
     | 
    
         
             
            - ".travis.yml"
         
     | 
| 
       153 
153 
     | 
    
         
             
            - Gemfile
         
     | 
| 
      
 154 
     | 
    
         
            +
            - MIGRATING.md
         
     | 
| 
       154 
155 
     | 
    
         
             
            - README.md
         
     | 
| 
       155 
156 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       156 
157 
     | 
    
         
             
            - bin/console
         
     | 
| 
       157 
158 
     | 
    
         
             
            - bin/setup
         
     | 
| 
       158 
159 
     | 
    
         
             
            - layer-api.gemspec
         
     | 
| 
       159 
160 
     | 
    
         
             
            - lib/layer/api.rb
         
     | 
| 
       160 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
       161 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
       162 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
       163 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
       164 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
       165 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
       166 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
       167 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
       168 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
       169 
     | 
    
         
            -
            - lib/layer/ 
     | 
| 
      
 161 
     | 
    
         
            +
            - lib/layer/errors.rb
         
     | 
| 
      
 162 
     | 
    
         
            +
            - lib/layer/http_client.rb
         
     | 
| 
      
 163 
     | 
    
         
            +
            - lib/layer/identity_token.rb
         
     | 
| 
      
 164 
     | 
    
         
            +
            - lib/layer/middleware/api_errors.rb
         
     | 
| 
      
 165 
     | 
    
         
            +
            - lib/layer/platform/client.rb
         
     | 
| 
      
 166 
     | 
    
         
            +
            - lib/layer/resource.rb
         
     | 
| 
      
 167 
     | 
    
         
            +
            - lib/layer/resource_proxy.rb
         
     | 
| 
      
 168 
     | 
    
         
            +
            - lib/layer/resources/announcement.rb
         
     | 
| 
      
 169 
     | 
    
         
            +
            - lib/layer/resources/block.rb
         
     | 
| 
      
 170 
     | 
    
         
            +
            - lib/layer/resources/conversation.rb
         
     | 
| 
      
 171 
     | 
    
         
            +
            - lib/layer/resources/message.rb
         
     | 
| 
      
 172 
     | 
    
         
            +
            - lib/layer/resources/user.rb
         
     | 
| 
      
 173 
     | 
    
         
            +
            - lib/layer/version.rb
         
     | 
| 
       170 
174 
     | 
    
         
             
            homepage: https://github.com/cakejelly/layer-api
         
     | 
| 
       171 
175 
     | 
    
         
             
            licenses:
         
     | 
| 
       172 
176 
     | 
    
         
             
            - MIT
         
     | 
| 
         @@ -187,8 +191,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       187 
191 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       188 
192 
     | 
    
         
             
            requirements: []
         
     | 
| 
       189 
193 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       190 
     | 
    
         
            -
            rubygems_version: 2.4. 
     | 
| 
      
 194 
     | 
    
         
            +
            rubygems_version: 2.4.5.1
         
     | 
| 
       191 
195 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       192 
196 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       193 
     | 
    
         
            -
            summary: A ruby toolkit for Layer's  
     | 
| 
      
 197 
     | 
    
         
            +
            summary: A ruby toolkit for Layer's Web API's (https://developer.layer.com/docs)
         
     | 
| 
       194 
198 
     | 
    
         
             
            test_files: []
         
     | 
    
        data/lib/layer/api/client.rb
    DELETED
    
    | 
         @@ -1,25 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require "layer/api/client/conversations"
         
     | 
| 
       2 
     | 
    
         
            -
            require "layer/api/client/announcements"
         
     | 
| 
       3 
     | 
    
         
            -
            require "layer/api/client/users"
         
     | 
| 
       4 
     | 
    
         
            -
            require "layer/api/client/identity_token"
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            module Layer
         
     | 
| 
       7 
     | 
    
         
            -
              module Api
         
     | 
| 
       8 
     | 
    
         
            -
                class Client
         
     | 
| 
       9 
     | 
    
         
            -
                  include Layer::Api::Connection
         
     | 
| 
       10 
     | 
    
         
            -
                  include Layer::Api::Configuration
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  include Layer::Api::Conversations
         
     | 
| 
       13 
     | 
    
         
            -
                  include Layer::Api::Announcements
         
     | 
| 
       14 
     | 
    
         
            -
                  include Layer::Api::Users
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  attr_accessor :api_token, :app_id
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                  def initialize(options = {})
         
     | 
| 
       19 
     | 
    
         
            -
                    @api_token = options[:api_token] || ENV['LAYER_API_TOKEN']
         
     | 
| 
       20 
     | 
    
         
            -
                    @app_id = options[:app_id] || ENV['LAYER_APP_ID']
         
     | 
| 
       21 
     | 
    
         
            -
                    strip_layer_prefix(@app_id)
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,30 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Layer
         
     | 
| 
       2 
     | 
    
         
            -
              module Api
         
     | 
| 
       3 
     | 
    
         
            -
                module Conversations
         
     | 
| 
       4 
     | 
    
         
            -
                  def get_conversation(conversation_id)
         
     | 
| 
       5 
     | 
    
         
            -
                    get("conversations/#{conversation_id}")
         
     | 
| 
       6 
     | 
    
         
            -
                  end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  def create_conversation(params = {})
         
     | 
| 
       9 
     | 
    
         
            -
                    post("conversations", body: params.to_json)
         
     | 
| 
       10 
     | 
    
         
            -
                  end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  def edit_conversation(conversation_id, params = {})
         
     | 
| 
       13 
     | 
    
         
            -
                    patch("conversations/#{conversation_id}",
         
     | 
| 
       14 
     | 
    
         
            -
                      body: params.to_json,
         
     | 
| 
       15 
     | 
    
         
            -
                      headers: layer_patch_header
         
     | 
| 
       16 
     | 
    
         
            -
                    )
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  def send_message(conversation_id, message = {})
         
     | 
| 
       20 
     | 
    
         
            -
                    post("conversations/#{conversation_id}/messages",
         
     | 
| 
       21 
     | 
    
         
            -
                      body: message.to_json
         
     | 
| 
       22 
     | 
    
         
            -
                    )
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  def get_stripped_id(raw_id)
         
     | 
| 
       26 
     | 
    
         
            -
                    raw_id.sub("layer:///conversations/", "")
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,61 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Layer
         
     | 
| 
       2 
     | 
    
         
            -
              module Api
         
     | 
| 
       3 
     | 
    
         
            -
                class IdentityToken
         
     | 
| 
       4 
     | 
    
         
            -
                  attr_reader :user_id, :nonce, :expires_at
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
                  def initialize(options = {})
         
     | 
| 
       7 
     | 
    
         
            -
                    @user_id = options[:user_id]
         
     | 
| 
       8 
     | 
    
         
            -
                    @nonce = options[:nonce]
         
     | 
| 
       9 
     | 
    
         
            -
                    @expires_at = (options[:expires_at] || Time.now+(1209600))
         
     | 
| 
       10 
     | 
    
         
            -
                  end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  def to_s
         
     | 
| 
       13 
     | 
    
         
            -
                    get_jwt
         
     | 
| 
       14 
     | 
    
         
            -
                  end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  def layer_key_id
         
     | 
| 
       17 
     | 
    
         
            -
                    ENV['LAYER_KEY_ID']
         
     | 
| 
       18 
     | 
    
         
            -
                  end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                  def layer_provider_id
         
     | 
| 
       21 
     | 
    
         
            -
                    ENV['LAYER_PROVIDER_ID']
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                  private
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  def get_jwt
         
     | 
| 
       27 
     | 
    
         
            -
                    JWT.encode(claim, private_key, 'RS256', headers)
         
     | 
| 
       28 
     | 
    
         
            -
                  end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                  def headers
         
     | 
| 
       31 
     | 
    
         
            -
                    {
         
     | 
| 
       32 
     | 
    
         
            -
                      typ: 'JWT',
         
     | 
| 
       33 
     | 
    
         
            -
                      cty: 'layer-eit;v=1',
         
     | 
| 
       34 
     | 
    
         
            -
                      kid: layer_key_id
         
     | 
| 
       35 
     | 
    
         
            -
                    }
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                  def claim
         
     | 
| 
       39 
     | 
    
         
            -
                    {
         
     | 
| 
       40 
     | 
    
         
            -
                      iss: layer_provider_id,
         
     | 
| 
       41 
     | 
    
         
            -
                      prn: user_id.to_s,
         
     | 
| 
       42 
     | 
    
         
            -
                      iat: Time.now.to_i,
         
     | 
| 
       43 
     | 
    
         
            -
                      exp: expires_at.to_i,
         
     | 
| 
       44 
     | 
    
         
            -
                      nce: nonce
         
     | 
| 
       45 
     | 
    
         
            -
                    }
         
     | 
| 
       46 
     | 
    
         
            -
                  end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                  def private_key
         
     | 
| 
       49 
     | 
    
         
            -
                    # Cloud66 stores newlines as \n instead of \\n
         
     | 
| 
       50 
     | 
    
         
            -
                    key = ENV['LAYER_PRIVATE_KEY'].dup
         
     | 
| 
       51 
     | 
    
         
            -
                    OpenSSL::PKey::RSA.new(key.gsub!("\\n","\n"))
         
     | 
| 
       52 
     | 
    
         
            -
                  end
         
     | 
| 
       53 
     | 
    
         
            -
                end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                class Client
         
     | 
| 
       56 
     | 
    
         
            -
                  def generate_identity_token(options = {})
         
     | 
| 
       57 
     | 
    
         
            -
                    IdentityToken.new(options).to_s
         
     | 
| 
       58 
     | 
    
         
            -
                  end
         
     | 
| 
       59 
     | 
    
         
            -
                end
         
     | 
| 
       60 
     | 
    
         
            -
              end
         
     | 
| 
       61 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,18 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Layer
         
     | 
| 
       2 
     | 
    
         
            -
              module Api
         
     | 
| 
       3 
     | 
    
         
            -
                module Users
         
     | 
| 
       4 
     | 
    
         
            -
                  def get_blocklist(user_id)
         
     | 
| 
       5 
     | 
    
         
            -
                    get("users/#{user_id}/blocks")
         
     | 
| 
       6 
     | 
    
         
            -
                  end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  def block_user(owner_id, user_id)
         
     | 
| 
       9 
     | 
    
         
            -
                    params = { user_id: user_id }
         
     | 
| 
       10 
     | 
    
         
            -
                    post("users/#{owner_id}/blocks", body: params.to_json)
         
     | 
| 
       11 
     | 
    
         
            -
                  end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                  def unblock_user(owner_id, user_id)
         
     | 
| 
       14 
     | 
    
         
            -
                    delete("users/#{owner_id}/blocks/#{user_id}")
         
     | 
| 
       15 
     | 
    
         
            -
                  end
         
     | 
| 
       16 
     | 
    
         
            -
                end
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
       18 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,30 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'securerandom'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module Layer
         
     | 
| 
       4 
     | 
    
         
            -
              module Api
         
     | 
| 
       5 
     | 
    
         
            -
                module Configuration
         
     | 
| 
       6 
     | 
    
         
            -
                  DEFAULT_HOST = "https://api.layer.com"
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  def default_layer_headers
         
     | 
| 
       9 
     | 
    
         
            -
                    {
         
     | 
| 
       10 
     | 
    
         
            -
                      'Accept' => 'application/vnd.layer+json; version=1.0',
         
     | 
| 
       11 
     | 
    
         
            -
                      'Authorization' => "Bearer #{api_token}",
         
     | 
| 
       12 
     | 
    
         
            -
                      'Content-Type' => 'application/json',
         
     | 
| 
       13 
     | 
    
         
            -
                      'If-None-Match' => SecureRandom.uuid
         
     | 
| 
       14 
     | 
    
         
            -
                    }
         
     | 
| 
       15 
     | 
    
         
            -
                  end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  def layer_patch_header
         
     | 
| 
       18 
     | 
    
         
            -
                    { 'Content-Type' => 'application/vnd.layer-patch+json' }
         
     | 
| 
       19 
     | 
    
         
            -
                  end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  def base_url
         
     | 
| 
       22 
     | 
    
         
            -
                    "#{DEFAULT_HOST}/apps/#{app_id}"
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  def strip_layer_prefix(string)
         
     | 
| 
       26 
     | 
    
         
            -
                    string.split("/").last if string
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/layer/api/connection.rb
    DELETED
    
    | 
         @@ -1,44 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Layer
         
     | 
| 
       2 
     | 
    
         
            -
              module Api
         
     | 
| 
       3 
     | 
    
         
            -
                module Connection
         
     | 
| 
       4 
     | 
    
         
            -
                  def connection
         
     | 
| 
       5 
     | 
    
         
            -
                    @connection ||= Faraday.new(url: base_url) do |faraday|
         
     | 
| 
       6 
     | 
    
         
            -
                      faraday.headers = default_layer_headers
         
     | 
| 
       7 
     | 
    
         
            -
                      faraday.request  :url_encoded
         
     | 
| 
       8 
     | 
    
         
            -
                      faraday.adapter  Faraday.default_adapter
         
     | 
| 
       9 
     | 
    
         
            -
                      faraday.use Middleware::ApiErrors
         
     | 
| 
       10 
     | 
    
         
            -
                    end
         
     | 
| 
       11 
     | 
    
         
            -
                  end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                  def get(url, options = {})
         
     | 
| 
       14 
     | 
    
         
            -
                    call(:get, url, options)
         
     | 
| 
       15 
     | 
    
         
            -
                  end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  def post(url, options = {})
         
     | 
| 
       18 
     | 
    
         
            -
                    call(:post, url, options)
         
     | 
| 
       19 
     | 
    
         
            -
                  end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  def patch(url, options = {})
         
     | 
| 
       22 
     | 
    
         
            -
                    call(:patch, url, options)
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  def delete(url)
         
     | 
| 
       26 
     | 
    
         
            -
                    call(:delete, url, options = {})
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                  def call(method, url, options = {})
         
     | 
| 
       30 
     | 
    
         
            -
                    response = run_request(method, url, options)
         
     | 
| 
       31 
     | 
    
         
            -
                    response.body.empty? ? nil : JSON.parse(response.body)
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                  def run_request(method, url, options = {})
         
     | 
| 
       35 
     | 
    
         
            -
                    connection.run_request(
         
     | 
| 
       36 
     | 
    
         
            -
                      method,
         
     | 
| 
       37 
     | 
    
         
            -
                      url,
         
     | 
| 
       38 
     | 
    
         
            -
                      options[:body],
         
     | 
| 
       39 
     | 
    
         
            -
                      options[:headers]
         
     | 
| 
       40 
     | 
    
         
            -
                    )
         
     | 
| 
       41 
     | 
    
         
            -
                  end
         
     | 
| 
       42 
     | 
    
         
            -
                end
         
     | 
| 
       43 
     | 
    
         
            -
              end
         
     | 
| 
       44 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/layer/api/error.rb
    DELETED
    
    | 
         @@ -1,39 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Layer
         
     | 
| 
       2 
     | 
    
         
            -
              module Api
         
     | 
| 
       3 
     | 
    
         
            -
                class Error < StandardError
         
     | 
| 
       4 
     | 
    
         
            -
                  def self.from_response(response)
         
     | 
| 
       5 
     | 
    
         
            -
                    status = response[:status]
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                    if klass =  case status
         
     | 
| 
       8 
     | 
    
         
            -
                                when 400 then Layer::Api::BadRequest
         
     | 
| 
       9 
     | 
    
         
            -
                                when 404 then Layer::Api::NotFound
         
     | 
| 
       10 
     | 
    
         
            -
                                when 500..599 then Layer::Api::ServerError
         
     | 
| 
       11 
     | 
    
         
            -
                                else self
         
     | 
| 
       12 
     | 
    
         
            -
                                end
         
     | 
| 
       13 
     | 
    
         
            -
                      klass.new(response)
         
     | 
| 
       14 
     | 
    
         
            -
                    end
         
     | 
| 
       15 
     | 
    
         
            -
                  end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  def initialize(response)
         
     | 
| 
       18 
     | 
    
         
            -
                    @response = response
         
     | 
| 
       19 
     | 
    
         
            -
                    super(build_error_message)
         
     | 
| 
       20 
     | 
    
         
            -
                  end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                  def response
         
     | 
| 
       23 
     | 
    
         
            -
                    @response
         
     | 
| 
       24 
     | 
    
         
            -
                  end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  private
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                  def build_error_message
         
     | 
| 
       29 
     | 
    
         
            -
                    message = "Layer responded with status "
         
     | 
| 
       30 
     | 
    
         
            -
                    message << "#{@response[:status]}: #{@response[:body]}"
         
     | 
| 
       31 
     | 
    
         
            -
                    message
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                class BadRequest < Error; end
         
     | 
| 
       36 
     | 
    
         
            -
                class NotFound < Error; end
         
     | 
| 
       37 
     | 
    
         
            -
                class ServerError < Error; end
         
     | 
| 
       38 
     | 
    
         
            -
              end
         
     | 
| 
       39 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,15 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Layer
         
     | 
| 
       2 
     | 
    
         
            -
              module Api
         
     | 
| 
       3 
     | 
    
         
            -
                module Middleware
         
     | 
| 
       4 
     | 
    
         
            -
                  class ApiErrors < Faraday::Response::Middleware
         
     | 
| 
       5 
     | 
    
         
            -
                    ERROR_CODES = 400...600
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                    def on_complete(response)
         
     | 
| 
       8 
     | 
    
         
            -
                      if ERROR_CODES.include?(response.status)
         
     | 
| 
       9 
     | 
    
         
            -
                        raise Layer::Api::Error.from_response(response)
         
     | 
| 
       10 
     | 
    
         
            -
                      end
         
     | 
| 
       11 
     | 
    
         
            -
                    end
         
     | 
| 
       12 
     | 
    
         
            -
                  end
         
     | 
| 
       13 
     | 
    
         
            -
                end
         
     | 
| 
       14 
     | 
    
         
            -
              end
         
     | 
| 
       15 
     | 
    
         
            -
            end
         
     |