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  }