func()

in api/api_experiment_group.go [33:99]


func (a *ExperimentGroupApiService) ListExperimentGroups(layerId int64, localVarOptionals *ExperimentGroupApiListExperimentGroupsOpts) (ListExperimentGroupsResponse, error) {

	listExperimentGroupsRequest := pairecservice.CreateListExperimentGroupsRequest()
	listExperimentGroupsRequest.InstanceId = a.instanceId
	listExperimentGroupsRequest.LayerId = strconv.Itoa(int(layerId))
	if localVarOptionals.Status.Value() == common.ExpGroup_Status_Online {
		listExperimentGroupsRequest.Status = "Online"
	} else if localVarOptionals.Status.Value() == common.ExpGroup_Status_Offline {
		listExperimentGroupsRequest.Status = "Offline"
	}
	listExperimentGroupsRequest.SetDomain(a.client.GetDomain())
	var (
		localVarReturnValue ListExperimentGroupsResponse
	)

	response, err := a.client.ListExperimentGroups(listExperimentGroupsRequest)
	if err != nil {
		return localVarReturnValue, err
	}
	for _, item := range response.ExperimentGroups {
		if id, err := strconv.Atoi(item.ExperimentGroupId); err == nil {
			experimentGroup := model.ExperimentGroup{
				ExpGroupId:               int64(id),
				LayerId:                  layerId,
				ExpGroupName:             item.Name,
				ExpGroupInfo:             item.Description,
				DebugUsers:               item.DebugUsers,
				Owner:                    item.Owner,
				Filter:                   item.Filter,
				DistributionTimeDuration: item.DistributionTimeDuration,
				ExpGroupConfig:           item.Config,
				ReserveBuckets:           item.ReservedBuckets,
				CrowdTargetType:          item.CrowdTargetType,
				HoldingBuckets:           item.HoldingBuckets,
			}
			if item.DebugCrowdId != "" {
				if crowdId, err := strconv.Atoi(item.DebugCrowdId); err == nil {
					experimentGroup.DebugCrowdId = int64(crowdId)
				}
			}

			if sceneId, err := strconv.Atoi(item.SceneId); err == nil {
				experimentGroup.SceneId = int64(sceneId)
			}

			// exproom id
			if laboratoryId, err := strconv.Atoi(item.LaboratoryId); err == nil {
				experimentGroup.ExpRoomId = int64(laboratoryId)
			}
			if item.DistributionType == "UserId" {
				experimentGroup.DistributionType = common.ExpGroup_Distribution_Type_User
			} else if item.DistributionType == "TimeDuration" {
				experimentGroup.DistributionType = common.ExpGroup_Distribution_Type_TimeDuration
			}

			if item.CrowdId != "" {
				if crowdId, err := strconv.Atoi(item.CrowdId); err == nil {
					experimentGroup.CrowdId = int64(crowdId)
				}
			}

			localVarReturnValue.ExperimentGroups = append(localVarReturnValue.ExperimentGroups, &experimentGroup)
		}
	}

	return localVarReturnValue, nil
}