Esempio n. 1
0
func (p *DeleteContactRequestHandler) ResourceExists(req wm.Request, cxt wm.Context) (bool, wm.Request, wm.Context, int, error) {
	dcc := cxt.(DeleteContactContext)
	path := req.URLParts()
	pathLen := len(path)
	if path[pathLen-1] == "" {
		// ignore trailing slash
		pathLen = pathLen - 1
	}
	contactId := ""
	if pathLen == 9 {
		contactId = path[8]
	} else if pathLen == 6 {
		contactId = path[5]
	}
	dcc.SetContactId(contactId)
	if contactId == "" || dcc.User() == nil || dcc.User().Id == "" {
		return false, req, cxt, 0, nil
	}
	contact, _, err := p.contactsDS.RetrieveDsocialContact(dcc.User().Id, contactId)
	dcc.SetContact(contact)
	if contact != nil {
		dcc.SetETag(contact.Etag)
		if contact.ModifiedAt > 0 {
			dcc.SetLastModified(time.Unix(contact.ModifiedAt, 0).UTC())
		}
	} else {
		dcc.SetETag("")
		dcc.SetLastModified(time.Time{})
	}
	httpStatus := 0
	if err != nil {
		httpStatus = http.StatusInternalServerError
	}
	return contact != nil, req, cxt, httpStatus, err
}
Esempio n. 2
0
func (p *ViewAccountRequestHandler) StartRequest(req wm.Request, cxt wm.Context) (wm.Request, wm.Context) {
	vac := p.GenerateContext(req, cxt)
	path := req.URLParts()
	pathLen := len(path)
	if pathLen >= 8 {
		vac.SetType(path[5])
		var id string
		if path[pathLen-1] == "" {
			id = strings.Join(path[7:pathLen-1], "/")
		} else {
			id = strings.Join(path[7:], "/")
		}
		switch vac.Type() {
		case "user":
			user, _ := p.ds.RetrieveUserAccountById(id)
			vac.SetUser(user)
		case "consumer":
			consumer, _ := p.ds.RetrieveConsumerAccountById(id)
			vac.SetConsumer(consumer)
		case "external_user":
			externalUser, _ := p.ds.RetrieveExternalUserAccountById(id)
			vac.SetExternalUser(externalUser)
		}
	}
	return req, vac
}
Esempio n. 3
0
func (p *UpdateContactRequestHandler) StartRequest(req wm.Request, cxt wm.Context) (wm.Request, wm.Context) {
	ucc := p.GenerateContext(req, cxt)
	path := req.URLParts()
	pathLen := len(path)
	if path[pathLen-1] == "" {
		// ignore trailing slash
		pathLen = pathLen - 1
	}
	var userId string
	var contactId string
	switch pathLen {
	case 9:
		userId = path[5]
		contactId = path[8]
	case 6:
		userId = path[2]
		contactId = path[5]
	}
	if userId != "" {
		user, _ := p.ds.RetrieveUserAccountById(userId)
		ucc.SetUser(user)
		if contactId != "" {
			contact, _, _ := p.contactsDS.RetrieveDsocialContact(userId, contactId)
			ucc.SetOriginalContact(contact)
		}
	}
	return req, ucc
}
Esempio n. 4
0
func (p *CreateAccountRequestHandler) StartRequest(req wm.Request, cxt wm.Context) (wm.Request, wm.Context) {
	cac := p.GenerateContext(req, cxt)
	path := req.URLParts()
	if len(path) >= 6 {
		cac.SetType(path[5])
	}
	return req, cac
}
Esempio n. 5
0
func (p *ViewAccountRequestHandler) HandlerFor(req wm.Request, writer wm.ResponseWriter) wm.RequestHandler {
	// /api/v1/json/account/(user|consumer|external_user)/view/(id)
	path := req.URLParts()
	pathLen := len(path)
	if path[pathLen-1] == "" {
		// ignore trailing slash
		pathLen = pathLen - 1
	}
	if pathLen >= 8 {
		if path[0] == "" && path[1] == "api" && path[2] == "v1" && path[3] == "json" && path[4] == "account" && path[6] == "view" {
			switch path[5] {
			case "user", "consumer", "external_user":
				return p
			}
		}
	}
	return nil
}
Esempio n. 6
0
func UserIdFromRequestUrl(req wm.Request) string {
    path := req.URLParts()
    pathLen := len(path)
    if path[pathLen-1] == "" {
        // ignore trailing slash
        pathLen = pathLen - 1
    }
    if pathLen >= 6 {
        if path[0] == "" && path[1] == "api" && path[2] == "v1" && path[3] == "json" && path[4] == "u" {
            return path[5]
        }
    }
    if pathLen >= 3 {
        if path[0] == "" && path[1] == "u" {
            return path[2]
        }
    }
    return ""
}
Esempio n. 7
0
func (p *UpdateContactRequestHandler) HandlerFor(req wm.Request, writer wm.ResponseWriter) wm.RequestHandler {
	// /api/v1/json/account/(user|consumer|external_user)/update/(id)
	path := req.URLParts()
	pathLen := len(path)
	if path[pathLen-1] == "" {
		// ignore trailing slash
		pathLen = pathLen - 1
	}
	if pathLen == 9 {
		if path[0] == "" && path[1] == "api" && path[2] == "v1" && path[3] == "json" && path[4] == "u" && path[5] != "" && path[6] == "contacts" && path[7] == "update" && path[8] != "" {
			return p
		}
	} else if pathLen == 6 {
		if path[0] == "" && path[1] == "u" && path[2] != "" && path[3] == "contacts" && path[4] == "update" && path[5] != "" {
			return p
		}
	}
	return nil
}
Esempio n. 8
0
func (p *UpdateAccountRequestHandler) StartRequest(req wm.Request, cxt wm.Context) (wm.Request, wm.Context) {
	uac := p.GenerateContext(req, cxt)
	path := req.URLParts()
	pathLen := len(path)
	if pathLen >= 8 {
		uac.SetType(path[5])
		var id string
		if path[pathLen-1] == "" {
			id = strings.Join(path[7:pathLen-1], "/")
		} else {
			id = strings.Join(path[7:], "/")
		}
		switch uac.Type() {
		case "user":
			user, _ := p.ds.RetrieveUserAccountById(id)
			uac.SetUser(user)
			if user == nil {
				//log.Printf("[UARH]: Setting original value for user: %#v\n", nil)
				uac.SetOriginalValue(nil)
			} else {
				//log.Printf("[UARH]: Setting original value for user: %#v\n", user)
				uac.SetOriginalValue(user)
			}
		case "consumer":
			consumer, _ := p.ds.RetrieveConsumerAccountById(id)
			uac.SetConsumer(consumer)
			if consumer == nil {
				uac.SetOriginalValue(nil)
			} else {
				uac.SetOriginalValue(consumer)
			}
		case "external_user":
			externalUser, _ := p.ds.RetrieveExternalUserAccountById(id)
			uac.SetExternalUser(externalUser)
			if externalUser == nil {
				uac.SetOriginalValue(nil)
			} else {
				uac.SetOriginalValue(externalUser)
			}
		}
	}
	return req, uac
}
Esempio n. 9
0
func (p *LogoutAccountRequestHandler) HandlerFor(req wm.Request, writer wm.ResponseWriter) wm.RequestHandler {
	// /api/v1/json/auth/logout
	// /auth/logout
	path := req.URLParts()
	pathLen := len(path)
	if path[pathLen-1] == "" {
		// ignore trailing slash
		pathLen = pathLen - 1
	}
	if pathLen == 6 {
		if path[0] == "" && path[1] == "api" && path[2] == "v1" && path[3] == "json" && path[4] == "auth" && path[5] == "logout" {
			return p
		}
	}
	if pathLen == 3 {
		if path[0] == "" && path[1] == "auth" && path[2] == "logout" {
			return p
		}
	}
	return nil
}
Esempio n. 10
0
func (p *GeneratePrivateKeyRequestHandler) HandlerFor(req wm.Request, writer wm.ResponseWriter) wm.RequestHandler {
	// /api/v1/json/auth/login
	// /auth/login
	path := req.URLParts()
	pathLen := len(path)
	if path[pathLen-1] == "" {
		// ignore trailing slash
		pathLen = pathLen - 1
	}
	if pathLen == 6 {
		if path[0] == "" && path[1] == "api" && path[2] == "v1" && path[3] == "json" && path[4] == "auth" && path[5] == "generate_private_key" {
			return p
		}
	}
	if pathLen == 3 {
		if path[0] == "" && path[1] == "auth" && path[2] == "generate_private_key" {
			return p
		}
	}
	return nil
}
Esempio n. 11
0
func (p *SetPasswordRequestHandler) HandlerFor(req wm.Request, writer wm.ResponseWriter) wm.RequestHandler {
	// /api/v1/json/auth/set_password
	// /auth/set_password
	path := req.URLParts()
	pathLen := len(path)
	if path[pathLen-1] == "" {
		// ignore trailing slash
		pathLen = pathLen - 1
	}
	if pathLen == 6 {
		if path[0] == "" && path[1] == "api" && path[2] == "v1" && path[3] == "json" && path[4] == "auth" && path[5] == "set_password" {
			return p
		}
	}
	if pathLen == 3 {
		if path[0] == "" && path[1] == "auth" && path[2] == "set_password" {
			return p
		}
	}
	return nil
}
Esempio n. 12
0
func (p *ViewContactRequestHandler) HandlerFor(req wm.Request, writer wm.ResponseWriter) wm.RequestHandler {
	// /api/v1/json/u/<uid>/contacts/list
	// /u/<uid>/contacts/list
	path := req.URLParts()
	pathLen := len(path)
	if path[pathLen-1] == "" {
		// ignore trailing slash
		pathLen = pathLen - 1
	}
	if pathLen == 9 {
		if path[0] == "" && path[1] == "api" && path[2] == "v1" && path[3] == "json" && path[4] == "u" && path[6] == "contacts" && path[7] == "view" {
			return p
		}
	}
	if pathLen == 6 {
		if path[0] == "" && path[1] == "u" && path[3] == "contacts" && path[4] == "view" {
			return p
		}
	}
	return nil
}