Guest User

Untitled

a guest
Jul 20th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. ## /lib/slice_host.rb
  2. module SliceHostAPI
  3. def self.create_api(api_key)
  4. SliceHost.new(api_key)
  5. end
  6.  
  7. module DNS
  8. class DNS
  9. attr_accessor :zone, :record
  10.  
  11. def initialize(api_key)
  12. @zone = Zone.new(api_key),
  13. @record = Record.new(api_key)
  14. end
  15. end
  16.  
  17. class Zone < ActiveResource::Base
  18. attr_accessor :site
  19.  
  20. def initialize(url)
  21. @site = url
  22. end
  23. end
  24.  
  25. class Record < ActiveResource::Base
  26. attr_accessor :site
  27.  
  28. def initialize(url)
  29. @site = url
  30. end
  31. end
  32. end
  33.  
  34. class SliceHost
  35. attr_accessor :dns
  36.  
  37. def initialize(api_key)
  38. @dns = DNS::DNS.new(api_key)
  39. end
  40. end
  41.  
  42. def self.included(klass)
  43. klass.send(:include, InstanceMethods)
  44.  
  45. klass.class_eval do
  46. attr_accessor :slice_host
  47. end
  48. end
  49.  
  50. module InstanceMethods
  51. def create_slice_host_interface(api_key)
  52. @slice_host = SliceHost.new(api_key)
  53. end
  54. end
  55. end
  56.  
  57. # a model (Make)
  58. class Make < ActiveRecord::Base
  59. include SliceHost
  60. end
  61.  
  62. # console session showing how it works
  63. >> m = Make.new
  64. => #<Make id: nil, name: nil, created_at: nil, updated_at: nil>
  65. >> m.slice_host = SliceHostAPI.create_api("1234")
  66. => #<SliceHostAPI::SliceHost:0x102fa88b0 @dns=#<SliceHostAPI::DNS::DNS:0x102fa8860 @zone=[#<SliceHostAPI::DNS::Zone:0x102fa87e8 @site="1234">, #<SliceHostAPI::DNS::Record:0x102fa87c0 @site="1234">], @record=#<SliceHostAPI::DNS::Record:0x102fa87c0 @site="1234">>>
  67. >> m.create_slice_host_interface("1234")
  68. => #<SliceHostAPI::SliceHost:0x102f78db8 @dns=#<SliceHostAPI::DNS::DNS:0x102f78d68 @zone=[#<SliceHostAPI::DNS::Zone:0x102f78c50 @site="1234">, #<SliceHostAPI::DNS::Record:0x102f78bd8 @site="1234">], @record=#<SliceHostAPI::DNS::Record:0x102f78bd8 @site="1234">>>
  69. >> m.slice_host.dns.record
  70. => #<SliceHostAPI::DNS::Record:0x102f78bd8 @site="1234">
  71. >> m.slice_host.dns.zone
  72. => [#<SliceHostAPI::DNS::Zone:0x102f78c50 @site="1234">, #<SliceHostAPI::DNS::Record:0x102f78bd8 @site="1234">]
Add Comment
Please, Sign In to add comment