github.com/jrperritt/terraform@v0.1.1-0.20170525065507-96f391dafc38/builtin/providers/github/data_source_github_user.go (about) 1 package github 2 3 import ( 4 "context" 5 "log" 6 "strconv" 7 8 "github.com/hashicorp/terraform/helper/schema" 9 ) 10 11 func dataSourceGithubUser() *schema.Resource { 12 return &schema.Resource{ 13 Read: dataSourceGithubUserRead, 14 15 Schema: map[string]*schema.Schema{ 16 "username": &schema.Schema{ 17 Type: schema.TypeString, 18 Required: true, 19 }, 20 "login": &schema.Schema{ 21 Type: schema.TypeString, 22 Computed: true, 23 }, 24 "avatar_url": &schema.Schema{ 25 Type: schema.TypeString, 26 Computed: true, 27 }, 28 "gravatar_id": &schema.Schema{ 29 Type: schema.TypeString, 30 Computed: true, 31 }, 32 "site_admin": &schema.Schema{ 33 Type: schema.TypeBool, 34 Computed: true, 35 }, 36 "name": &schema.Schema{ 37 Type: schema.TypeString, 38 Computed: true, 39 }, 40 "company": &schema.Schema{ 41 Type: schema.TypeString, 42 Computed: true, 43 }, 44 "blog": &schema.Schema{ 45 Type: schema.TypeString, 46 Computed: true, 47 }, 48 "location": &schema.Schema{ 49 Type: schema.TypeString, 50 Computed: true, 51 }, 52 "email": &schema.Schema{ 53 Type: schema.TypeString, 54 Computed: true, 55 }, 56 "bio": &schema.Schema{ 57 Type: schema.TypeString, 58 Computed: true, 59 }, 60 "public_repos": &schema.Schema{ 61 Type: schema.TypeInt, 62 Computed: true, 63 }, 64 "public_gists": &schema.Schema{ 65 Type: schema.TypeInt, 66 Computed: true, 67 }, 68 "followers": &schema.Schema{ 69 Type: schema.TypeInt, 70 Computed: true, 71 }, 72 "following": &schema.Schema{ 73 Type: schema.TypeInt, 74 Computed: true, 75 }, 76 "created_at": &schema.Schema{ 77 Type: schema.TypeString, 78 Computed: true, 79 }, 80 "updated_at": &schema.Schema{ 81 Type: schema.TypeString, 82 Computed: true, 83 }, 84 }, 85 } 86 } 87 88 func dataSourceGithubUserRead(d *schema.ResourceData, meta interface{}) error { 89 username := d.Get("username").(string) 90 log.Printf("[INFO] Refreshing Gitub User: %s", username) 91 92 client := meta.(*Organization).client 93 94 user, _, err := client.Users.Get(context.TODO(), username) 95 if err != nil { 96 return err 97 } 98 99 d.SetId(strconv.Itoa(*user.ID)) 100 d.Set("login", *user.Login) 101 d.Set("avatar_url", *user.AvatarURL) 102 d.Set("gravatar_id", *user.GravatarID) 103 d.Set("site_admin", *user.SiteAdmin) 104 d.Set("company", *user.Company) 105 d.Set("blog", *user.Blog) 106 d.Set("location", *user.Location) 107 d.Set("name", *user.Name) 108 d.Set("email", *user.Email) 109 d.Set("bio", *user.Bio) 110 d.Set("public_repos", *user.PublicRepos) 111 d.Set("public_gists", *user.PublicGists) 112 d.Set("followers", *user.Followers) 113 d.Set("following", *user.Following) 114 d.Set("created_at", *user.CreatedAt) 115 d.Set("updated_at", *user.UpdatedAt) 116 117 return nil 118 }