magicbell 2.1.2 → 2.2.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/README.md +45 -17
- data/lib/magicbell/api_resources/user.rb +10 -2
- data/lib/magicbell/client.rb +5 -4
- data/lib/magicbell/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 205676a39e21a70f18682b926501b0d8c67ea674df273cbda92fe838f21b0750
         | 
| 4 | 
            +
              data.tar.gz: 9d0e2fbf7661d9cd6f4f910fa2d0dd89e2ee6d230798015cabe606202627ca53
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 524d8ed46c49c90e295974547b72b05db01a80ce3215070f48348a846ddcada01f07368846f4bbd5baca680a3ff8127e43abe5915bf1c85dfcb423270e72a8b9
         | 
| 7 | 
            +
              data.tar.gz: 0d3d21452e55687032910556225db73a2f95d933d6a6f54edc9897c3499326ce8d9b527fa1226f9853352157cfb3c1cdbe1634dbbb58910078dd822c264e3512
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,14 +1,20 @@ | |
| 1 1 | 
             
            # MagicBell Ruby Library
         | 
| 2 2 |  | 
| 3 | 
            -
            This library provides convenient access to the [MagicBell REST API](https://magicbell.com/docs/rest-api/overview) | 
| 3 | 
            +
            This library provides convenient access to the [MagicBell REST API](https://magicbell.com/docs/rest-api/overview)
         | 
| 4 | 
            +
            from applications written in Ruby. It includes helpers for creating
         | 
| 5 | 
            +
            notifications, fetching them, and calculating the HMAC for a user.
         | 
| 4 6 |  | 
| 5 | 
            -
            [MagicBell](https://magicbell.com) is the notification inbox for your web and | 
| 7 | 
            +
            [MagicBell](https://magicbell.com) is the notification inbox for your web and
         | 
| 8 | 
            +
            mobile applications. You may find it helpful to familiarize yourself with the
         | 
| 9 | 
            +
            [core concepts of MagicBell](https://magicbell.com/docs/core-concepts).
         | 
| 6 10 |  | 
| 7 11 | 
             
            <img width="415" alt="MagicBell Notification Inbox" src="https://files.readme.io/c09b21a-image1.png">
         | 
| 8 12 |  | 
| 9 13 | 
             
            ## Installation
         | 
| 10 14 |  | 
| 11 | 
            -
            First, [sign up for a MagicBell account](https://magicbell.com) and grab your | 
| 15 | 
            +
            First, [sign up for a MagicBell account](https://magicbell.com) and grab your
         | 
| 16 | 
            +
            MagicBell project's API key and secret from the "Settings" section of your
         | 
| 17 | 
            +
            MagicBell dashboard.
         | 
| 12 18 |  | 
| 13 19 | 
             
            If you just want to use the package, run:
         | 
| 14 20 |  | 
| @@ -31,13 +37,18 @@ and run `bundle install` a usual. | |
| 31 37 |  | 
| 32 38 | 
             
            ## Configuration
         | 
| 33 39 |  | 
| 34 | 
            -
            The library needs to be configured with your MagicBell project's API key and | 
| 40 | 
            +
            The library needs to be configured with your MagicBell project's API key and
         | 
| 41 | 
            +
            secret.
         | 
| 35 42 |  | 
| 36 43 | 
             
            ### Global configuration
         | 
| 37 44 |  | 
| 38 | 
            -
            By default, this library will automatically pick your MagicBell project's API | 
| 45 | 
            +
            By default, this library will automatically pick your MagicBell project's API
         | 
| 46 | 
            +
            key and secret from the `MAGICBELL_API_KEY` and `MAGICBELL_API_SECRET`
         | 
| 47 | 
            +
            environment variables, respectively.
         | 
| 39 48 |  | 
| 40 | 
            -
            Alternatively, you can configure your MagicBell manually. For example, for a | 
| 49 | 
            +
            Alternatively, you can configure your MagicBell manually. For example, for a
         | 
| 50 | 
            +
            rails project, create an initializer file for MagicBell and set your project's
         | 
| 51 | 
            +
            keys:
         | 
| 41 52 |  | 
| 42 53 | 
             
            ```ruby
         | 
| 43 54 | 
             
            # config/initializers/magicbell.rb
         | 
| @@ -50,7 +61,8 @@ end | |
| 50 61 |  | 
| 51 62 | 
             
            ### Per-request configuration
         | 
| 52 63 |  | 
| 53 | 
            -
            For apps that need to use multiple keys during the lifetime of a process, | 
| 64 | 
            +
            For apps that need to use multiple keys during the lifetime of a process,
         | 
| 65 | 
            +
            provide the specific keys when you create instances of `MagicBell::Client`:
         | 
| 54 66 |  | 
| 55 67 | 
             
            ```ruby
         | 
| 56 68 | 
             
            require 'magicbell'
         | 
| @@ -61,13 +73,15 @@ magicbell = MagicBell::Client.new( | |
| 61 73 | 
             
            )
         | 
| 62 74 | 
             
            ```
         | 
| 63 75 |  | 
| 64 | 
            -
            Please keep in mind that any instance of `MagicBell::Client` will default to the | 
| 76 | 
            +
            Please keep in mind that any instance of `MagicBell::Client` will default to the
         | 
| 77 | 
            +
            global configuration unless an API key and secret are provided.
         | 
| 65 78 |  | 
| 66 79 | 
             
            ## Usage
         | 
| 67 80 |  | 
| 68 81 | 
             
            ### Create a notification
         | 
| 69 82 |  | 
| 70 | 
            -
            You can send a notification to one or many users by identifying them by their | 
| 83 | 
            +
            You can send a notification to one or many users by identifying them by their
         | 
| 84 | 
            +
            email address:
         | 
| 71 85 |  | 
| 72 86 | 
             
            ```ruby
         | 
| 73 87 | 
             
            require 'magicbell'
         | 
| @@ -97,7 +111,9 @@ magicbell.create_notification( | |
| 97 111 | 
             
            )
         | 
| 98 112 | 
             
            ```
         | 
| 99 113 |  | 
| 100 | 
            -
            This method has the benefit of allowing users to access their notifications when | 
| 114 | 
            +
            This method has the benefit of allowing users to access their notifications when
         | 
| 115 | 
            +
            their email address changes. Make sure you identify users by their `externalID`
         | 
| 116 | 
            +
            when you [initialize the notification inbox](https://magicbell.com/docs/react/identifying-users), too.
         | 
| 101 117 |  | 
| 102 118 | 
             
            You can also provide other data accepted by [our API](https://magicbell.com/docs/rest-api/reference):
         | 
| 103 119 |  | 
| @@ -141,7 +157,12 @@ user = magicbell.user_with_email('joe@example.com') | |
| 141 157 | 
             
            user.notifications.each { |notification| puts notification.attribute('title') }
         | 
| 142 158 | 
             
            ```
         | 
| 143 159 |  | 
| 144 | 
            -
             | 
| 160 | 
            +
            If you identify a user by an ID, you can use the
         | 
| 161 | 
            +
            `magicbell.user_with_external_id` method instead.
         | 
| 162 | 
            +
             | 
| 163 | 
            +
            Please note that the example above fetches the user's 15 most recent
         | 
| 164 | 
            +
            notifications (the default number per page). If you'd like to fetch subsequent
         | 
| 165 | 
            +
            pages, use the `each_page` method instead:
         | 
| 145 166 |  | 
| 146 167 | 
             
            ```ruby
         | 
| 147 168 | 
             
            require 'magicbell'
         | 
| @@ -194,7 +215,8 @@ user.mark_all_notifications_as_seen | |
| 194 215 |  | 
| 195 216 | 
             
            ### Error handling
         | 
| 196 217 |  | 
| 197 | 
            -
            This gem raises a `MagicBell::Client::HTTPError` if the MagicBell API returns a | 
| 218 | 
            +
            This gem raises a `MagicBell::Client::HTTPError` if the MagicBell API returns a
         | 
| 219 | 
            +
            non-2xx response.
         | 
| 198 220 |  | 
| 199 221 | 
             
            ```ruby
         | 
| 200 222 | 
             
            require 'magicbell'
         | 
| @@ -218,7 +240,9 @@ end | |
| 218 240 |  | 
| 219 241 | 
             
            ### Calculate the HMAC secret for a user
         | 
| 220 242 |  | 
| 221 | 
            -
            You can use the `MagicBell.hmac` method. Note that in this case, the API secret, | 
| 243 | 
            +
            You can use the `MagicBell.hmac` method. Note that in this case, the API secret,
         | 
| 244 | 
            +
            which is used to generate the HMAC, will be fetched from the global
         | 
| 245 | 
            +
            configuration.
         | 
| 222 246 |  | 
| 223 247 | 
             
            ```ruby
         | 
| 224 248 | 
             
            require 'magicbell'
         | 
| @@ -226,7 +250,8 @@ require 'magicbell' | |
| 226 250 | 
             
            hmac = MagicBell.hmac('joe@example.com')
         | 
| 227 251 | 
             
            ```
         | 
| 228 252 |  | 
| 229 | 
            -
            You can also use the API secret of a specific client instance to calculate the | 
| 253 | 
            +
            You can also use the API secret of a specific client instance to calculate the
         | 
| 254 | 
            +
            HMAC:
         | 
| 230 255 |  | 
| 231 256 | 
             
            ```ruby
         | 
| 232 257 | 
             
            require 'magicbell'
         | 
| @@ -239,12 +264,15 @@ magicbell = MagicBell::Client.new( | |
| 239 264 | 
             
            hmac = magicbell.hmac('joe@example.com')
         | 
| 240 265 | 
             
            ```
         | 
| 241 266 |  | 
| 242 | 
            -
            Please refer to our docs to know [how to turn on HMAC authentication](https://magicbell.com/docs/turn-on-hmac-authentication) | 
| 267 | 
            +
            Please refer to our docs to know [how to turn on HMAC authentication](https://magicbell.com/docs/turn-on-hmac-authentication)
         | 
| 268 | 
            +
            for your MagicBell project.
         | 
| 243 269 |  | 
| 244 270 | 
             
            ## API docs
         | 
| 245 271 |  | 
| 246 | 
            -
            Please visit [our website](https://magicbell.com) and | 
| 272 | 
            +
            Please visit [our website](https://magicbell.com) and
         | 
| 273 | 
            +
            [our docs](https://magicbell.com/docs) for more information.
         | 
| 247 274 |  | 
| 248 275 | 
             
            ## Contact Us
         | 
| 249 276 |  | 
| 250 | 
            -
            Have a query or hit upon a problem? Feel free to contact us at | 
| 277 | 
            +
            Have a query or hit upon a problem? Feel free to contact us at
         | 
| 278 | 
            +
            [hello@magicbell.io](mailto:hello@magicbell.io).
         | 
| @@ -2,11 +2,13 @@ module MagicBell | |
| 2 2 | 
             
              class User < ApiResource
         | 
| 3 3 | 
             
                include ApiOperations
         | 
| 4 4 |  | 
| 5 | 
            -
                attr_reader :email
         | 
| 5 | 
            +
                attr_reader :email, :external_id
         | 
| 6 6 |  | 
| 7 7 | 
             
                def initialize(client, attributes)
         | 
| 8 8 | 
             
                  @client = client
         | 
| 9 9 | 
             
                  @email = attributes["email"]
         | 
| 10 | 
            +
                  @external_id = attributes["external_id"]
         | 
| 11 | 
            +
             | 
| 10 12 | 
             
                  super(client, attributes)
         | 
| 11 13 | 
             
                end
         | 
| 12 14 |  | 
| @@ -38,13 +40,19 @@ module MagicBell | |
| 38 40 | 
             
                def path
         | 
| 39 41 | 
             
                  if id
         | 
| 40 42 | 
             
                    self.class.path + "/#{id}"
         | 
| 43 | 
            +
                  elsif external_id
         | 
| 44 | 
            +
                    self.class.path + "/external_id:#{external_id}"
         | 
| 41 45 | 
             
                  elsif email
         | 
| 42 46 | 
             
                    self.class.path + "/email:#{email}"
         | 
| 43 47 | 
             
                  end
         | 
| 44 48 | 
             
                end
         | 
| 45 49 |  | 
| 46 50 | 
             
                def authentication_headers
         | 
| 47 | 
            -
                   | 
| 51 | 
            +
                  if external_id
         | 
| 52 | 
            +
                    MagicBell.authentication_headers.merge("X-MAGICBELL-USER-EXTERNAL-ID" => external_id)
         | 
| 53 | 
            +
                  elsif email
         | 
| 54 | 
            +
                    MagicBell.authentication_headers.merge("X-MAGICBELL-USER-EMAIL" => email)
         | 
| 55 | 
            +
                  end
         | 
| 48 56 | 
             
                end
         | 
| 49 57 | 
             
              end
         | 
| 50 58 | 
             
            end
         | 
    
        data/lib/magicbell/client.rb
    CHANGED
    
    | @@ -18,15 +18,16 @@ module MagicBell | |
| 18 18 | 
             
                  MagicBell::Notification.create(self, notification_attributes)
         | 
| 19 19 | 
             
                end
         | 
| 20 20 |  | 
| 21 | 
            -
                # def user(user_id)
         | 
| 22 | 
            -
                #   MagicBell::User.find(user_id)
         | 
| 23 | 
            -
                # end
         | 
| 24 | 
            -
             | 
| 25 21 | 
             
                def user_with_email(email)
         | 
| 26 22 | 
             
                  client = self
         | 
| 27 23 | 
             
                  MagicBell::User.new(client, "email" => email)
         | 
| 28 24 | 
             
                end
         | 
| 29 25 |  | 
| 26 | 
            +
                def user_with_external_id(external_id)
         | 
| 27 | 
            +
                  client = self
         | 
| 28 | 
            +
                  MagicBell::User.new(client, "external_id" => external_id)
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 30 31 | 
             
                def authentication_headers
         | 
| 31 32 | 
             
                  MagicBell.authentication_headers(client_api_key: @api_key, client_api_secret: @api_secret)
         | 
| 32 33 | 
             
                end
         | 
    
        data/lib/magicbell/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: magicbell
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Hana Mohan
         | 
| @@ -11,7 +11,7 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2021-10- | 
| 14 | 
            +
            date: 2021-10-27 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: httparty
         |