buttercms-ruby 1.3.2 → 1.4
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/README.md +45 -7
 - data/VERSION +1 -1
 - data/lib/buttercms-ruby.rb +57 -7
 - data/lib/buttercms/butter_resource.rb +25 -0
 - data/lib/buttercms/errors.rb +3 -0
 - data/lib/buttercms/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 6892f2c65b2714c507d356db4c7a0fa1ca0efe53
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: aeee01cf3ad4a68c8fe365124db34e494dbf9ca1
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7f71a3ae6a84b213bc03c42c96b0217d1241a8f812c4f1b9acb8ef968293a4d5a5db6e727316e5f5b290dabd3c5219df02ef58a03360cf4bd845bf199e9a4d12
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 7a3afc5ae7c6a3c7f0d3c41b48a63bbdd43bd4107cfbffb7cad501ba40d8461168f2d95726bb45d40509938fb7495a741d4f6994c410f9abc96877ee5fd200d1
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -30,26 +30,31 @@ To setup your project, follow these steps: 
     | 
|
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            ## Pages
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
            https://buttercms.com/docs/api/?ruby#pages
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       33 
36 
     | 
    
         
             
            ```ruby
         
     | 
| 
       34 
     | 
    
         
            -
            params = { 
     | 
| 
      
 37 
     | 
    
         
            +
            params = {page: 1, page_size: 10, locale: 'en', preview: 1, fields.headline: 'foo bar', levels: 2} # optional
         
     | 
| 
       35 
38 
     | 
    
         
             
            pages = ButterCMS::Page.list('news', params)
         
     | 
| 
       36 
39 
     | 
    
         
             
            page = ButterCMS::Page.get('news', 'hello-world', params)
         
     | 
| 
       37 
40 
     | 
    
         
             
            ```
         
     | 
| 
       38 
41 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
            ##  
     | 
| 
      
 42 
     | 
    
         
            +
            ## Collections
         
     | 
| 
       40 
43 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
            ButterCMS::Content.fetch(['homepage_headline'])
         
     | 
| 
      
 44 
     | 
    
         
            +
            https://buttercms.com/docs/api/?ruby#retrieve-a-collection
         
     | 
| 
       43 
45 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
      
 46 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 47 
     | 
    
         
            +
            params = {page: 1, page_size: 10, locale: 'en', preview: 1, fields.headline: 'foo bar', levels: 2} # optional
         
     | 
| 
      
 48 
     | 
    
         
            +
            ButterCMS::Content.fetch(['testimonials'], params)
         
     | 
| 
       46 
49 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
            # Test mode can be used to setup a staging website for previewing  
     | 
| 
      
 50 
     | 
    
         
            +
            # Test mode can be used to setup a staging website for previewing Collections or for testing content during local development. To fetch content from test mode add the following configuration:
         
     | 
| 
       48 
51 
     | 
    
         
             
            ButterCMS::test_mode = true
         
     | 
| 
       49 
52 
     | 
    
         
             
            ```
         
     | 
| 
       50 
53 
     | 
    
         | 
| 
       51 
54 
     | 
    
         
             
            ## Blog Engine
         
     | 
| 
       52 
55 
     | 
    
         | 
| 
      
 56 
     | 
    
         
            +
            https://buttercms.com/docs/api/?ruby#blog-engine
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       53 
58 
     | 
    
         
             
            ```ruby
         
     | 
| 
       54 
59 
     | 
    
         
             
            posts = ButterCMS::Post.all({:page => 1, :page_size => 10})
         
     | 
| 
       55 
60 
     | 
    
         
             
            puts posts.first.title
         
     | 
| 
         @@ -61,6 +66,39 @@ puts posts.first.title 
     | 
|
| 
       61 
66 
     | 
    
         
             
            post = ButterCMS::Post.find("post-slug")
         
     | 
| 
       62 
67 
     | 
    
         
             
            puts post.title
         
     | 
| 
       63 
68 
     | 
    
         | 
| 
      
 69 
     | 
    
         
            +
            # Create a Post.
         
     | 
| 
      
 70 
     | 
    
         
            +
            ButterCMS::write_api_token = "YourWriteToken"
         
     | 
| 
      
 71 
     | 
    
         
            +
            ButterCMS::Post.create({
         
     | 
| 
      
 72 
     | 
    
         
            +
              slug: 'blog-slug',
         
     | 
| 
      
 73 
     | 
    
         
            +
              title: 'blog-title'
         
     | 
| 
      
 74 
     | 
    
         
            +
            })
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
            # Update a Post
         
     | 
| 
      
 77 
     | 
    
         
            +
            ButterCMS::Post.update('blog-slug', {
         
     | 
| 
      
 78 
     | 
    
         
            +
              title: 'blog-title-v2'
         
     | 
| 
      
 79 
     | 
    
         
            +
            })
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            # Create a page
         
     | 
| 
      
 82 
     | 
    
         
            +
            ButterCMS::Page.create({
         
     | 
| 
      
 83 
     | 
    
         
            +
              slug: 'page-slug',
         
     | 
| 
      
 84 
     | 
    
         
            +
              title: 'page-title',
         
     | 
| 
      
 85 
     | 
    
         
            +
              status: 'published',
         
     | 
| 
      
 86 
     | 
    
         
            +
              "page-type": 'page_type',
         
     | 
| 
      
 87 
     | 
    
         
            +
              fields: {
         
     | 
| 
      
 88 
     | 
    
         
            +
                meta_title: 'test meta title'
         
     | 
| 
      
 89 
     | 
    
         
            +
              }
         
     | 
| 
      
 90 
     | 
    
         
            +
            })
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
            # update a Page
         
     | 
| 
      
 93 
     | 
    
         
            +
            ButterCMS::Page.update('page-slug-2', {
         
     | 
| 
      
 94 
     | 
    
         
            +
              status: 'published',
         
     | 
| 
      
 95 
     | 
    
         
            +
              fields: {
         
     | 
| 
      
 96 
     | 
    
         
            +
                meta_title: 'test meta title'
         
     | 
| 
      
 97 
     | 
    
         
            +
              }
         
     | 
| 
      
 98 
     | 
    
         
            +
            })
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
       64 
102 
     | 
    
         
             
            author = ButterCMS::Author.find("author-slug")
         
     | 
| 
       65 
103 
     | 
    
         
             
            puts author.first_name
         
     | 
| 
       66 
104 
     | 
    
         | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            1. 
     | 
| 
      
 1 
     | 
    
         
            +
            1.4
         
     | 
    
        data/lib/buttercms-ruby.rb
    CHANGED
    
    | 
         @@ -27,6 +27,7 @@ module ButterCMS 
     | 
|
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
              class << self
         
     | 
| 
       29 
29 
     | 
    
         
             
                attr_accessor :api_token
         
     | 
| 
      
 30 
     | 
    
         
            +
                attr_accessor :write_api_token
         
     | 
| 
       30 
31 
     | 
    
         
             
                attr_accessor :test_mode
         
     | 
| 
       31 
32 
     | 
    
         
             
                attr_accessor :read_timeout
         
     | 
| 
       32 
33 
     | 
    
         
             
                attr_reader :data_store
         
     | 
| 
         @@ -71,13 +72,6 @@ module ButterCMS 
     | 
|
| 
       71 
72 
     | 
    
         | 
| 
       72 
73 
     | 
    
         
             
                path = "#{@api_url.path}#{URI.encode(path)}?#{URI.encode_www_form(query)}"
         
     | 
| 
       73 
74 
     | 
    
         | 
| 
       74 
     | 
    
         
            -
                http_options = {
         
     | 
| 
       75 
     | 
    
         
            -
                  open_timeout: 2.0,
         
     | 
| 
       76 
     | 
    
         
            -
                  read_timeout: read_timeout || 5.0,
         
     | 
| 
       77 
     | 
    
         
            -
                  ssl_timeout:  2.0,
         
     | 
| 
       78 
     | 
    
         
            -
                  use_ssl:      @api_url.scheme == "https",
         
     | 
| 
       79 
     | 
    
         
            -
                }
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
75 
     | 
    
         
             
                response =
         
     | 
| 
       82 
76 
     | 
    
         
             
                  Net::HTTP.start(@api_url.host, @api_url.port, http_options) do |http|
         
     | 
| 
       83 
77 
     | 
    
         
             
                    request = Net::HTTP::Get.new(path)
         
     | 
| 
         @@ -128,4 +122,60 @@ module ButterCMS 
     | 
|
| 
       128 
122 
     | 
    
         | 
| 
       129 
123 
     | 
    
         
             
                return JSON.parse(result)
         
     | 
| 
       130 
124 
     | 
    
         
             
              end
         
     | 
| 
      
 125 
     | 
    
         
            +
              
         
     | 
| 
      
 126 
     | 
    
         
            +
              def self.write_request(path, options = {})
         
     | 
| 
      
 127 
     | 
    
         
            +
                raise ArgumentError.new "Please set your write API token" unless write_api_token
         
     | 
| 
      
 128 
     | 
    
         
            +
                result = write_api_request(path, options)
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
                return JSON.parse(result)
         
     | 
| 
      
 131 
     | 
    
         
            +
              end
         
     | 
| 
      
 132 
     | 
    
         
            +
              
         
     | 
| 
      
 133 
     | 
    
         
            +
              def self.write_api_request(path, options = {})
         
     | 
| 
      
 134 
     | 
    
         
            +
                query = options.dup
         
     | 
| 
      
 135 
     | 
    
         
            +
                token_for_request = query.delete(:auth_token) || write_api_token
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
                path = "#{@api_url.path}#{URI.encode(path)}"
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
                response =
         
     | 
| 
      
 140 
     | 
    
         
            +
                  Net::HTTP.start(@api_url.host, @api_url.port, http_options) do |http|
         
     | 
| 
      
 141 
     | 
    
         
            +
                    write_type = query.delete(:method) || "Post"
         
     | 
| 
      
 142 
     | 
    
         
            +
                    request_type = "Net::HTTP::#{write_type}".constantize
         
     | 
| 
      
 143 
     | 
    
         
            +
                    request = request_type.new(path)
         
     | 
| 
      
 144 
     | 
    
         
            +
                    request["User-Agent"] = "ButterCMS/Ruby #{ButterCMS::VERSION}"
         
     | 
| 
      
 145 
     | 
    
         
            +
                    request["Accept"]     = "application/json"
         
     | 
| 
      
 146 
     | 
    
         
            +
                    request["Content-Type"] = "application/json"
         
     | 
| 
      
 147 
     | 
    
         
            +
                    request["Authorization"] = "Token #{token_for_request}"
         
     | 
| 
      
 148 
     | 
    
         
            +
                    request.body = query.except(:auth_token).to_json
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                    http.request(request)
         
     | 
| 
      
 151 
     | 
    
         
            +
                  end
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
                case response
         
     | 
| 
      
 154 
     | 
    
         
            +
                when Net::HTTPNotFound
         
     | 
| 
      
 155 
     | 
    
         
            +
                  raise ::ButterCMS::NotFound, JSON.parse(response.body)["detail"]
         
     | 
| 
      
 156 
     | 
    
         
            +
                when Net::HTTPBadRequest
         
     | 
| 
      
 157 
     | 
    
         
            +
                  parsed_body = JSON.parse(response.body)
         
     | 
| 
      
 158 
     | 
    
         
            +
                  errors = if parsed_body.is_a?(Array)
         
     | 
| 
      
 159 
     | 
    
         
            +
                    parsed_body.join(' ')
         
     | 
| 
      
 160 
     | 
    
         
            +
                  else
         
     | 
| 
      
 161 
     | 
    
         
            +
                    parsed_body.map do |k, v|
         
     | 
| 
      
 162 
     | 
    
         
            +
                      "#{k}: #{v}"
         
     | 
| 
      
 163 
     | 
    
         
            +
                    end.join(" ")
         
     | 
| 
      
 164 
     | 
    
         
            +
                  end
         
     | 
| 
      
 165 
     | 
    
         
            +
                  raise ::ButterCMS::BadRequest, errors
         
     | 
| 
      
 166 
     | 
    
         
            +
                end
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
                response.body
         
     | 
| 
      
 169 
     | 
    
         
            +
              end
         
     | 
| 
      
 170 
     | 
    
         
            +
              
         
     | 
| 
      
 171 
     | 
    
         
            +
              private
         
     | 
| 
      
 172 
     | 
    
         
            +
              
         
     | 
| 
      
 173 
     | 
    
         
            +
              def self.http_options
         
     | 
| 
      
 174 
     | 
    
         
            +
                {
         
     | 
| 
      
 175 
     | 
    
         
            +
                  open_timeout: 2.0,
         
     | 
| 
      
 176 
     | 
    
         
            +
                  read_timeout: read_timeout || 5.0,
         
     | 
| 
      
 177 
     | 
    
         
            +
                  ssl_timeout:  2.0,
         
     | 
| 
      
 178 
     | 
    
         
            +
                  use_ssl:      @api_url.scheme == "https",
         
     | 
| 
      
 179 
     | 
    
         
            +
                }
         
     | 
| 
      
 180 
     | 
    
         
            +
              end
         
     | 
| 
       131 
181 
     | 
    
         
             
            end
         
     | 
| 
         @@ -25,6 +25,12 @@ module ButterCMS 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  # API expects all endpoints to include trailing slashes
         
     | 
| 
       26 
26 
     | 
    
         
             
                  resource_path + (id ? "#{id}/" : '')
         
     | 
| 
       27 
27 
     | 
    
         
             
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
                
         
     | 
| 
      
 29 
     | 
    
         
            +
                def self.patch_endpoint(id)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  # Append trailing slash when id is added to path because
         
     | 
| 
      
 31 
     | 
    
         
            +
                  # API expects all endpoints to include trailing slashes
         
     | 
| 
      
 32 
     | 
    
         
            +
                  resource_path + "*/#{id}/"
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
       28 
34 
     | 
    
         | 
| 
       29 
35 
     | 
    
         
             
                def self.resource_path
         
     | 
| 
       30 
36 
     | 
    
         
             
                  raise "resource_path must be set"
         
     | 
| 
         @@ -41,6 +47,25 @@ module ButterCMS 
     | 
|
| 
       41 
47 
     | 
    
         | 
| 
       42 
48 
     | 
    
         
             
                  self.create_object(response)
         
     | 
| 
       43 
49 
     | 
    
         
             
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
                
         
     | 
| 
      
 51 
     | 
    
         
            +
                def self.create(options = {})
         
     | 
| 
      
 52 
     | 
    
         
            +
                  options[:method] = 'Post'
         
     | 
| 
      
 53 
     | 
    
         
            +
                  response = ButterCMS.write_request(self.endpoint, options)
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                  self.create_object(response)
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
                
         
     | 
| 
      
 58 
     | 
    
         
            +
                def self.update(id, options = {})
         
     | 
| 
      
 59 
     | 
    
         
            +
                  options[:method] = 'Patch'
         
     | 
| 
      
 60 
     | 
    
         
            +
                  _endpoint = if resource_path.include?("/pages/")
         
     | 
| 
      
 61 
     | 
    
         
            +
                    self.patch_endpoint(id)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  else
         
     | 
| 
      
 63 
     | 
    
         
            +
                    self.endpoint(id)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
                  response = ButterCMS.write_request(_endpoint, options)
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                  self.create_object(response)
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
       44 
69 
     | 
    
         | 
| 
       45 
70 
     | 
    
         
             
                private
         
     | 
| 
       46 
71 
     | 
    
         | 
    
        data/lib/buttercms/errors.rb
    CHANGED
    
    
    
        data/lib/buttercms/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: buttercms-ruby
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: '1.4'
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - ButterCMS
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-10-18 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rspec
         
     |