sendgrid_webapi 0.0.6 → 0.1.2
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 +5 -5
- data/.circleci/config.yml +132 -0
- data/.circleci/setup-rubygems.sh +5 -0
- data/.gitignore +27 -1
- data/.rspec +2 -2
- data/.ruby-version +1 -0
- data/.tool-versions +1 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +27 -2
- data/lib/api_key/management.rb +33 -0
- data/lib/api_key/modules.rb +10 -0
- data/lib/apikey_client.rb +11 -0
- data/lib/base.rb +39 -8
- data/lib/helper.rb +8 -8
- data/lib/sendgrid_webapi.rb +1 -0
- data/lib/sub_user/modules.rb +15 -15
- data/lib/version.rb +1 -1
- data/lib/web_api/modules.rb +15 -11
- data/sendgrid_webapi.gemspec +10 -9
- data/spec/cassettes/client/_modules/_block/should_get_block_emails.yml +1 -1
- data/spec/cassettes/client/_modules/_block/should_get_totals_blocks.yml +1 -1
- data/spec/cassettes/client/_modules/_block/should_try_delete_not_existing_block_email.yml +1 -1
- data/spec/cassettes/client/_modules/_bounce/should_get_bounce_emails.yml +1 -1
- data/spec/cassettes/client/_modules/_bounce/should_get_totals_bounces.yml +1 -1
- data/spec/cassettes/client/_modules/_bounce/should_try_delete_not_existing_bounce_email.yml +1 -1
- data/spec/cassettes/client/_modules/_event_notification/should_delete_event_notification_url.yml +1 -1
- data/spec/cassettes/client/_modules/_event_notification/should_get_event_notification_url.yml +1 -1
- data/spec/cassettes/client/_modules/_event_notification/should_set_event_notification_url.yml +1 -1
- data/spec/cassettes/client/_modules/_invalid_email/should_get_invalid_emails.yml +1 -1
- data/spec/cassettes/client/_modules/_invalid_email/should_try_delete_not_existing_invalid_emails.yml +1 -1
- data/spec/cassettes/client/_modules/_parse_email/should_delete_parse_email.yml +2 -2
- data/spec/cassettes/client/_modules/_parse_email/should_get_parse_email.yml +1 -1
- data/spec/cassettes/client/_modules/_parse_email/should_set_parse_email.yml +1 -1
- data/spec/cassettes/client/_modules/_profile/should_get_profile.yml +1 -1
- data/spec/cassettes/client/_modules/_profile/should_set_first_name.yml +3 -3
- data/spec/cassettes/client/_modules/_spam/should_get_spam_emails.yml +1 -1
- data/spec/cassettes/client/_modules/_spam/should_try_delete_not_existing_spam_emails.yml +1 -1
- data/spec/cassettes/client/_modules/_unsubscribe/should_add_unsubscribe_emails.yml +1 -1
- data/spec/cassettes/client/_modules/_unsubscribe/should_delete_unsubscribe_email.yml +1 -1
- data/spec/cassettes/client/_modules/_unsubscribe/should_get_unsubscribe_emails.yml +1 -1
- data/spec/cassettes/client/_modules/_unsubscribe/should_try_delete_not_existing_unsubscribe_emails.yml +1 -1
- data/spec/cassettes/helper/_create_sub_user_account/should_create_sub_user_account.yml +6 -6
- data/spec/cassettes/helper/_run_sendgrid_query/should_raise_with_unsucessfull_request.yml +1 -1
- data/spec/cassettes/helper/_run_sendgrid_query/should_run_sendgrid_request.yml +1 -1
- data/spec/cassettes/sub_user/_apps/should_activate_app.yml +1 -1
- data/spec/cassettes/sub_user/_apps/should_deactivate_app.yml +1 -1
- data/spec/cassettes/sub_user/_apps/should_get_current_setting_from_one_app.yml +1 -1
- data/spec/cassettes/sub_user/_apps/should_return_available_apps.yml +1 -1
- data/spec/cassettes/sub_user/_apps/should_set_current_app.yml +1 -1
- data/spec/cassettes/sub_user/_authentication/should_auth_a_sub_user.yml +1 -1
- data/spec/cassettes/sub_user/_authentication/should_return_error_with_a_bad_sub_user.yml +1 -1
- data/spec/cassettes/sub_user/_bounces/should_returns_bounce_emails.yml +1 -1
- data/spec/cassettes/sub_user/_bounces/should_tries_to_delete_unexisting_bounce_emails.yml +1 -1
- data/spec/cassettes/sub_user/_event_notification/should_add_event_notification_url.yml +1 -1
- data/spec/cassettes/sub_user/_event_notification/should_delete_event_notification_url.yml +1 -1
- data/spec/cassettes/sub_user/_event_notification/should_get_event_notification_url.yml +1 -1
- data/spec/cassettes/sub_user/_invalid_emails/should_return_invalid_emails.yml +1 -1
- data/spec/cassettes/sub_user/_invalid_emails/should_tries_to_delete_unexisting_invalid_mail.yml +1 -1
- data/spec/cassettes/sub_user/_ip_management/should_return_all_ips_available.yml +1 -1
- data/spec/cassettes/sub_user/_ip_management/should_show_ip_subuser.yml +1 -1
- data/spec/cassettes/sub_user/_limits/should_decrements_credits_for_a_sub_user.yml +2 -2
- data/spec/cassettes/sub_user/_limits/should_delete_all_limits_for_a_sub_user.yml +2 -2
- data/spec/cassettes/sub_user/_limits/should_increments_credits_for_a_sub_user.yml +2 -2
- data/spec/cassettes/sub_user/_limits/should_list_the_limits_for_a_sub_user.yml +1 -1
- data/spec/cassettes/sub_user/_limits/should_reset_all_limits_for_a_sub_user.yml +2 -2
- data/spec/cassettes/sub_user/_limits/should_returns_limits_for_a_sub_user.yml +1 -1
- data/spec/cassettes/sub_user/_limits/should_set_total_credits.yml +1 -1
- data/spec/cassettes/sub_user/_management/should_add_new_subuser.yml +1 -1
- data/spec/cassettes/sub_user/_management/should_disable_sub_user_for_send_email.yml +1 -1
- data/spec/cassettes/sub_user/_management/should_enable_sub_user_for_access_to_website.yml +1 -1
- data/spec/cassettes/sub_user/_management/should_enable_sub_user_for_send_email.yml +1 -1
- data/spec/cassettes/sub_user/_management/should_update_sub_user.yml +1 -1
- data/spec/cassettes/sub_user/_monitor_records/should_add_existing_sub_user_to_monitor_record.yml +2 -2
- data/spec/cassettes/sub_user/_monitor_records/should_create_a_new_monitor_record.yml +2 -2
- data/spec/cassettes/sub_user/_monitor_records/should_delete_a_monitor_record.yml +2 -2
- data/spec/cassettes/sub_user/_monitor_records/should_edit_a_monitor_record.yml +2 -2
- data/spec/cassettes/sub_user/_monitor_records/should_remove_existing_sub_user_from_monitor_record.yml +2 -2
- data/spec/cassettes/sub_user/_parse_email/should_delete_parse_email.yml +2 -2
- data/spec/cassettes/sub_user/_parse_email/should_get_parse_email.yml +1 -1
- data/spec/cassettes/sub_user/_parse_email/should_set_parse_email.yml +1 -1
- data/spec/cassettes/sub_user/_spam/should_return_spam_mails.yml +1 -1
- data/spec/cassettes/sub_user/_spam/should_tries_to_delete_unexisting_spam_mail.yml +1 -1
- data/spec/cassettes/sub_user/_unsubscribes/should_add_bounce_email.yml +1 -1
- data/spec/cassettes/sub_user/_unsubscribes/should_delete_existing_bounce_email.yml +1 -1
- data/spec/cassettes/sub_user/_unsubscribes/should_delete_unexisting_bounce_email.yml +1 -1
- data/spec/cassettes/sub_user/_unsubscribes/should_returns_bounce_emails.yml +1 -1
- data/spec/client_spec.rb +2 -2
- data/spec/helper_spec.rb +4 -4
- data/spec/sub_user_spec.rb +1 -1
- data/test.rb +1 -1
- metadata +76 -49
- data/.travis.yml +0 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 2c4750102028a182ab7e513792ca0f127684c5ce2f59562dbe1997869c7099e9
         | 
| 4 | 
            +
              data.tar.gz: 406420e68b953fca19e900acd80ab5914c689941588c4b056239f2f5f64f6971
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d912c4463cb6cf6b77d55444e31302450e395c4b2c0eb14bbd4345b77d83dfbba7b3b5b9b563b0e0fff577a5989a00255c69d731d56c08495bd727eb3f15c358
         | 
| 7 | 
            +
              data.tar.gz: 445d7ef45b7cb2b7325405120ef271ab1c6b13d50a902e83c63e5bebe16f95889c722f06555adedabb08ba4e70eb652eeec810a6a29f4d285dea64ec51def652
         | 
| @@ -0,0 +1,132 @@ | |
| 1 | 
            +
            # Ruby CircleCI 2.0 configuration file
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # Check https://circleci.com/docs/2.0/language-ruby/ for more details
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            defaults: &defaults
         | 
| 6 | 
            +
              working_directory: ~/repo
         | 
| 7 | 
            +
              docker:
         | 
| 8 | 
            +
                - image: circleci/ruby:2.3.6-stretch-node
         | 
| 9 | 
            +
                  environment:
         | 
| 10 | 
            +
                    # - DBHOST: localhost
         | 
| 11 | 
            +
                    # - DBNAME: sendgrid_webapi_test
         | 
| 12 | 
            +
                    # - DBPASSWORD: Vdm9omJt8Z3MCV4N
         | 
| 13 | 
            +
                    # - DBUSER: test_user
         | 
| 14 | 
            +
                    - RACK_ENV: test
         | 
| 15 | 
            +
                    - RAILS_ENV: test
         | 
| 16 | 
            +
                # - image: circleci/postgres:10.3-alpine-ram
         | 
| 17 | 
            +
                #   environment:
         | 
| 18 | 
            +
                #     - POSTGRES_DB: sendgrid_webapi_test
         | 
| 19 | 
            +
                #     - POSTGRES_USER: test_user
         | 
| 20 | 
            +
                #     - POSTGRES_PASSWORD: Vdm9omJt8Z3MCV4N
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            version: 2
         | 
| 23 | 
            +
            jobs:
         | 
| 24 | 
            +
              run_specs:
         | 
| 25 | 
            +
                <<: *defaults
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                steps:
         | 
| 28 | 
            +
                  - run:
         | 
| 29 | 
            +
                      name: Set up environment
         | 
| 30 | 
            +
                      command: |
         | 
| 31 | 
            +
                        sudo apt-get update && sudo apt-get install -y apt-transport-https apt-utils
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  - checkout
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  - restore_cache:
         | 
| 36 | 
            +
                      keys:
         | 
| 37 | 
            +
                      - sendgrid_webapi-dependencies-v1-{{ checksum "sendgrid_webapi.gemspec" }}
         | 
| 38 | 
            +
                      - sendgrid_webapi-dependencies-v1-
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  - run:
         | 
| 41 | 
            +
                      name: Install dependencies
         | 
| 42 | 
            +
                      command: |
         | 
| 43 | 
            +
                        # curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
         | 
| 44 | 
            +
                        # echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
         | 
| 45 | 
            +
                        # sudo apt-get update && sudo apt-get install postgresql-client-10
         | 
| 46 | 
            +
                        bundle check --path=./vendor/bundle || bundle install --path=./vendor/bundle --jobs=4 --retry=3
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  - save_cache:
         | 
| 49 | 
            +
                      key: sendgrid_webapi-dependencies-v1-{{ checksum "sendgrid_webapi.gemspec" }}
         | 
| 50 | 
            +
                      paths:
         | 
| 51 | 
            +
                        - ./vendor/bundle
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  # - run:
         | 
| 54 | 
            +
                  #     name: Set up database
         | 
| 55 | 
            +
                  #     command: |
         | 
| 56 | 
            +
                  #       cp spec/internal/config/database.docker.yml spec/internal/config/database.yml
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  - run:
         | 
| 59 | 
            +
                      name: Run tests
         | 
| 60 | 
            +
                      command: |
         | 
| 61 | 
            +
                        mkdir /tmp/test-results
         | 
| 62 | 
            +
                        TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
         | 
| 63 | 
            +
                        bundle exec rspec --format progress --format RspecJunitFormatter --out /tmp/test-results/rspec.xml $TEST_FILES
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                  - store_test_results:
         | 
| 66 | 
            +
                      path: /tmp/test-results
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  - store_artifacts:
         | 
| 69 | 
            +
                      path: /tmp/test-results
         | 
| 70 | 
            +
                      destination: test-results
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              build_gem:
         | 
| 73 | 
            +
                <<: *defaults
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                steps:
         | 
| 76 | 
            +
                  - run:
         | 
| 77 | 
            +
                      name: Set up environment
         | 
| 78 | 
            +
                      command: |
         | 
| 79 | 
            +
                        sudo apt-get update && sudo apt-get install -y apt-transport-https apt-utils
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                  - checkout
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                  - restore_cache:
         | 
| 84 | 
            +
                      keys:
         | 
| 85 | 
            +
                      - sendgrid_webapi-dependencies-v1-{{ checksum "sendgrid_webapi.gemspec" }}
         | 
| 86 | 
            +
                      - sendgrid_webapi-dependencies-v1-
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                  - run:
         | 
| 89 | 
            +
                      name: Install dependencies
         | 
| 90 | 
            +
                      command: |
         | 
| 91 | 
            +
                        gem install gemfury
         | 
| 92 | 
            +
                        bundle check --path=./vendor/bundle || bundle install --path=./vendor/bundle --jobs=4 --retry=3
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                  - save_cache:
         | 
| 95 | 
            +
                      key: sendgrid_webapi-dependencies-v1-{{ checksum "sendgrid_webapi.gemspec" }}
         | 
| 96 | 
            +
                      paths:
         | 
| 97 | 
            +
                        - ./vendor/bundle
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                  - run:
         | 
| 100 | 
            +
                      name: Build gem
         | 
| 101 | 
            +
                      command: |
         | 
| 102 | 
            +
                        gem build sendgrid_webapi.gemspec
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                  - run:
         | 
| 105 | 
            +
                      name: Push gem
         | 
| 106 | 
            +
                      command: |
         | 
| 107 | 
            +
                        if [[ "${CIRCLE_PROJECT_USERNAME}" == "OneHQ" && "${CIRCLE_BRANCH}" == "master" && -n "${RUBYGEMS_API_KEY}" ]]; then
         | 
| 108 | 
            +
                          bash .circleci/setup-rubygems.sh
         | 
| 109 | 
            +
                          version=$(ruby -e 'load "lib/version.rb"; puts SendGridWebApi::VERSION')
         | 
| 110 | 
            +
                          grep -q "${version}" <(gem search sendgrid_api) || EXIT_CODE=$? && true
         | 
| 111 | 
            +
                          if [[ $EXIT_CODE == 1 ]]; then
         | 
| 112 | 
            +
                            gem push sendgrid_webapi-${version}.gem
         | 
| 113 | 
            +
                            git tag ${version}
         | 
| 114 | 
            +
                            git push --tags
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                            [[ -n "$SLACK_TOKEN" ]] && curl -s -d "sendgrid_webapi ($version) released." "https://onehq.slack.com/services/hooks/slackbot?token=${SLACK_TOKEN}&channel=%23machines"
         | 
| 117 | 
            +
                          fi
         | 
| 118 | 
            +
                        fi
         | 
| 119 | 
            +
             | 
| 120 | 
            +
            workflows:
         | 
| 121 | 
            +
              version: 2
         | 
| 122 | 
            +
              build-deploy:
         | 
| 123 | 
            +
                jobs:
         | 
| 124 | 
            +
                  - run_specs
         | 
| 125 | 
            +
                  - build_gem:
         | 
| 126 | 
            +
                      requires:
         | 
| 127 | 
            +
                        - run_specs
         | 
| 128 | 
            +
                      filters:
         | 
| 129 | 
            +
                        branches:
         | 
| 130 | 
            +
                          only:
         | 
| 131 | 
            +
                            - master
         | 
| 132 | 
            +
                            - staging
         | 
    
        data/.gitignore
    CHANGED
    
    | @@ -1,5 +1,31 @@ | |
| 1 1 | 
             
            *.gem
         | 
| 2 | 
            +
            *.pgz
         | 
| 3 | 
            +
            *.tmproj
         | 
| 2 4 | 
             
            .bundle
         | 
| 5 | 
            +
            .DS_Store
         | 
| 6 | 
            +
            .gitconfig
         | 
| 7 | 
            +
            .idea
         | 
| 3 8 | 
             
            .rvmrc
         | 
| 9 | 
            +
            .sass-cache
         | 
| 10 | 
            +
            /.ey_local_data
         | 
| 11 | 
            +
            /.ruby-gemset
         | 
| 12 | 
            +
            /.vagrant
         | 
| 13 | 
            +
            bin/*
         | 
| 14 | 
            +
            config/*.sphinx.conf
         | 
| 15 | 
            +
            config/database.yml
         | 
| 16 | 
            +
            config/sphinx.yml
         | 
| 17 | 
            +
            db/sphinx/
         | 
| 18 | 
            +
            Gemfile.lock
         | 
| 19 | 
            +
            log
         | 
| 20 | 
            +
            log/*.log
         | 
| 21 | 
            +
            project.rvmrc
         | 
| 22 | 
            +
            public/assets
         | 
| 23 | 
            +
            public/flash/*.swf
         | 
| 24 | 
            +
            public/javascripts/packaged/*.js
         | 
| 25 | 
            +
            public/packages/*
         | 
| 26 | 
            +
            public/stylesheets/packaged/*.css
         | 
| 27 | 
            +
            spec/internal/config/database.yml
         | 
| 28 | 
            +
            sphinx/**/*
         | 
| 29 | 
            +
            tmp
         | 
| 30 | 
            +
            tmp/**/*
         | 
| 4 31 | 
             
            Gemfile.lock
         | 
| 5 | 
            -
            pkg/*
         | 
    
        data/.rspec
    CHANGED
    
    | @@ -1,2 +1,2 @@ | |
| 1 | 
            -
            -- | 
| 2 | 
            -
            -- | 
| 1 | 
            +
            --color
         | 
| 2 | 
            +
            --require spec_helper
         | 
    
        data/.ruby-version
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            3.0.0
         | 
    
        data/.tool-versions
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            ruby 2.3.6
         | 
    
        data/MIT-LICENSE
    ADDED
    
    | @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            Copyright (c) 2021 Kyle Ginavan
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 4 | 
            +
            a copy of this software and associated documentation files (the
         | 
| 5 | 
            +
            "Software"), to deal in the Software without restriction, including
         | 
| 6 | 
            +
            without limitation the rights to use, copy, modify, merge, publish,
         | 
| 7 | 
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 8 | 
            +
            permit persons to whom the Software is furnished to do so, subject to
         | 
| 9 | 
            +
            the following conditions:
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            The above copyright notice and this permission notice shall be
         | 
| 12 | 
            +
            included in all copies or substantial portions of the Software.
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 15 | 
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 16 | 
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 17 | 
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 18 | 
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 19 | 
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 20 | 
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -19,7 +19,7 @@ for sendgrid v2 support | |
| 19 19 |  | 
| 20 20 | 
             
            === Creating client object:
         | 
| 21 21 |  | 
| 22 | 
            -
                client = SendGridWebApi::Client.new(" | 
| 22 | 
            +
                client = SendGridWebApi::Client.new("apikey")
         | 
| 23 23 |  | 
| 24 24 | 
             
            == Modules
         | 
| 25 25 |  | 
| @@ -131,7 +131,7 @@ This module allows you to send email. | |
| 131 131 |  | 
| 132 132 | 
             
            === Creating client object:
         | 
| 133 133 |  | 
| 134 | 
            -
                client = SendGridWebApi::Client.new(" | 
| 134 | 
            +
                client = SendGridWebApi::Client.new("apikey")
         | 
| 135 135 |  | 
| 136 136 | 
             
                client.sub_user
         | 
| 137 137 |  | 
| @@ -340,6 +340,31 @@ This module allows you to setup subusers app settings. | |
| 340 340 | 
             
            * options are available here: http://sendgrid.com/docs/API_Reference/Customer_Subuser_API/apps.html
         | 
| 341 341 |  | 
| 342 342 |  | 
| 343 | 
            +
            === Apikey
         | 
| 344 | 
            +
            This module allows you to manage apikeys
         | 
| 345 | 
            +
             | 
| 346 | 
            +
                client.apikey.management.get
         | 
| 347 | 
            +
             | 
| 348 | 
            +
                client.apikey.management.get({ on_behalf_of: "SUB_USERNAME" })
         | 
| 349 | 
            +
             | 
| 350 | 
            +
                client.apikey.management.get({ apikey_id: "APIKEY_ID" })
         | 
| 351 | 
            +
             | 
| 352 | 
            +
                client.apikey.management.get({ on_behalf_of: "SUB_USERNAME" })
         | 
| 353 | 
            +
             | 
| 354 | 
            +
                client.apikey.management.create({ "name" => "APIKEY NAME", "scopes" => ["mail.send"] })
         | 
| 355 | 
            +
             | 
| 356 | 
            +
                client.apikey.management.create({ on_behalf_of: "SUB_USERNAME", "name" => "APIKEY NAME", "scopes" => ["mail.send"] })
         | 
| 357 | 
            +
             | 
| 358 | 
            +
                client.apikey.management.update("APIKEY_ID", { "name" => "NEW APIKEY NAME"})
         | 
| 359 | 
            +
             | 
| 360 | 
            +
                client.apikey.management.update("APIKEY_ID", { on_behalf_of: "SUB_USERNAME", "name" => "NEW APIKEY NAME"})
         | 
| 361 | 
            +
             | 
| 362 | 
            +
                client.apikey.management.delete("APIKEY_ID")
         | 
| 363 | 
            +
             | 
| 364 | 
            +
                client.apikey.management.delete("APIKEY_ID", { on_behalf_of: "SUB_USERNAME" })
         | 
| 365 | 
            +
             | 
| 366 | 
            +
            * options are available here: https://sendgrid.com/docs/api-reference/
         | 
| 367 | 
            +
             | 
| 343 368 | 
             
            == Helper
         | 
| 344 369 |  | 
| 345 370 | 
             
            === Create Sub User
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            module SendGridWebApi::ApiKeyModules
         | 
| 2 | 
            +
              class Management < SendGridWebApi::ApiKey
         | 
| 3 | 
            +
                APIKEY_URL = "api_keys"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def get options = {}
         | 
| 6 | 
            +
                  management_get_url = APIKEY_URL
         | 
| 7 | 
            +
                  if options.key?(:apikey_id)
         | 
| 8 | 
            +
                    management_get_url += "/#{options[:apikey_id]}"
         | 
| 9 | 
            +
                    options.delete(:apikey_id)
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                  query_api(management_get_url, process_header_options(options))
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                def create options = {}
         | 
| 15 | 
            +
                  query_post_json_api(APIKEY_URL, process_header_options(options))
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def delete apikey_id, options = {}
         | 
| 19 | 
            +
                  query_delete_api(APIKEY_URL+"/#{apikey_id}", process_header_options(options))
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def update apikey_id, options = {}
         | 
| 23 | 
            +
                  query_patch_api(APIKEY_URL+"/#{apikey_id}", process_header_options(options))
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                private
         | 
| 27 | 
            +
                def process_header_options options
         | 
| 28 | 
            +
                  on_behalf_of = options.delete(:on_behalf_of)
         | 
| 29 | 
            +
                  options.merge!({ headers: { "on-behalf-of" => on_behalf_of } }) unless on_behalf_of.nil?
         | 
| 30 | 
            +
                  options
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
    
        data/lib/base.rb
    CHANGED
    
    | @@ -2,10 +2,9 @@ require 'faraday_middleware' | |
| 2 2 |  | 
| 3 3 | 
             
            module SendGridWebApi
         | 
| 4 4 | 
             
              class Base
         | 
| 5 | 
            -
                attr_accessor : | 
| 5 | 
            +
                attr_accessor :api_key
         | 
| 6 6 |  | 
| 7 | 
            -
                def initialize  | 
| 8 | 
            -
                  @api_user = api_user
         | 
| 7 | 
            +
                def initialize api_key
         | 
| 9 8 | 
             
                  @api_key  = api_key
         | 
| 10 9 | 
             
                end
         | 
| 11 10 |  | 
| @@ -14,17 +13,46 @@ module SendGridWebApi | |
| 14 13 | 
             
                end
         | 
| 15 14 |  | 
| 16 15 | 
             
                def builder_options options
         | 
| 17 | 
            -
                  options.merge!(:api_user => @api_user, :api_key => @api_key)
         | 
| 18 16 | 
             
                  to_query(options)
         | 
| 19 17 | 
             
                end
         | 
| 20 18 |  | 
| 21 19 | 
             
                def query_api url, options
         | 
| 22 | 
            -
                   | 
| 20 | 
            +
                  headers = options.delete(:headers)
         | 
| 21 | 
            +
                  (session.get(make_request_url(url, options)) do |req|
         | 
| 22 | 
            +
                    req.headers.merge!(headers) unless headers.nil?
         | 
| 23 | 
            +
                  end).body
         | 
| 23 24 | 
             
                end
         | 
| 24 25 |  | 
| 25 26 | 
             
                def query_post_api url, options
         | 
| 26 | 
            -
                   | 
| 27 | 
            -
                  session.post(url, builder_options(options)) | 
| 27 | 
            +
                  headers = options.delete(:headers)
         | 
| 28 | 
            +
                  (session.post(url, builder_options(options)) do |req|
         | 
| 29 | 
            +
                    req.headers.merge!(headers) unless headers.nil?
         | 
| 30 | 
            +
                  end).body
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def query_post_json_api url, options
         | 
| 34 | 
            +
                  headers = options.delete(:headers)
         | 
| 35 | 
            +
                  (session.post(url) do |req|
         | 
| 36 | 
            +
                    req.headers[:content_type] = 'application/json'
         | 
| 37 | 
            +
                    req.headers.merge!(headers) unless headers.nil?
         | 
| 38 | 
            +
                    req.body = options.to_json
         | 
| 39 | 
            +
                  end).body
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                def query_patch_api url, options
         | 
| 43 | 
            +
                  headers = options.delete(:headers)
         | 
| 44 | 
            +
                  (session.patch(url) do |req|
         | 
| 45 | 
            +
                    req.headers[:content_type] = 'application/json'
         | 
| 46 | 
            +
                    req.headers.merge!(headers) unless headers.nil?
         | 
| 47 | 
            +
                    req.body = options.to_json
         | 
| 48 | 
            +
                  end).body
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                def query_delete_api url, options
         | 
| 52 | 
            +
                  headers = options.delete(:headers)
         | 
| 53 | 
            +
                  (session.delete(make_request_url(url, options)) do |req|
         | 
| 54 | 
            +
                    req.headers.merge!(headers) unless headers.nil?
         | 
| 55 | 
            +
                  end).body
         | 
| 28 56 | 
             
                end
         | 
| 29 57 |  | 
| 30 58 | 
             
                def to_query(options)
         | 
| @@ -32,7 +60,10 @@ module SendGridWebApi | |
| 32 60 | 
             
                end
         | 
| 33 61 |  | 
| 34 62 | 
             
                def session
         | 
| 35 | 
            -
                  @connection ||= ::Faraday.new | 
| 63 | 
            +
                  @connection ||= ::Faraday.new(
         | 
| 64 | 
            +
                    url: base_url,
         | 
| 65 | 
            +
                    headers: {"Authorization" => "Bearer #{@api_key}"}
         | 
| 66 | 
            +
                  ) do |conn|
         | 
| 36 67 | 
             
                    # Forces the connection request and response to be JSON even though
         | 
| 37 68 | 
             
                    # Sendgrids API headers do not specify the content type is JSON
         | 
| 38 69 | 
             
                    conn.request :url_encoded
         | 
    
        data/lib/helper.rb
    CHANGED
    
    | @@ -1,33 +1,33 @@ | |
| 1 1 | 
             
            module SendGridWebApi::Helper
         | 
| 2 2 | 
             
              extend self  
         | 
| 3 3 |  | 
| 4 | 
            -
              def run_sendgrid_query( | 
| 5 | 
            -
                @client = SendGridWebApi::Client.new( | 
| 4 | 
            +
              def run_sendgrid_query(apikey)
         | 
| 5 | 
            +
                @client = SendGridWebApi::Client.new(apikey)
         | 
| 6 6 | 
             
                result = yield
         | 
| 7 7 | 
             
                raise "it returns the following errors: #{result}" unless result.eql?({"message"=>"success"})
         | 
| 8 8 | 
             
              end
         | 
| 9 9 |  | 
| 10 10 | 
             
              ###this accepts subuser array
         | 
| 11 | 
            -
              def create_sub_user_account( | 
| 11 | 
            +
              def create_sub_user_account(apikey, users)
         | 
| 12 12 | 
             
                users.each do |user, data|
         | 
| 13 13 | 
             
                  #load users
         | 
| 14 | 
            -
                  run_sendgrid_query( | 
| 14 | 
            +
                  run_sendgrid_query(apikey) do
         | 
| 15 15 | 
             
                    @client.sub_user.management.add(data[:account].merge!(:username => user))
         | 
| 16 16 | 
             
                  end
         | 
| 17 17 |  | 
| 18 18 | 
             
                  #active user for send email
         | 
| 19 | 
            -
                  run_sendgrid_query( | 
| 19 | 
            +
                  run_sendgrid_query(apikey){@client.sub_user.management.enable(:user => user)}
         | 
| 20 20 |  | 
| 21 21 | 
             
                  #assign ip
         | 
| 22 22 | 
             
                  unless data[:assigned_ips].empty?
         | 
| 23 | 
            -
                    run_sendgrid_query( | 
| 23 | 
            +
                    run_sendgrid_query(apikey){@client.sub_user.ip_management.assign_ip :user => user, :ip => data[:assigned_ips]}
         | 
| 24 24 | 
             
                  end
         | 
| 25 25 | 
             
                  #load apps
         | 
| 26 26 | 
             
                  unless data[:applications].empty?
         | 
| 27 27 | 
             
                    data[:applications].each do |app_name, options|
         | 
| 28 | 
            -
                      run_sendgrid_query( | 
| 28 | 
            +
                      run_sendgrid_query(apikey){@client.sub_user.apps.activate(:user => user, :name => app_name)}
         | 
| 29 29 | 
             
                      unless options.empty?
         | 
| 30 | 
            -
                        run_sendgrid_query( | 
| 30 | 
            +
                        run_sendgrid_query(apikey){@client.sub_user.apps.customize(options.merge!(:user => user, :name => app_name))}
         | 
| 31 31 | 
             
                      end
         | 
| 32 32 | 
             
                    end
         | 
| 33 33 | 
             
                  end
         |