Giter Site home page Giter Site logo

carlism / vinyldns-ruby Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vinyldns/vinyldns-ruby

1.0 1.0 0.0 53 KB

Ruby gem containing methods to perform various API requests in VinylDNS

License: Apache License 2.0

Ruby 98.86% Makefile 0.26% Shell 0.88%

vinyldns-ruby's Introduction

Travis build

VinylDNS-Ruby

Ruby gem for working with VinylDNS.

  • It was built around the API
  • It relies, currently, on the AWS-SDK to sign the HTTP requests it makes

Requirements

  1. Ruby ~> 2.4
  2. ENV['VINYLDNS_ACCESS_KEY_ID'] & ENV['VINYLDNS_SECRET_ACCESS_KEY'] are set in your application or local shell
    • You can find both of these within the portal by downloading your credentials file
  3. ENV['VINYLDNS_API_URL'] is set with your api url (if applicable include http[s]:// and port)

Installation

Add this line to your application's Gemfile:

gem 'vinyldns-ruby'

Usage

Add this require to your code:

require 'vinyldns/api'

Getting Started

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior

  • Each method returns a JSON object
  • The methods request an 'api_request_object' with the HTTP Method specified like: Vinyldns::API.new('get'), then perform a variation of Vinyldns::API.make_request(api_request_object, "zones/#{zone_id}")
  • Method parameters match the HTTP Request Parameter requirements in the API. See the API Reference for more information.
  • SSL verification is enabled by default; ENV['VINYLDNS_VERIFY_SSL'] can be set to false in order to disable.

Contributing

If you decide to contribute, please read over our contributor documentation.

Namespaces and Methods

  • Arguments to methods, take Vinyldns::API::Zone.get(id) as an example, can be a little confusing at first. All arguments used under a method that are not explicit, like in our example id, can be understood as zone_id due to it existing under the namespace ::Zone.

Simple Example (Pull first zone you have access to)

  • Requires you to have at least one zone for your user/group

      [1] pry(main)> require 'vinyldns/api'
      => true
      [2] pry(main)> Vinyldns::API::Zone.search()
      => {"zones"=>
        [{"name"=>"XXXXXXX.yourdomain.net.",
          "email"=>"[email protected]",
          "status"=>"Active",
          "created"=>"2017-11-27T17:06:53Z",
          "updated"=>"2018-01-30T13:56:55Z",
          "id"=>"92cXXXXX3b67a",
          "connection"=>{"name"=>"XXXXXXX.yourdomain.net.", "keyName"=>"_t&[email protected]", "key"=>"OBe0nmlA==", "primaryServer"=>"XX.rXXXX.yourdomain.net"},
          "account"=>"system",
          "shared"=>false,
          "acl"=>{"rules"=>[{"accessLevel"=>"Delete", "groupId"=>"15e073b7119c", "recordTypes"=>["A", "NS", "SPF", "AAAA", "SSHFP", "CNAME", "SRV", "PTR", "TXT", "MX"]}]},
          "adminGroupId"=>"ac1",
          "latestSync"=>"2017-12-04T19:35:53Z"}],
       "maxItems"=>5}
    

All Available Methods

  • Below method arguments with "=" next to them indicate a default value. You do not have to specify "argmuentX = nil', just know if you don't set it nil will be used.

Vinyldns::API

- new(method, region = 'us-east-1', api_url = ENV['VINYLDNS_API_URL'], content_type = 'application/x-www-form-urlencoded')
   - Required for make_request, but not before any of the Vinyldns::API::* methods.

- make_request(signed_object, uri, body = '')
   - HTTP requests that fail are returned as: ```#<Net::HTTPUnauthorized 401 Unauthorized readbody=true>```

Vinyldns::API::Zone

- connect(name, distribution_email, group_id = nil, group_name_filter = nil)
    - "Connects user to an existing zone. User must be a member of the group that has access to the zone."
    - name must be the full zone name you wish to connect to. For example: ingest.yourdomain.net instead of ingest.
    - Will use group_id and ignore group_name_filter if group_id is set.
    - If group_id is nil and group_name_filter is set, it will run Vinyldns::API::Group.list_my_groups and use the ID of the group it finds.
    - group_name_filter searches must return only 1 entry else it will error, so be specific.

- update(id, request_params)
    - Zone API Reference > Zone Model details all available options
    - request_params must be a hash of values permitted by the API. See the API reference linked to above.
    - Updates are NOT immediate.
    
- delete(id)

- get(id)

- search(name_filter = nil, max_items = 5, start_from = nil)
    - If name_filter is not set, it will pull an alphabetical list of zones you have access to.

- sync(id)

- history(id)

- list_changes(id, max_items = 5, start_from = nil)

Vinyldns::API::Zone::RecordSet

- create(zone_id, name, type, ttl, records_array)
    - Suggested ttl is 900

- update(zone_id, request_params)
    - request_params must be a hash of values permitted by the API. See the API reference linked to above.

- delete(zone_id, id)

- get(zone_id, id)

- search(zone_id, name_filter = nil, max_items=10, start_from = nil)
    - If name_filter is not set, it will pull an alphabetical list of zones you have access to.

- get_change(zone_id, id, change_id)
    - Use Vinyldns::API::Zone.list_changes to obtain change_id

Vinyldns::API::Zone::BatchRecordChanges

[No Zone ID needed for these]

- create(changes_array, comments)
    - changes must be an array of Add or DeleteRecordSet hashes.

- get(id)

- user_recent
    - Summary information for the most recent 100 batch changes created by the user.

Vinyldns::API::Group

- create(name, distribution_email, members_array, admins_array, description = '')
    - members_array and admins_array must be included. Please see API reference linked to at the top of this readme.

- update(id, request_params)
    - request_params must be a hash of values permitted by the API. See the API reference linked to above.

- delete(id)

- get(id)

- list_my_groups(name_filter = nil, max_items = 5, start_from = nil)
    - If name_filter is not set, it will pull an alphabetical list of zones you have access to.

- list_group_admins(id)

- list_group_members(id, max_items = 5, start_from = nil)

- get_group_activity(id, max_items = 5, start_from = nil)

Maintainers

vinyldns-ruby's People

Contributors

britneywright avatar iamjarvo avatar kristakhare avatar mdb avatar norsegaud avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.