initial commit of initial base framework

This commit is contained in:
joeybloggs
2015-10-25 15:18:54 -04:00
parent 9eea02345c
commit 8c02b7a6d7
3 changed files with 131 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
package webhooks
// GitHubWebhook instance contains all methods needed to process events
type GitHubWebhook struct {
provider Provider
}
// GitHubConfig defines the configuration to create a new GitHubWebhook instance
type GitHubConfig struct {
Provider Provider
}
// GitHubHook defines a GitHub hook type
type GitHubHook string
// GitHub hook types
const (
Any GitHubHook = "*"
CommitComment GitHubHook = "commit_comment"
Create GitHubHook = "create"
Delete GitHubHook = "delete"
Deployment GitHubHook = "deployment"
DeploymentStatus GitHubHook = "deployment_status"
Fork GitHubHook = "fork"
Gollum GitHubHook = "gollum"
IssueComment GitHubHook = "issue_comment"
Issues GitHubHook = "issues"
Member GitHubHook = "member"
Membership GitHubHook = "membership"
PageBuild GitHubHook = "page_build"
Public GitHubHook = "public"
PullRequestReviewComment GitHubHook = "pull_request_review_comment"
PullRequest GitHubHook = "pull_request"
Push GitHubHook = "push"
Repository GitHubHook = "repository"
Release GitHubHook = "release"
Status GitHubHook = "status"
TeamAdd GitHubHook = "team_add"
Watch GitHubHook = "watch"
)
// GitHubHookSubtype defines a GitHub Hook subtype
type GitHubHookSubtype string
// GitHub hook subtypes
const (
Branch GitHubHookSubtype = "branch"
Tag GitHubHookSubtype = "tag"
Pull GitHubHookSubtype = "pull"
Issue GitHubHookSubtype = "issues"
)
// Provider returns the GitHubWebhook's provider
func (w GitHubWebhook) Provider() Provider {
return w.provider
}
// UnderlyingProvider returns the GitHubConfig's Provider
func (c GitHubConfig) UnderlyingProvider() Provider {
return c.Provider
}
+33
View File
@@ -0,0 +1,33 @@
package webhooks
// Provider defines the type of webhook
type Provider int
// webhooks available providers
const (
GitHub Provider = iota
)
// Webhook interface defines a webhook to recieve events
type Webhook interface {
Provider() Provider
}
// Config interface defines the config to setup a webhook instance
type Config interface {
UnderlyingProvider() Provider
}
// New creates and returns a WebHook instance denoted by the Provider type
func New(config Config) Webhook {
switch config.UnderlyingProvider() {
case GitHub:
c := config.(*GitHubConfig)
return &GitHubWebhook{
provider: c.Provider,
}
default:
panic("Invalid config type")
}
}
+37
View File
@@ -0,0 +1,37 @@
package webhooks
import (
"os"
"reflect"
"testing"
. "gopkg.in/go-playground/assert.v1"
)
// NOTES:
// - Run "go test" to run tests
// - Run "gocov test | gocov report" to report on test converage by file
// - Run "gocov test | gocov annotate -" to report on all code and functions, those ,marked with "MISS" were never called
//
// or
//
// -- may be a good idea to change to output path to somewherelike /tmp
// go test -coverprofile cover.out && go tool cover -html=cover.out -o cover.html
//
func TestMain(m *testing.M) {
// setup
os.Exit(m.Run())
// teardown
}
func TestHooks(t *testing.T) {
Equal(t, true, true)
results := New(&GitHubConfig{Provider: GitHub})
Equal(t, reflect.TypeOf(results).String(), "*webhooks.GitHubWebhook")
}